首先,没有Function Call是什么样的?
只能在system prompt里面用自然语言去描述工具,但是大模型是不可控的
它可能回答的参数顺序颠倒,编造天气,或返回JSON格式不对等等
传统的system prompt完全靠大模型去猜,猜是否调用工具,猜返回格式
开发者就需要从五花八门的回答里面解析出正确的工具名和参数,这很复杂
Function Call的本质,是一套大模型和agent之间的标准化工具调用协议
用固定的格式定义好工具
需要调用工具时大模型返回固定的JSON格式的调用指令
那么Tool和Function Call有什么关系呢?
Tool是工具的能力实体,有函数本体,名称,描述,参数的定义
Function Call是调用机制(通信规范),必须通过Function Call去调用tool
Function Call的三部分核心结构
1. 工具定义

name:工具的唯一标识,通过name调用函数本体
description:工具说明,判断要不要调用这个工具的核心依据
parameters:需要什么参数,参数的类型,格式
required:必填参数
- AI调用格式(Function Call)

大模型需要调用工具时,会严格返回固定格式的JSON,Agent直接解析这个结构,拿到工具名和参数。
function_call是固定字段,告诉Agent这是一条工具调用指令。Agent会找到check_weather函数,将city和data作为参数传递进去
3. 工具返回结果(Tool Response)

把工具的执行结果,按规范格式回传给大模型。大模型收到结果,决定是否再次调用工具,或者回答用户问题