Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

OpenAI Python库为用Python语言编写的应用程序提供了对OpenAI API的方便访问。

License

Notifications You must be signed in to change notification settings

Alan-xh/openai-python

Open more actions menu
 
 

Repository files navigation

OpenAI Python 库

OpenAI Python 库提供从用Python编写的应用程序方便访问OpenAI API的功能。它包含了一系列预定义的类,用于API资源,这些类可以根据API响应动态初始化,这使得它与广泛版本的OpenAI API兼容。

您可以在我们的API参考OpenAI Cookbook中找到OpenAI Python库的使用示例。

安装

除非您想修改包,否则无需此源代码。如果您只想使用包,只需运行:

pip install --upgrade openai

从源代码安装:

python setup.py install

可选依赖

安装openai.embeddings_utils的依赖:

pip install openai[embeddings]

安装Weights & Biases支持:

pip install openai[wandb]

由于其大小,数据库如numpypandas默认情况下不会安装。它们对于此库的某些功能是需要的,但通常不是与API通信所必需的。如果您遇到MissingDependencyError,请使用以下命令安装:

pip install openai[datalib]

使用

库需要使用您的账户密钥进行配置,该密钥可以在网站上找到。可以设置为环境变量OPENAI_API_KEY

export OPENAI_API_KEY='sk-...'

或者将openai.api_key设置为其值:

import openai
openai.api_key = "sk-..."

# 列出模型
models = openai.Model.list()

# 打印第一个模型的ID
print(models.data[0].id)

# 创建一个完成
completion = openai.Completion.create(model="ada", prompt="Hello world")

# 打印完成内容
print(completion.choices[0].text)

参数

