第6课:Agent Loop:AI自己决定下一步
进度 0/12
🤖
Agent Loop:AI自己决定下一步
AI自己排兵布阵,循环到任务完成为止!
📖知识引入
🔄循环四拍
模型要工具→Harness执行→tool_result回传→再问模型,周而复始
🏁stop_reason判断
stop_reason为end_turn说明模型不再要工具,任务完成,跳出循环
🧭决策权移交
下一步干什么由模型看着结果自己定——这就是「智能体」的含义
🛑步数上限
给循环装max_steps保险丝,防止Agent原地转圈烧光token
💡
每圈都打印stop_reason和工具调用,Agent的「思考轨迹」便一目了然
🔍Agent Loop核心代码
messages = [{"role": "user", "content": "查北京天气,再换算成华氏度"}]
for step in range(10): # 最多10步,防失控的保险丝
resp = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=1024,
system="你是天气助手,需要数据就调用工具",
messages=messages,
tools=tools,
)
if resp.stop_reason == "end_turn":
print("任务完成:", resp.content[0].text)
break # 模型不再要工具,循环谢幕
# 模型要工具:把它的请求和工具结果都记入历史
messages.append({"role": "assistant", "content": resp.content})
for block in resp.content:
if block.type == "tool_use":
result = run_tool(block.name, block.input) # 执行工具
messages.append({
"role": "user",
"content": [{
"type": "tool_result",
"tool_use_id": block.id, # 与申请单配对
"content": str(result),
}],
})一圈圈循环:要工具就执行回传,end_turn就收工——Agent的心脏就这几十行
🎯小测验
第1题:Agent Loop中,模型返回tool_use后Harness该做什么?
第2题:什么信号说明模型认为任务完成、可以退出循环?
第3题:给循环设置max_steps上限的主要原因是?
📝本课知识点
- ✓要工具→执行→回传→再问模型
- ✓end_turn是收工信号
- ✓步数上限防失控
第6课完成!继续探索下一课吧 🚀
