一、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 示例:
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。可以通过以下方式设置:
python">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
)进行对话或生成文本。 - 示例:
python">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
)进行文本补全。 - 示例:
python">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)
- 用于生成图像。
- 示例:
python">response = openai.Image.create(prompt="A cute cat sitting on a chair",n=1,size="1024x1024" ) print(response['data'][0]['url'])
(4) 语音转文本(Whisper)
- 用于将语音文件转换为文本。
- 示例:
python">with open("audio.mp3", "rb") as audio_file:response = openai.Audio.transcribe(model="whisper-1",file=audio_file) print(response['text'])
(5) 微调模型(Fine-tuning)
- 用于微调自定义模型。
- 示例:
python">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
: 错误代码。
示例:
python">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
库生成文本:
python">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库!!!