FuctionCalling详解
注意: 具体来说, 由此可见, 举一个具体的例子,用户提问天气,大模型利用 流程解释如下: AI应用程序向大模型 API 传入用户原始输入、函数描述和其他上下文信息,获取调用指令。函数描述包括函数名称、用途说明、参数结构等。具体消息格式各个厂商会有区别,示例如下 模型会智能判断是否需要调用函数,选择合适的函数,并基于上下文自动生成结构化的调用指令(函数名 + 参数),例如: 注意: 没有 这样当用户提问:广州的天气怎么样?,模型会根据系统提示词以指定格式返回要调用的工具及参数 只不过这种调用工具的实现方式有以下缺点:Function Calling 函数调用也叫 Tools 工具,它本质上就是在AI应用中自定义实现一些方法(函数),然后交给大模型,由大模型自行判断在合适的时机调用这些方法,从而实现原来大模型无法做到的一些扩展功能,比如操作本地数据库等等。其流程如下
Fuction Calling就是大模型提供商在模型内部与API层面做了支持的一种能力,它最早由 OpenAI 引入:Function Calling的支持,比如需要自定义标准来规定AI应用程序向大模型提供工具列表、大模型向AI应用程序响应需要调用哪个工具并携带调用参数、AI应用程序向大模型返回工具调用的结果时的具体消息格式Fuction calling是大模型本身的一种能力,需要大模型自身支持,并且各个大模型厂商实现的具体标准都不一样。实际开发时需要查找对应的支持情况:Comparison Table of all supported Language Models | LangChain4j
Function Calling能力调用外部工具查询天气并返回结果
{
"messages": [
{
"role": "system",
"content": "你是一个助手,可以根据用户的请求调用工具来获取信息。"
},
{
"role": "user",
"content": "广州今天天气如何?适合出门吗?"
}
],
// 函数列表
"functions": [
{
"name": "getWeather",
"description": "获取指定城市的天气",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "城市名称,比如北京"
},
"date": {
"type": "string",
"description": "日期,比如 2025-08-07"
}
},
"required": ["location", "date"]
}
}
]
}{
"function_call": {
"name": "getWeather",
"arguments": {
"location": "Guangzhou",
"date": "2025-07-17"
}
}
}Fuction Calling能力依赖具体大模型厂商的实现,所以其缺陷是AI应用需要自己实现对各个厂商大模型的适配,开发量比较大Fuction Calling也没有规定AI应用程序具体如何调用工具,所以需要每个AI应用自行实现对工具的调用Fuction Calling能力的大模型并非不能调用外部工具。我们可以自定义系统提示词,让大模型来调用外部工具,比如以下系统提示词# 你的角色
你是一个函数调用助手,我将提供多个函数的定义信息,包括函数名称、作用、参数及参数类型。
# 你的任务
- 根据用户的输入,判断是否需要调用某个函数
- 如果需要,请**严格按照以下格式**输出函数调用指令:
```json
{ "name": "函数名", "arguments": { "参数名": "参数值" } }
```
# 函数定义信息
1. **get_weather**
- 作用:查询指定城市的天气情况
- 参数:
-`city`(string):城市名称
2. **get_time**
- 作用:查询指定城市的当前时间
- 参数:
- `city`(string):城市名称{ "name": "get_weather", "arguments": { "city": "广州" }