3、OpenAI API入门:注册与获取API Key、Python环境准备、安装openai库、发送第一条Chat Completion请求
好,咱们正式开始动手了。
前面两章聊了不少概念和架构,我知道你肯定手痒了。这一章,我们就来真正跑通第一条API请求。说白了,就是让OpenAI的模型给你回一句“Hello”。
我当年第一次调通这个接口的时候,说实话,心里还挺激动的。虽然只是一行文字,但那种“机器在理解我”的感觉,确实很奇妙。嗯,咱们一步步来。
3.1 注册OpenAI账号与获取API Key
首先,你得有一个OpenAI的账号。去 platform.openai.com 注册,流程很简单,邮箱验证一下就行。
注册成功后,登录后台,在左侧菜单找到 API Keys 页面。点击 Create new secret key,系统会生成一串以 sk- 开头的密钥。
拿到Key之后,建议你把它设置成环境变量,而不是硬编码在代码里。为什么?因为代码可能会上传到GitHub,一旦泄露,别人就能用你的额度了。我习惯在终端里这样设置:
# Linux / macOS
export OPENAI_API_KEY="你的密钥"
# Windows (CMD)
set OPENAI_API_KEY=你的密钥
# Windows (PowerShell)
$env:OPENAI_API_KEY="你的密钥"
当然,你也可以在Python代码里直接读取环境变量,这样更安全。
3.2 Python环境准备
我假设你已经有Python 3.8以上的版本了。如果没有,去 python.org 下载安装就行。
我个人习惯用虚拟环境来隔离项目依赖。你想想看,每个项目用的库版本可能不一样,混在一起迟早会出问题。我曾经在一个老项目里升级了某个库,结果另一个项目直接崩了……从那以后,我每个新项目都老老实实建虚拟环境。
创建虚拟环境很简单:
# 创建虚拟环境
python -m venv openai_env
# 激活虚拟环境
# Windows:
openai_env\Scripts\activate
# macOS / Linux:
source openai_env/bin/activate
激活后,终端前面会出现 (openai_env) 字样,说明你已经在虚拟环境里了。
3.3 安装openai库
接下来安装官方库。OpenAI的Python库一直在更新,我建议你安装最新版:
pip install openai
如果你在国内,网络可能不太稳定。可以加个国内镜像源,比如清华的:
pip install openai -i https://pypi.tuna.tsinghua.edu.cn/simple
安装完成后,验证一下:
pip show openai
看到版本号就说明成功了。我记得有一次帮同事排查问题,发现他装了个很老的版本,接口参数都对不上。所以,记得保持库的更新。
3.4 发送第一条Chat Completion请求
好,重头戏来了。我们写一段代码,让GPT-4o(或者gpt-3.5-turbo)给你回一句话。
新建一个Python文件,比如 first_request.py,写入以下代码:
from openai import OpenAI
import os
# 从环境变量读取API Key
client = OpenAI(
api_key=os.getenv("OPENAI_API_KEY")
)
# 发送请求
response = client.chat.completions.create(
model="gpt-4o", # 或者用 "gpt-3.5-turbo"
messages=[
{"role": "system", "content": "你是一个乐于助人的助手。"},
{"role": "user", "content": "请用一句话介绍你自己。"}
],
temperature=0.7,
max_tokens=100
)
# 打印回复
print(response.choices[0].message.content)
然后运行:
python first_request.py
如果一切顺利,你会看到类似这样的输出:
你好!我是OpenAI开发的人工智能助手,可以帮助你解答问题、提供建议、处理文本等各种任务。
是不是很简单?
3.5 代码拆解:每个参数是干什么的?
咱们把代码拆开看看,每个参数到底是什么意思。我当年刚开始学的时候,也是一头雾水,后来踩了几个坑才搞明白。
| 参数 | 说明 | 我的建议 |
|---|---|---|
model |
指定使用的模型,如 gpt-4o、gpt-3.5-turbo |
开发测试用3.5,省钱;生产环境用4o,效果更好 |
messages |
对话消息列表,包含角色和内容 | system角色设定行为,user角色提问题 |
temperature |
控制输出的随机性,0-2之间 | 需要确定性答案用0,需要创意用0.8左右 |
max_tokens |
限制回复的最大长度 | 设得太小回复会被截断,我一般设200-500 |
这里有个小细节:messages 是一个列表,里面每个元素都是一个字典。你可以传多条消息,模拟多轮对话。比如:
messages=[
{"role": "system", "content": "你是一个Python专家。"},
{"role": "user", "content": "什么是装饰器?"},
{"role": "assistant", "content": "装饰器是一种用于修改函数行为的高级特性..."},
{"role": "user", "content": "能给我举个例子吗?"}
]
这样模型就能理解上下文,继续之前的对话。
3.6 常见错误与避坑指南
第一次运行,大概率会遇到一些问题。别慌,我帮你列几个最常见的:
- AuthenticationError:API Key不对或者没设置。检查环境变量是否生效,或者直接打印一下
os.getenv("OPENAI_API_KEY")看看是不是None。 - RateLimitError:请求太频繁了。免费账户有速率限制,等几秒再试。我曾经写了个循环忘记加sleep,直接被封了半小时……
- InsufficientQuota:余额不足。去后台看看还有没有额度,新账号一般有5美元的免费额度。
- BadRequestError:参数传错了。比如模型名拼写不对,或者
max_tokens设成了负数。
response 整个打印出来看看结构。你会发现里面有很多有用的信息,比如 usage 字段会告诉你这次请求花了多少token。
3.7 本章小结
这一章我们完成了三件事:注册账号拿到Key、搭建Python环境、发送了第一条Chat Completion请求。你想想看,从零到跑通第一条请求,其实也就十几分钟的事。
下一章,我们会深入聊一聊 messages 参数的细节,以及如何构建多轮对话。嗯,到时候你会发现自己已经能写出一个简单的聊天机器人了。
公众号:蓝海资料掘金营,微信deep3321