1
程序中通常通过OpenAI客户端访问大模型,采用Client/Server方式获得大模型提供的云服务。而创建OpenAI客户端有如下三种方式:
1、
python
client = OpenAI()
2、
python
client = OpenAI(api_key="你的API密钥")
3、
python
client = OpenAI(
api_key="你的DeepSeek API密钥", # 替换为自己的DeepSeek密钥
base_url="https://api.deepseek.com/v1" # DeepSeek的API基础地址(国内可直连)
)
规则
OpenAI新版SDK(v1.0+)的OpenAI类初始化时,会遵循「显式参数优先,环境变量次之,默认值兜底」的规则:
- 默认
base_url:https://api.openai.com/v1(OpenAI官方API地址); - 默认
api_key:读取系统环境变量OPENAI_API_KEY; - 显式传入的
api_key/base_url会覆盖上述默认值。
三种方式对比表
| 对比维度 | 方式1:client = OpenAI() |
方式2:client = OpenAI(api_key="你的API密钥") |
方式3:client = OpenAI(api_key="DeepSeek密钥", base_url="DeepSeek地址") |
|---|---|---|---|
| API请求地址 | 默认为OpenAI官方地址(https://api.openai.com/v1) |
仍为OpenAI官方地址 | 改为DeepSeek的API地址(https://api.deepseek.com/v1) |
| 密钥来源 | 读取环境变量OPENAI_API_KEY |
显式硬编码传入(覆盖环境变量) | 显式硬编码传入DeepSeek的密钥(覆盖环境变量) |
| 适用场景 | 1. 调用OpenAI官方API(GPT-3.5/4) 2. 生产环境(密钥不硬编码,更安全) | 1. 临时测试OpenAI API(快速验证) 2. 环境变量不方便配置的场景 | 1. 调用国内DeepSeek大模型(无需翻墙) 2. 兼容OpenAI API格式的国内模型 |
| 访问要求 | 需翻墙/代理(OpenAI官方地址国内无法直连) | 需翻墙/代理 | 国内直连(无需代理) |
| 安全级别 | 高(密钥存在环境变量,不暴露在代码中) | 低(密钥硬编码在代码里,易泄露) | 低(密钥硬编码)+ 适配国内场景 |
| 兼容模型 | OpenAI全系模型(gpt-3.5-turbo/gpt-4等) | 同方式1 | DeepSeek兼容OpenAI格式的模型(deepseek-chat/deepseek-coder等) |
| 报错风险 | 环境变量未配置OPENAI_API_KEY则报认证错误 |
密钥错误/过期则报认证错误 | 密钥/地址错误则报认证/连接错误 |
逐方式深度解析
方式1:client = OpenAI()(最推荐的OpenAI官方调用方式)
核心逻辑
- 不传入任何参数时,客户端会自动读取系统环境变量
OPENAI_API_KEY作为密钥,请求地址默认指向OpenAI官方API。 - 这是OpenAI官方推荐的生产环境用法(避免密钥硬编码)。
环境变量配置方法(以Windows/Linux/Mac为例)
bash
# Linux/Mac终端(临时生效,重启终端失效)
export OPENAI_API_KEY="sk-xxxxxxxxxxxxxxxxxxxx"
# Windows cmd(临时生效)
set OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxxxxxx
# Windows PowerShell(临时生效)
$env:OPENAI_API_KEY="sk-xxxxxxxxxxxxxxxxxxxx"
# 永久配置(需修改系统环境变量文件,如Linux的~/.bashrc,Mac的~/.zshrc)
优缺点
- 优点:密钥不暴露在代码中,安全;适配团队协作/生产环境(多人共用代码无需修改密钥);
- 缺点:需额外配置环境变量,新手易漏配导致认证错误;仍需翻墙访问OpenAI官方API。
方式2:client = OpenAI(api_key="你的API密钥")(临时测试OpenAI API)
核心逻辑
- 显式传入OpenAI的API密钥,覆盖环境变量;但请求地址仍为OpenAI官方地址,本质还是调用OpenAI的模型。
- 适合「快速验证API是否可用」的临时场景,不建议生产环境使用。
优缺点
- ✅ 优点:无需配置环境变量,代码可直接运行,新手友好;
- ❌ 缺点:密钥硬编码在代码中,若代码上传到GitHub/分享给他人,密钥会泄露(可能被恶意调用产生高额费用);仍需翻墙。
方式3:client = OpenAI(api_key="DeepSeek密钥", base_url="DeepSeek地址")(国内模型适配)
核心逻辑
- 同时覆盖「密钥」和「请求地址」:将API请求从OpenAI官方服务器转向DeepSeek的服务器,密钥也替换为DeepSeek的(而非OpenAI的)。
- 利用DeepSeek「兼容OpenAI API格式」的特性,无需修改核心调用逻辑,即可无缝切换为国内可直连的模型。
关键细节
base_url的作用:API请求的根地址,比如调用chat.completions.create时,实际请求地址为base_url + "/chat/completions";- DeepSeek的密钥格式和OpenAI类似(均以
sk-开头),但不互通(不能用OpenAI的密钥调用DeepSeek,反之亦然)。
优缺点
- 优点:国内直连无需翻墙;完全兼容原有OpenAI的调用逻辑(无需改
messages/response_format等参数);DeepSeek成本更低(人民币计价); - 缺点:密钥仍硬编码(需注意安全);仅适用于兼容OpenAI API格式的模型(如DeepSeek、讯飞星火部分版本,百度文心一言需单独适配)。
延伸建议
1. 生产环境优化方式3(解决硬编码问题)
将DeepSeek的密钥和地址也配置到环境变量,避免硬编码:
python
# 环境变量配置(Linux/Mac)
export DEEPSEEK_API_KEY="sk-xxxxxxxxxxxxxxxxxxxx"
export DEEPSEEK_BASE_URL="https://api.deepseek.com/v1"
# Python代码
import os
from openai import OpenAI
client = OpenAI(
api_key=os.getenv("DEEPSEEK_API_KEY"), # 从环境变量读取
base_url=os.getenv("DEEPSEEK_BASE_URL")
)
2. 国内其他模型的适配思路(通用)
只要模型兼容OpenAI API格式,均可通过「替换api_key+base_url」实现切换:
| 国内模型 | base_url(示例) | 模型名(示例) |
|---|---|---|
| 讯飞星火 | https://spark-api.xf-yun.com/v1 |
spark-3.5 |
| 百度文心一言 | https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/completions |
ernie-4.0 |
3. 密钥安全最佳实践
- 绝对不要将密钥提交到代码仓库(可在
.gitignore中排除配置文件); - 生产环境使用密钥管理服务(如阿里云KMS、腾讯云SecretManager);
- 定期轮换密钥,若怀疑泄露立即撤销并重新创建。
附:获取大模型云服务的API密钥
使用LLM API密钥的目的是大模型云端对你进行身份认证和收费。获取LLM API密钥的过程实际上就是你注册该大模型的过程。
一、获取OpenAI API密钥
申请OpenAI API密钥的核心流程是注册/登录OpenAI平台账号 → 进入API密钥管理页创建密钥 → 绑定支付方式(API调用按用量计费,新账号可能有少量试用额度)。以下是详细、可落地的步骤,同时说明关键注意事项:
1、前提条件
- 账号合规性:OpenAI对账号注册的地区/IP有要求(需是OpenAI支持的地区,如美国、欧盟、日本等),需确保注册/操作时的IP、手机号归属地符合合规要求(避免使用违规代理,否则账号可能被封)。
- 支付方式 :需绑定支持的信用卡(Visa、Mastercard、American Express等双币/外币信用卡,国内银联单币卡不支持;部分虚拟卡也可能被风控,建议用实体双币卡)。
2、分步操作指南
步骤1:访问OpenAI开发者平台
打开浏览器,进入OpenAI API官方平台:https://platform.openai.com/
- 若已有OpenAI账号(如ChatGPT账号),直接登录;
- 若无账号,点击「Sign up」注册:
- 输入邮箱(建议用Gmail/Outlook等海外邮箱,国内邮箱可能不稳定);
- 验证手机号(需支持地区的手机号,可接收短信验证码);
- 设置密码,完成账号注册。
步骤2:进入API密钥管理页面
登录后,按以下路径操作:
- 点击页面右上角的个人头像 → 选择「View API keys」(或直接访问:https://platform.openai.com/api-keys);
- 进入密钥管理页后,点击「Create new secret key」(创建新密钥)。
步骤3:创建并保存API密钥
- 给密钥命名(可选,比如「my-api-key-2025」,方便区分多密钥);
- 点击「Create secret key」,此时会弹出包含密钥的弹窗(格式如:
sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx);
⚠️ 关键:密钥仅显示这一次!务必立即复制并保存到安全的地方(比如加密笔记、本地文本文件),刷新/关闭弹窗后无法再查看,只能重新创建。 - 点击「Done」完成创建,密钥会出现在列表中(仅显示后几位,无法查看完整内容)。
步骤4:绑定支付方式(必做,否则API调用会报错)
API密钥创建后,需绑定支付方式才能正常调用(新账号可能有5\~18的试用额度,用完后按用量计费):
- 回到平台首页,点击右上角头像 → 选择「Billing」(账单);
- 进入「Payment methods」(支付方式) → 点击「Add payment method」;
- 输入信用卡信息(卡号、有效期、CVV码、账单地址,地址需与信用卡所属地区一致);
- 验证通过后,支付方式绑定完成。
步骤5:(可选)设置额度预警(避免超额扣费)
在「Billing」页面,可设置「Usage limits」(用量限制):
- 比如设置「Monthly spending limit」(月度额度),超出后会自动暂停API调用,防止意外扣费。
3、注意事项
- 密钥安全 :
- 绝对不要将API密钥泄露给他人(比如上传到GitHub、分享到聊天群),否则可能被恶意调用产生高额费用;
- 若怀疑密钥泄露,立即回到「API keys」页面,点击密钥右侧的「Revoke」(撤销),并重新创建新密钥。
- 费用相关 :
- API调用按「Token」计费(不同模型单价不同,比如gpt-3.5-turbo约0.5/100万Token,gpt-4-turbo约10/100万Token);
- 可在「Billing → Usage」页面查看实时消费明细。
- 常见问题 :
- 「绑定支付方式失败」:大概率是信用卡不支持(国内银联单币卡不行,需双币卡),或账单地址填写错误;
- 「API调用报认证错误」:检查密钥是否正确、是否被撤销,或环境变量
OPENAI_API_KEY是否配置正确; - 「账号被封」:多因IP/地区违规、支付方式异常、滥用API(比如批量刷量),需确保操作合规。
- 替代方案(若无法直接注册) :
- 可使用OpenAI官方合作的第三方服务商(需确认合规性),或通过企业账号申请(适合团队使用);
- 切勿使用非官方的「共享密钥」「破解工具」,存在账号被盗、扣费风险。
4、验证密钥是否可用
创建密钥后,可通过简单的Python代码验证(替换为你的密钥):
python
from openai import OpenAI
# 显式指定密钥(也可配置环境变量OPENAI_API_KEY)
client = OpenAI(api_key="你的API密钥")
# 调用简单的对话接口
response = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": "测试API密钥是否可用"}]
)
print(response.choices[0].message.content)
若能正常返回回复,说明密钥和支付方式均已配置成功。
二、获取DeepSeek API密钥
获取 DEEPSEEK_API_KEY(DeepSeek API 密钥)的流程完全适配国内用户(无需翻墙、支持手机号/邮箱注册),核心分为「注册账号→实名认证(可选)→创建密钥」三步,以下是详细、可落地的操作指南:
- 设备:电脑端浏览器(Chrome/Edge/火狐等),国内网络直连即可;
- 准备:手机号/邮箱(用于注册),若需使用付费额度需完成实名认证(支持中国大陆身份证)。
分步操作指南(全程国内可访问)
步骤1:访问DeepSeek开放平台
打开浏览器,进入DeepSeek官方开放平台:
👉 官网地址:https://platform.deepseek.com/
步骤2:注册/登录账号
- 若未注册:点击页面右上角「注册」,支持两种方式:
- 手机号注册:输入国内手机号 → 获取并填写短信验证码 → 设置密码;
- 邮箱注册:输入邮箱(国内邮箱如QQ/163均可)→ 验证邮箱 → 设置密码;
- 若已有账号:直接点击「登录」,输入手机号/邮箱+密码即可。
步骤3:(可选)完成实名认证(解锁更多额度)
新账号默认有少量免费额度(足够测试使用),若需更高调用额度/高频使用,需完成实名认证:
- 登录后点击右上角「个人头像」→ 选择「账号设置」;
- 进入「实名认证」标签页 → 选择「个人认证」;
- 输入姓名、身份证号 → 完成人脸验证(国内常见的活体检测);
- 验证通过后,实名认证完成(全程1-2分钟)。
步骤4:创建并保存DeepSeek API密钥
这是核心步骤,密钥是调用API的唯一凭证:
- 登录后,点击页面顶部导航栏的「API密钥」(或直接访问:https://platform.deepseek.com/apikeys);
- 进入密钥管理页后,点击「创建API密钥」按钮;
- (可选)给密钥命名:比如「test-key-2025」(方便区分多密钥,建议按用途命名);
- 点击「确认创建」,此时会弹出密钥弹窗 (格式:
sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx);
⚠️ 关键注意:密钥仅显示这一次!关闭弹窗后无法再查看,务必立即复制并保存到安全位置(如加密笔记、本地文本文件)。 - 点击「完成」,密钥会出现在列表中(仅显示后几位,无法查看完整内容)。
注意事项
1. 密钥安全(重中之重)
- 绝对不要将密钥硬编码到代码中提交到GitHub、Gitee等仓库,也不要分享给他人;
- 若怀疑密钥泄露,立即回到「API密钥」页面,点击密钥右侧的「删除」按钮,然后重新创建新密钥;
- 生产环境建议将密钥配置到系统环境变量(参考之前提到的
DEEPSEEK_API_KEY配置方式),而非硬编码。
2. 额度与计费
- 新用户:注册后自动获得免费额度(通常足够测试几百次调用),可在「账单中心」→「额度管理」查看;
- 免费额度用完后:需在「账单中心」→「充值」页面充值(人民币计价,成本远低于OpenAI,1元可调用数万次
deepseek-chat模型); - 可设置「额度预警」:在「额度管理」中设置月度/日度额度上限,避免超额扣费。
3. 密钥有效性验证
创建密钥后,可通过以下简单代码验证是否可用(替换为你的密钥):
python
from openai import OpenAI
client = OpenAI(
api_key="你的DeepSeek API密钥",
base_url="https://api.deepseek.com/v1"
)
# 调用测试
response = client.chat.completions.create(
model="deepseek-chat",
messages=[{"role": "user", "content": "测试密钥是否可用"}]
)
print(response.choices[0].message.content)
若能正常返回回复,说明密钥有效;若报错「认证失败」,需检查密钥是否复制正确,或是否被删除/过期。
4. 常见问题解决
- 「创建密钥失败」:大概率是账号未登录/登录状态过期,重新登录即可;
- 「API调用报"额度不足"」:免费额度用完,需充值或完成实名认证解锁更多免费额度;
- 「密钥丢失」:无法找回,只能删除旧密钥并重新创建;
- 「调用报"请求频率超限"」:免费用户有QPS(每秒调用次数)限制,可降低调用频率,或升级账号。
5. DeepSeek API密钥的权限说明
- 单个密钥默认拥有「通用对话模型(deepseek-chat)」「代码模型(deepseek-coder)」等全量模型的调用权限;
- 若需限制密钥权限(如仅允许调用代码模型),可在「API密钥」页面点击密钥右侧的「权限设置」,按需配置。
获取DeepSeek API密钥的流程比OpenAI简单(无需翻墙、支持国内手机号/身份证)。