六 第二编 · 第三章 · · 约 5 分钟读完

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 强不强,关键在工具设计 + 任务拆解 + 反馈回路,不在模型大小。