LangChain之@traceable

发布于:2025-09-03 ⋅ 阅读:(14) ⋅ 点赞:(0)

🧠 LangSmith 中的 @traceable 是什么?

LangSmith 提供了一个 Python 装饰器 @traceable,它可以让你把任意函数包装为链中的一个步骤(step),并自动上传至 LangSmith 平台进行观察与调试。

它主要用于:

  • 链式调用追踪run_type="chain"
  • 工具调用追踪run_type="tool"
  • LLM 调用包装run_type="llm",通常自动追踪)

🧪 示例:在 LangSmith 中追踪自定义函数

假设你有一个函数用于处理 LLM 响应,你希望它在 LangSmith 的链中出现:

from langsmith.utils import traceable

@traceable(run_type="chain", name="llm_response")
def process_llm_response(prompt: str) -> str:
    # 模拟某种处理
    return prompt.upper()  # 示例:全部大写

你可以把这个函数嵌入到 LangChain Agent 或其他链中,并在 LangSmith 平台看到它的调用轨迹。


✅ 参数说明

  • run_type: 指定这是哪种类型的运行,可选:

    • "chain":代表它是一个链的一部分(推荐用于子任务封装)
    • "tool":用于工具函数
    • "llm":用于底层模型调用(通常不需要手动添加)
  • name: 你想在 LangSmith UI 中显示的名称,方便识别


📊 效果展示

当你运行使用 @traceable 装饰的函数时,LangSmith 会自动上传运行数据,并在可视化页面显示:

  • 每一步的输入 / 输出
  • 执行时间
  • 调用层级关系(支持嵌套)
  • 错误日志(如抛出异常)

🛠 示例:组合使用 LangChain 和 LangSmith 的追踪

from langsmith.utils import traceable
from langchain.chat_models import ChatOpenAI

llm = ChatOpenAI()

@traceable(run_type="chain", name="summarize_paragraph")
def summarize(text: str) -> str:
    prompt = f"Please summarize this text:\n\n{text}"
    return llm.predict(prompt)

运行时,你会在 LangSmith 的 UI 中看到 summarize_paragraph 作为一个独立的链步骤,并且嵌套显示其中的 LLM 调用。


🔒 要求:使用前需要设置环境变量

使用 LangSmith 追踪时,你需要设置:

export LANGCHAIN_API_KEY=your-langsmith-api-key
export LANGCHAIN_TRACING_V2=true

或在代码中设置:

import os
os.environ["LANGCHAIN_API_KEY"] = "your-key"
os.environ["LANGCHAIN_TRACING_V2"] = "true"

🎯 总结

参数 说明
@traceable LangSmith 提供的装饰器
run_type="chain" 声明为链步骤
name="llm_response" 给这个步骤命名
效果 追踪函数调用,记录输入输出、耗时等信息,方便在 LangSmith UI 中调试

网站公告

今日签到

点亮在社区的每一天
去签到