API 开发 — 让程序调用 ChatGPT
这一课教你如何在自己的程序中调用 ChatGPT。无论你是开发者还是想自动化任务,这项技能都非常实用。
一、什么是 ChatGPT API?
Section titled “一、什么是 ChatGPT API?”ChatGPT API 让开发者可以将 ChatGPT 的能力集成到自己的应用中。通过简单的 HTTP 请求,你的程序就能获得 AI 对话能力。
🔌 应用场景:- 聊天机器人(客服、社交 Bot)- 内容生成工具(批量写文案、翻译)- 数据分析工具(自然语言查询数据)- 教育工具(AI 辅导、作文批改)- 自动化工作流(结合钉钉、飞书等)二、获取 API 密钥
Section titled “二、获取 API 密钥”步骤1:注册 OpenAI 账号
Section titled “步骤1:注册 OpenAI 账号”- 访问 platform.openai.com
- 注册账号(需要邮箱验证)
- 绑定支付方式(API 按用量付费,但初始余额通常够用)
步骤2:创建 API 密钥
Section titled “步骤2:创建 API 密钥”- 登录后进入 Dashboard
- 点击左侧菜单「API keys」
- 点击「Create new secret key」
- 复制密钥并安全保存(只显示一次!)
安全提醒
API 密钥是你的身份凭证,泄露等于别人用你的账户调用。
- 永远不要上传到公开的代码仓库
- 使用环境变量存储,不要硬编码
- 定期轮换密钥
三、第一个 API 调用
Section titled “三、第一个 API 调用”用 Python 调用
Section titled “用 Python 调用”import openai
# 设置 API 密钥openai.api_key = "sk-your-api-key-here"
# 发送请求response = openai.chat.completions.create( model="gpt-4o", messages=[ {"role": "system", "content": "你是一位专业的翻译助手。"}, {"role": "user", "content": "请翻译:人工智能正在改变世界。"} ], temperature=0.7, max_tokens=500)
# 获取结果print(response.choices[0].message.content)# 输出:Artificial intelligence is changing the world.pip install openai四、API 核心参数详解
Section titled “四、API 核心参数详解”response = openai.chat.completions.create( model="gpt-4o", # 模型选择 messages=[...], # 对话消息列表 temperature=0.7, # 随机性(0-2) max_tokens=500, # 最大输出长度 top_p=1.0, # 核采样参数 frequency_penalty=0.0, # 频率惩罚 presence_penalty=0.0, # 存在惩罚)| 参数 | 范围 | 作用 | 推荐值 |
|---|---|---|---|
model | 字符串 | 使用的模型 | gpt-4o(全能) |
temperature | 0-2 | 随机性。越高越有创意 | 0.7(平衡) |
max_tokens | 1-4096 | 最大输出 token 数 | 按需 |
top_p | 0-1 | 核采样概率 | 1.0(默认) |
frequency_penalty | -2-2 | 减少重复。正数减少重复 | 0(默认) |
presence_penalty | -2-2 | 鼓励新话题 | 0(默认) |
Temperature 的用法
Section titled “Temperature 的用法”# 需要准确答案(翻译、数学、代码)temperature=0.1 # 几乎确定性的输出
# 一般对话temperature=0.7 # 平衡质量和创意
# 需要创意内容(写故事、头脑风暴)temperature=1.0 # 更有创意和变化五、构建一个简单的聊天应用
Section titled “五、构建一个简单的聊天应用”基础版(带记忆)
Section titled “基础版(带记忆)”import openai
openai.api_key = "sk-your-api-key"
# 对话历史(维护上下文)conversation = [ {"role": "system", "content": "你是一个乐于助人的助手。"}]
def chat(message): """发送消息并获取回复""" conversation.append({"role": "user", "content": message})
response = openai.chat.completions.create( model="gpt-4o", messages=conversation, temperature=0.7 )
reply = response.choices[0].message.content conversation.append({"role": "assistant", "content": reply}) return reply
# 开始对话print(chat("你好,请介绍一下你自己。"))print(chat("你能帮我做什么?"))print(chat("帮我写一首关于秋天的诗"))进阶版(带流式输出)
Section titled “进阶版(带流式输出)”import openai
openai.api_key = "sk-your-api-key"
def chat_stream(messages, model="gpt-4o"): """流式输出,逐字显示回复""" response = openai.chat.completions.create( model=model, messages=messages, temperature=0.7, stream=True # 启用流式输出 )
full_reply = "" for chunk in response: if chunk.choices[0].delta.content: content = chunk.choices[0].delta.content full_reply += content print(content, end="", flush=True) # 逐字打印
print() # 换行 return full_reply
# 使用messages = [ {"role": "system", "content": "你是一个专业的 Python 编程助手。"}, {"role": "user", "content": "请帮我写一个快速排序函数"}]
chat_stream(messages)六、实际项目案例
Section titled “六、实际项目案例”案例1:钉钉/飞书机器人
Section titled “案例1:钉钉/飞书机器人”import openaiimport requests
# 模拟收到一条用户消息def on_user_message(user_message, webhook_url): messages = [ {"role": "system", "content": "你是公司的智能客服。"}, {"role": "user", "content": user_message} ]
response = openai.chat.completions.create( model="gpt-4o", messages=messages, temperature=0.5 )
reply = response.choices[0].message.content
# 发送回复到钉钉/飞书 requests.post(webhook_url, json={"content": reply}) return reply案例2:批量翻译工具
Section titled “案例2:批量翻译工具”import openai
openai.api_key = "sk-your-api-key"
def batch_translate(texts, from_lang="zh", to_lang="en"): """批量翻译""" results = []
for text in texts: response = openai.chat.completions.create( model="gpt-4o", messages=[ {"role": "system", f"content": f"你是一个专业的{from_lang}到{to_lang}翻译。"}, {"role": "user", "content": text} ] ) results.append(response.choices[0].message.content)
return results
# 使用texts = ["你好世界", "今天天气真好", "编程很有趣"]translations = batch_translate(texts)
for original, translated in zip(texts, translations): print(f"{original} → {translated}")案例3:代码审查助手
Section titled “案例3:代码审查助手”import openai
openai.api_key = "sk-your-api-key"
def code_review(code, language="python"): """代码审查""" response = openai.chat.completions.create( model="gpt-4o", messages=[ { "role": "system", "content": f"你是一位{language}代码审查专家,精通最佳实践和安全检查。" }, { "role": "user", "content": f"请审查以下{language}代码,指出问题和改进建议:\n\n```{language}\n{code}\n```" } ] ) return response.choices[0].message.content七、成本控制
Section titled “七、成本控制”Token 计算
Section titled “Token 计算”API 按 Token 计费,1 个 Token 约等于 0.7 个英文单词或 0.5 个中文字。
import tiktoken
def count_tokens(text, model="gpt-4o"): """计算文本的 token 数量""" encoding = tiktoken.encoding_for_model(model) return len(encoding.encode(text))
# 示例text = "你好,请帮我写一个 Python 函数。"print(f"Token 数量:{count_tokens(text)}")| 技巧 | 说明 |
|---|---|
| 选择合适的模型 | 简单任务用 gpt-4o-mini(便宜) |
| 控制 max_tokens | 按需设置,不要过大 |
| 缓存回复 | 相同问题复用之前的结果 |
| 批量处理 | 减少 API 调用次数 |
| 监控用量 | 定期检查 Dashboard 的用量统计 |
价格参考(大致)
Section titled “价格参考(大致)”| 模型 | 输入价格 | 输出价格 | 适用场景 |
|---|---|---|---|
| gpt-4o-mini | 约 ¥0.05/百万 token | 约 ¥0.15/百万 token | 简单任务 |
| gpt-4o | 约 ¥3/百万 token | 约 ¥10/百万 token | 通用任务 |
| o3 | 约 ¥10/百万 token | 约 ¥40/百万 token | 复杂推理 |
八、常见问题
Section titled “八、常见问题”Q: API 调用失败怎么办?
Section titled “Q: API 调用失败怎么办?”import time
def call_api_with_retry(messages, max_retries=3): for attempt in range(max_retries): try: response = openai.chat.completions.create( model="gpt-4o", messages=messages ) return response except openai.RateLimitError: time.sleep(2 ** attempt) # 指数退避 except openai.APIError as e: print(f"API 错误:{e}") return None return NoneQ: 如何设置超时?
Section titled “Q: 如何设置超时?”# 设置超时(Python SDK)import openai
client = openai.OpenAI( api_key="sk-your-api-key", timeout=30.0 # 30秒超时)Q: 如何集成到 Web 应用?
Section titled “Q: 如何集成到 Web 应用?”# Flask 示例from flask import Flask, request, jsonifyimport openai
app = Flask(__name__)openai.api_key = "sk-your-api-key"
@app.route("/api/chat", methods=["POST"])def chat(): user_message = request.json["message"]
response = openai.chat.completions.create( model="gpt-4o", messages=[ {"role": "system", "content": "你是助手"}, {"role": "user", "content": user_message} ] )
return jsonify({ "reply": response.choices[0].message.content })
if __name__ == "__main__": app.run(debug=True)恭喜你完成了 ChatGPT 教程的全部课程!🎉
现在你已经掌握:
- ✅ 从零入门 ChatGPT
- ✅ 提示词工程
- ✅ 多模态功能
- ✅ GPTs 定制
- ✅ API 开发
如果你觉得 ChatGPT 教程对你有帮助,也可以看看我们的其他教程:
- Midjourney 入门到精通 — 学习 AI 图像生成
- Stable Diffusion 实战 — 学习本地部署 AI 绘画