AI Agent 进阶实战:规划、搜索、记忆、纠错(Python实现)

0 阅读3分钟

这是我学习 AI Agent 开发第二周的实战记录。第一周做了一个能自动判断意图的智能体(RAG+SQL+计算器),这周给它加上了规划能力、联网搜索、多轮记忆、自我纠错,最后封装成 HTTP 服务。


一、第一周的短板

问题表现
只能单步“对比2024和2025年销量”需要硬编码
没记忆问完“2024年销量”,再问“那2025年呢?”它不知道“那”指什么
不会纠错SQL写错了直接报错
只能本地别人没法调用

这周全解决了。

最终效果

用户问题智能体行为回答
笔记本2024年总销量?规划→执行SQL95台
那2025年呢?结合历史→执行SQL137台,增长42台
今天广州天气?联网搜索大雨,18℃~27℃
笔记本和平板哪个2025年销量高?拆两步→分别查→对比笔记本137台,平板105台
查一下不存在的表执行SQL→检测语法错误→重新规划当前数据库只有sales表

二、技术栈(新增)

工具用途
Tavily联网搜索API
FastAPI + UvicornHTTP服务封装
SQLite记忆数据库(存对话历史)

三、核心架构:规划-执行-总结

用户问题
    ↓
规划节点(LLM拆解任务,选择工具)
    ↓
执行节点(循环调用工具)← 工具注册表
    ↓
反思节点(检查结果)→ 有问题就重试/重新规划
    ↓
总结节点(LLM生成答案)← 加载历史记忆
    ↓
最终答案

四、七项核心能力

1. 规划模式(让LLM自己拆任务)

用户问“笔记本和平板哪个2025年销量高”,LLM自动输出:

{"plan": [
    {"tool": "sql", "query": "SELECT SUM(quantity) FROM sales WHERE product_name='笔记本' AND year=2025"},
    {"tool": "sql", "query": "SELECT SUM(quantity) FROM sales WHERE product_name='平板' AND year=2025"}
]}

不用写一行if-else。

2. 联网搜索(Tavily)

def search_tool(query):
    response = tavily.search(query=query, search_depth="basic", max_results=3)
    return format_results(response["results"])

注册到工具表即可。

3. 反思机制(自我纠错)

执行完一步,让LLM检查结果质量。有问题就标记 need_retry=True

4. 记忆能力(多轮对话)

用SQLite存对话历史:

save_to_memory(session_id, "user", question)
save_to_memory(session_id, "assistant", answer)

规划节点和总结节点都会加载最近5轮对话。

5. 错误分类(不同错误不同处理)

错误类型处理策略
SQL语法错误重新生成SQL
网络超时自动重试
表不存在跳过
搜索无结果换关键词重试

6. 工具注册表(加工具不改核心代码)

registry = ToolRegistry()
registry.register("sql", "查询销售数据库", sql_tool)
registry.register("search", "联网搜索", search_tool)
# 加新工具一行代码
registry.register("calculator", "数学计算", calc_tool)

7. FastAPI封装(服务化)

@app.post("/ask")
def ask(question: QuestionRequest):
    return run_agent(question.question)

启动后访问 http://127.0.0.1:8000/docs 即可测试。


五、运行效果

cd week2
python agent_with_error_classification.py

输出:

image.png

17b2f2c024707a569d7d4581e03aae35.png

3b62b9d401c60620995d9f8bb808654b.png

六、踩坑记录

问题解决
PowerShell运行py文件报错python .\文件名.py
API Key读不到.env放对目录,变量名大写
工具名大小写不匹配统一用小写
SQL语法错误反思节点+重新规划

七、代码仓库

github.com/qiu121122/a…

week2/
├── planning_agent.py               # 规划模式
├── agent_with_search.py            # 联网搜索
├── agent_with_reflection.py        # 反思机制
├── agent_with_memory.py            # 记忆能力
├── agent_with_tool_registry.py     # 工具注册表
├── agent_with_error_classification.py  # 错误分类(完整版)
└── fastapi_service.py              # FastAPI封装

八、下一步

  • 多智能体协作
  • 部署到云服务器
  • 前端界面

上一篇从零实现一个多工具智能体:RAG + SQL + 计算器

本文首发掘金,同步CSDN。