共计 2083 个字符,预计需要花费 6 分钟才能阅读完成。
前置准备:获取你的 OpenAI API 密钥
- 注册 OpenAI 账号
- 访问 OpenAI 官网 点击 “Sign up”
-
建议使用谷歌账号快速注册(国内用户需准备海外手机号接收验证码)

-
申请 API 访问权限
- 登录后进入 API 密钥管理页面
-
点击 “Create new secret key” 生成专属密钥(形如
sk-xxxxxxxx) -
重要安全提醒
- API Key 相当于密码,请勿直接提交到代码仓库
- 建议通过环境变量加载(后文会演示具体方法)
- 免费额度为 $5,超出后将自动停用
核心概念:Chat Completions API 工作机制
OpenAI 提供的对话接口主要包含三个关键参数:
- model:指定使用的模型版本(如
gpt-3.5-turbo) - messages:对话历史记录,格式为消息对象数组
- temperature:控制回答随机性(0- 2 之间,值越大答案越多样)
典型的消息结构示例:
[{"role": "system", "content": "你是一个专业的气象顾问"},
{"role": "user", "content": "今天北京天气怎么样?"}
]
实战:构建天气查询机器人
环境准备
-
安装官方 Python SDK:
pip install openai python-dotenv -
创建
.env文件存储密钥:OPENAI_API_KEY= 你的实际密钥
完整实现代码
import os
from typing import List, Dict
from dotenv import load_dotenv
import openai
# 加载环境变量
load_dotenv()
class WeatherBot:
def __init__(self):
openai.api_key = os.getenv("OPENAI_API_KEY")
self.prompt = """ 你是一个智能天气助手,当用户询问天气时,按照以下格式回复:[城市] 当前天气:[天气状况],气温:[温度]℃"""
def ask(self, question: str) -> str:
try:
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[{"role": "system", "content": self.prompt},
{"role": "user", "content": question}
],
temperature=0.7
)
return response.choices[0].message.content
except Exception as e:
return f"请求失败:{str(e)}"
# 使用示例
if __name__ == "__main__":
bot = WeatherBot()
print(bot.ask("上海现在天气如何?"))
生产环境避坑指南
- 速率限制处理
- 免费账号限制 3 次 / 分钟
-
推荐方案:
- 使用
tenacity库实现自动重试 - 捕获
openai.error.RateLimitError异常
- 使用
-
敏感信息存储
- 永远不要将 API Key 硬编码在代码中
-
推荐方案:
- 本地开发使用
.env+python-dotenv - 服务器环境使用密钥管理服务(如 AWS Secrets Manager)
- 本地开发使用
-
成本控制技巧
- 设置使用量警报:Usage Limits 页面
- 对
max_tokens参数设置合理上限
进阶话题
对话上下文管理
实现多轮对话的关键是维护 messages 数组:
class Conversation:
def __init__(self):
self.history: List[Dict] = []
def add_message(self, role: str, content: str):
self.history.append({"role": role, "content": content})
def get_response(self) -> str:
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=self.history
)
return response.choices[0].message.content
流式响应实现
通过设置 stream=True 实现实时输出:
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=messages,
stream=True
)
for chunk in response:
content = chunk.choices[0].delta.get("content", "")
print(content, end="", flush=True)
结语
通过本文的实践,您已经掌握了 ChatGPT API 的核心用法。建议下一步尝试:
1. 将机器人集成到 Flask/Django 等 Web 框架
2. 探索 Function Calling 实现精准数据查询
3. 使用 Fine-tuning 定制专属领域模型
API 的调试过程可能会遇到各种意外情况,建议多查阅 官方文档 ,遇到问题时可以先检查:网络连接、密钥有效性、参数格式这三个常见方向。
正文完

