OpenAI函数调用

各位码农大家好!如果您一直在探索人工智能和聊天机器人的世界,您可能听说过 OpenAI 令人惊叹的语言模型 GPT-4 及其对应的 GPT-3.5 Turbo。它们是改变我们与技术交互方式的强大工具。

在这篇文章中,我们将深入探讨它们的一个令人着迷的功能:函数调用。我们将揭开它的神秘面纱、为什么它有用以及如何使用它,即使您是初学者。所以,喝杯咖啡,坐下来,让我们开始吧!

什么是函数调用?

GPT-4 和 GPT-3.5 Turbo 上下文中的函数调用是这些模型能够根据用户查询理解并生成用于特定函数调用的 JSON 对象的能力。这并不意味着模型正在执行该函数,而是为您提供了在您自己的代码中调用该函数所需的信息。

为什么函数调用有用?

此功能打开了一个充满可能性的世界。你可以:

创建通过调用外部 API(例如天气 API)来回答问题的聊天机器人。
将自然语言转换为 API 调用(想象一下将“谁是我的顶级客户?”转换为实际的 API 调用)。
从文本块中提取结构化数据。
这只是表面现象!

如何使用函数调用

函数调用涉及四个主要步骤:

1.使用用户查询和一组函数调用模型。您描述希望模型在分析用户输入时考虑的功能。
2.检查模型是否为函数调用生成 JSON 对象。如果模型认为需要根据用户查询调用某个函数,它将生成一个 JSON 对象。
3.解析 JSON 并调用您的函数。获取模型的输出,并使用它通过适当的参数调用您的函数。
4.使用函数响应再次调用模型。让模型将结果汇总返回给用户。
我们来看一个 Python 示例:

python
import openai
import json

# A dummy function that always returns the same weather information
def get_current_weather(location, unit="fahrenheit"):
    weather_info = {
        "location": location,
        "temperature": "72",
        "unit": unit,
        "forecast": ["sunny", "windy"],
    }
    return json.dumps(weather_info)

def run_conversation():
    messages = [{"role": "user", "content": "What's the weather like in Boston?"}]
    functions = [
        {
            "name": "get_current_weather",
            "description": "Get the current weather in a given location",
            "parameters": {
                "type": "object",
                "properties": {
                    "location": {
                        "type": "string",
                        "description": "The city and state, e.g. San Francisco, CA",
                    },
                    "unit": {"type": "string", "enum": ["celsius", "fahrenheit"]},
                },
                "required": ["location"],
            },
        }
    ]

    response = openai.ChatCompletion.create(
        model="gpt-3.5-turbo-0613",
        messages=messages,
        functions=functions,
        function_call="auto",
    )
    response_message = response["choices"][0]["message"]

    if response_message.get("function_call"):
        available_functions = {"get_current_weather": get_current_weather}
        function_name = response_message["function_call"]["name"]
        function_to_call = available_functions[function_name]
        function_args = json.loads(response_message["function_call"]["arguments"])
        function_response = function_to_call(
            location=function_args.get("location"),
            unit=function_args.get("unit"),
        )

        messages.append(response_message)
        messages.append(
            {"role": "function", "name": function_name, "content": function_response}
        )
        second_response = openai.ChatCompletion.create(
            model="gpt-3.5-turbo-0613",
            messages=messages,
        )
        return second_response

print(run_conversation())

示例由OpenAI提供

该脚本模仿聊天机器人与用户询问波士顿天气的交互。run_conversation 函数使用 GPT-3.5 Turbo 的函数调用功能来处理对话。

处理幻觉输出

有时,模型可能会生成未提供给它的函数调用 - 我们称之为幻觉输出。为了缓解这种情况,请使用系统消息提醒模型仅使用其提供的功能。

结论

就是这样!通过这个简单的介绍,您现在已经准备好探索 GPT-4 和 GPT-3.5 Turbo 中的函数调用世界了。它是一个功能强大的工具,可以帮助您构建更高级的交互式聊天机器人或数据提取方法。所以不要等待 - 开始编码,看看这些神奇的工具可以带您去哪里!

如果你喜欢我的文章,记得关注获取更多的信息。感谢您的阅读,祝您有美好的一天!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Q shen

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值