二、Agent 循环引擎
二、Agent 循环引擎
关键点:Agent 循环引擎 + ReAct 模式
工作原理
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1. 任务 ID生成:若未提供任务 ID 则生成一个
2. 追加历史消息:将用户消息添加到对话历史记录中
3. 构建 system prompt:构建或复用缓存的系统提示
4. 检查压缩:检查是否需要预压缩(超过 50% 的上下文)
5. 构建 LLM API 协议:从对话历史记录构建 API 消息
- chat_completions:保持 OpenAI 格式不变
- codex_responses:转换为 Responses API 输入项
- anthropic_messages:通过 anthropic_adapter.py 进行转换
6. 提示:注入临时提示层(预算警告、上下文压力)
7. Anthropic适配:若在 Anthropic 上则应用提示缓存标记
8. 封装可中断 API 调用:发起可中断的 API 调用(_interruptible_api_call)
9. 解析响应:
- 若有工具调用:执行它们,添加结果,循环回到步骤 5
- 若为文本响应:保存会话,如有必要清空内存,返回
消息格式
内部 message 遵循 OpenAI 协议
1
2
3
4
{"role": "system", "content": "..."}
{"role": "user", "content": "..."}
{"role": "assistant", "content": "...", "tool_calls": [...]}
{"role": "tool", "tool_call_id": "...", "content": "..."}
可中断 API 调用
思想是:事件注册 + 事件监听
1
2
3
4
5
6
7
8
┌────────────────────────────────────────────────────┐
│ Main thread API thread │
│ │
│ wait on: HTTP POST │
│ - response ready ───▶ to provider │
│ - interrupt event │
│ - timeout │
└────────────────────────────────────────────────────┘
This post is licensed under CC BY 4.0 by the author.