本阶段课程 · Agent 的组成与运行
从一次 API 调用到一个 Agent
逐层加入工具、状态、反馈循环与停止条件,解释每层解决的问题。
Agent是在一次模型调用之外,增加了什么
到这里,你已经学过模型API、消息、资料与工具。Agent可以用这些已有概念连接起来理解:应用围绕一个目标,让模型选择行动,执行允许的工具,把反馈交回模型,再根据新情况继续或停止。
本课程使用这个工作定义,是为了突出“根据反馈选择后续行动”。不同产品对Agent的命名范围可能不同,不能只凭一个产品叫作Agent,就判断它具备怎样的自主能力。
第一层:一次普通模型请求
任务是“为12人找周日14—16点可用、总价不超过600元的场地”。如果只调用一次模型,没有提供场地信息和查询能力,它可以给选址建议,却不能确认真实空位与价格。
这一层只有用户目标和模型生成。应用把结果显示给用户后就结束,不会自动知道下一步查哪一家。模型能够描述计划,不代表计划已经执行。
第二层:加入一次工具调用
应用增加query_venue工具,并向模型说明它能查营业、空位、容量与价格。模型返回“查询A”的请求,应用运行工具,得到“A周日关闭”。然后把结果交回模型,它可以说明A不合适。
此时系统已经连接了外部能力,但如果应用到此就停止,仍没有完成找场地的目标。单次工具调用解决的是一次交互,不能代替持续推进整个任务。
第三层:让反馈决定下一次调用
应用保留原目标与查询记录,再次调用模型。模型看到A关闭,可以请求查询B。工具返回“B容纳16人,目标时段可用,总价520元”。这些新事实再次进入上下文,模型才有条件做出比较。
| 新增部件 | 解决的问题 | 少了它会怎样 |
|---|---|---|
| 目标与约束 | 定义什么算完成 | 可能找到场地却忘记预算 |
| 模型调用 | 理解情况、提出下一步 | 没有基于语言与反馈的选择能力 |
| 工具执行 | 获取事实或完成动作 | 只能描述查询,无法真正取得结果 |
| 状态记录 | 保留已知与未完成事项 | 可能重复查询或沿用旧条件 |
| 循环控制 | 把反馈用于下一轮 | 查一次就停,无法持续推进 |
| 停止与权限检查 | 限制过程与外部后果 | 可能无限重试或越过授权 |
第四层:决定什么时候可以结束
B是否满足目标,要逐项比较:16人容量能容纳12人;目标时段可用;520元不超过600元。若任务只要求推荐,交付这个候选及依据便可以结束。若还要预约,则需要预约工具与具体授权,并核对执行回执。
应用还需要规定失败条件,例如工具连续不可用、没有合适候选、预算无法满足、达到轮数上限。停止时保留已有证据,说明还缺什么,不能靠不断生成文字假装任务一直在进展。
最小实现的逻辑可以怎样写
下面是白话伪代码,用来说明控制过程,不能直接作为某个平台的可运行程序:
保存用户目标、约束和可用工具。 在次数与权限允许的范围内: 把当前记录交给模型。 如果返回最终答案,检查并结束。 如果返回工具请求,检查参数与权限。 执行工具,把真实结果加入记录。 达到限制或无法继续时,说明状态并停止。
框架可以替开发者封装这段循环、消息格式和工具分发。可视化平台也可以提供类似能力。无论使用哪一种,理解这些部件都能帮助你判断系统实际做了什么,以及为什么卡住。下一课会把这段循环展开为可观察的日志。
检查一下理解
本节参考与继续阅读
下列章节用于核对概念与机制。本站以中文重新组织讲解,例子和练习为独立编写。
- Hugging Face · 从例子理解 Agent
参考先给具体目标,再区分模型与工具的解释顺序。
- Hugging Face · 从API与工具构建最小Agent
对应从一次调用到工具执行、结果回传与继续生成的教学顺序;本站用白话伪代码和自写场地示例讲解。
- Anthropic · 构建有效的 Agent
可选练习能说出Agent相比一次模型请求多了哪些部件,每个部件解决什么问题。
能说出Agent相比一次模型请求多了哪些部件,每个部件解决什么问题。
先读下面四层搭建过程,再打开Agent透明实验室。实验把每次请求和结果分开显示,使用固定分支帮助观察;真实系统中的动作选择由模型参与完成。
为12人读书会找周日14:00—16:00可用场地,总预算600元。先核对人数、时段、总价,给出推荐;预约前让我确认。
跟着做一遍
下面的结果是本站编写的对照示例。实际工具的措辞可能不同,按每步的关键条件检查即可。
第一层:只有一次模型请求
把目标发给没有联网或查询工具的普通对话,并明确没有场地资料。
目标:为12人找周日14—16点可用场地,总预算600元。当前没有场地数据,也没有查询工具。请说明还需要哪些事实,不要编造实时空位或价格。
做完后,展开结果对照
需要场地容量、营业时段、目标时间空位和总价。只能提出查找办法,不能确认哪个场地现在可用。
为什么这样做API能生成回答,但不会因为目标具体就自动拥有实时业务数据。
第二层:让模型能提出查询请求
读上一阶段的工具约定:query_venue需要场地、日期与人数。在实验中点击第一步、第二步,看请求A与A关闭的反馈。
做完后,展开结果对照
模型先提出查询A;应用验证后运行工具;工具返回A周日关闭。此时有了一条新事实,但任务还没完成。
为什么这样做工具定义告诉模型可以问什么;应用代码或平台负责执行。只接上一个工具,并不意味着任务会自动反复推进。
第三层:把结果送回,再决定下一步
继续点击,观察模型第二次请求与工具结果。不要跳过中间事件。
做完后,展开结果对照
模型看到A关闭后改查B;工具返回B容纳16人、目标时段可用、总价520元。
为什么这样做应用把目标、已有记录与工具结果一起交回模型,模型才可以根据新反馈选择下一步。这个来回,是从一次调用变成持续做事的关键。
第四层:加验收、停止和确认
继续到任务交付。阅读B的具体条件,此时先不要确认预约。再看“最多模型调用轮数”与查询权限控制。
做完后,展开结果对照
B满足12人、指定时段、600元预算,系统给出推荐并等待确认。默认场景用3轮模型调用:查A、查B、交付。
为什么这样做可运行的Agent还需要保存任务状态、检查参数与权限、限制轮数、处理失败,并在有明确后果的动作前保留确认点。
Agent,智能体
在本课中,指围绕目标使用工具、根据反馈选择后续行动,并在满足条件或触及限制时停止的系统。
没做出来?从这里排查
它一直给建议却不查询
检查是否真的配置了查询工具,以及模型是否能看到工具定义。
查一次后就结束,没继续找B
检查应用是否把工具结果返回模型,并允许在次数限制内继续下一轮。
换一个例子验证
把这个Agent拆成五张部件卡。
- 写出目标与完成标准。
- 写出模型调用、工具、记录状态、循环与停止各负责什么。
- 删掉任意一张卡,说明任务会在哪一步卡住。
完成状态仅保存在当前浏览器,可再次点击取消。