Using GPT⑶.5 and GPT⑷ via the OpenAI API in Python(how to use openai python)

Python调用OpenAI API的使用指南

本文将介绍怎样使用Python调用OpenAI API。我们将从安装和设置开始,然后展现怎么发问与回答,最后解析和展现API的结果。同时,还会提到获得OpenAI API密钥的方法和遵照保密规定的重要性。

1. 安装和设置

在开始之前,首先需要安装OpenAI Python客户端库并设置API密钥。

1.1 安装OpenAI Python客户端库

使用命令 pip install openai 可以直接安装OpenAI Python客户端库。然后在代码中导入库:import openai

1.2 设置OpenAI API密钥

在使用OpenAI API之前,需要获得API密钥并将其设置为环境变量。通过访问OpenAI官方网站(https://openai.com/api/)获得API密钥,并通过以下代码将其设置为环境变量:openai.api_key = “YOUR_API_KEY”

2. 发问与回答

在设置好环境以后,就能够编写代码进行发问与回答了。

2.1 编写发问代码

创建一个函数:def chat_gpt(prompt):,并设置问题:prompt = prompt

2.2 调用ChatGPT接口

首先定义模型引擎:model_engine = “text-davinci-003”,然后使用OpenAI API进行问答:completion = openai.Completion.create(engine=model_engine, prompt=prompt)

3. 结果解析和展现

在获得API的响应以后,需要对其进行解析并展现结果。

3.1 解析API响应

通过以下代码可以获得到回答的内容:response = completion[“choices”][0][“text”]

3.2 展现回答

使用print(response)可以将回答内容打印出来。

4. 其他注意事项

在使用OpenAI API时需要注意以下几点:

4.1 获得OpenAI API密钥

访问OpenAI官网(https://openai.com/api/)获得API密钥,并将其复制保存。

4.2 遵照保密规定

API密钥是私密信息,不应与他人共享。请将API密钥视为敏感信息,不要将其公然。

how to use openai python的进一步展开说明

ChatGPT是一种先进的大型语言模型,用于生成文本。

ChatGPT是OpenAI开发的,已在几近所有类型的文本写作中产生了变革,从本教程中的教程文章,到自动生成的产品描写、Bing搜索引擎的结果,再到ChatGPT用于数据科学的几十个数据用例。

对交互式使用,ChatGPT的web界面是理想的选择。但是,OpenAI还提供了一个利用程序编程接口(API),允许您使用代码与ChatGPT和其他模型进行交互。

在本教程中,您将学习怎样使用openai Python包通过编程方式与ChatGPT进行对话。

需要注意的是,OpenAI收费使用GPT API(给新用户有时提供不要钱信用,但是谁取得信用和此交易延续多长时间是不透明的)。费用为每1000个标记0.002美元,其中1000个标记约相当于750个单词。运行本教程中的所有示例一次的费用应低于2美分(但如果重新运行任务,则每次都收取费用)。

什么时候应使用API而不是Web界面?

ChatGPT的Web利用程序是GPT模型的良好界面。但是,如果您希望将AI集成到数据管道或软件中,则API更适合。数据从数据库或另外一个API中导入,然后要求GPT对其进行总结或生成报告

在仪表板中嵌入GPT功能以自动提供结果的文本摘要

为数据市场提供自然语言界面

通过学术(PyPI、Conda)软件包获得期刊论文,并让GPT对结果进行总结的研究

设置OpenAI开发者账号

要使用API,您需要在OpenAI上创建开发者账号。您需要准备好电子邮件地址、电话号码和借记卡或信用卡信息。

依照以下步骤进行操作:

  1. 转到API注册页面。
  2. 创建您的账号(您需要提供您的电子邮件地址和电话号码)。
  3. 进入API密钥页面。
  4. 创建一个新的密钥。拷贝此密钥(如果丢失,删除该密钥并创建一个新的)。
  5. 前往付款方式页面。
  6. 点击“添加付款方式”,填写您的卡片详细信息。

安全地存储账户凭证

密钥一定要保持机密!否则,其他人可使用它访问API,而您需要为此付费。下面的步骤描写了怎样使用DataCamp Workspace安全地存储您的密钥。如果您使用的是其他平台,请查看该平台的文档。您也能够向ChatGPT征求意见。以下是一个建议的提示:

> 您是一个IT安全专家。您正在与一位数据科学家交谈。请解释安全存储用于API访问的私钥的最好做法。

在您的工作环境中,点击Integrations(集成)

点击“Create integration”(创建集成)加号按钮

选择一个“Environment Variables”(环境变量)集成

在“Name”(名称)字段中,输入“OPENAI”

在“Value”(值)字段中,粘贴您的密钥

点击“Create”(创建),并连接到新的集成

设置Python

要通过API使用GPT,您需要导入openai Python包,并导入os和IPython.display这两个包(如果使用的是Jupyter Notebook,如DataCamp Workspace,导入IPython.display中的一些函数非常有用)。另外,还将使用yfinance包来获得股票价格。

# 导入os包
import os
# 导入openai包
import openai
# 从IPython.display包中导入display和Markdown
from IPython.display import display, Markdown
# 导入yfinance作为yf
import yfinance as yf

另外一个设置任务是将刚刚创建的环境变量放在openai包可以看到的地方。

# 将OPENAI环境变量的值设置为openai.api_key
openai.api_key = os.environ["OPENAI"]

使用API调用GPT的代码模式

调用OpenAI API并获得聊天响应的代码模式以下:

response = openai.ChatCompletion.create(
    model="MODEL_NAME",
    messages=[
        {"role": "system", "content": 'SPECIFY HOW THE AI ASSISTANT SHOULD BEHAVE'},
        {"role": "user", "content": 'SPECIFY WANT YOU WANT THE AI ASSISTANT TO SAY'}
    ]
)

这里有几个需要解释的地方。

OpenAI API模型名在开发者文档的模型概览页面中列出。在本教程中,您将使用gpt⑶.5-turbo,这是ChatGPT使用的最新模型,具有公共API访问权限(一旦广泛可用,您将想切换到gpt⑷)。

OpenAI API的GPT消息类型在Chat文档的引言部份记录有三种消息:

  • 系统消息描写AI助手的行动。对数据科学用例,一个有用的系统消息是“You are a helpful assistant who understands data science.”(您是一个理解数据科学的有用助手。)
  • 用户消息描写您希望AI助手说甚么。我们将在本教程中涵盖用户消息的示例。
  • 助手消息描写对话中先前的响应。我们将在后续任务中涵盖如何进行交互式对话

第一条消息应当是系统消息。附加消息应在用户和助手之间交替。

第一次对话:生成数据集

生成样本数据集对测试代码或向他人演示代码是有用的。要从GPT获得有用的响应,您需要确切地指定数据集的细节,包括:

  • 行数和列数
  • 列的名称
  • 每列包括的内容的描写
  • 数据集的输出格式

下面是创建数据集的示例用户消息。

创建一个关于过去一年总销售额的小数据集。数据集的格式应为一个具有12行和2列的数据帧。列的名称应为”month”和”total_sales_usd”。”month”列应包括从”Jan”到”Dec”的月份名称的缩写情势。”total_sales_usd”列应包括从均值100000和标准差5000的正态散布中获得的随机数值。提供生成数据集的Python代码,然后以Markdown表格的格式提供输出。

让我们将此消息包括在先前的代码模式中。

# 定义系统消息
system_msg = 'You are a helpful assistant who understands data science.'

# 定义用户消息
user_msg = 'Create a small dataset about total sales over the last year. The format of the dataset should be a data frame with 12 rows and 2 columns. The columns should be called "month" and "total_sales_usd". The "month" column should contain the shortened forms of month names from "Jan" to "Dec". The "total_sales_usd" column should contain random numeric values taken from a normal distribution with mean 100000 and standard deviation 5000. Provide Python code to generate the dataset, then provide the output in the format of a markdown table.'

# 通过GPT创建一个数据集
response = openai.ChatCompletion.create(
    model="gpt⑶.5-turbo",
    messages=[
        {"role": "system", "content": system_msg},
        {"role": "user", "content": user_msg}
    ]
)

检查GPT的响应会不会OK

API调用是“有风险”的,由于问题可能产生在笔记本外,例如互联网连接问题,或服务器向您发送数据的问题,或由于您的API信用用尽。您应当检查您收到的响应会不会OK。

GPT模型返回一个带有四个值的状态代码,记录在Chat文档的响应格式部份。

  • stop:API返回完全的模型输出
  • length:由于max_tokens参数或令牌限制致使的不完全的模型输出
  • content_filter:由于我们的内容过滤器的标志而省略的内容
  • null:API响应仍在进行中或不完全

GPT API以JSON格式将数据发送给Python,因此response变量包括嵌套的列表和字典。这有点麻烦!

对名为response的响应变量,状态代码存储在以下位置。

response["choices"][0]["finish_reason"]

提取AI助手的消息

在response变量中,我们询问GPT要生成的文本被隐藏在其中。荣幸的是,这个位置总是相同的。

response["choices"][0]["message"]["content"]

响应内容可以像平常一样打印(print(content)),但它是Markdown内容,Jupyter笔记本可以通过display(Markdown(content))渲染。

以下是生成数据集的Python代码:

import numpy as np
import pandas as pd

# 为可重复产生的随机数设置种子
np.random.seed(42)

# 生成随机销售数据
sales_data = np.random.normal(loc=100000, scale=5000, size=12)

# 创建月份缩写列表
month_abbr = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']

# 创建数据框
sales_df = pd.DataFrame({'month': month_abbr, 'total_sales_usd': sales_data})

# 打印数据框
print(sales_df)

以下是以Markdown格式输出的输出:

| month | total_sales_usd |
|-------|----------------|
| Jan   | 98728.961189   |
| Feb   | 106931.030292  |
| Mar   | 101599.514152  |
| Apr   | 97644.534384   |
| May   | 103013.191014  |
| Jun   | 102781.514665  |
| Jul   | 100157.741173  |
| Aug   | 104849.281004  |
| Sep   | 100007.081991  |
| Oct   | 94080.272682   |
| Nov   | 96240.993328   |
| Dec   | 104719.371461  |

使用辅助函数调用GPT

要履行这三个简单任务,您需要编写大量重复的样板代码。有一个包装函数用来抽象掉这些乏味的部份是有用的。这样,我们就能够专注于数据科学的用例。

希望OpenAI能改进他们的Python包的界面,以便内置此类功能。在此之前,您可以在自己的代码中使用此代码。

该函数接受两个参数。

  • system:包括系统消息的字符串。
  • user_assistant:一个字符串数组,交替用户消息和助手消息。

返回值是生成的内容。

def chat(system, user_assistant):
    assert isinstance(system, str), "`system` should be a string"
    assert isinstance(user_assistant, list), "`user_assistant` should be a list"
    
    # 定义系统消息
    system_msg = [{"role": "system", "content": system}]
    
    # 定义用户和助手消息
    user_assistant_msgs = [
        {"role": "assistant", "content": user_assistant[i]} if i % 2 else {"role": "user", "content": user_assistant[i]}
        for i in range(len(user_assistant))
    ]
    
    # 消息合并
    msgs = system_msg + user_assistant_msgs
    
    # GPT进行要求
    response = openai.ChatCompletion.create(model="gpt⑶.5-turbo", messages=msgs)
    
    # 检查响应会不会完全
    status_code = response["choices"][0]["finish_reason"]
    assert status_code == "stop", f"The status code was {status_code}."
    
    # 返复生成的内容
    return response["choices"][0]["message"]["content"]

该函数的用法示例:

response_fn_test = chat("You are a machine learning expert.",["Explain what a neural network is."])
display(Markdown(response_fn_test))
A neural network is a type of machine learning model that is inspired by the architecture of the human brain. It consists of layers of interconnected processing units, called neurons, that work together to process and analyze data. Each neuron receives input from other neurons or from external sources, processes that input using a mathematical function, and then produces an output that is passed on to other neurons in the network. The structure and behavior of a neural network can be adjusted by changing the weights and biases of the connections between neurons. During the training process, the network learns to recognize patterns and make predictions based on the input it receives. Neural networks are often used for tasks such as image classification, speech recognition, and natural language processing, and have been shown to be highly effective at solving complex problems that are difficult to solve with traditional rule-based programming methods.

复用AI助手的响应

在许多情况下,您将希望与AI进行更长的对话。也就是说,您发送一个提示给GPT,获得一个响应,然后发送另外一个提示继续对话。在这类情况下,您需要在第二次调用API时包括先前从GPT获得的响应,以便GPT具有完全的上下文。这将提高响应的准确性,并增加对话的一致性。

为了重复使用GPT的消息,您需要从响应中检索它,然后将其传递给chat的新调用,以便GPT具有完全的上下文。这将提高响应的准确性,并增加对话的一致性。

例如:分析样本数据集

让我们尝试从之前生成的数据集中计算销售列的平均值。注意,由于我们第一次没有使用chat()函数,所以我们一定要使用更复杂的子集代码来取得上一个响应的文本。如果使用chat() ,代码更简单。

# 为assistant_msg赋值
assistant_msg = response["choices"][0]["message"]["content"]

# 定义新的用户消息
user_msg2 = 'Using the dataset you just created, write code to calculate the mean of the `total_sales_usd` column. Also include the result of the calculation.'

# 创建用户和助手消息的数组
user_assistant_msgs = [user_msg, assistant_msg, user_msg2]

# 获得GPT履行要求
response_calc = chat(system_msg, user_assistant_msgs)

# 显示生成的内容
display(Markdown(response_calc))

好的!这是计算`total_sales_usd`列的平均值的代码:

mean_sales = sales_df['total_sales_usd'].mean()
print("Mean sales: $", round(mean_sales, 2))

这是该代码的输出:

Mean sales: $ 100077.57

因此,过去一年的总销售额约为10,0077.57美元。

在流水线上使用GPT

使用API而不是Web接口的巨大优势在于,您可以将GPT与其他API组合使用。从一个或多个来源获得数据,然后利用AI处理数据是一个强大的工作流程。

利用GPT AI于天气数据

在这里,我们将使用weather2软件包(PyPI)获得天气预报,并使用GPT提出活动的建议。

# 导入weather2包
import weather

# 获得迈阿密的天气预报
location = "Miami"
forecast = weather.forecast(location)

# 提取明天中午的天气预报数据
fcast = forecast.tomorrow["12:00"]

# 创建用户消息
user_msg_weather = f"In {location} at midday tomorrow, the temperature is forecast to be {fcast.temp}, the wind speed is forecast to be {fcast.wind.speed} m/s, and the amount of precipitation is forecast to be {fcast.precip}. Make a list of suitable leisure activities."

# 调用GPT
response_activities = chat("You are a travel guide.", [user_msg_weather])

# 显示生成的内容
display(Markdown(response_activities))

在温和的温度和风速下,迈阿密是一个进行休闲活动的理想地点。以下是一些建议:

  1. 参观迈阿密的海滩,晒晒太阳或在海洋中游泳!
  2. 探索迈阿密的艺术场景,参观Perez艺术博物馆迈阿密或Wynwood墙壁。
  3. 在著名的海洋大道漫步,欣赏多彩的装潢艺术风格建筑。
  4. 前往Little Havana体验古巴文化和美味的美食。
  5. 在迈阿密许多公园之一进行风景优美的漫步或骑车,如Bayfront Park或South Pointe Park。
  6. 参观迈阿密海洋水族馆,近距离观赏一些不可思议的海洋生物。
  7. 乘船旅游,从水面上欣赏迷人的迈阿密天际线。
  8. 购物爱好者可以探索许多高级精品店和室外购物中心,如林肯路购物中心。
  9. 美食家可之前往一年及第行的许多美食节。
  10. 最后,还有很多夜总会和现场音乐场所,让您享受夜生活。

很好!我有一部份希望明天能够在迈阿密!

提升能力

您可以在《ChatGPT入门课程》中了解有关使用GPT的更多信息(有关使用OpenAI API的完全课程行将推出!)

要获得您刚学到的参考信息,请复制OpenAI API Python速查表,或观看《OpenAI API和ChatGPT入门》直播培训录相。

如果您对文本到语音转录感兴趣,请浏览《使用OpenAI Whisper API进行语音转文字转录教程》。

how to use openai python的常见问答Q&A

问题1:怎么用 Python 调用 OpenAI API?

答案:使用 Python 调用 OpenAI API 的步骤以下:

  1. 安装 OpenAI Python 客户端库。
  2. 导入库。
  3. 设置 OpenAI API 密钥。
  4. 进行 API 调用。

具体步骤以下:

  1. 安装 OpenAI Python 客户端库:
    • 在命令行中运行以下命令来安装 OpenAI Python 客户端库:
    • pip install openai
  2. 导入库:
    • 在 Python 代码中添加以下导入语句:
    • import openai
  3. 设置 OpenAI API 密钥:
    • 在 Python 代码中添加以下语句,并替换为您的 API 密钥:
    • openai.api_key = "YOUR_API_KEY"
  4. 进行 API 调用:
    • 在 Python 代码中添加以下语句以调用 OpenAI API:
    • response = openai.Completion.create(engine="davinci", prompt="Your prompt here")

通过以上步骤,您可使用 Python 调用 OpenAI API。

ChatGPT相关资讯

ChatGPT热门资讯

X

截屏,微信识别二维码

微信号:muhuanidc

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

打开微信

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