Agent
能自主规划、调用工具、达成目标的程序。
一定义
Agent 是一个接到目标后能自主规划、调用工具、直到目标完成的程序。它不是更聪明的对话,而是一个会自己决定下一步该干什么的循环体。
二为什么重要
"对话"只能回答问题,"Agent" 能完成任务。这个区别,比模型参数大几个 B 重要得多。当你不再问 AI "该怎么写",而是直接告诉它"帮我把这个做完",Agent 范式才真正落地。
三一个 Agent 的最小骨架
目标: "把 /tmp/data.csv 转成 json 并校验字段"
while 没完成 and 步数 < MAX:
observation = 看现状()
thought = 模型.plan(observation)
action = 模型.choose_action(thought)
执行(action)
记录到日志
return 结果
三件事就够了:
- 观察(当前状态)
- 思考(下一步该干什么)
- 行动(调一个 Tool / 给最终答复)
四最小可跑的例子
from openai import OpenAI
client = OpenAI()
tools = [...] # 略,见 Tool 章
messages = [{"role": "user", "content": "把 /tmp/data.csv 读出来转成 JSON"}]
for _ in range(8):
resp = client.chat.completions.create(
model="gpt-4o-mini",
messages=messages,
tools=tools,
)
msg = resp.choices[0].message
messages.append(msg)
if msg.tool_calls: # 模型选择调用 Tool
for call in msg.tool_calls:
result = run_tool(call) # 你的实现
messages.append({
"role": "tool",
"tool_call_id": call.id,
"content": result,
})
continue
print("最终答复:", msg.content)
break
五常见误区
- 什么都想一步到位 —— Agent 要能停、能重试、能放弃,不是永远不停。
- 没有"完成"的判定 —— 必须显式定义什么叫"完成",否则它会反复折腾。
- 不限制最大步数 —— 一定要设上限,否则一个调用循环能把账户跑空。
- 以为 Agent = 强模型 —— Agent 强不强,关键在工具设计 + 任务拆解 + 反馈回路,不在模型大小。