跳到主要内容

Agent 高级开发

本文介绍 AI Agent 的高级开发技巧,包括多工具编排、记忆管理、多 Agent 协作及与 MCP 的集成。

多工具编排

工具分组与描述

为模型提供清晰的工具描述,便于正确选择:

from langchain.tools import tool

@tool
def search_documents(query: str) -> str:
"""在知识库中搜索相关文档,用于回答需要内部知识的问题"""
pass

@tool
def get_stock_price(symbol: str) -> str:
"""查询股票实时价格,symbol 为股票代码如 AAPL"""
pass

条件路由

根据问题类型路由到不同 Agent 或工具集,可结合 LangChain 的 create_structured_chat_agent 或自定义逻辑实现。

记忆管理

对话历史

from langchain.memory import ConversationBufferWindowMemory

memory = ConversationBufferWindowMemory(
memory_key="chat_history",
return_messages=True,
k=5 # 保留最近 5 轮
)

摘要记忆

长对话可先摘要再注入上下文,减少 token 消耗。

多 Agent 协作(CrewAI 示例)

from crewai import Agent, Task, Crew

researcher = Agent(
role="研究专员",
goal="收集并整理信息",
backstory="擅长检索与归纳"
)
writer = Agent(
role="撰稿人",
goal="撰写清晰报告",
backstory="擅长结构化写作"
)

task1 = Task(description="调研 AI Agent 发展现状", agent=researcher)
task2 = Task(description="基于调研结果写报告", agent=writer, context=[task1])

crew = Crew(agents=[researcher, writer], tasks=[task1, task2])
result = crew.kickoff(inputs={"topic": "AI Agent"})

与 MCP 集成

MCP 提供标准化的工具定义与传输。可将 MCP Server 暴露的工具注册为 LangChain Tools,供 Agent 调用。

参考:MCP 服务器开发

错误处理与重试

  • 工具调用失败时返回明确错误信息,便于模型重试或降级
  • 设置 max_iterations 避免无限循环
  • 对关键工具实现重试与熔断

参考