Skip to content

← AiAgent

Agent 开发核心概念

一、Agent 的本质

Agent = LLM(大脑推理)+ 工具(外部能力)+ 记忆(历史经验)+ 行动循环(自主迭代)

普通 LLM:输入 → 输出,单次交互,无法自主执行多步骤任务
Agent:  输入 → 思考 → 行动 → 观察 → 评估 → 思考 → 行动 … 循环,直至任务完成

核心特征:自主闭环、主动执行、持续反思

二、完整架构(7层)

  1. 感知层:接收多模态输入(文本 / 图片 / 文件 / 数据流)
  2. 记忆层:存取会话上下文、长期知识库、历史行动记录
  3. 规划层:任务拆解、推理决策、制定行动方案
  4. 工具层:管理工具清单,由 LLM 决定调用哪个工具
  5. 执行层:执行函数 / 接口调用,获取外部返回结果
  6. 评估层:自检任务进度、校验结果、判断是否继续循环、运行监控
  7. 输出层:整合全部信息,生成面向用户的最终回答

三、推理模式

ReAct(最主流)

Thought(思考)→ Action(行动)→ Observation(观察结果)→ 继续思考…

Chain of Thought(CoT)

复杂问题拆步骤推理:"首先…其次…因此…"

Plan & Execute

先制定完整计划 → 再逐步执行(适合写报告、长流程任务)

Self-Reflection(自我反思)

生成答案 → 自检"这样对吗?" → 发现问题 → 修正(适合高精度场景)

四、工具调用

① 定义工具(名称 + 描述 + 参数)
② LLM 读取工具列表,自主决定调哪个
③ 执行工具,拿到结果
④ 结果塞回上下文,继续推理

常见工具类型:

搜索类:网络搜索、数据库查询、文档检索
操作类:读写文件、发邮件、调 API
计算类:执行代码、数学计算
感知类:读图片、解析 PDF

LLM 调用工具时返回的 JSON:

json
{"tool": "search_web", "args": {"query": "2024年GDP数据"}}

现代 Agent 支持并行工具调用:一次推理同时调多个工具,再汇总结果(大幅提速)。

工具的 description 写得好不好,直接决定模型会不会用对。


五、记忆系统

类型存在哪特点
短期记忆上下文窗口对话历史,窗口满了就丢
长期记忆向量数据库 / 文件永久保存,按需检索
实体记忆结构化存储记住关键信息("张三是VIP客户")

六、RAG(检索增强生成)

解决:模型不知道你的私有数据(法律文档、内部资料)

离线:文档 → 切块 → 向量化 → 存入向量数据库

在线:用户提问 → 向量化 → 检索相关片段 → 塞进上下文 → LLM 回答

法律场景:把法条、判例、合同模板存进向量库,问什么检索什么,回答有据可查。

为什么切块:整文档太大塞不进上下文,小块才能精准匹配问题(通常 300~500 字/块)。


七、多 Agent

单 Agent 搞不定的复杂任务,拆分给多个专职 Agent:

主控 Agent(分解任务)
  ├─ 研究 Agent(搜集信息)
  ├─ 分析 Agent(处理数据)
  └─ 报告 Agent(生成输出)

八、关键工程问题

问题解法
上下文超长滚动截断 / 摘要压缩旧消息
工具调用失败捕获异常 → 重试 / 换备选工具
无限循环设最大步数上限(max_steps=20)
成本失控限 Token 预算 + 记录每次消耗
危险操作Human-in-loop:暂停等人确认再继续

Agent 不能单步调试,追踪工具(LangSmith / Langfuse)是定位问题的唯一方式。


九、Prompt Engineering(系统提示词)

系统提示词决定 Agent 的一切行为:

- 角色定位(你是谁)
- 能力边界(你能做什么)
- 行为规范(遇到 X 情况怎么做)
- 工具使用规则(什么时候用哪个工具)
- 输出格式(怎么回答)

系统提示词 = Agent 的灵魂,写好它比写代码更重要。


十、测试评估

层级测什么怎么测
单元测试工具函数普通代码测试
集成测试完整循环跑真实用例
Evals回答质量语义正确?有无幻觉?
追踪每步行为LangSmith / Langfuse
回归测试改 Prompt 后老问题还对吗自动化跑用例集

十一、完整流程

用户输入
  ↓ 感知
系统提示词 + 记忆检索 + 对话历史
  ↓ 规划(ReAct)
需要工具?
  ├─ 是 → 调工具 → 拿结果 → 回到规划
  └─ 否 → 生成回答
        ↓ 评估
    质量 OK?
  ├─ 是 → 输出给用户
  └─ 否 → 自我反思 → 修正 → 再输出

    存入记忆 + 写入追踪日志

实现路径(由简到难)

1. 工具调用(Function Calling)← 从这里开始
2. 加入 RAG(接入文档知识库)
3. 加入记忆(多轮对话持久化)
4. 测试评估(保证质量)
5. 多 Agent(复杂任务协作)

Last updated: