Skip to content

API 开发 — 让程序调用 ChatGPT

这一课教你如何在自己的程序中调用 ChatGPT。无论你是开发者还是想自动化任务,这项技能都非常实用。

ChatGPT API 让开发者可以将 ChatGPT 的能力集成到自己的应用中。通过简单的 HTTP 请求,你的程序就能获得 AI 对话能力。

🔌 应用场景:
- 聊天机器人(客服、社交 Bot)
- 内容生成工具(批量写文案、翻译)
- 数据分析工具(自然语言查询数据)
- 教育工具(AI 辅导、作文批改)
- 自动化工作流(结合钉钉、飞书等)
  1. 访问 platform.openai.com
  2. 注册账号(需要邮箱验证)
  3. 绑定支付方式(API 按用量付费,但初始余额通常够用)
  1. 登录后进入 Dashboard
  2. 点击左侧菜单「API keys」
  3. 点击「Create new secret key」
  4. 复制密钥并安全保存(只显示一次!)

安全提醒

API 密钥是你的身份凭证,泄露等于别人用你的账户调用。

  • 永远不要上传到公开的代码仓库
  • 使用环境变量存储,不要硬编码
  • 定期轮换密钥
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.
Terminal window
pip install openai
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(全能)
temperature0-2随机性。越高越有创意0.7(平衡)
max_tokens1-4096最大输出 token 数按需
top_p0-1核采样概率1.0(默认)
frequency_penalty-2-2减少重复。正数减少重复0(默认)
presence_penalty-2-2鼓励新话题0(默认)
# 需要准确答案(翻译、数学、代码)
temperature=0.1 # 几乎确定性的输出
# 一般对话
temperature=0.7 # 平衡质量和创意
# 需要创意内容(写故事、头脑风暴)
temperature=1.0 # 更有创意和变化
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("帮我写一首关于秋天的诗"))
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)
import openai
import 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
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}")
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

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 的用量统计
模型输入价格输出价格适用场景
gpt-4o-mini约 ¥0.05/百万 token约 ¥0.15/百万 token简单任务
gpt-4o约 ¥3/百万 token约 ¥10/百万 token通用任务
o3约 ¥10/百万 token约 ¥40/百万 token复杂推理
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 None
# 设置超时(Python SDK)
import openai
client = openai.OpenAI(
api_key="sk-your-api-key",
timeout=30.0 # 30秒超时
)
# Flask 示例
from flask import Flask, request, jsonify
import 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 教程对你有帮助,也可以看看我们的其他教程: