Skip to content

OpenAI API

OpenAI提供了强大的API接口,让开发者能够轻松集成GPT系列模型。本节将介绍如何使用OpenAI API开发AI应用。

快速开始

获取API密钥

  1. 访问 platform.openai.com
  2. 注册或登录账号
  3. 进入 API Keys 页面
  4. 点击 "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