【AI大模型学习路线】第三阶段之RAG与LangChain——第十三章(理解Function Calling)如何基于 OpenAI 实现 Function Calling?

【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 的步骤

✅ 步骤概览

  1. 定义函数规格(包括参数结构);
  2. 向 OpenAI 模型发送用户输入和函数定义;
  3. 模型返回要调用的函数名和参数;
  4. 程序执行该函数并可将结果再次返回模型。

🔧 四、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、多工具工作流
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

985小水博一枚呀

祝各位老板前程似锦!财源滚滚!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值