Skip to content

工具调用

背景

LLM 只能基于训练数据生成内容,对于依赖外部数据或服务的问题无法准确回答、可能回答过时信息或编造结果。

  • 实时数据
  • 外部系统数据
  • 私有数据
  • 精确计算

Function Calling

通过训练让模型在需要调用工具时、根据提示词中的工具定义输出 JSON 格式的工具调用请求,而不是直接生成结果。外部服务解析 JSON、调用对应工具、把结果返回给模型。

使模型具备请求调用工具的能力。

工具定义

包括 3 部分:

  • 元数据:name/description/version/category 等基本信息
  • 参数定义:调用工具时每个参数的 name/type/description/required/default 等信息
  • 函数实现:工具具体逻辑的实现,往往是一个函数

Agent 启动时,可根据本次任务内容只暴露特定工具,既能节省上下文、也提高模型选择工具的准确率。

工程兼容

对于模型输出 JSON 的异常情况尽可能做兼容:

  • 参数类型不匹配:强制类型转换,比如字符串转数字
  • 数值超出指定范围:自动截断

对部分工具需要做限流,比如总调用次数限流、滑动窗口时间限流。