294 字
1 分钟
手写 Agent Loop:理解框架替你省了什么
Loop 本体就几行
while True: 模型输出 = call(model, 历史 + 工具定义) if 是文本: 回复用户,结束 if 是工具调用: 校验参数 -> 调 TaskService -> 结果塞回历史,继续create_task_tool.py 定义 schema,conversation.py 管历史,context_builder.py 组装上下文,tracing.py 记轨迹(M4.9 已做 Trace 持久化)。手写一遍才明白:Agent 所谓智能 = 循环 + 工具 + 状态,没有魔法。
Structured Output:先让模型说人话且格式对
M2 用 DeepSeek Responses API 把“高优先级实现登录页”解析成 TaskDraft 结构。自然语言进、结构化出,这是所有 Tool Calling 的地基——模型输出先有 schema,才有资格进业务。
Eval ≠ 单元测试
- 单元测试:断言确定(
create后list里必须有) - 行为 Eval(
task_agent_eval.py):调真实 DeepSeek,看模型会不会调对工具、参数对不对,跑多次看稳定性
Eval 测的是概率性行为,要统计视角:10 次里对 9 次和对 5 次是两种系统。Prompt(prompts/task_agent.py)和 Eval Case 一起进 git,调参有 diff 可看。
先手写 Loop 再学框架:之后看 LangGraph 的节点/边/状态,会有“原来如此”感而不是“这啥啊”感。