现代智能体(Agent)通常包含五大核心模块:
规划 → 记忆 → 工具 → 执行 → 反思
类比人类认知:
规划:制定旅行路线
记忆:记住历史经验
工具:使用地图APP
执行:开车前往目的地
反思:评估路线是否最优

graph TD
A[用户输入] --> B(任务拆解)
B --> C{是否需要工具?}
C -->|是| D[选择工具]
C -->|否| E[直接生成]
D --> F[执行工具]
F --> G[结果解析]
G --> H[综合输出]
H --> I[反思优化]
I --> J[最终响应]基于LLM的路由:根据输入动态选择工具
置信度过滤:仅当置信度>0.7时执行动作
备选路径:设置Fallback机制防止流程中断
代码示例:基于LangChain的决策路由
from langchain.agents import Tool, AgentExecutor
from langchain.agents import create_react_agent
tools = [
Tool(
name="Search",
func=search_api,
description="用于搜索实时信息"
),
Tool(
name="Calculator",
func=math_calculator,
description="用于数学计算"
)
]
agent = create_react_agent(llm, tools, prompt_template)
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
agent_executor.invoke({"input": "上海今日气温是多少华氏度?"})
from langchain_experimental.plan_and_execute import PlanAndExecute planner = PlanAndExecute( planner=llm_planner, executor=executor_chain, max_iterations=3 ) result = planner.run( "规划一次北京三日游,包含文化景点和特色美食" ) print(result)
输出示例:
Day1: 故宫参观 → 午餐(炸酱面) → 景山公园观景 Day2: 颐和园 → 午餐(铜锅涮肉) → 798艺术区 Day3: 长城 → 午餐(驴打滚) → 返程
def self_reflect(response):
reflection_prompt = f"""
评估以下回答的质量:
问题:{query}
回答:{response}
评估标准:
- 准确性(1-5分)
- 完整性(1-5分)
- 可读性(1-5分)
输出改进建议:
"""
return llm(reflection_prompt)
# 执行流程
response_v1 = agent_executor.invoke(query)
feedback = self_reflect(response_v1)
response_v2 = agent_executor.invoke(query + "\n优化建议:" + feedback)代码验证:执行前检查代码语法
import ast
def validate_code(code):
try:
ast.parse(code)
return True
except SyntaxError:
return False
if validate_code(generated_code):
exec(generated_code)
else:
self_reflect("生成的代码存在语法错误")
from langchain.vectorstores import FAISS
from langchain.embeddings import OpenAIEmbeddings
memory_store = FAISS.from_texts(
texts=["用户偏好素食", "上次旅行选择了文化类景点"],
embedding=OpenAIEmbeddings()
)
# 检索相关记忆
relevant_memories = memory_store.similarity_search("推荐餐厅", k=2)
print([doc.page_content for doc in relevant_memories])
# 输出: ['用户偏好素食', '上次旅行选择了文化类景点']常用工具类别:
信息检索:Google Search API、Wikipedia
计算:Wolfram Alpha、Python REPL
专业领域:法律条文查询、医疗知识库
代码示例:调用天气API
import requests
@tool
def get_weather(city: str) -> str:
"""获取指定城市当前天气"""
api_key = "YOUR_API_KEY"
url = f"http://api.weatherapi.com/v1/current.json?key={api_key}&q={city}"
response = requests.get(url)
return f"{city}气温:{response.json()['current']['temp_c']}℃"
print(get_weather.invoke("上海")) # 输出: 上海气温:25℃from langchain.tools import tool @tool def text_to_speech(text: str) -> str: """将文本转为语音文件""" from gtts import gTTS import io tts = gTTS(text=text,) mp3_file = io.BytesIO() tts.write_to_fp(mp3_file) return mp3_file # 集成到智能体 tools.append(Tool( name="TTS", func=text_to_speech, description="文本转语音工具" ))
基于嵌入相似度:计算工具描述与用户请求的余弦相似度
强化学习训练:使用PPO算法优化工具选择策略
代码示例:工具选择器
from sklearn.metrics.pairwise import cosine_similarity
def select_tool(query, tools):
query_embed = embed(query)
tool_embeds = [embed(t.description) for t in tools]
similarities = cosine_similarity([query_embed], tool_embeds)[0]
return tools[similarities.argmax()]
selected_tool = select_tool("计算圆的面积", tools)
print(selected_tool.name) # 输出: Calculatortry:
result = selected_tool.run(inputs)
except Exception as e:
logger.error(f"工具执行失败: {str(e)}")
result = llm(f"工具{selected_tool.name}执行失败,请重新尝试。错误信息:{str(e)}")
注:本文代码需配置OpenAI API密钥及安装:
pip install langchain openai fastapi gtts scikit-learn
更多AI大模型应用开发学习内容,尽在聚客AI学院。