openai/openai-python: The official Python library for the OpenAI API(openai_secret_manager)
OpenAI Secret Manager模块简介
OpenAI Secret Manager是一个用于管理API密钥的Python模块。它允许您安全地存储和访问OpenAI API密钥,以便在代码中调用API。
安装OpenAI Secret Manager模块
您可使用以下命令使用pip安装openai-secret-manager库:
pip install openai-secret-manager
请确保安装的版本与您当前使用的Python版本兼容。
导入OpenAI Secret Manager模块
在Python脚本中,您可使用以下代码导入openai_secret_manager模块:
import openai_secret_manager
您可使用assert语句检查模块会不会成功导入:
assert "openai" in openai_secret_manager.get_services()
配置OpenAI API密钥
获得OpenAI API密钥
要获得OpenAI API密钥,您需要具有一个OpenAI帐户。登录OpenAI网站并创建一个帐户。在帐户设置中,您将找到您的API密钥,并可以将其复制。
初始化OpenAI Secret Manager
在命令行中运行以下命令来初始化OpenAI Secret Manager:
openai_secret_manager init
运行此命令后,您将被要求提供您的API密钥。输入API密钥后,密钥管理器将被初始化,并将密钥存储在一个安全的位置。
使用OpenAI Secret Manager调用OpenAI API
获得存储的API密钥
使用openai_secret_manager.get_services()方法,您可以检查服务会不会已添加到密钥管理器中。使用openai_secret_manager.get_secret(“openai”)方法,您可以获得存储的API密钥:
secrets = openai_secret_manager.get_secret("openai")
调用OpenAI API
要调用OpenAI API,您需要导入openai库并设置API密钥:
import openai
设置API密钥:
openai.api_key = secrets["api_key"]
现在,您可使用导入的openai库中的任何方法来调用所需的OpenAI API。
总结
OpenAI Secret Manager模块是一个方便的工具,可帮助您管理和调用OpenAI API密钥。通过安装和导入该模块,您可以安全地存储和访问您的API密钥,并在代码中轻松调用OpenAI API。
以下是使用OpenAI Secret Manager模块的基本步骤:
- 安装模块
- 获得API密钥
- 初始化密钥管理器
- 使用存储的API密钥调用OpenAI API
确保依照上述步骤操作,以便顺利使用OpenAI Secret Manager模块。
openai_secret_manager的进一步展开说明
# OpenAI Python Library
OpenAI Python库提供了一个方便的方式,使得使用Python语言编写的利用程序可以方便地访问OpenAI API。它包括了一组预定义的API资源类,可以从API响应中动态地初始化本身,使它与各种OpenAI API版本兼容。
你可以在我们的API参考和OpenAI Cookbook中找到OpenAI Python库的使用示例。
## 安装
首先,请确保你的电脑上安装了Python 3.7.1或更新版本。如果你只想使用这个包,运行以下命令安装:
“`
pip install –upgrade openai
“`
安装完包以后,在文件的顶部导入它:
“`python
import openai
“`
如果你希望从源代码安装这个包并对其进行修改,请在仓库的根目录下运行以下命令:
“`
python setup.py install
“`
## 可选依赖
如果你需要使用`openai.embeddings_utils`模块,你可以安装以下依赖项:
“`
pip install openai[embeddings]
“`
如果你需要支持Weights & Biases,请安装以下依赖项:
“`
pip install openai[wandb]
“`
由于其体积较大,数据库类库(如numpy和pandas)不会默许安装。虽然它们在某些库的功能中是一定要的,但通常不会用于与API的通讯。如果你遇到了`MissingDependencyError`,请使用以下命令安装它们:
“`
pip install openai[datalib]
“`
## 使用方法
在使用这个库之前,你需要配置你的账户的秘钥。你可以在OpenAI的网站上获得到它。你可以在使用这个库之前,将它设置为`OPENAI_API_KEY`环境变量:
“`
export OPENAI_API_KEY=’sk-…’
“`
或将`openai.api_key`设置为对应的值:
“`python
openai.api_key = “sk-…”
“`
关于怎样使用这个库完成各种任务的示例代码可以在OpenAI Cookbook中找到。里面包括了以下功能的代码示例:使用fine-tuning进行分类、聚类、代码搜索、自定义嵌入、从文档集合中进行问答、推荐、嵌入可视化等。
大多数终端支持`request_timeout`参数。这个参数接受一个`Union[float, Tuple[float, float]]`类型的值,如果要求超过了指定的时间(以秒为单位),将会抛出`openai.error.Timeout`毛病(参见:https://requests.readthedocs.io/en/latest/user/quickstart/#timeouts)。
## 聊天补全
可使用聊天模型(比如gpt⑶.5-turbo和gpt⑷)通过聊天补全端点进行调用。
“`python
completion = openai.ChatCompletion.create(model=”gpt⑶.5-turbo”, messages=[{“role”: “user”, “content”: “Hello world”}])
print(completion.choices[0].message.content)
“`
你可以在我们的聊天补全指南中了解更多信息。
## 补全
可使用文本模型(比如babbage-002或davinci-002)通过补全端点进行调用。
“`python
completion = openai.Completion.create(model=”davinci-002″, prompt=”Hello world”)
print(completion.choices[0].text)
“`
你可以在我们的补全指南中了解更多信息。
## 嵌入
嵌入设计用于衡量文本字符串之间的类似度或相关性。要获得文本字符串的嵌入,你可使用以下方法:
“`python
text_string = “sample text”
model_id = “text-embedding-ada-002″
embedding = openai.Embedding.create(input=text_string, model=model_id)[‘data’][0][’embedding’]
“`
你可以在我们的嵌入指南中了解更多信息。
## 模型的精调
通过使用训练数据对模型进行精调,可以改良结果(通过给模型提供更多学习的示例)并下降API调用的本钱/延迟,由于在提示中减少了包括训练示例的需求。
“`python
# 使用已上传的文件创建一个精调任务
openai.FineTuningJob.create(training_file=”file-abc123″, model=”gpt⑶.5-turbo”)
# 列出10个精调任务
openai.FineTuningJob.list(limit=10)
# 检索精调任务的状态
openai.FineTuningJob.retrieve(“ft-abc123”)
# 取消一个任务
openai.FineTuningJob.cancel(“ft-abc123″)
# 列出一个精调任务的最多10个事件
openai.FineTuningJob.list_events(id=”ft-abc123”, limit=10)
# 删除一个精调模型(一定要是创建该模型的组织的所有者)
openai.Model.delete(“ft:gpt⑶.5-turbo:acemeco:suffix:abc123″)
“`
你可以在我们的精调指南中了解更多信息。
要将精调的训练结果记录到Weights & Biases中,请使用以下命令:
“`
openai wandb sync
“`
有关更多信息,请浏览Weights & Biases的文档。
## 内容审查
OpenAI提供了一个不要钱的内容审查端点,用于检查内容会不会符合OpenAI的内容政策。
“`python
moderation_resp = openai.Moderation.create(input=”Here is some perfectly innocuous text that follows all OpenAI content policies.”)
“`
你可以在我们的内容审查指南中了解更多信息。
## 图象生成(DALL·E)
DALL·E是一个生成图象的模型,它可以根据提示创建新的图象。
“`python
image_resp = openai.Image.create(prompt=”two dogs playing chess, oil painting”, n=4, size=”512×512″)
“`
你可以在我们的图象生成指南中了解更多信息。
## 音频(Whisper)
语音转文本API提供了两个端点,分别是`transcriptions`(转录)和`translations`(翻译),基于我们的先进的开源`large-v2 Whisper`模型。
“`python
f = open(“path/to/file.mp3”, “rb”)
# 转录
transcript = openai.Audio.transcribe(“whisper⑴”, f)
# 翻译
transcript = openai.Audio.translate(“whisper⑴″, f)
“`
你可以在我们的语音转文本指南中了解更多信息。
## 异步API
API中支持异步操作,只需在网络操作的方法前加上字母`a`。
“`python
async def create_chat_completion():
chat_completion_resp = await openai.ChatCompletion.acreate(model=”gpt⑶.5-turbo”, messages=[{“role”: “user”, “content”: “Hello world”}])
“`
为了让异步要求更高效,你可以传入自己的`aiohttp.ClientSession`,但你一定要在程序/事件循环结束时手动关闭这个客户端会话。
“`python
from aiohttp import ClientSession
openai.aiosession.set(ClientSession())
# 在程序的最后,关闭http会话
await openai.aiosession.get().close()
“`
## 命令行界面
这个库还提供了一个`openai`命令行工具,可以方便地从终端与API进行交互。运行`openai api -h`获得使用说明。
“`
# 列出模型
openai api models.list
# 创建一个聊天补全(gpt⑶.5-turbo、gpt⑷等)
openai api chat_completions.create -m gpt⑶.5-turbo -g user “Hello world”
# 创建一个补全(text-davinci-003、text-davinci-002、ada、babbage、curie、davinci等)
openai api completions.create -m ada -p “Hello world”
# 通过DALL·E API生成图象
openai api image.create -p “two dogs playing chess, cartoon” -n 1
# 通过代理使用openai
openai –proxy=http://proxy.com api models.list
“`
## Microsoft Azure端点
要使用Microsoft Azure端点,你需要设置`api_type`、`api_base`和`api_version`,并提供`api_key`。`api_type`一定要设置为`’azure’`,`api_base`和`api_version`是你的端点属性。另外,将部署名称作为`engine`参数传递。
“`python
import openai
openai.api_type = “azure”
openai.api_key = “…”
openai.api_base = “https://example-endpoint.openai.azure.com”
openai.api_version = “2023-05⑴5″
# 创建一个聊天补全
chat_completion = openai.ChatCompletion.create(deployment_id=”deployment-name”, model=”gpt⑶.5-turbo”, messages=[{“role”: “user”, “content”: “Hello world”}])
# 打印补全结果
print(chat_completion.choices[0].message.content)
“`
请注意,目前只能使用Microsoft Azure端点进行补全、嵌入和精调操作。关于怎样使用Azure端点进行精调和其他操作的详细示例,请查看以下Jupyter笔记本:
– [使用Azure端点进行精调](https://github.com/openai/openai-python/blob/main/examples/fine_tuning_with_azure_endpoint.ipynb)
## 使用Microsoft Azure Active Directory进行身份验证
要使用Microsoft Active Directory进行身份验证,你需要将`api_type`设置为`”azure_ad”`,并将获得到的凭据令牌传递给`api_key`。其余的参数需要依照前面的部份进行设置。
“`python
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-05⑴5”
“`
这个库是从Stripe Python库中派生的,感谢他们的贡献。
openai_secret_manager的常见问答Q&A
问题1:怎样使用Python调用OpenAI API?
答案:使用Python调用OpenAI API可以依照以下步骤进行:
- 首先,在命令行中运行以下命令安装OpenAI库:
pip install openai
- 导入OpenAI库和您的OpenAI API密钥:
import openai_secret_manager
assert "openai" in openai_secret_manager.get_services()
secrets = openai_secret_manager.get_secret("openai")
api_key = secrets["api_key"]
import openai
openai.api_key = api_key - 现在,您可以调用OpenAI API并使用其功能了。
示例:
response = openai.Completion.create(
engine="text-davinci-003",
prompt="Once upon a time",
max_tokens=100)