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

如何在Autogen(AG2) GroupChat多智能体架构中集成LangSmith实现可观测性追踪?

问题背景

我正在开发基于Autogen(AG2)的文档分析服务,包含reader和analyzer两个核心智能体:

  • reader负责拆分文档为块并发送给analyzer
  • analyzer完成笔记记录
    二者通过多智能体GroupChat协调工作。

AG2原生支持AgentOps做可观测性,但我的工具链已集成LangSmith,希望改用LangSmith实现追踪。以下是管理流程的DocumentAnalyzer类核心代码:

class DocumentAnalyzer:
    def __init__(self):
        logger.info("Initializing DocumentAnalyzer instance.")
        self.analyzer = analyzer_agent.AnalyzerAgent().agent
        self.reader = reader_agent.ReaderAgent().agent
        self.initializer = autogen.UserProxyAgent(
            name="Init", code_execution_config=False
        )
        logger.debug(
            "DocumentAnalyzer initialized with AnalyzerAgent, ReaderAgent, and UserProxyAgent."
        )
    
    # ... other methods ...
    
    def start(self):
        logger.info("Starting DocumentAnalyzer group chat.")
        self.groupchat = autogen.GroupChat(
            agents=[self.initializer, self.reader, self.analyzer],
            messages=[],
            max_round=20,
            speaker_selection_method=self._state_transition,
        )
        self.manager = autogen.GroupChatManager(
            groupchat=self.groupchat, llm_config=settings.llm_config
        )

        try:
            self.initializer.initiate_chat(
                self.manager, message="Analyse document_id:" + str(self.document_id)
            )
            logger.info("Initialized chat with initializer agent.")
        except Exception as e:
            logger.error(f"Failed to initiate chat: {e}")

        logger.debug("Group chat and manager setup complete.")

核心问题

如何将LangSmith集成到该AG2 GroupChat架构中,实现可观测性与追踪?

已尝试方案:搜索未找到有效结果,GPT/Claude生成的方案因Autogen内部处理LLM调用而无效,求可行的代码或配置参考。


解决方案

LangSmith集成Autogen的核心是将追踪逻辑注入到Autogen的LLM调用流程中,以下是具体实现步骤:

1. 配置LangSmith基础环境

先安装依赖并设置环境变量:

pip install langsmith autogen
export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_API_KEY="你的LangSmith API密钥"
export LANGCHAIN_PROJECT="你的项目名称"

2. 封装带LangSmith追踪的LLM调用

有两种方式实现追踪,选其一即可:

方式1:使用LangSmith包装LangChain LLM对象(推荐)

Autogen支持直接传入LangChain的LLM实例,利用LangSmith的包装器自动添加追踪:

from langchain.chat_models import ChatOpenAI
from langsmith.wrappers import wrap_openai

# 包装OpenAI客户端,自动添加LangSmith追踪
wrapped_llm = wrap_openai(ChatOpenAI(model="gpt-4", temperature=0))

方式2:自定义带追踪的LLM函数

如果不使用LangChain,可通过装饰器为自定义LLM函数添加追踪:

import openai
from langsmith import traceable

@traceable(run_type="llm")
def traced_llm_call(messages, **kwargs):
    # 替换为你的LLM调用逻辑
    response = openai.chat.completions.create(
        model="gpt-4",
        messages=messages,
        **kwargs
    )
    return response.choices[0].message.content

3. 修改Autogen的LLM配置

将封装好的LLM对象/函数传入settings.llm_config,确保所有智能体的LLM调用走追踪逻辑:

对应方式1的配置:

settings.llm_config = {
    "llm": wrapped_llm,  # 传入带追踪的LangChain LLM对象
    "temperature": 0,
    # 保留原有其他配置
}

对应方式2的配置:

settings.llm_config = {
    "function": traced_llm_call,  # 传入自定义追踪函数
    "model": "gpt-4",
    "temperature": 0,
    # 保留原有其他配置
}

4. 为GroupChat添加会话级追踪(可选)

如果需要关联整个GroupChat的流程,可在start方法中添加会话追踪:

from langsmith import Client

def start(self):
    logger.info("Starting DocumentAnalyzer group chat.")
    
    # 创建LangSmith会话,关联整个文档分析流程
    client = Client()
    with client.trace(name=f"Document Analysis - {self.document_id}"):
        self.groupchat = autogen.GroupChat(
            agents=[self.initializer, self.reader, self.analyzer],
            messages=[],
            max_round=20,
            speaker_selection_method=self._state_transition,
        )
        self.manager = autogen.GroupChatManager(
            groupchat=self.groupchat, llm_config=settings.llm_config
        )

        try:
            self.initializer.initiate_chat(
                self.manager, message=f"Analyse document_id:{self.document_id}"
            )
            logger.info("Initialized chat with initializer agent.")
        except Exception as e:
            logger.error(f"Failed to initiate chat: {e}")

    logger.debug("Group chat and manager setup complete.")

5. 验证效果

运行服务后,登录LangSmith控制台即可查看:

  • 每个智能体的LLM调用请求/响应详情
  • GroupChat的完整会话流转
  • 各步骤的耗时、token使用量等指标

关键注意事项

  • GroupChatManager会代理所有智能体的LLM调用,只需确保其llm_config配置正确即可,无需单独修改每个智能体的配置
  • 自定义LLM函数需严格遵循Autogen的参数要求(接受messages和其他关键字参数)
  • 确保服务启动时LangSmith环境变量已正确加载

内容的提问来源于stack exchange,提问作者the cosmic introvert dude

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 05:54:56