🤖 现代 AI 开发者 · 认识 AI 与 Agent

手把手:第一个能调用工具的 AI Agent(最小代码讲解)

看懂一段最小代码 + 判断对错

工具,其实就是一个普通函数

别被“工具”吓到。给 Agent 的工具,就是你写的一个普通函数,外加一句“这个函数是干嘛的”说明,好让大模型知道什么时候该用它。

def get_weather(city: str) -> str:
    """查询某个城市今天的天气。"""
    return weather_api(city)

tools = [get_weather]  # 把工具交给 Agent

最小 Agent 的样子

把“循环”写成代码,骨架就这么点:模型决定要不要调工具,调了就把结果喂回去,直到它说“我答完了”。

while True:
    step = model.think(history, tools)
    if step.is_final:        # 模型说:可以回答了
        return step.answer
    result = call_tool(step)   # 做:执行工具
    history.append(result)     # 看:把结果喂回去,进入下一轮
💡看出来了吗?这就是上一课的“想→做→看”循环,一字不差地变成了代码。

模型怎么知道该调哪个工具?

你给它一排工具(查天气、查数据库、发邮件……),它靠每个工具的名字和那句描述来判断这次该用哪个——就像你在工具箱里靠标签找扳手。

所以名字和描述写得越清楚,它用得越准。

自测 · 学完检查一下

想真正动手做题、记进度、攒连胜?到互动课里练。

判断:下面这个“工具”定义合格吗?(Agent 能不能知道它是干嘛、何时该用)

def f(x):
    return db(x)

答案:不合格

函数名 f、参数 x 含义不明,也没有说明它做什么。大模型靠名字和描述判断何时调用——必须起清楚的名字 + 写一句说明用途。

一个“好工具”的定义,最关键要具备什么?

答案:清晰的名字 + 一句说明它用途的文档

模型靠“名字 + 描述”判断该不该用、什么时候用。说明写清楚,比什么都重要。

代码里 `if step.is_final:` 这一行,判断的是什么?

答案:模型认为已经可以给出最终答案了

is_final = 模型说“够了,可以回答”,于是跳出循环、返回答案。

最小 Agent 循环里,调用工具拿到结果后,要把结果 ___ 回去给模型,它才能进入下一轮思考。

答案:

把工具结果加回对话历史(history),模型才看得到“做”的结果,循环才转得起来。

给了 Agent 一排工具,它靠什么决定这次调用哪一个?

答案:每个工具的名字和描述

名字 + 描述就是模型的“说明书”。这也是为什么第 1 题里 f(x) 不合格。

判断:下面这份工具清单,名字和说明都清楚,算不算合格?

def get_order_count(day: str) -> int:
    """查询某天的总下单量。"""
    ...

def send_email(to: str, body: str) -> None:
    """给指定邮箱发一封邮件。"""
    ...

答案:合格

名字一看就懂、各配了一句用途说明——模型能准确判断何时用哪个。这就是合格的工具定义。

想边练边学,而不只是读?

到互动课里答题、记进度、攒连胜——游客即可试学,无需注册。

进入互动课程 →