大模型(LLM)的若干科普之问(四):OpenAI 的 API 接口规范与openai库
`openai` 库是 OpenAI 官方提供的 Python 客户端库,支持与 OpenAI API 的交互。通过该库,可以轻松调用 GPT 系列模型、DALL·E、Whisper 等服务。通常来讲,国内LLM都支持openai库!!!
一、OpenAI 的 API 接口规范
OpenAI 的 API 接口规范是基于 RESTful API 设计的,主要用于与 OpenAI 的大型语言模型(如 GPT-3、GPT-4 等)进行交互。以下是 OpenAI API 的基本接口规范和使用方法:
1. API 基础信息
- API 地址:
https://api.openai.com/v1 - 认证方式: 使用 API Key 进行身份验证。
- 在请求头中添加
Authorization: Bearer <your-api-key>。
- 在请求头中添加
- 支持的模型: 包括
gpt-3.5-turbo、gpt-4等。以及非OpenAI公司的号称兼容该规范的LLM(需稍作修改,如,API的地址)
2. 常用接口
(1) 文本生成接口
-
URL:
POST https://api.openai.com/v1/chat/completions -
功能: 与模型进行对话或生成文本。
-
请求示例:
{ "model": "gpt-3.5-turbo", "messages": [ {"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "Hello, how are you?"} ], "max_tokens": 100, "temperature": 0.7 } -
参数说明:
model: 使用的模型名称(如gpt-3.5-turbo)。messages: 对话消息列表,每条消息包含role(system、user或assistant)和content(消息内容)。max_tokens: 生成的最大 token 数。temperature: 控制生成文本的随机性(0-1,值越高越随机)。top_p: 控制生成文本的多样性。n: 生成多个回复。stop: 停止生成的条件(如遇到特定字符串)。stream: 是否以流式传输方式返回结果。
-
响应示例:
{ "id": "chatcmpl-12345", "object": "chat.completion", "created": 1691234567, "choices": [ { "index": 0, "message": { "role": "assistant", "content": "I'm fine, thank you! How can I help you today?" }, "finish_reason": "stop" } ], "usage": { "prompt_tokens": 10, "completion_tokens": 20, "total_tokens": 30 } }
(2) 模型列表接口
- URL:
GET https://api.openai.com/v1/models - 功能: 获取可用的模型列表。
- 响应示例:
{ "data": [ { "id": "gpt-3.5-turbo", "object": "model", "created": 1691234567, "owned_by": "openai" }, { "id": "gpt-4", "object": "model", "created": 1691234568, "owned_by": "openai" } ] }
(3) 图像生成接口(DALL·E)
- URL:
POST https://api.openai.com/v1/images/generations - 功能: 根据文本描述生成图像。
- 请求示例:
{ "prompt": "A cute cat sitting on a chair", "n": 1, "size": "1024x1024" } - 参数说明:
prompt: 图像生成的文本描述。n: 生成图像的数量。size: 图像分辨率(如256x256、512x512、1024x1024)。
- 响应示例:
{ "data": [ { "url": "https://example.com/image.png" } ] }
3. 错误处理
OpenAI API 返回的错误信息通常包含以下字段:
error: 错误对象。message: 错误描述。type: 错误类型(如invalid_request_error)。code: 错误代码。
示例:
{
"error": {
"message": "You exceeded your current quota, please check your plan and billing details.",
"type": "insufficient_quota",
"code": "quota_exceeded"
}
}
4. 使用示例(Python)
以下是一个使用 OpenAI API 进行文本生成的 Python 示例:
import openai
# 设置 API Key
openai.api_key = "your-api-key"
# 调用 API
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "What is the capital of France?"}
],
max_tokens=50
)
# 输出结果
print(response['choices'][0]['message']['content'])
5. 注意事项
- API Key 安全: 不要将 API Key 暴露在客户端代码中。
- 速率限制: OpenAI API 有速率限制,需根据订阅计划调整调用频率。
- 费用: 使用 API 会产生费用,具体费用取决于模型和 token 使用量。
参考 OpenAI 的官方文档:OpenAI API Documentation。(由于是境外网,有时会连不上)
二、Python 的 openai库
OpenAI 的 API 接口规范对应的 Python 库是 openai。这是一个官方提供的 Python 客户端库,用于与 OpenAI 的 API 进行交互,支持 GPT 系列模型、DALL·E、Whisper 等多种服务。
以下是关于 openai 库的详细介绍和使用方法:
1. 安装 openai 库
在 Python 环境中,可以通过 pip 安装 openai 库:
pip install openai
2. 设置 API Key
在使用 OpenAI API 之前,需要设置 API Key。可以通过以下方式设置:
import openai
# 设置 API Key
openai.api_key = "your-api-key" # 替换为你的 OpenAI API Key
3. 主要功能模块
openai 库提供了多个模块,用于支持不同的 OpenAI 服务:
(1) 文本生成(Chat Completions)
- 用于与 GPT 系列模型(如
gpt-3.5-turbo、gpt-4)进行对话或生成文本。 - 示例:
response = openai.ChatCompletion.create( model="gpt-3.5-turbo", messages=[ {"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "Hello, how are you?"} ], max_tokens=100, temperature=0.7 ) print(response['choices'][0]['message']['content'])
(2) 文本补全(Completions)
- 用于与 GPT-3 系列模型(如
text-davinci-003)进行文本补全。 - 示例:
response = openai.Completion.create( model="text-davinci-003", prompt="Write a short story about a robot.", max_tokens=150, temperature=0.8 ) print(response['choices'][0]['text'])
(3) 图像生成(DALL·E)
- 用于生成图像。
- 示例:
response = openai.Image.create( prompt="A cute cat sitting on a chair", n=1, size="1024x1024" ) print(response['data'][0]['url'])
(4) 语音转文本(Whisper)
- 用于将语音文件转换为文本。
- 示例:
with open("audio.mp3", "rb") as audio_file: response = openai.Audio.transcribe( model="whisper-1", file=audio_file ) print(response['text'])
(5) 微调模型(Fine-tuning)
- 用于微调自定义模型。
- 示例:
response = openai.FineTune.create( training_file="file-12345", model="davinci" ) print(response)
4. 常用参数
以下是一些常用的 API 参数:
(1) 通用参数
model: 使用的模型名称(如gpt-3.5-turbo、text-davinci-003)。max_tokens: 生成的最大 token 数。temperature: 控制生成文本的随机性(0-2)。top_p: 控制生成文本的多样性(0-1)。n: 生成多个独立的回复。stop: 指定停止符。stream: 是否以流式传输方式返回结果。
(2) Chat Completions 参数
messages: 对话消息列表,包含role(system、user、assistant)和content。
(3) Completions 参数
prompt: 输入提示文本。
(4) Image 参数
prompt: 图像生成的文本描述。n: 生成图像的数量。size: 图像分辨率(如256x256、512x512、1024x1024)。
(5) Audio 参数
file: 语音文件。model: 使用的模型名称(如whisper-1)。
5. 错误处理
OpenAI API 返回的错误信息通常包含以下字段:
error: 错误对象。message: 错误描述。type: 错误类型(如invalid_request_error)。code: 错误代码。
示例:
try:
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[
{"role": "user", "content": "Hello!"}
]
)
except openai.error.OpenAIError as e:
print(f"An error occurred: {e}")
6. 完整示例
以下是一个完整的示例,展示如何使用 openai 库生成文本:
import openai
# 设置 API Key
openai.api_key = "your-api-key"
# 调用 Chat Completions API
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "What is the capital of France?"}
],
max_tokens=50,
temperature=0.7
)
# 输出结果
print(response['choices'][0]['message']['content'])
7. 官方文档
- OpenAI 官方文档: OpenAI API Documentation
openai库 GitHub 仓库: openai-python
openai 库是 OpenAI 官方提供的 Python 客户端库,支持与 OpenAI API 的交互。通过该库,可以轻松调用 GPT 系列模型、DALL·E、Whisper 等服务。
通常来讲,国内LLM都支持openai库!!!
更多推荐
所有评论(0)