A clear guide to OpenAI function calling with Python(openai function call python)

I. 介绍OpenAI函数调用(50字)

OpenAI函数调用是一种强大的功能,可以通过Python与OpenAI模型进行交互。使用函数调用可以引导模型生成可预测的回复,并进行推理、推断和发问和情形展现。

A. OpenAI API的强大功能

OpenAI API是一个强大的人工智能API,可以为开发者提供强大的自然语言处理功能。它可以用于聊天机器人、情感分析、语言翻译等各种任务。

B. 函数调用的作用与意义

函数调用是使用OpenAI API的一种方式,它可使开发者更好地控制模型的输入和输出。通过函数调用,开发者可以引导模型生成特定的回复,并将其利用于各种实际场景中。

II. 设置函数调用环境(100字)

要使用OpenAI函数调用,首先需要设置Python的虚拟环境,并安装所需依赖项。

A. 创建Python虚拟环境和激活

可使用命令行创建和激活Python虚拟环境,以便在独立的环境中安装和运行函数调用相关的代码。

  1. 使用命令行创建虚拟环境:
  2. python -m venv venv
  3. 激活虚拟环境:
  4. venvScriptsctivate

B. 安装所需依赖项

在虚拟环境中使用pip命令安装所需的依赖项,包括python-dotenv和openai。

  1. 安装python-dotenv:
  2. pip install python-dotenv==1.0.0
  3. 安装openai:
  4. pip install openai

III. OpenAI函数调用基础(100字)

使用OpenAI函数调用,需要先定义API调用,并设置函数调用所需的参数。

A. 定义API调用

可使用OpenAI提供的ChatCompletion类进行API调用,通过该类可以与OpenAI模型交互。

B. 函数调用参数

函数调用需要接收一个名为query的字符串参数,该参数用于传递用户的要求给模型。

  1. query参数:用户的要求

IV. OpenAI函数调用的利用(100字)

OpenAI函数调用可以利用于多个场景,包括引导模型生成可预测的回复、进行推理和推断任务,和发问和情形展现。

A. 引导模型生成可预测的回复

通过使用函数调用,可以向模型提供特定的指点,使其生成预期的回复。

B. 推理和推断任务

函数调用使得模型能够履行推理和推断任务,通过向模型提供相关的问题或场景,可以得到模型的推理和推断结果。

C. 发问和情形展现

函数调用可以用于发问和展现特定的情形,通过向模型提供问题或情形描写,可以得到模型的回答或情形展现。

V. 示例与实践(100字)

下面是一个使用OpenAI API进行函数调用的示例,包括设置环境和与Python代码交互。

A. 使用OpenAI API进行函数调用

首先需要安装openai和python-dotenv库,然后导入所需的库和模块。

  1. 安装openai和python-dotenv库:
  2. pip install openai python-dotenv
  3. 导入所需的库和模块:
  4. import openai
    from dotenv import load_dotenv

B. 与Python代码交互

使用Python的对象和结构与函数调用API进行交互,可以通过传递参数调用函数和获得结果。

VI. OpenAI函数调用的优势(50字)

OpenAI函数调用具有以下优势,使得开发者能够更好地利用OpenAI API生成高质量的结果。

A. 创建更加交互式和动态的利用程序

通过使用函数调用,开发者可以引导模型生成特定的回复,使利用程序更加交互式和动态。

B. 提供更好的格式化结果生成

函数调用可以提供更好的格式化结果生成功能,使得生成的结果更具可读性和可用性。

VII. 结论(50字)

OpenAI函数调用是一种强大的功能,可使用Python与OpenAI模型交互。通过函数调用,我们可以引导模型生成可预测的回复,进行推理和推断任务,并发问或展现情形。了解怎样设置函数调用环境,并利用函数调用进行代码交互,将使我们更好地利用OpenAI API生成高质量的结果。

openai function call python的进一步展开说明

用Python进行OpenAI函数调用的清晰指南

尊重的读者们,很久没有写文章了。在这篇关于OpenAI的简短文章中,我们将看到怎样使用Python OpenAI库利用OpenAI的新函数调用功能,以强迫GPT模型生成结构化的输出。

在开始之前,你会不会依然使用Google Docs来存储你爱好的ChatGPT提示?那末,试试这个不要钱的酷炫提示管理工具Vidura吧。你可以在一个地方使用GPT⑶生成文字和Stable Diffusion生成图象:

安装虚拟环境

首先创建一个Python虚拟环境,并使用下面的命令安装openai pip包:

python3 -m venv venv

source venv/bin/activate

pip install openai –upgrade

一旦安装成功,进入你的openAI账户并在这里创建一个访问密钥:https://platform.openai.com/account/api-keys

假定你的API密钥是:`sk-xyzabc`(不要向任何人流露你的真实密钥)

将Open AI API密钥添加到环境变量

使用以下命令将此密钥作为环境变量导出:

export OPENAI_API_KEY=sk-xyzabc

强烈建议不要在代码中硬编码API密钥,由于有可能不谨慎将其提交到版本控制系统中。

安装PyDantic生成JSON模式

OpenAI API使用JSON模式作为函数输出的输入。为了简化在Python中创建这个模式,我们可以定义一个PyDantic类来结构化模型,并将其转换为JSON模式,以免冗余和毛病。

pip install pydantic –upgrade

安装终了后,我们可以准备尝试OpenAI API了。让我们定义一个目标和一个实现该目标的示例。

目标:

让`gpt⑶.5-turbo`模型对以下问题生成可预测的JSON输出,比如:

“解释一个?的进程”或“如何? ”

解决方案:

