You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用LangSmith追踪CrewAI中的LLM调用?解决调用未捕获问题

问题分析

你直接调用agent.llm.call()时,CrewAI封装的LLM实例没有触发LangChain的LangSmith追踪机制,而直接调用LangChain原生的llm.invoke()能正常被捕获,核心原因是CrewAI默认不会自动继承LangSmith的追踪回调,需要手动配置链路。

解决方案

1. 修复代码导入错误

先修正第一行的导入语句:

from crewai import Agent
from langchain_openai import ChatOpenAI

2. 配置追踪回调,让CrewAI调用被LangSmith捕获

有三种可行方式:

方式一:给LLM实例显式启用追踪

如果已正确配置LangSmith环境变量(LANGCHAIN_TRACING_V2=true、LANGCHAIN_API_KEY等),初始化ChatOpenAI时保留空回调列表即可,LangChain会自动加载环境配置的追踪逻辑:

llm = ChatOpenAI(
    model="gpt-4o",
    temperature=0.7,
    verbose=True,
    callbacks=[]
)

方式二:给CrewAI Agent传入追踪回调

直接将LangChain的追踪回调传递给Agent,确保所有Agent发起的LLM调用走追踪链路:

from langchain.callbacks.tracers.langchain import LangChainTracer

def create_simple_agent():
    tracer = LangChainTracer()
    agent = Agent(
        role='Question Answerer',
        goal='Answer questions clearly and concisely',
        backstory="""You are a helpful AI assistant that answers questions directly and accurately. 
        Keep responses clear and to the point.""",
        llm=llm,
        verbose=True,
        callbacks=[tracer]
    )
    return agent

方式三:使用Agent标准执行方法(推荐)

避免直接调用agent.llm.call(),改用CrewAI Agent的标准方法执行任务,内部会自动处理回调传递:

if __name__ == "__main__":
    agent = create_simple_agent()
    # 用run方法替代直接调用agent.llm.call
    test_result = agent.run("Tell me a lame dad joke")
    print(test_result)
    
    test_result = llm.invoke("Tell me a good dad joke")
    print(test_result.content)
验证步骤
  1. 打印环境变量确认LangSmith配置生效:print(os.environ.get("LANGCHAIN_TRACING_V2"))
  2. 运行修改后的代码执行两次调用
  3. 登录LangSmith后台检查两条调用记录是否都被捕获

内容的提问来源于stack exchange,提问作者Ya.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 05:43:21