工具调用
背景
LLM 只能基于训练数据生成内容,对于依赖外部数据或服务的问题无法准确回答、可能回答过时信息或编造结果。
- 实时数据
- 外部系统数据
- 私有数据
- 精确计算
Function Calling
通过训练让模型在需要调用工具时、根据提示词中的工具定义输出 JSON 格式的工具调用请求,而不是直接生成结果。外部服务解析 JSON、调用对应工具、把结果返回给模型。
使模型具备请求调用工具的能力。
工具定义
包括 3 部分:
- 元数据:name/description/version/category 等基本信息
- 参数定义:调用工具时每个参数的 name/type/description/required/default 等信息
- 函数实现:工具具体逻辑的实现,往往是一个函数
Agent 启动时,可根据本次任务内容只暴露特定工具,既能节省上下文、也提高模型选择工具的准确率。
工程兼容
对于模型输出 JSON 的异常情况尽可能做兼容:
- 参数类型不匹配:强制类型转换,比如字符串转数字
- 数值超出指定范围:自动截断
对部分工具需要做限流,比如总调用次数限流、滑动窗口时间限流。