函数调用与工具模式

发布: (2026年2月8日 GMT+8 21:28)
4 分钟阅读
原文: Dev.to

Source: Dev.to

概览

本学习环节探讨 函数调用和工具模式(tool schemas)——即代理如何与外部工具交互。对话捕捉了用户与 Klover(AI 助手)之间的来回交流,突出误解、纠正以及更深入的洞见。

工具模式定义

工具模式 不仅仅是列出可用工具;它定义了如何调用每个工具,类似于代码中的函数签名。

  • Name – 模型使用的标识符。
  • Description – 为大语言模型(LLM)提供的自然语言解释。
  • Parameters – 带有必填/可选标记的类型化字段。

天气工具的示例模式:

name: get_weather
description: "Get current weather for a location"
parameters:
  location:
    type: string
    required: true
    description: City name
  units:
    type: string
    required: false
    description: '"celsius" or "fahrenheit"'

模式存放位置

模式 不属于模型的训练数据。它在运行时注入,通常通过:

  • 系统提示,或
  • 请求负载中的专用 “tools” 部分。

模型在训练期间学习了 模式的格式,从而能够使用它从未见过的自定义工具。

完整的往返过程(LLM ↔ 工具)

  1. Thought – 模型决定需要使用工具。
  2. Action – 它输出结构化的 JSON 表示工具调用。
  3. Observation – 编排器执行工具,获取结果,并将其反馈给模型。
  4. Thought – 模型结合观察结果继续推理。

示例工具调用输出

{
  "tool": "get_weather",
  "parameters": {
    "location": "Singapore",
    "units": "celsius"
  }
}

LLM 不会自行执行 调用;它在发出 JSON 后停止。你的应用(编排器)随后:

  • 解析 JSON。
  • 调用实际的 API。
  • 将 API 响应作为观察结果返回。
  • 让 LLM 生成下一个 thought。

编排器的角色

编排器位于 LLM 与外部工具之间,提供关键的安全保障:

  • Validate 在执行前验证参数。
  • Rate limit 防止无限循环。
  • Filter 根据上下文或权限过滤不允许的工具。
  • Log 记录每一次调用,以便调试和审计。
  • Sanitize 在回馈给模型前清理工具输出。

没有这一层,恶意提示可能诱导模型执行危险操作(例如 delete_database)。

编写良好模式的重要性

糟糕的模式会导致行为不可靠:

问题后果
描述模糊模型选择错误的工具或跳过应使用的工具。
类型错误 / 缺少必填项请求格式错误、崩溃或产生垃圾输出。
缺少参数细节模型自行猜测含义,导致不可预测的调用。

设计工具模式本质上是 工具的提示工程。清晰的名称、精准的描述以及正确的类型规范是构建可靠代理的关键。

会话详情

  • Date: February 8, 2026
  • Status: Exposure
  • Notes: 用户展示了良好的直觉,自然地将概念关联到 ReAct 循环。已安排明天进行审查。
0 浏览
Back to Blog

相关文章

阅读更多 »

ReAct Pattern — 评审

空结果——接下来会发生什么?Klover:一个代理调用搜索工具,但得到空结果。请逐步说明在 ReAct 循环中接下来会发生什么——…