AIUnlimited
🌳

AI基础

🌱
AI 种子

从零开始

🌿
AI 萌芽

打好基础

🌳
AI 枝干

付诸实践

🏕️
AI 树冠

深入探索

🌲
AI 森林

精通AI

🔨

AI精通

✏️
AI 草图

从零开始

🪨
AI 雕刻

打好基础

⚒️
AI 匠心

付诸实践

💎
AI 打磨

深入探索

🏆
AI 杰作

精通AI

📘

AI实战

📖
理解开源模型

开源模型的基础知识和资源

🎯
问题到模型任务

将业务问题转化为模型任务

⚡
跑通第一个模型

30分钟快速看到第一个结果

🔧
微调与评测

微调模型并评估性能

🚀
应用系统

构建实际AI应用系统

🎨
生成式AI

探索AIGC的开源模型

🤖
Agent智能体

学习Agent框架和MCP工具

📐
基础补充

LLM基础知识和评测

🎓

Claude 学院

🤖
Claude 101 入门

用 Claude 学习 AI 基础知识

💻
Claude Code 101 入门

让 Claude 成为你的结对编程伙伴

🤝
Claude Cowork 入门

与 Claude 协作完成复杂项目

⚙️
Claude 平台 101

使用 Claude API 构建应用

实验室

已加载 7 个实验
🧬神经网络沙盒🤖AI 还是人类?🥋提示工程道场🏁算法竞速🧠AI 知识挑战🏗️系统设计画布
🎯模拟面试进入实验室→
🚀

职业发展

🚀
面试发射台

开启你的旅程

🌟
行为面试精通

掌握软技能

💻
技术面试

通过编程轮次

🤖
AI与ML面试

ML面试精通

🏆
Offer与未来

拿下最好的Offer

立即开始
AIUnlimited

AI 教育平台

沪ICP备18025655号-11

学习

  • AI基础
  • AI实战
  • Claude学院
  • 实验室
  • 职业发展

社区

  • 关于
  • 常见问题

支持

  • 服务条款
  • 隐私政策
  • 联系我们
AI & 工程学习计划›⚙️ Claude 平台 101›课程›代理循环详解
🔄
Claude 平台 101 • 中级⏱️ 7 分钟阅读

代理循环详解

Agent 循环详解

你已经进行了 API 调用,但单个调用只返回一个响应。如果你想自动化工作流,Claude 需要执行、查看结果、决定下一步并继续。这个模式就是人们谈论 智能工作流 时的意思。

Agent 实际上是什么

Agent 是 Claude 的自主版本,在没有人类介入的情况下运行消息循环的两端。Agent 接收任务、选择工具并在循环中执行代码,直到 Claude 决定任务完成。

实现 agent 循环最简单的方式如下:

  1. 向 Claude 发送带有可用工具的消息。
  2. Claude 响应最终答案或使用你定义的工具的请求。
  3. 你的代码执行该工具。
  4. 你将结果发送回 Claude。
  5. 重复直到 停止原因 是 end_turn。

将其视为一个轮次交替的对话:用户启动,agent 调用工具,工具返回结果,agent 继续直到有答案。

最小工作示例

要看到这个循环端到端运行而不涉及数据库或 UI,我们将连接一个名为 get_weather 的假工具并询问 Claude 今天在奥斯汀应该穿什么。Claude 自己无法知道天气,所以它必须调用工具、读取结果,然后给你答案。

这是完整的脚本:

import anthropic

client = anthropic.Anthropic()

# tools 数组告诉 Claude 有什么可用:
# 一个名称、一个描述和一个输入的 JSON 模式。
tools = [
    {
        "name": "get_weather",
        "description": "Get the current weather for a city.",
        "input_schema": {
            "type": "object",
            "properties": {
                "city": {
                    "type": "string",
                    "description": "The city to get weather for",
                }
            },
            "required": ["city"],
        },
    }
]

# run_tool 只是一个硬编码的查询。
# 在真实的应用中,这会访问你的数据库、API 等。
def run_tool(name, tool_input):
    if name == "get_weather":
        return f"Weather in {tool_input['city']}: 95F, sunny"
    raise ValueError(f"Unknown tool: {name}")

messages = [
    {"role": "user", "content": "What should I wear in Austin today?"}
]

# Agent 循环。每次迭代将消息发送给 Claude
# 并在响应的停止原因上 switch。
while True:
    response = client.messages.create(
        model="claude-sonnet-5",
        max_tokens=1024,
        tools=tools,
        messages=messages,
    )

    if response.stop_reason == "end_turn":
        # Claude 完成。打印最终文本并中断。
        for block in response.content:
            if block.type == "text":
                print(block.text)
        break

    if response.stop_reason == "tool_use":
        # 在响应中找到工具使用块并运行每个。
        tool_results = []
        for block in response.content:
            if block.type == "tool_use":
                result = run_tool(block.name, block.input)
                tool_results.append(
                    {
                        "type": "tool_result",
                        "tool_use_id": block.id,
                        "content": result,
                    }
                )

        # 将助手的响应和我们的工具结果
        # 推回消息,然后再次循环以便 Claude 回答。
        messages.append({"role": "assistant", "content": response.content})
        messages.append({"role": "user", "content": tool_results})
第 7 课,共 26 课已完成 0%
←发起 API 调用

讨论

登录 参与讨论

三件事要注意:

  • tools 数组 告诉 Claude 有什么可用:一个名称、一个描述和一个输入的 JSON 模式。
  • run_tool 只是一个硬编码的查询。在真实的应用中,这会访问你的数据库、API 等。
  • 循环 是 agent 循环。每次迭代将消息发送给 Claude 并在响应的停止原因上 switch。在 end_turn 上,Claude 完成——打印最终文本并中断。在 tool_use 上,找到工具使用块,运行每个,将助手的响应和你的工具结果推回 messages,再次循环以便 Claude 回答。

运行它

当你运行脚本时,你会看到两个轮次:

  1. 第一轮: 停止原因是 tool_use。Claude 请求奥斯汀的 get_weather,你的代码返回温度和条件。
  2. 第二轮: 停止原因是 end_turn,Claude 告诉你穿轻便透气的衣服。

两次 API 调用,一次工具执行,一个最终答案。这就是整个循环。你使用 Claude API 构建的任何东西都将与此类似。

生产中的相同循环

在真实环境中,这个相同的循环驱动类似自动审查端点的东西:一个合规 agent 读取结构报告,通过工具查找相关建筑规范,并在工作时逐个将风险发现写回数据库。

循环的形状与你刚才运行的完全相同。区别是:

  • 真实工具而不是模拟天气查询。
  • 结果作为服务器发送事件流式传输回 UI。
  • 发现被持久化到风险发现表。

回顾

  • Agent 是 循环中的 Claude:观察、决定、执行、重复。
  • 循环很简单:发送带有工具的消息,运行 Claude 请求的任何工具,将结果反馈,并在停止原因是 end_turn 时停止。
  • 你拥有循环和工具。Claude 拥有推理。
  • 相同的循环形状从模拟天气演示扩展到生产合规 agent——只有工具和管道改变。
  • 当你不想拥有循环时,managed agents 在 Anthropic 的基础设施上为你运行这个完全相同的循环。