语音摘要 — 点击播放以跟读:正在朗读的行会保持在顶部附近。
您已经进行过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基础设施上为您运行相同循环