工具与 Agent 循环 / 知识库

09 · 工具调用:从请求到执行

模型提出动作,程序校验并执行,再把结果送回。

工具与 Agent 循环原创导读

本站原创入门导读与合成教学示例。原始资料核实:2026-09-05。建议先读:08 · 什么时候需要 Agent。

理解概念

工具调用通常是模型返回工具名、参数和调用标识。应用把工具名映射到已注册函数,校验参数与权限,执行后返回结构化结果。模型本身没有直接运行你服务器上任意函数的能力;执行权来自你的工具调度器。

工具定义应说明用途、参数约束、输出、错误和副作用。不要暴露“执行任意代码”来替代明确接口。一次只读查询与一次发邮件的授权风险不同。并行工具调用只适合互不依赖的读取;依赖前一步结果的操作应按顺序。

一个最小例子

代码
# 离线模拟,不需要 API Key
schedule = {"mon": ["数学", "英语"]}
def get_schedule(day):
    if day not in {"mon", "tue", "wed", "thu", "fri"}:
        raise ValueError("无效日期")
    return {"day": day, "classes": schedule.get(day, [])}

tools = {"get_schedule": get_schedule}
call = {"name": "get_schedule", "args": {"day": "mon"}}
print(tools[call["name"]](**call["args"]))

动手练习

先模拟模型输出,再接入真实模型。加入未知工具名、无效日期、额外参数三个用例;每次保留调用标识,区分模型请求与函数执行结果。

验收与预期结果

合法调用返回两门课程;非法调用被调度器拒绝,不允许动态导入或任意执行。能画清模型—应用—工具之间的职责。

  • 我能解释输入、过程与结果。
  • 我保留了一个失败例与运行记录。

常见误区

工具描述中的“只读”不是权限控制,真正的数据库用户或接口权限也必须只读。不要把工具异常的秘密字段直接回传给模型。

延伸阅读

以下是相关方向的原始资料;本站练习不是官方课程作业或逐字翻译。

课程状态与先修说明 · 核心术语

理解需要时间,记录让每一步都有迹可循。

回到学习路线图