AI 应用开发入门

04Agent 入门:会调工具的 LLM

约 60 分钟

剥掉各种框架的包装,Agent 的本质是一个循环:模型决定下一步动作 → 执行 → 把结果喂回模型 → 直到它说“做完了”。

最小实现:工具调用

tools = [{
    "type": "function",
    "function": {
        "name": "query_order",
        "description": "查询订单状态和物流信息",
        "parameters": {
            "type": "object",
            "properties": {"order_id": {"type": "string"}},
            "required": ["order_id"],
        },
    },
}]

while True:
    resp = client.chat.completions.create(
        model="gpt-4o-mini", messages=messages, tools=tools,
    )
    msg = resp.choices[0].message
    if not msg.tool_calls:
        break  # 模型认为做完了
    for call in msg.tool_calls:
        result = query_order(**json.loads(call.function.arguments))
        messages.append({"role": "tool", "tool_call_id": call.id, "content": str(result)})

就这么点东西。框架(LangChain、CrewAI 之类)做的是在这个循环上叠加记忆、规划、多角色协作。

什么时候需要 Agent

  • 需要:任务路径不确定(查订单还是查库存取决于用户问什么)、要多步操作、要和外部系统交互
  • 不需要:固定流程的抽取/分类/翻译——一个 prompt 就够,套 Agent 只会变慢变贵变不稳

经验法则:能用确定的代码流程写死的,就别让模型自己决定。 Agent 的每一步都引入一次出错机会。

生产环境的三个护栏

  1. 步数上限:while True 必须配 max_iterations,模型会陷入循环
  2. 工具白名单:模型能调的工具必须枚举死,删除类操作要人工确认
  3. 全程日志:每次工具调用的入参出参都要落库,出了问题才能复盘

练习

给上面的循环加两个工具(get_weather、search_docs),实现一个能同时回答“天气怎么样”和“公司制度”的入口。观察模型在什么问题下会选错工具。

至此入门课结束。想深入评估、成本优化和上线运营,可以看付费专栏的进阶课程。