这是我学习 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. 规划模式

用户问“笔记本和平板哪个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"}
    ]
}

2. 联网搜索

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

3. 反思机制

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

4. 记忆能力

用SQLite存对话历史,规划节点和总结节点都会加载最近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

输出:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

七、踩坑记录

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

八、代码仓库

https://github.com/qiu121122/agent-learning

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 + 计算器(Python + LangGraph)

本文首发掘金,同步CSDN。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