外观
Agent 的代码形态与工作流边界
1. 解决什么问题
“生成 Agent”不是一个神秘进程,也不必须是单独部署的服务。本项目把它落实为角色指令、上下文构造、模型调用循环、工具权限和结构化结果,外层用程序定义教材必须经历的步骤。
2. 原理与术语
Workflow 的主要路径由代码规定;Agent 允许模型在给定目标与工具范围内选择动作。两者可以嵌套。教材系统是显式工作流包围受限模型节点,而不是完全自主决定交付流程的多机器人系统。
3. 输入、输出和执行
生成节点输入需求、来源、规则与既有事实,输出 Lesson;评审节点读取教材并输出 Review;修订节点接收问题清单,只输出 Patch。素材规划角色仅在人工通过后运行。角色职责与图节点不是一一对应的产品服务。
4. 容易混淆
双 Agent 不意味着两台机器、两个模型或两个独立线程。当前四种内部 role 为 generator、reviewer、reviser、producer;其中 reviser 复用生成职责,producer 专管工具计划。简历中的“双 Agent”描述的是生成与审核的核心职责划分。
5. 最小示例
从实际代码观察角色定义,无需连接模型:
python
from app.providers import SYSTEMS
assert set(SYSTEMS) == {"generator", "reviewer", "reviser", "producer"}
print(SYSTEMS["reviewer"])它打印的提示词只是角色的一部分;还必须结合 context 与 ToolSession 才能解释运行边界。
6. 本项目实现
graph.context 为每次调用重新组装数据。评审可以看到教材、来源和规则,却看不到生成模型的对话过程与工具回传记录。修订额外接收 review 和 human_note。相同模型仍可能有共同盲点,所以确定性校验与人工复核不能省略。
7. 源码位置
依次阅读 system/app/providers.py::SYSTEMS/run_model、graph.py::context/build_graph、tools.py::ToolSession。理解这三个位置后,才能准确解释“自定义 Agent”由哪些程序对象组成,而非只引用框架名称。
8. 取舍与替代
固定业务顺序适合明确编排,避免模型跳过审核。工具选择留给模型能表达局部需求,但也带来预算与参数错误。全流程直接程序调用更简单,却无法展示模型驱动工具;完全自主规划则增加测试路径,不符合本次教材交付边界。
9. 实验与验收
在 system 目录创建两个演示任务,仅改变修订预算:
bash
curl -s -H "X-API-Key: ${LAB_API_KEY:-}" -H 'Content-Type: application/json' \
-d '{"theme":"校园生活","scenario":"business_error","max_revisions":0}' http://127.0.0.1:8000/api/jobs
curl -s -H "X-API-Key: ${LAB_API_KEY:-}" -H 'Content-Type: application/json' \
-d '{"theme":"校园生活","scenario":"business_error","max_revisions":2}' http://127.0.0.1:8000/api/jobs验收比较版本数量与评审问题:前者应直接转人工,后者允许局部修订。说明这个分支由程序决定,不是模型决定预算。
10. 故障排查
角色串上下文时先查 context 字段;重复工具调用先查轮次预算;绕过人工时查图边与审核状态。不要只修改提示词解决数据库权限或版本错误,这些需要程序约束。
11. 面试题与追问
问:你开发的 Agent 实际是什么? 是受限的模型执行循环,配合角色上下文、工具和契约。追问:自主性在哪里? 在真实模式下选择工具与生成判断,主要业务顺序由图限定。再追问:双角色保证质量吗? 不保证,需要评测和人工证据。
STAR 应用:假设实验场景,R 为应核对的证据
| 对应 | S:情境 | T:目标 | A:行动 | R:验收证据 |
|---|---|---|---|---|
| 主问 | 面试要求说明自定义Agent | 讲清代码形态 | 对应指令、上下文、工具循环与契约 | 能指出四类对象的实际函数 |
| 追问一 | 模型想跳过审核 | 限制自主决策范围 | 固定图边和人工通过门 | 没有批准版本不能开始正常素材交付 |
| 追问二 | 两个角色都漏掉事实错误 | 承认共同盲点 | 加入确定规则与标注用例 | 分别记录漏检与人工发现,不宣称双角色必然正确 |
这些是设计讨论的参考表达,实际执行前不能改写为已取得的历史成果。
12. 官方资料与版本
Workflows and agents、LangGraph overview。项目 LangGraph 1.0.10;核验日期 2026-11-03。名称不应掩盖实际控制权,扩展阅读见Agent 与 Workflow 对比。