为了做到这一点,我们首先需要提出一个模式。让我们定义一个PyDantic模型。我这样做是为了指点OpenAI模型“针对要求的问题具有标题和一系列步骤,并生成可解析的JSON输出”。

from typing import List

from pydantic import BaseModel

class StepByStepAIResponse(BaseModel):

title: str

steps: List[str]

这是一个简单的Python类(继承自pydantic BaseModel)。为了将这个类转换为JSON模式,只需调用`schema()`函数:

schema = StepByStepAIResponse.schema() #返回一个类似JSON模式的字典

# 模式内容以下

“””

{

‘title’: ‘StepByStepAIResponse’,

‘type’: ‘object’,

‘properties’: {‘title’: {‘title’: ‘Title’, ‘type’: ‘string’},

‘steps’: {‘title’: ‘Steps’, ‘type’: ‘array’, ‘items’: {‘type’: ‘string’}}},

‘required’: [‘title’, ‘steps’]

}

“””

我们很快就会在我们的示例中使用这个模式。

现在,让我们实际调用OpenAI并使用一个名为“get_answer_for_user_query”的“幻觉”函数来指点AI生成JSON输出。我之所以把这个函数称为“幻觉”,是由于它的控制履行是由OpenAI模型自动推断的,使用名称、说明和输出模式,而不是由开发人员定义。

进行OpenAI API函数调用

我们需要调用“ChatCompletion.create()”方法并传入必要的参数,将用户查询传递给OpenAI模型。我们需要使用`gpt⑶.5-turbo-0613`(在末尾加上`0613`,截至目前只能在这个模型或`gpt⑷–0613`上进行函数调用)。代码以下:

import openai

import os

import json

openai.api_key = os.getenv(“OPENAI_API_KEY”)

response = openai.ChatCompletion.create(

model=”gpt⑶.5-turbo-0613″,

messages=[

{“role”: “user”, “content”: “Explain how to assemble a PC”}

],

functions=[

{

“name”: “get_answer_for_user_query”,

“description”: “Get user answer in series of steps”,

“parameters”: StepByStepAIResponse.schema()

}

],

function_call={“name”: “get_answer_for_user_query”}

)

output = json.loads(response.choices[0][“message”][“function_call”][“arguments”])

# output content

“””

{

‘title’: ‘Steps to assemble a PC’,

‘steps’: [

‘1. Gather all necessary components’,

‘2. Prepare the PC case’,

‘3. Install the power supply’,

‘4. Mount the motherboard’,

‘5. Install the CPU and CPU cooler’,

‘6. Install RAM modules’,

‘7. Install storage devices’,

‘8. Install the graphics card’,

‘9. Connect all cables’,

’10. Test the PC’

]

}

“””

现在,你可以在Python中以编程方式使用输出(字典)了。代码中`ChatCompletion .complete()`的一个重要参数是`functions=[{}]`,它接受一个函数列表。”name”键指定函数名,”description”指定函数的元信息,用于指点OpenAI模型。”parameters”键是我们传递JSON模式的地方。至于这段代码:

function_call={“name”: “get_answer_for_user_query”}

指定了OpenAI模型会不会应当使用函数列表中的一个或多个函数。将这个值设置为“auto”可让AI模型自动猜想,所以我总是建议使用函数名而不是auto。

如果你想从这个响应字典创建一个StepByStepAIResponse对象,你可以这样做:

sbs = StepByStepAIResponse(**output)

# 现在你可以在代码中访问sbs.title和sbs.steps

让我们尝试另外一个用户查询:“如何制作煎饼?”。我修改了messages参数中的“content”值以调剂查询。代码以下:

# … 导入和其他代码

response = openai.ChatCompletion.create(

model=”gpt⑶.5-turbo-0613″,

messages=[

{“role”: “user”, “content”: “How to make a pancake ?”}

],

functions=[

{

“name”: “get_answer_for_user_query”,

“description”: “Get user answer in series of steps”,

“parameters”: StepByStepAIResponse.schema()

}

],

function_call={“name”: “get_answer_for_user_query”}

)

output = json.loads(response.choices[0][“message”][“function_call”][“arguments”])

# output content

“””

{

‘title’: ‘Pancake Recipe’,

‘steps’:

[

‘In a mixing bowl, whisk together flour, sugar, baking powder, and salt.’,

‘In a separate bowl, whisk together milk, eggs, and melted butter.’,

‘Add the wet ingredients to the dry ingredients and mix until just combined. Do not overmix.’,

‘Heat a non-stick skillet or griddle over medium heat. Lightly grease with butter or cooking spray.’,

‘Pour 1/4 cup of batter onto the skillet for each pancake. Cook until bubbles form on the surface, then flip and cook until golden brown.’,

‘Serve the pancakes hot with your favorite toppings, such as syrup, fruits, or whipped cream.’

]

}

“””

对这个查询,我们得到了一个漂亮的有序步骤列表。这就是我们如何指点OpenAI模型(在本例中是`gpt⑶-turbo-0613`)以强迫输出按特定结构生成。

这个示例的完全代码片断可以在这里找到:https://gist.github.com/narenaryan/e8a5aac3825b0e752cf70daa69abb65a

结论

OpenAI API函数调用是指点OpenAI模型生成可预测响应的一种强大方式,否则可能需要仔细的提示说明。无疑,函数调用利用程序使人兴奋。感谢浏览本文,祝你有美好的一天

ChatGPT相关资讯

ChatGPT热门资讯

X

截屏,微信识别二维码

微信号:muhuanidc

(点击微信号复制,添加好友)

打开微信

微信号已复制,请打开微信添加咨询详情!