news 2026/11/4 12:05:53

Agent 开发核心知识点:从 Chatbot 到会干活的模型

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Agent 开发核心知识点:从 Chatbot 到会干活的模型

前言

Chatbot 只会聊天,Agent 会调用工具、拆解任务、自己纠错。这一波 AI 应用落地的核心就是 Agent。这篇不讲虚的,讲清楚
Agent 的循环结构、Function Calling 的机制和工程上必须处理的问题。

一、Agent 的组成

一个 Agent 通常包含四部分:

表格

组件作用
LLM(大脑)理解任务、决策下一步
Tools(工具)搜索、执行代码、查数据库、发请求
Memory(记忆)短期上下文 + 长期知识
Planning(规划)任务拆解、反思、调整策略

和普通 workflow 的区别:workflow 是固定流程,Agent 是模型自己决定下一步做什么。

二、核心循环:ReAct

ReAct = Reason(推理)+ Act(行动),是绝大多数 Agent 的基础模式:

循环:

  1. Thought:模型思考当前该做什么
  2. Action:调用某个工具,给出参数
  3. Observation:拿到工具返回结果
  4. 重复以上,直到模型认为任务完成

伪代码:

def run_agent(task, tools, max_steps=10): messages = [{"role": "user", "content": task}] for _ in range(max_steps): resp = llm.chat(messages, tools=tools) # 模型决定行动 if not resp.tool_calls: # 不再调工具 = 给答案了 return resp.content for call in resp.tool_calls: result = execute(call.name, call.arguments) # 宿主执行 messages.append({"role": "tool", "content": result, "tool_call_id": call.id}) return "达到最大步数,任务未完成"

三、Function Calling:模型不执行,只「申请」

这是最容易误解的一点:

  1. 你在请求里提供工具列表(名称、描述、JSON Schema 参数)
  2. 模型判断需要工具时,返回结构化的 tool_calls—— 只是申请,不执行
  3. 你的代码真正执行工具
  4. 把结果以 role: tool 的消息回填给模型
  5. 模型基于结果继续

工具定义示例:

{ "name": "get_weather", "description": "查询指定城市的当前天气", "parameters": { "type": "object", "properties": { "city": {"type": "string", "description": "城市名,如 杭州"} }, "required": ["city"] } }

安全边界在于:执行权始终在宿主程序手里,模型只能提请求。这决定了权限控制、沙箱、人工确认都放在宿主侧。

四、工具设计原则(决定 Agent 成功率)

工具写得好不好,比模型选哪个更影响效果:

  1. 单一职责:一个工具只做一件事,别搞「万能执行器」
  2. 描述写清楚:模型靠 description 选工具,写清什么场景用、参数含义、返回什么
  3. 参数少而必填明确:参数越多模型越容易传错
  4. 错误信息对模型友好:返回「city 不能为空,请提供城市名」而不是 KeyError
  5. 工具幂等:模型可能重复调用,删除 / 支付类操作必须防重
  6. 控制返回体积:工具返回几千行内容会撑爆上下文,只回摘要

五、记忆机制

表格

类型实现用途
短期记忆对话 messages 列表(受上下文窗口限制)当前任务状态
长期记忆向量库检索历史 / 知识跨会话记住用户偏好
上下文压缩让 LLM 总结旧对话,替换原文长任务防止超窗口

工程重点:上下文不是越多越好,塞满后模型注意力会稀释,主动摘要比无脑拼接更有效。

六、规划与反思

  • Plan-and-Execute:先让模型出完整计划,再逐步执行 —— 适合步骤明确的长任务
  • ReAct:边想边做 —— 适合探索型任务
  • Reflection(反思):执行失败后让模型检查「哪里错了、怎么改」,再重试一次,能明显提升成功率,成本是 token 翻倍

七、可靠性工程(面试加分项)

Agent 最大的问题是不稳定,工程上必须兜底:

  1. 最大步数限制:防止死循环烧钱(设 max_steps)
  2. 超时与重试:每次工具调用设 timeout,失败有限次重试
  3. 人工确认(Human-in-the-loop):高风险操作(转账、删数据)必须人工确认
  4. 权限最小化:工具只开必要权限,代码执行放沙箱
  5. 全链路 trace:记录每步的 thought/action/observation,否则出问题无法排查
  6. 成本控制:统计 token 消耗,长任务考虑换小模型做简单判断

八、怎么评估一个 Agent

表格

指标含义
任务成功率端到端完成比例(最重要)
平均步数步数越多越慢越贵
工具调用准确率选对工具、传对参数的比例
单任务成本token 消耗

没有评测集就没法优化 —— 和 RAG 一样,先量化。

九、常见坑

  1. 工具描述含糊,模型乱选工具
  2. 工具返回超长文本,几轮后上下文爆掉
  3. 没有最大步数,陷入「调工具→失败→再调」死循环
  4. 让模型直接执行危险操作,没有人工确认
  5. 只测「正常路径」,异常分支(工具报错、返回空)没兜底
  6. 模型说「已完成」但实际没完成,缺少结果校验

十、总结与学习路线

记住三层:循环(ReAct)→ 工具(Function Calling + 好的 Schema)→ 兜底(步数、超时、确认、日志)。

建议路线:

  1. 用任意 LLM API 实现一个 3 工具的小 Agent(计算器 + 搜索 + 文件读写)
  2. 加最大步数和 trace 日志
  3. 用 20 条任务建一个评测集,统计成功率
  4. 再尝试加反思机制,对比前后成功率

如果这篇对你有帮助,点个赞支持一下。后续更新「手把手用 Python 写一个最小可用 Agent」。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/11/4 11:58:27

APK Installer:在 Windows 上一次拖拽完成安卓应用安装

APK Installer:在 Windows 上一次拖拽完成安卓应用安装 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 在电脑上跑安卓应用,通常要部署一套完整…

作者头像 李华
网站建设 2026/11/4 11:57:12

MPC-HC 2.3.4 封面变形修复指南:2分钟自查

MPC-HC 2.3.4 封面变形修复指南:2分钟自查 【免费下载链接】mpc-hc Media Player Classic 项目地址: https://gitcode.com/gh_mirrors/mp/mpc-hc MPC-HC 2.3.4 播放带内嵌专辑封面的音频时,封面会被拉得比例失调、边缘发虚,拖动播放器…

作者头像 李华
网站建设 2026/11/4 11:56:27

Driver Store Explorer:Windows 驱动清理与备份完整指南

Driver Store Explorer:Windows 驱动清理与备份完整指南 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer C 盘空间被占满却找不到原因,或者系统更新后显卡、网卡突…

作者头像 李华
网站建设 2026/11/4 11:54:54

TranslationPlugin:JetBrains翻译插件5个实用技巧

TranslationPlugin:JetBrains翻译插件5个实用技巧 【免费下载链接】TranslationPlugin Translation plugin for IntelliJ-based IDEs/Android Studio. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslationPlugin TranslationPlugin 是一款面向 JetBrai…

作者头像 李华