ChatGPT API 入门:用代码调用 GPT 模型
除了网页界面,ChatGPT 还提供强大的 API,让开发者可以将 AI 能力集成到任何应用中。本文介绍 API 申请、基本调用和实用技巧。
为什么使用 API
- 自动化:批量处理、定时任务
- 集成:嵌入现有产品和工作流
- 自定义:构建专属 AI 应用
- 成本控制:按 token 计费,灵活性高
获取 API Key
1. 注册 OpenAI 账号
访问 platform.openai.com,使用邮箱或 Google 账号注册。
2. 申请 API 访问
新用户通常有 $5 免费额度(有效期 3 个月)。Pro 用户可申请更高额度。
3. 创建 API Key
- 进入 API Keys 页面
- 点击 “Create new secret key”
- 选择权限范围(建议按需选择)
- 复制 Key,妥善保管,不要泄露
警告:不要将 API Key 硬编码在代码中,使用环境变量存储。
Python 快速开始
安装 SDK
pip install openai
基础调用
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": "用 Python 写一个快速排序算法"}
],
temperature=0.7,
max_tokens=1000
)
print(response.choices[0].message.content)
参数说明
| 参数 | 说明 | 常用值 |
|---|---|---|
| model | 使用的模型 | gpt-4o, gpt-4-turbo, gpt-3.5-turbo |
| messages | 对话历史 | 消息数组 |
| temperature | 创造性(0-2) | 0.7(平衡),0.2(准确),1.5(创意) |
| max_tokens | 最大输出 token | 100-4000 |
| top_p | 采样策略 | 通常 1.0 |
多轮对话
保存对话历史
import openai
from openai import OpenAI
client = OpenAI(api_key="your-api-key")
messages = [
{"role": "system", "content": "你是一个 Python 导师。"}
]
print("开始对话(输入 '退出' 结束):")
while True:
user_input = input("\n你: ")
if user_input == "退出":
break
messages.append({"role": "user", "content": user_input})
response = client.chat.completions.create(
model="gpt-4o",
messages=messages
)
assistant_message = response.choices[0].message.content
messages.append({"role": "assistant", "content": assistant_message})
print(f"\nAI: {assistant_message}")
函数调用(Function Calling)
函数调用让 GPT 能够执行具体操作:
import json
from openai import OpenAI
client = OpenAI(api_key="your-api-key")
# 定义可用函数
functions = [
{
"name": "get_weather",
"description": "获取指定城市的天气",
"parameters": {
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "城市名称"
}
},
"required": ["city"]
}
}
]
messages = [
{"role": "user", "content": "北京今天天气怎么样?"}
]
response = client.chat.completions.create(
model="gpt-4o",
messages=messages,
tools=[{"type": "function", "function": functions[0]}]
)
# 解析函数调用
tool_call = response.choices[0].message.tool_calls[0]
function_name = tool_call.function.name
arguments = json.loads(tool_call.function.arguments)
print(f"调用函数: {function_name}")
print(f"参数: {arguments}")
# 输出: 调用函数: get_weather
# 输出: 参数: {'city': '北京'}
流式输出
降低感知延迟,提升用户体验:
from openai import OpenAI
client = OpenAI(api_key="your-api-key")
stream = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "写一首关于 AI 的诗"}],
stream=True
)
print("AI: ", end="", flush=True)
for chunk in stream:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)
Token 计算与成本优化
Token 计算
import tiktoken
# 选择编码器
encoding = tiktoken.encoding_for_model("gpt-4o")
text = "这是一个测试文本"
tokens = encoding.encode(text)
print(f"文本长度: {len(text)} 字符")
print(f"Token 数量: {len(tokens)}")
print(f"估算成本: ${len(tokens) * 0.000015:.6f}") # gpt-4o 输入价格
成本优化技巧
- 精简 system prompt:不要让 AI 做它已经知道的事
- 截断历史:长对话可以只保留最近 N 条消息
- 选择合适模型:简单任务用 gpt-3.5-turbo,复杂任务用 gpt-4o
- 减少 temperature:不需要创造性时用 0.2
实用案例
案例 1:智能客服
def chat_with_history(user_message, conversation_history):
messages = [
{"role": "system", "content": "你是一个专业、耐心的客服代表。"}
] + conversation_history + [
{"role": "user", "content": user_message}
]
response = client.chat.completions.create(
model="gpt-4o",
messages=messages,
temperature=0.7,
max_tokens=500
)
return response.choices[0].message.content
# 使用
history = []
while True:
user_input = input("你: ")
if user_input == "exit":
break
reply = chat_with_history(user_input, history)
history.append({"role": "user", "content": user_input})
history.append({"role": "assistant", "content": reply})
print(f"AI: {reply}")
案例 2:批量处理文本
import json
texts = [
"这篇产品评论是正面的还是负面的?",
"这条用户反馈需要紧急处理吗?",
"分析这段用户反馈:..."
]
for text in texts:
response = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[
{"role": "user", "content": f"分析以下文本:{text}"}
]
)
print(f"文本: {text[:30]}...")
print(f"分析: {response.choices[0].message.content}\n")
常见错误处理
from openai import RateLimitError, APIError
try:
response = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "Hello"}]
)
except RateLimitError:
print("API 限流,请稍后重试")
except APIError as e:
print(f"API 错误: {e}")
except Exception as e:
print(f"未知错误: {e}")
安全最佳实践
-
环境变量存储 Key:
import os client = OpenAI(api_key=os.environ.get("OPENAI_API_KEY")) -
设置使用限额: 在 Usage Limits 页面设置月度上限
-
记录日志: 记录 API 调用但不要记录完整 Key
-
定期轮换 Key: 定期更换 API Key 并更新应用
总结
ChatGPT API 为开发者打开了一扇门,让 AI 能力可以集成到任何产品中。从简单的文本处理到复杂的函数调用,API 提供了足够的灵活性。
下一步建议:
- 阅读 OpenAI 官方文档
- 申请你的第一个 API Key
- 用本文示例代码跑通第一个调用
- 参考我们的 API 集成案例 构建你的应用
AI 能力触手可及,开始你的开发之旅吧!