01Bread Agent · 第 2 章
总进度 2 / 33

第一次工具调用

ch00 已经能让模型回答问题,但有些答案需要从外部取得。例如“现在几点了”,就需要读取当前时钟。

2026-09-28约 35 分钟80 行代码难度 ★★

如果想获取全套课程资料,请关注微信公众号 「AI面包君」,回复 「课程资料」 即可领取。

1. 用工具查到当前时间

ch00 已经能让模型回答问题,但有些答案需要从外部取得。例如“现在几点了”,就需要读取当前时钟。

模型仅凭已有训练知识,不能知道这台电脑此刻的时间。我们可以提供一个读取系统时间的函数,让程序在需要时执行。

这个过程叫工具调用,也常写作 tool calling 或 function calling:模型提出要调用哪个工具,程序执行后把结果交回给它。

这一章就用查询时间的例子,走完一次“提出调用 → 执行函数 → 根据结果回答”的过程。

整个流程长这样(看不懂没关系,跑完代码再回来看就懂了):

你:"现在几点?"
   │
   ▼
+----------------------------------+
|  第 1 次请求 LLM(带工具清单)   |
+----------------------------------+
   │  LLM 决定:"我要调 get_current_time"
   ▼
+----------------------------------+
|  我们的 Python 真的去执行那个函数 |
|  → 返回 "2026-05-16 14:32"        |
+----------------------------------+
   │
   ▼
+----------------------------------+
|  第 2 次请求 LLM(带工具结果)   |
+----------------------------------+
   │
   ▼
你:(看到)"现在是 2026 年 5 月 16 日 14:32。"

本章只处理一次工具调用,再请求一次最终回答。先看清这两次模型请求分别做什么,ch02 再把它扩展成能反复调用工具的循环。

<!-- bread-visual:start -->

模型提要求,Python 真正动手

图解: 例子:回答“现在几点了?”需要两次模型请求。 工具清单是说明书,函数是执行者;tool_call_id 让结果与请求配对。

<!-- bread-visual:end -->

2. 跑起来,观察工具调用记录

跑命令

cd ch01_one_tool
python main.py

用 Anaconda 环境的同学:把 python 换成 D:\anaconda3\envs\xxxxx\python.exe。

预期输出

[工具调用] get_current_time({})
[工具返回] 2026-05-16 14:32:08

[最终回答] 现在是 2026 年 5 月 16 日 14:32。

重点是中间那两行 [工具调用] 和 [工具返回]——它们证明了 AI 真的让我们的 Python 去查了系统时间,不是脑补的。

如果没有这两行,说明本次模型直接作答了,不能据此确认它读取了系统时间。可以检查工具描述,并使用更明确的提问;文末也安排了修改描述的对照练习。

image-20260523113442192


<!-- bread-practice:start -->

实操画面对照

工具请求与系统返回的真实时间

实操运行记录: 实际执行课程副本的 main.py;展示原始输出第 2–3 行。工具请求与系统返回的真实时间。这是实测日志的排版图,并非 Windows 原生终端截图;模型回复可能随运行变化。

试读到这里 · 后续内容已封存

关注公众号,继续把这章学完

在「AI面包君」发送关键词「学习AI」拿到口令。验证一次,这个浏览器就能继续阅读全部课程。