Claude Platform 101
← 所有课程
课程 04Claude Platform 101

代理究竟是什么

摘要音频

语音摘要 — 点击播放以跟读:正在朗读的行会保持在顶部附近。

学习笔记

您已经进行过API调用,但单次调用仅返回一个响应。若要自动化工作流程,Claude需要执行动作、查看结果、决定下一步并持续运作。这种模式就是人们所说的代理工作流

代理的本质

代理是Claude的自主版本,无需人工干预即可运行消息循环的两端。代理接收任务、选择工具,并在循环中执行代码,直到Claude判定任务完成。

实现代理循环的最简方式如下:

  • 向Claude发送带有可用工具的消息。
  • Claude回应最终答案或调用您定义工具的请求。
  • 您的代码执行该工具。
  • 将结果返回给Claude。
  • 重复直至停止原因为end_turn。

可以将其视为交替进行的对话:用户发起请求,代理调用工具,工具返回结果,代理持续运作直至获得答案。

最小可行示例

为完整演示此循环(无需引入数据库或UI),我们将配置一个名为get_weather的模拟工具,询问Claude奥斯汀今日穿搭建议。Claude自身无法获知天气,因此必须调用工具、读取结果后才能给出答案。

完整脚本如下:

import anthropic

client = anthropic. Anthropic()

tools = [ { "name": "get_weather", "description": "获取指定城市的当前天气", "input_schema": { "type": "object", "properties": { "city": { "type": "string", "description": "需要查询天气的城市", } }, "required": ["city"], }, } ]

def run_tool(name, tool_input): if name == "get_weather": return f"{tool_input['city']}天气:35°C,晴朗" raise ValueError(f"未知工具: {name}")

messages = [ {"role": "user", "content": "今天在奥斯汀该穿什么?"} ]

while True: response = client. messages. create( model="claude-sonnet-4-6", max_tokens=1024, tools=tools, messages=messages, )

if response. stop_reason == "end_turn":

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, } )

messages. append({"role": "assistant", "content": response. content}) messages. append({"role": "user", "content": tool_results})

注意三个关键部分:

  • tools数组告知Claude可用工具:包含名称、描述及输入参数模式
  • run_tool仅为硬编码查询。实际应用中会连接数据库或API
  • 循环即代理循环。每次迭代向Claude发送消息并根据停止原因切换操作。当end_turn时,Claude已完成——打印最终文本并退出。当tool_use时,查找工具调用块,执行后将助手响应和工具结果加入messages,继续循环等待Claude回应

运行示例

运行脚本将看到两个回合:

  • 第一回合:停止原因为tool_use。Claude请求获取get_weather的天气,代码返回温度及天气状况
  • 第二回合:停止原因为end_turn,Claude建议穿着轻薄透气的衣物

代理循环终端输出:第一回合因tool_use停止并调用get_weather查询奥斯汀天气,第二回合因end_turn停止并输出最终穿搭建议

两次API调用,一次工具执行,一个最终答案。这就是完整的循环流程。您使用Claude API构建的任何应用都将遵循类似模式。

生产环境中的相同循环

实际生产环境中,此类循环可驱动自动审查端点:合规代理读取结构报告,通过工具查询相关建筑规范,并逐步将风险发现写入数据库。

合规审查仪表盘显示已上传的结构报告,每个报告配有启动代理的"运行自动审查"按钮

其循环结构与前述示例完全相同,区别在于:

  • 使用真实工具而非模拟天气查询
  • 结果以服务器推送事件形式实时返回UI
  • 发现结果持久化存储至风险发现表

运行中的合规代理审查轨迹:循环迭代时进行数十次工具调用,查询建筑规范库并检索具体条款

要点回顾

  • 代理即循环中的Claude:观察、决策、执行、循环
  • 循环逻辑简单:发送带工具的消息,执行Claude请求的任何工具,反馈结果,当停止原因为end_turn时结束
  • 您掌控循环与工具,Claude负责推理
  • 相同循环结构可从天气演示扩展至生产级合规代理——仅需变更工具与基础设施
  • 若不愿自行维护循环,托管代理将在Anthropic基础设施上为您运行相同循环
抽认卡 7 张卡片
问题
点击显示 · ←/→
答案
点击翻回
导出到 Anki (.tsv) ↓
知识检测 6 题