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避免无限循环 - 对关键工具实现重试与熔断