共计 2585 个字符,预计需要花费 7 分钟才能阅读完成。
环境准备篇
在 Windows 上使用 ChatGPT API 前,需要特别注意这些系统级配置:

- PowerShell 执行权限
-
默认情况下 Windows 会阻止脚本执行,需以管理员身份运行:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -
Python 环境选择
- 推荐使用 Python 3.8+,通过 Microsoft Store 安装最方便
-
注意勾选 ”Add Python to PATH” 选项
-
网络代理配置
- 如果使用企业网络,可能需要配置代理:
set HTTP_PROXY=http://proxy.example.com:8080 set HTTPS_PROXY=http://proxy.example.com:8080
API 调用方式对比
Python 原生请求(requests)
- 优势:
- 零依赖,适合轻量级项目
- 完全掌控请求过程
- 劣势:
- 需要手动处理认证和错误
OpenAI 官方库
- 优势:
- 内置类型提示和接口封装
- 自动处理流式响应
- 劣势:
- 需要额外安装依赖
实战代码示例
基础请求模板
import os
import requests
from typing import Dict, Any
def chat_completion(
prompt: str,
api_key: str,
model: str = "gpt-3.5-turbo"
) -> Dict[str, Any]:
headers = {"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json"
}
payload = {
"model": model,
"messages": [{"role": "user", "content": prompt}]
}
try:
response = requests.post(
"https://api.openai.com/v1/chat/completions",
headers=headers,
json=payload,
timeout=30
)
response.raise_for_status()
return response.json()
except requests.exceptions.RequestException as e:
print(f"API 请求失败: {str(e)}")
return {"error": str(e)}
带重试机制的流式处理
from tenacity import retry, stop_after_attempt, wait_exponential
@retry(stop=stop_after_attempt(3), wait=wait_exponential(multiplier=1, min=4, max=10))
def stream_response(prompt: str, api_key: str):
headers = {"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json",
"Accept": "text/event-stream"
}
payload = {
"model": "gpt-3.5-turbo",
"messages": [{"role": "user", "content": prompt}],
"stream": True
}
with requests.post(
"https://api.openai.com/v1/chat/completions",
headers=headers,
json=payload,
stream=True
) as response:
for chunk in response.iter_lines():
if chunk:
print(chunk.decode("utf-8"))
生产环境必知
API 密钥安全
- 永远不要硬编码密钥
- 使用 python-dotenv 加载环境变量:
from dotenv import load_dotenv load_dotenv() # 加载.env 文件 api_key = os.getenv("OPENAI_API_KEY")
频率限制规避
- 每个 API 密钥默认每分钟 60 次请求
- 实现请求队列控制:
import time class RateLimiter: def __init__(self, calls_per_minute): self.interval = 60 / calls_per_minute self.last_call = 0 def wait(self): elapsed = time.time() - self.last_call if elapsed < self.interval: time.sleep(self.interval - elapsed) self.last_call = time.time()
深度技术解析
流式响应原理
- HTTP 长连接保持通信通道开放
- 服务器分块传输数据(Transfer-Encoding: chunked)
- 客户端通过
text/event-stream接收增量数据
Token 计费规则
- gpt-3.5-turbo 模型:
- 输入和输出都计费
- 每 1000 个 token 收费 $0.002
- 中文平均 1 个 token≈2 个汉字
扩展应用
集成到 Windows 应用
- 使用 PyInstaller 打包 Python 脚本
- 通过
subprocess调用命令行工具 - 开发 C# WPF 应用时使用 Python.NET
WSL 使用技巧
# 安装官方 CLI
curl -sS https://platform.openai.com/downloads/cli/install.sh | bash
# 配置环境变量
export OPENAI_API_KEY="your-key"
踩坑经验
- SSL 证书问题
-
企业网络可能拦截 HTTPS,添加证书验证跳过(仅限测试环境):
import ssl ssl._create_default_https_context = ssl._create_unverified_context -
编码问题
- Windows 控制台建议设置 UTF-8:
import sys import io sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
通过这篇指南,你应该已经掌握了在 Windows 平台使用 ChatGPT API 的核心技能。建议从简单对话开始,逐步尝试更复杂的应用场景。
正文完
