【AI大模型学习路线】第三阶段之RAG与LangChain——第十三章(理解Function Calling)如何基于 OpenAI 实现 Function Calling?
【AI大模型学习路线】第三阶段之RAG与LangChain——第十三章(理解Function Calling)如何基于 OpenAI 实现 Function Calling?
文章目录
欢迎宝子们点赞、关注、收藏!欢迎宝子们批评指正!
祝所有的硕博生都能遇到好的导师!好的审稿人!好的同门!顺利毕业!
大多数高校硕博生毕业要求需要参加学术会议,发表EI或者SCI检索的学术论文会议论文。详细信息可关注VX “
学术会议小灵通
”或参考学术信息专栏:https://fighting.blog.csdn.net/article/details/146994798
🧠 一、什么是 Function Calling?
Function Calling 是 OpenAI 在 GPT-4 中引入的关键能力,它允许大模型:
- 识别任务需要执行的函数;
- 自动提取参数并格式化为结构化 JSON;
- 调用用户自定义的后端函数,并处理返回值。
这使得大模型不仅能“说”,还能“做”,向真正的通用智能体(AGI)迈出重要一步。
🚀 二、发展现状与应用前景
发展阶段 | 特征 | 示例应用 |
---|---|---|
GPT-3 时代 | 自然语言理解 | 问答、文本生成 |
GPT-4 + Function Calling | 语言 + 函数交互 | 智能客服、天气助手、数据库操作 |
未来(AGI) | Agent+计划+执行 | 多工具协同、智能工作流自动化 |
Function Calling 是智能体系统(如 AutoGPT、LangChain Agent)的核心能力。
🛠️ 三、使用 OpenAI Function Calling 的步骤
✅ 步骤概览
- 定义函数规格(包括参数结构);
- 向 OpenAI 模型发送用户输入和函数定义;
- 模型返回要调用的函数名和参数;
- 程序执行该函数并可将结果再次返回模型。
🔧 四、Python 实战代码:天气查询助手
1️⃣ 准备工作
pip install openai
import openai
import json
openai.api_key = "你的OpenAI密钥"
2️⃣ 定义 Function Schema
functions = [
{
"name": "get_weather",
"description": "查询指定城市当前天气",
"parameters": {
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "城市名称,如:Beijing, New York"
}
},
"required": ["city"]
}
}
]
3️⃣ 模拟函数(实际中可接API)
def get_weather(city):
# 模拟天气数据
return {
"city": city,
"temperature": "22°C",
"condition": "Sunny",
"humidity": "60%"
}
4️⃣ 向 GPT 发起请求
user_input = "What’s the weather like in Shanghai?"
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[
{"role": "user", "content": user_input}
],
functions=functions,
function_call="auto" # 让模型决定是否调用
)
5️⃣ 处理函数调用响应
message = response["choices"][0]["message"]
if message.get("function_call"):
func_name = message["function_call"]["name"]
arguments = json.loads(message["function_call"]["arguments"])
if func_name == "get_weather":
result = get_weather(**arguments)
print("✅ 天气查询结果:")
print(json.dumps(result, indent=2, ensure_ascii=False))
🖨️ 示例输出
{
"city": "Shanghai",
"temperature": "22°C",
"condition": "Sunny",
"humidity": "60%"
}
🔄 六、结合模型继续对话(可选)
你也可以将结果再发给 GPT,让它转成自然语言或执行后续推理:
followup = openai.ChatCompletion.create(
model="gpt-4",
messages=[
{"role": "user", "content": user_input},
message, # 原始 function_call 消息
{"role": "function", "name": "get_weather", "content": json.dumps(result)}
]
)
print(followup.choices[0].message["content"])
🧾 七、总结
项目 | 内容 |
---|---|
能力 | Function Calling 实现“模型调函数” |
核心优势 | 自动识别意图 + 参数结构化提取 |
技术基础 | OpenAI ChatCompletion + functions 参数 |
未来潜力 | 构建多函数、智能代理系统,支撑 AI 调用搜索、数据库、API、多工具工作流 |