2.4 Python环境搭建与第一个OpenAI API调用程序
一、环境准备
1.1 安装Python
确保已安装Python 3.8+。在终端执行:
python --version
若未安装,请从 python.org 下载安装。
1.2 创建虚拟环境(推荐)
# 创建项目目录
mkdir gpt-demo && cd gpt-demo
# 创建虚拟环境
python -m venv venv
# 激活虚拟环境
# Windows:
venv\Scripts\activate
# macOS/Linux:
# source venv/bin/activate
1.3 安装依赖
pip install openai python-dotenv
openai:OpenAI官方Python SDKpython-dotenv:从.env文件加载环境变量,便于安全管理API Key
二、配置API密钥
2.1 获取API Key
- 登录 platform.openai.com
- 进入 API Keys 页面
- 创建新密钥并复制保存(仅显示一次)
2.2 配置到项目
在项目根目录创建 .env 文件:
OPENAI_API_KEY=sk-your-api-key-here
注意:将 .env 加入 .gitignore,避免密钥泄露。
三、第一个"Hello, AI"程序
创建 hello_ai.py:
"""
第一个OpenAI API调用程序
运行前确保已配置 OPENAI_API_KEY
"""
import os
from dotenv import load_dotenv
from openai import OpenAI
# 加载.env中的环境变量
load_dotenv()
# 初始化客户端
client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
def main():
response = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": "你是一个友好的AI助手。"},
{"role": "user", "content": "用一句话介绍你自己。"}
],
temperature=0.7,
max_tokens=200
)
reply = response.choices[0].message.content
print("AI回复:", reply)
if __name__ == "__main__":
main()
运行:
python hello_ai.py
若配置正确,将看到AI的自我介绍。
四、交互式对话版本
"""
简单的交互式对话程序
"""
import os
from dotenv import load_dotenv
from openai import OpenAI
load_dotenv()
client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
messages = [
{"role": "system", "content": "你是一个有帮助的AI助手,回答简洁准确。"}
]
def chat(user_input: str) -> str:
messages.append({"role": "user", "content": user_input})
response = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=messages,
temperature=0.7,
max_tokens=500
)
reply = response.choices[0].message.content
messages.append({"role": "assistant", "content": reply})
return reply
if __name__ == "__main__":
print("输入 'quit' 退出对话\n")
while True:
user_input = input("你: ").strip()
if user_input.lower() == "quit":
break
if not user_input:
continue
reply = chat(user_input)
print("AI:", reply, "\n")
五、常见错误与排查
| 错误 | 原因 | 解决 |
|---|---|---|
| AuthenticationError | API Key无效或未配置 | 检查.env与OPENAI_API_KEY |
| RateLimitError | 请求过于频繁 | 降低并发、增加重试间隔 |
| InvalidRequestError | 参数错误(如model不存在) | 核对model ID与参数格式 |
六、国内网络与代理配置
6.1 访问OpenAI API的常见问题
国内直接访问OpenAI API可能遇到连接超时。可选方案:
- 代理:在环境中设置
HTTP_PROXY、HTTPS_PROXY - 镜像/中转:使用第三方提供的API中转服务(需注意安全与合规)
- 国内模型:使用DeepSeek、通义千问等兼容API的国产模型(见第6章)
6.2 代理配置示例
import os
os.environ["HTTP_PROXY"] = "http://127.0.0.1:7890"
os.environ["HTTPS_PROXY"] = "http://127.0.0.1:7890"
# 在创建OpenAI client之前设置
6.3 OpenAI SDK的base_url
若使用中转服务,可指定自定义base_url:
client = OpenAI(
api_key="your-key",
base_url="https://your-proxy.com/v1"
)
七、项目结构建议
gpt-demo/
├── .env # API密钥(不提交)
├── .gitignore # 包含 .env
├── requirements.txt # openai, python-dotenv
├── hello_ai.py # 第一个程序
└── chat.py # 交互式对话
八、常见错误与排查
| 错误 | 原因 | 解决 |
|---|---|---|
| AuthenticationError | API Key无效或未配置 | 检查.env与OPENAI_API_KEY |
| RateLimitError | 请求过于频繁 | 降低并发、增加重试间隔 |
| InvalidRequestError | 参数错误(如model不存在) | 核对model ID与参数格式 |
| ConnectionError/Timeout | 网络问题 | 配置代理或使用国内模型 |
| ModuleNotFoundError | 依赖未安装 | pip install openai python-dotenv |
九、与《大模型应用开发极简入门》第2.4节的对应
本书第2章「开始使用OpenAI Python库」强调环境搭建:安装 openai 库、API 密钥配置、基础调用代码;并给出实战目标:编写第一个「Hello, AI」程序,实现文本生成。本节与之对应:环境准备对应「安装与配置」,第一个 "Hello, AI" 程序对应「基础调用代码」,交互式对话版本对应在代码中实现多轮调用。书中建议的 python-dotenv 与 .env 管理 API Key 在本节已完整体现,便于与第3章「API 密钥安全管理」衔接。
十、requirements.txt 与依赖锁定
在项目根目录创建 requirements.txt,便于他人复现环境:
openai>=1.0.0
python-dotenv>=1.0.0
安装时执行 pip install -r requirements.txt。若需锁定版本,可使用 pip freeze > requirements.txt(注意会包含全部已安装包,通常仅保留项目直接依赖即可)。
十一、响应对象结构与错误处理
11.1 常用字段
response.choices[0].message.content:助手回复文本response.choices[0].message.role:一般为 "assistant"response.usage:可选,包含prompt_tokens、completion_tokens、total_tokens,用于成本统计
11.2 简单错误处理示例
try:
response = client.chat.completions.create(...)
reply = response.choices[0].message.content
except openai.AuthenticationError:
print("API Key 无效,请检查 .env")
except openai.RateLimitError:
print("请求过于频繁,请稍后重试")
except openai.APIError as e:
print("API 错误:", e)
首次运行若报错,请先确认 .env 中 OPENAI_API_KEY 已填写且无多余空格,再执行 python hello_ai.py 验证。
十二、小结
通过本节,你已完成 Python 环境搭建、API 密钥配置与第一个调用程序。掌握虚拟环境、.env 配置与基础调用方式,是后续开发的基础。下一节将深入 ChatCompletion API 的多轮对话与消息结构。
下一节预告:2.5 ChatCompletion API多轮对话实现与消息结构详解