OpenAI API
OpenAI提供了强大的API接口,让开发者能够轻松集成GPT系列模型。本节将介绍如何使用OpenAI API开发AI应用。
快速开始
获取API密钥
- 访问 platform.openai.com
- 注册或登录账号
- 进入 API Keys 页面
- 点击 "Create new secret key" 创建密钥
安装SDK
bash
pip install openai基本调用
python
from openai import OpenAI
client = OpenAI(api_key="your-api-key")
response = client.chat.completions.create(
model="gpt-4o",
messages=[
{"role": "system", "content": "你是一位有帮助的助手"},
{"role": "user", "content": "你好!"}
]
)
print(response.choices[0].message.content)模型选择
可用模型(2025年)
| 模型 | 特点 | 适用场景 | 价格(输入/输出) |
|---|---|---|---|
| gpt-4o | 多模态、快速 | 通用任务 | $2.5/$10 每百万Token |
| gpt-4-turbo | 推理能力强 | 复杂任务 | $10/$30 每百万Token |
| o1 | 深度推理 | 数学、编程竞赛 | $15/$60 每百万Token |
| gpt-3.5-turbo | 快速便宜 | 简单任务 | $0.5/$1.5 每百万Token |
模型选择建议
python
# 简单任务:用gpt-3.5-turbo节省成本
response = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[...]
)
# 复杂任务:用gpt-4o获得更好效果
response = client.chat.completions.create(
model="gpt-4o",
messages=[...]
)
# 深度推理:用o1处理数学和逻辑问题
response = client.chat.completions.create(
model="o1",
messages=[...]
)高级功能
流式输出
python
stream = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "写一首诗"}],
stream=True
)
for chunk in stream:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="")函数调用
python
tools = [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "获取指定城市的天气",
"parameters": {
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "城市名称"
}
},
"required": ["city"]
}
}
}
]
response = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "北京今天天气怎么样?"}],
tools=tools
)
# 检查是否需要调用函数
if response.choices[0].message.tool_calls:
tool_call = response.choices[0].message.tool_calls[0]
print(f"需要调用函数: {tool_call.function.name}")
print(f"参数: {tool_call.function.arguments}")结构化输出
python
from pydantic import BaseModel
class UserInfo(BaseModel):
name: str
age: int
email: str
response = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "提取信息:张三,28岁,邮箱zhangsan@example.com"}],
response_format=UserInfo
)
user = UserInfo.model_validate_json(response.choices[0].message.content)
print(user.name) # 张三图像理解
python
response = client.chat.completions.create(
model="gpt-4o",
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": "这张图片里有什么?"},
{
"type": "image_url",
"image_url": {
"url": "https://example.com/image.jpg"
}
}
]
}
]
)成本优化
使用提示缓存
python
# 相同的system prompt可以缓存
response = client.chat.completions.create(
model="gpt-4o",
messages=[
{"role": "system", "content": "很长的系统提示..."}, # 可被缓存
{"role": "user", "content": "用户问题"}
]
)批处理API
python
# 批量处理请求,成本降低50%
batch = client.batches.create(
input_file_id="file-xxx",
endpoint="/v1/chat/completions",
completion_window="24h"
)控制Token使用
python
# 限制输出长度
response = client.chat.completions.create(
model="gpt-4o",
messages=[...],
max_tokens=100 # 最多输出100个Token
)错误处理
python
from openai import OpenAI, APIError, RateLimitError, APIConnectionError
client = OpenAI()
try:
response = client.chat.completions.create(
model="gpt-4o",
messages=[...]
)
except RateLimitError:
print("请求频率超限,请稍后重试")
except APIConnectionError:
print("网络连接失败,请检查网络")
except APIError as e:
print(f"API错误: {e}")小结
OpenAI API使用要点:
| 要点 | 说明 |
|---|---|
| 模型选择 | 根据任务复杂度选择合适的模型 |
| 流式输出 | 长回复时提升用户体验 |
| 函数调用 | 让AI能调用外部工具 |
| 成本控制 | 使用缓存、批处理、限制Token |
下一步
学会了OpenAI API后,继续学习 Claude API 或 国内大模型API。