在本文中
OpenAI 刚刚发布了新版本的OpenAI Python API 库。本指南是OpenAI 迁移指南的补充,将帮助你快速了解特定于 Azure OpenAI 的更改。
更新
- 这是 OpenAI Python API 库的新版本。
- 从 2023 年 11 月 6 日开始
pip install openai
,pip install openai --upgrade
将安装version 1.x
OpenAI Python 库。 - 从 升级
version 0.28.1
到version 1.x
是一项重大更改,您需要测试和更新代码。 - 如果出现错误,则自动重试并进行退避
- 正确的类型(对于 mypy/pyright/editors)
- 您现在可以实例化客户端,而不是使用全局默认值。
- 切换到显式客户端实例化
- 名称变更
已知的问题
DALL-E3
最新的 1.x 版本完全支持。通过对 代码DALL-E2
进行以下修改,可以与 1.x 一起使用。 embeddings_utils.py
用于提供语义文本搜索的余弦相似度等功能的OpenAI Python API 库不再是其一部分。 您还应该检查OpenAI Python 库的活跃GitHub 问题。
迁移前进行测试
重要的
openai migrate
Azure OpenAI 不支持自动迁移代码。
由于这是该库的新版本,具有重大更改,因此您应该在迁移任何生产应用程序以依赖版本 1.x 之前针对新版本广泛测试您的代码。您还应该检查您的代码和内部流程,以确保您遵循最佳实践并将生产代码仅固定到您已经完全测试过的版本。
为了使迁移过程更容易,我们将 Python 文档中的现有代码示例更新为选项卡式体验:
OpenAI Python 1.x
Console
pip install openai --upgrade
OpenAI Python 0.28.1
Console
pip install openai==0.28.1
这提供了更改的上下文,并允许您并行测试新库,同时继续提供对 version 的支持0.28.1
。如果您升级到1.x
并意识到需要暂时恢复到以前的版本,您可以随时pip uninstall openai
重新安装目标0.28.1
到pip install openai==0.28.1
.
聊天完成情况
OpenAI Pythin 1.x
您需要将该model
变量设置为部署 GPT-3.5-Turbo 或 GPT-4 模型时选择的部署名称。输入模型名称会导致错误,除非您选择与基础模型名称相同的部署名称。
import os
from openai import AzureOpenAI
client = AzureOpenAI(
azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT"),
api_key=os.getenv("AZURE_OPENAI_API_KEY"),
api_version="2023-05-15"
)
response = client.chat.completions.create(
model="gpt-35-turbo", # model = "deployment_name".
messages=[
{ "role": "system", "content": "You are a helpful assistant."},
{ "role": "user", "content": "Does Azure OpenAI support customer managed keys?"},
{ "role": "assistant", "content": "Yes, customer managed keys are supported by Azure OpenAI."},
{ "role": "user", "content": "Do other Azure AI services support this too?"}
]
)
print(response.choices[0].message.content)
OpenAI Python 0.28.1
您需要将该engine
变量设置为部署 GPT-3.5-Turbo 或 GPT-4 模型时选择的部署名称。输入模型名称将导致错误,除非您选择与基础模型名称相同的部署名称。
Python
import os
import openai
openai.api_type = "azure"
openai.api_base = os.getenv("AZURE_OPENAI_ENDPOINT")
openai.api_key = os.getenv("AZURE_OPENAI_API_KEY")
openai.api_version = "2023-05-15"
response = openai.ChatCompletion.create(
engine="gpt-35-turbo", # engine = "deployment_name".
messages=[
{ "role": "system", "content":