首页 教程 常见问题

13.3 Agent SDK Agent 循环

实现 Claude Agent 的智能循环——代理自主思考和行动的核心机制。

代理循环模型

代理循环是 AI 代理的核心逻辑:

  1. 思考:基于当前上下文,决定下一步行动
  2. 行动:调用工具获取更多信息或改变环境
  3. 观察:收集工具调用的结果
  4. 重复:直到任务完成

基本实现

def agent_loop(prompt, max_iterations=10):
    messages = [{"role": "user", "content": prompt}]

    for iteration in range(max_iterations):
        response = client.messages.create(
            model="claude-sonnet-4-20250514",
            max_tokens=2048,
            tools=tools,
            messages=messages
        )

        # 检查是否有工具调用
        tool_uses = [c for c in response.content
                     if c.type == "tool_use"]

        if not tool_uses:
            # 代理完成了任务
            final_text = [c.text for c in response.content
                         if c.type == "text"]
            return final_text[0] if final_text else "无输出"

        # 执行每个工具调用
        results = []
        for tool_use in tool_uses:
            result = execute_tool(tool_use)
            results.append(result)

        # 将结果添加回消息
        messages.append({
            "role": "assistant",
            "content": response.content
        })
        messages.append({
            "role": "user",
            "content": [{
                "type": "tool_result",
                "tool_use_id": tool_use.id,
                "content": result
            }]
        })

    return "达到最大迭代次数"

终止条件

代理循环应该有明确的退出条件:

多步推理

代理循环支持复杂的多步推理:

# 每个迭代中,Claude 可以:
# 1. 决定使用哪个工具
# 2. 基于之前的结果决定下一步
# 3. 自行判断何时完成
# 4. 返回最终答案

# Claude 的推理过程:
# "我需要先读取文件 → 分析结构 → 搜索引用 → 总结"

下一步