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岁,邮箱[email protected]"}],
    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。