所有端点都有一个.create方法,支持request_timeout参数。此参数接受一个Union[float, Tuple[float, float]],如果请求超出该时间(以秒为单位),将引发openai.error.Timeout错误(见:https://requests.readthedocs.io/en/latest/user/quickstart/#timeouts)。

Microsoft Azure 端点

为了使用Microsoft Azure端点,您需要额外设置api_typeapi_baseapi_version,除了api_keyapi_type必须设置为'azure',其他参数对应您端点的属性。此外,部署名称必须作为engine参数传递。

import openai
openai.api_type = "azure"
openai.api_key = "..."
openai.api_base = "https://example-endpoint.openai.azure.com"
openai.api_version = "2023-03-15-preview"

# 创建一个完成
completion = openai.Completion.create(deployment_id="deployment-name", prompt="Hello world")

# 打印完成内容
print(completion.choices[0].text)

请注意,目前,Microsoft Azure端点只能用于完成、嵌入和微调操作。 有关如何使用Azure端点进行微调和其他操作的详细示例,请查看以下Jupyter笔记本:

Microsoft Azure Active Directory 认证

为了使用Microsoft Active Directory来认证您的Azure端点,您需要将api_type设置为"azure_ad",并将获取的凭证令牌传递给api_key。其余参数需要按照上一节中指定的设置。

from azure.identity import DefaultAzureCredential
import openai

# 请求凭证
default_credential = DefaultAzureCredential()
token = default_credential.get_token("https://cognitiveservices.azure.com/.default")

# 设置参数
openai.api_type = "azure_ad"
openai.api_key = token.token
openai.api_base = "https://example-endpoint.openai.azure.com/"
openai.api_version = "2023-03-15-preview"

# ...

命令行界面

此库还提供了一个openai命令行工具,使得从终端与API交互变得简单。运行openai api -h查看用法。

# 列出模型
openai api models.list

# 创建一个完成
openai api completions.create -m ada -p "Hello world"

# 创建一个对话完成
openai api chat_completions.create -m gpt-3.5-turbo -g user "Hello world"

# 通过DALL·E API生成图像
openai api image.create -p "two dogs playing chess, cartoon" -n 1

示例代码

如何使用此Python库完成各种任务的示例可以在OpenAI Cookbook中找到。它包含以下代码示例:

  • 使用微调进行分类
  • 聚类
  • 代码搜索
  • 自定义嵌入
  • 从文档语料库中回答问题
  • 推荐
  • 嵌入可视化
  • 等等

在2022年7月之前,此OpenAI Python库的示例文件夹中托管了代码示例,但自那以后所有示例都已迁移到OpenAI Cookbook

聊天

gpt-3.5-turbo这样的对话模型可以通过对话完成端点调用。

import openai
openai.api_key = "sk-..."  # 以您选择的方式提供API密钥

completion = openai.ChatCompletion.create(model="gpt-3.5-turbo", messages=[{"role": "user", "content": "Hello world!"}])
print(completion.choices[0].message.content)

嵌入

在OpenAI Python库中,嵌入表示将文本字符串表示为固定长度的浮点数向量。嵌入旨在测量文本字符串之间的相似性或相关性。

要获取一个文本字符串的嵌入,您可以像以下Python示例一样使用嵌入方法:

import openai
openai.api_key = "sk-..."  # 以您选择的方式提供API密钥

# 选择要嵌入的文本
text_string = "sample text"

# 选择一个嵌入模型
model_id = "text-similarity-davinci-001"

# 计算文本的嵌入
embedding = openai.Embedding.create(input=text_string, model=model_id)['data'][0]['embedding']

如何调用嵌入方法的示例可以在获取嵌入笔记本中找到。

使用嵌入的示例在以下Jupyter笔记本中共享:

有关嵌入和OpenAI提供的嵌入类型更多信息,请阅读嵌入指南

微调

通过在训练数据上微调模型,可以同时提高结果(通过为模型提供更多学习示例)并降低API调用的成本/延迟(主要通过减少在提示中包含训练示例的需求)。

微调的示例在以下Jupyter笔记本中共享:

将您的微调同步到Weights & Biases以便在您的中央仪表板上跟踪实验、模型和数据集:

openai wandb sync

有关微调的更多信息,请阅读微调指南

内容审核

OpenAI提供了一个Moderation端点,可以用来检查内容是否符合OpenAI 内容政策

import openai
openai.api_key = "sk-..."  # 以您选择的方式提供API密钥

moderation_resp = openai.Moderation.create(input="Here is some perfectly innocuous text that follows all OpenAI content policies.")

更多详情请见审核指南

图像生成 (DALL·E)

import openai
openai.api_key = "sk-..."  # 以您选择的方式提供API密钥

image_resp = openai.Image.create(prompt="two dogs playing chess, oil painting", n=4, size="512x512")

音频转录 (Whisper)

import openai
openai.api_key = "sk-..."  # 以您选择的方式提供API密钥
f = open("path/to/file.mp3", "rb")
transcript = openai.Audio.transcribe("whisper-1", f)

异步API

通过在网络绑定方法前添加a,可以使用异步支持:

import openai
openai.api_key = "sk-..."  # 以您选择的方式提供API密钥

async def create_completion():
    completion_resp = await openai.Completion.acreate(prompt="This is a test", model="davinci")

为了使异步请求更高效,您可以传入您自己的 aiohttp.ClientSession,但您必须在程序/事件循环结束时手动关闭客户端会话:

import openai
from aiohttp import ClientSession

openai.aiosession.set(ClientSession())
# 在程序结束时,关闭http会话
await openai.aiosession.get().close()

更多详情请见使用指南

要求

  • Python 3.7.1+

一般来说,我们希望支持我们的客户使用的Python版本。如果您遇到任何版本问题,请在我们的支持页面上告知我们。

致谢

此库是基于Stripe Python库的分支。

About

OpenAI Python库为用Python语言编写的应用程序提供了对OpenAI API的方便访问。

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 99.9%
  • Makefile 0.1%
Morty Proxy This is a proxified and sanitized view of the page, visit original site.