跳转到正文
技术教程·

OpenAI API 调用教程:Python 集成指南

OpenAI API 怎么用?本文从申请 API Key 到 Python 调用,手把手教你使用 GPT-4o、DALL-E、Whisper 等 OpenAI API,含完整代码和最佳实践。

这篇教程适合谁

你会 Python,想调 OpenAI 的 API 做文本生成、图片生成、语音转文字等功能。本文从申请 Key 到代码实现,重点讲实际开发中的用法和坑。

不适合:完全没写过代码的读者。 最终产物:能用 Python 调 GPT-4o 做文本生成、流式输出、DALL-E 生图、Whisper 转写语音、Function Calling 工具调用。

环境假设

  • Python 3.8+
  • openai Python SDK(pip install openai
  • OpenAI 账号 + API Key
  • 以当前常见版本为准,具体模型名和参数以 OpenAI 官方文档为准

申请 API Key

  • 访问 OpenAI Platform
  • 注册或登录
  • API Keys → Create new secret key
  • 保存好 Key
注意:OpenAI 的 API 服务在中国大陆直接访问可能不稳定,确保网络环境能稳定连接。可参考 海外 AI 工具使用指南

基础文本生成

from openai import OpenAI

client = OpenAI(api_key="your-api-key")

response = client.chat.completions.create(

model="gpt-4o-mini",

messages=[

{"role": "system", "content": "你是一个专业的 AI 助手。"},

{"role": "user", "content": "什么是机器学习?"}

],

temperature=0.7,

max_tokens=1000

)

print(response.choices[0].message.content)

temperature 怎么选:0 最确定(适合分类、提取),0.7 平衡(适合对话),1.0+ 更随机(适合创意写作)。Agent/RAG 场景一般用 0。

流式输出

stream = client.chat.completions.create(

model="gpt-4o-mini",

messages=[

{"role": "user", "content": "写一个 Python 快速排序"}

],

stream=True

)

for chunk in stream:

if chunk.choices[0].delta.content:

print(chunk.choices[0].delta.content, end="", flush=True)

print()

为什么用流式:GPT-4o 完整响应可能要等 2-5 秒,流式输出让用户更早看到内容,体感快很多。Web 应用几乎必开流式。

图片生成(DALL-E)

response = client.images.generate(

model="dall-e-3",

prompt="一只可爱的橘猫在阳光下打盹",

size="1024x1024",

quality="standard",

n=1

)

image_url = response.data[0].url

print(f"图片 URL:{image_url}")

踩坑点:DALL-E 3 的 prompt 对中文支持一般。如果生成效果不好,试试用英文 prompt。

语音转文字(Whisper)

with open("audio.mp3", "rb") as audio_file:

transcript = client.audio.transcriptions.create(

model="whisper-1",

file=audio_file,

language="zh"

)

print(transcript.text)

Whisper 的实际体验:中文转写质量不错,但长音频(>25MB)需要分片。API 有文件大小限制。

Function Calling

import json

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-mini",

messages=[{"role": "user", "content": "北京天气怎么样?"}],

tools=tools,

tool_choice="auto"

)

message = response.choices[0].message

if message.tool_calls:

tool_call = message.tool_calls[0]

args = json.loads(tool_call.function.arguments)

print(f"调用工具:{tool_call.function.name}")

print(f"参数:{args}")

# 执行实际工具逻辑,然后把结果返回给模型

Function Calling 的核心descriptionparameters 的质量决定模型能不能正确调用。description 写不清楚,模型就选错工具或传错参数。

错误处理

from openai import APIError, RateLimitError

try:

response = client.chat.completions.create(

model="gpt-4o-mini",

messages=[{"role": "user", "content": "你好"}]

)

except RateLimitError:

print("请求过于频繁,请稍后重试")

except APIError as e:

print(f"API 错误:{e}")

生产环境必须做的:加重试(tenacity 库很方便),设 timeout,记录错误日志。API 偶尔超时是正常的,不要因为一次超时就报错给用户。

成本控制

response = client.chat.completions.create(

model="gpt-4o-mini",

messages=[{"role": "user", "content": "简短介绍一下自己"}],

max_tokens=200

)

省钱技巧
  • 日常对话用 gpt-4o-mini(便宜很多),复杂推理再用 gpt-4o
  • max_tokens 防止输出过长
  • System prompt 里要求"简洁回答"
  • 缓存高频问题的回答

常见问题

API Key 无效

检查复制是否正确,账户是否有余额。

响应速度慢

gpt-4o-mini,减少 max_tokens,检查网络。

Token 超限

减少上下文长度,分段处理长文档。

下一步学习

---

本文最后更新于 2026-07-08。代码示例基于 openai Python SDK,请根据最新版本调整。

保障 API 调用稳定性

调用 OpenAI、Anthropic 等海外 API 时,网络波动可能导致请求超时或失败。稳定的网络环境有助于提升开发效率。

⚠️ 请遵守所在地的法律法规和服务条款。使用 AI API 时请遵守各平台的使用政策。

了解安全上网方案 →

常见问题

相关推荐

获取更多 AI 内容

订阅更新,第一时间获取新教程和工具推荐。