autogen AssistantAgent 类详解
摘要 AssistantAgent是一个智能助手代理类,继承自BaseChatAgent和Component[AssistantAgentConfig],具备模型推理、工具调用和任务处理能力。主要功能包括:流式输出、工具反射、上下文管理、记忆联动和任务交接。它支持结构化输出,可通过构造函数配置模型客户端、工具列表、工作台、交接配置等参数。使用时需注意工具名唯一性、线程安全限制以及不同模型的特异行为
·
AssistantAgent 类详解
概述
AssistantAgent 是一个具备工具调用能力的智能助手代理类,继承自 BaseChatAgent 和 Component[AssistantAgentConfig]。它能够根据用户输入,调用模型和工具,自动完成任务,并支持流式输出、工具反射、上下文记忆、交接(handoff)等高级功能。
主要功能
- 支持模型推理与流式输出
- 支持工具调用与工具结果反射
- 支持多种上下文管理(如消息窗口、token 限制等)
- 支持记忆模块与上下文联动
- 支持任务交接(handoff)到其他代理
- 支持结构化输出(如 Pydantic 模型)
构造函数参数
- name (str): 代理名称。
- model_client (ChatCompletionClient): 用于推理的模型客户端。
- tools (可选, List[BaseTool/函数]): 可注册的工具列表。
- workbench (可选, Workbench): 工具工作台,和 tools 互斥。
- handoffs (可选, List[HandoffBase/str]): 任务交接配置。
- model_context (可选, ChatCompletionContext): 上下文管理器。
- description (str): 代理描述。
- system_message (可选, str): 系统消息,推理时会加在消息前。
- model_client_stream (bool): 是否启用流式输出。
- reflect_on_tool_use (bool): 工具调用后是否再次推理生成最终回复。
- tool_call_summary_format (str): 工具调用结果摘要格式。
- output_content_type (可选, type[BaseModel]): 结构化输出类型。
- output_content_type_format (可选, str): 结构化输出内容格式字符串。
- memory (可选, Sequence[Memory]): 记忆模块。
- metadata (可选, Dict[str, str]): 元数据。
主要行为说明
- on_messages / on_messages_stream:处理用户消息,返回最终回复或流式事件。
- run / run_stream:运行任务,返回 TaskResult 或流式消息。
- 工具调用:模型返回工具调用时,自动执行工具,支持并发。
- 工具反射:可配置是否在工具调用后再次推理生成最终回复。
- 交接(handoff):支持将任务交接给其他代理。
- 上下文管理:支持消息窗口、token 限制、记忆模块等多种上下文管理方式。
- 结构化输出:可通过 output_content_type 返回结构化数据。
注意事项
- 仅需传入新消息,代理会自动维护历史状态。
- 该类非线程安全/协程安全,不可多任务/多协程共享。
- 工具名、交接名需唯一,且不能互相重名。
- 工具与 workbench 互斥。
- 某些模型(如 o1-mini)不支持 system_message 和 function calling。
- Claude 模型在工具反射时需注意工具定义完整性。
示例
基本用法
from autogen_ext.models.openai import OpenAIChatCompletionClient
from autogen_agentchat.agents import AssistantAgent
model_client = OpenAIChatCompletionClient(model="gpt-4o")
agent = AssistantAgent(name="assistant", model_client=model_client)
result = await agent.run(task="说出两个北美城市")
print(result)
工具调用
from autogen_core.tools import FunctionTool
def get_time() -> str:
"""返回当前时间"""
return "12:00 PM"
tool = FunctionTool(get_time, description="获取当前时间")
agent = AssistantAgent(name="assistant", model_client=model_client, tools=[tool])
结构化输出
from pydantic import BaseModel
class Output(BaseModel):
answer: str
agent = AssistantAgent(name="assistant", model_client=model_client, output_content_type=Output)
记忆模块
from autogen_core.memory import ListMemory, MemoryContent
memory = ListMemory()
await memory.add(MemoryContent(content="用户喜欢披萨。", mime_type="text/plain"))
agent = AssistantAgent(name="assistant", model_client=model_client, memory=[memory])
交接(handoff)
from autogen_agentchat.base import Handoff
handoff = Handoff(target="other_agent")
agent = AssistantAgent(name="assistant", model_client=model_client, handoffs=[handoff])
参考
- 支持的模型、工具、上下文、记忆等详细用法请参考官方文档。
更多推荐


所有评论(0)