OpenAI SDK

1. OpenAI SDK
[!note] 版本说明
本文代码已更新至 OpenAI Python SDK v1.x。旧的openai.Completion接口及text-davinci-003、code-davinci-002等模型已于 2024 年初退役,请使用新的client.chat.completions接口。
1.1. 图表说明
为了更好地理解 API 调用流程,以下是一个简单的流程图:
+----------------+ +----------------+ +----------------+
| 用户输入提示 | ----> | 调用OpenAI API | ----> | 返回生成的响应 |
+----------------+ +----------------+ +----------------+
1.2. 步骤 1:获取 API 密钥
官网:openai
首先,你需要注册一个 OpenAI 账号并获取 API 密钥。访问 OpenAI 官网并登录后,导航到 API 密钥页面(platform.openai.com/api-keys)生成一个新的 API 密钥。
1.3. 步骤 2:安装 OpenAI SDK
根据你使用的编程语言,安装相应的 OpenAI SDK。以下是 Python 的安装示例:
1.3.1. 创建一个新的 conda 环境
[!note] 说明
这是可选的,但推荐这样做以避免潜在的包冲突。
conda create -n openai_env python=3.9
conda activate openai_env
1.3.2. 使用 conda 安装 OpenAI SDK
这个命令会从 conda-forge 频道安装 OpenAI 包:
conda install -c conda-forge openai
[!note] 提示
如果上述命令执行较慢或遇到问题,也可以尝试使用 pip 安装:
pip install openai
1.3.3. 验证安装
安装完成后,你可以在 Python 中导入并使用 OpenAI SDK:
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ.get("OPENAI_API_KEY"),
)
# 使用 SDK 的功能
1.4. 步骤 3:配置客户端
在新的 SDK 中,通过创建 OpenAI 客户端来完成配置。API 密钥建议从环境变量读取,避免硬编码泄露:
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ.get("OPENAI_API_KEY"), # 推荐从环境变量读取
# base_url="http://localhost:3000/v1", # 可选:使用兼容 OpenAI 接口的中转/本地服务
)
1.5. 步骤 4:调用 API
使用客户端的接口调用 API。以下是一个调用聊天模型进行文本翻译的示例:
response = client.chat.completions.create(
model="gpt-4o-mini", # 使用的模型
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Translate the following English text to French: 'Hello, how are you?'"},
],
max_tokens=60, # 生成的最大 token 数
)
# 打印生成的文本
print(response.choices[0].message.content.strip())
1.6. 步骤 5:处理响应
解析和处理 API 响应,以便在你的应用程序中使用。例如,通过 response.choices[0].message.content 提取生成的文本并显示给用户。
1.7. 步骤 6:集成到应用程序
将上述代码集成到你的应用程序逻辑中。例如,如果你在开发一个聊天机器人,可以将用户输入传递给 OpenAI API,并将 API 的响应返回给用户。
1.8. 步骤 7:优化和调试
根据实际使用情况优化 API 调用和响应处理。你可以调整 API 参数,如 max_tokens、temperature 等,以获得更符合需求的结果。同时,启用调试模式(如设置环境变量 OPENAI_LOG=debug)以获取更多关于请求和响应的信息,帮助你解决集成过程中遇到的问题。
2. 详细的环境配置
在实际操作中,用户可能会遇到环境配置的问题。以下是配置 Python 环境的详细步骤,例如安装 Python、创建虚拟环境等:
# 安装 Python
sudo apt-get install python3
# 创建虚拟环境
python3 -m venv myenv
# 激活虚拟环境
source myenv/bin/activate
# 安装 OpenAI SDK
pip install openai
3. 实操案例
3.1. 简单的聊天机器人
以下是一个完整的 Python 示例,展示了如何集成 OpenAI 的语言模型到一个简单的聊天应用中:
from openai import OpenAI
client = OpenAI(api_key="你的API密钥")
def get_response(prompt):
"""
调用 OpenAI API 生成响应
:param prompt: 用户输入的提示
:return: AI 生成的响应
"""
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": prompt}],
max_tokens=150,
)
return response.choices[0].message.content.strip()
# 示例用户输入
user_input = "Tell me a joke."
response = get_response(user_input)
print("AI:", response)
3.2. 生成新闻摘要
from openai import OpenAI
client = OpenAI(api_key="你的API密钥")
def summarize_article(article_text):
"""
调用 OpenAI API 生成新闻摘要
:param article_text: 文章内容
:return: 生成的摘要
"""
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{"role": "user", "content": f"Summarize the following article: {article_text}"},
],
max_tokens=100,
)
return response.choices[0].message.content.strip()
# 示例文章内容
article = "OpenAI has released a new model that can generate human-like text. This model is based on the GPT architecture and has been trained on a diverse range of internet text."
summary = summarize_article(article)
print("Summary:", summary)
3.3. 生成代码
from openai import OpenAI
client = OpenAI(api_key="你的API密钥")
def generate_code(prompt):
"""
调用 OpenAI API 生成代码
:param prompt: 用户输入的提示
:return: 生成的代码
"""
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{"role": "system", "content": "You are an expert programmer."},
{"role": "user", "content": prompt},
],
max_tokens=150,
)
return response.choices[0].message.content.strip()
# 示例用户输入
code_prompt = "Write a Python function to calculate the factorial of a number."
generated_code = generate_code(code_prompt)
print("Generated Code:", generated_code)
4. 常见问题解答(FAQ)
4.1. 如何处理 API 请求超时?
可以设置请求的超时时间,确保在网络不稳定时不会无限等待:
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{"role": "user", "content": "Translate the following English text to French: 'Hello, how are you?'"},
],
max_tokens=60,
timeout=10, # 设置超时时间为 10 秒
)
4.2. 如何处理 API 调用次数限制?
OpenAI API 有调用次数限制(Rate Limit),触发时会返回 429 错误。可以通过优化请求、减少不必要的调用来应对,并配合指数退避进行重试:
import time
import openai
for attempt in range(5):
try:
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": "Tell me a joke."}],
)
print(response.choices[0].message.content)
break
except openai.RateLimitError:
time.sleep(2 ** attempt) # 指数退避:1s、2s、4s、8s...