你有没有注册平台、拿到密钥,却在第一次请求卡在 401 错误,或担心密钥泄露、费用超支?这篇文章帮你在每一步做出正确决策,从注册到生产环境都能少走弯路。
先搞清楚你要什么——找到你的入口
只想快速体验 → 转到第 3 章,有完整代码。
准备线上部署 → 先读第 4 章(密钥安全),再读第 6 章(性能与成本)。
预算有限 → 直接看第 5 章(错误排查避免重复计费)和第 6 章降费技巧。
从零选平台 → 先看第 2 章。
前置技能:会使用终端和基本的 Python / curl。确认 Python 版本 ≥ 3.9。
选平台——帮你做决策
个人开发者或小项目
首选:通义千问或文心一言
注册门槛低,国内访问无需代理,延迟低。
有免费额度(每月几百万 token),注意有效期和自动转为按量计费。建议开启“余额告警”。
企业级生产环境
首选:按需选型,注意迁移成本
团队熟悉 OpenAI 接口的话,选兼容格式的平台(如通义、混元)可降低迁移成本。
有数据合规要求则选国内平台,确认训练数据使用条款。
不同平台请求结构可能略有差异,建议封装一个
switch_model函数,根据平台切换格式。
为什么不一上来选最贵模型? 先用轻量版(旗舰版十分之一价格)验证业务流程,稳定后再升级,能大幅节省前期成本。
从注册到第一次成功调用
注册并获取密钥
注册账号并完成实名认证(企业认证需 1–3 个工作日)。
在控制台创建应用,获取 API Key(通常以
sk-或ak-开头),保存到安全位置。
环境配置
安装 Python 3.9+ 及 requests 库(可选 python-dotenv 管理密钥):
pip install requests python-dotenv
国内请求国外平台超时时,可在终端设置代理;国内平台无需代理。
发送第一次请求
以下以通义千问(兼容 OpenAI 格式)为例,包含错误处理:
import requests, json, os
from dotenv import load_dotenv
load_dotenv()
api_key = os.getenv("DASHSCOPE_API_KEY")
url = "平台API端点" # 查阅官方文档获取正确 endpoint
headers = {"Authorization": f"Bearer {api_key}", "Content-Type": "application/json"}
payload = {
"model": "qwen-turbo",
"messages": [{"role": "user", "content": "你好,请用一句话介绍大模型API"}]
}
try:
response = requests.post(url, headers=headers, json=payload, timeout=30)
response.raise_for_status()
data = response.json()
print(data["choices"][0]["message"]["content"])
except requests.exceptions.HTTPError as e:
print("HTTP 错误:", e.response.status_code, e.response.text)
except requests.exceptions.Timeout:
print("请求超时,请检查网络")
except Exception as e:
print("其他错误:", e)
成功返回示例:
{"choices":[{"message":{"role":"assistant","content":"大模型API是应用程序与大型语言模型之间的桥梁..."}}]}
401 错误示例(密钥无效):
{"error":{"code":"Unauthorized","message":"Incorrect API key provided"}}
遇到 401 先检查密钥是否复制正确、是否过期、Bearer 后是否有空格。可用 curl -v 查看完整请求头。
密钥与安全——不只是“不要硬编码”
环境变量实战
推荐项目结构:
your_project/
├── .env # 存放密钥,加入 .gitignore
├── main.py
└── .gitignore
.env 内容:DASHSCOPE_API_KEY=sk-xxxxx Python 中加载:
from dotenv import load_dotenv
load_dotenv()
api_key = os.getenv("DASHSCOPE_API_KEY")
密钥硬编码后提交到 Git 会被历史记录保留,从而暴露。
密钥泄露后的紧急止损
登录平台控制台,删除泄露的密钥(不是禁用)。
查看账单异常记录,截图保存不明 IP 的请求。
联系平台技术支持。
生成新密钥,更新
.env并重新加载环境变量。
费用告警设置
在控制台开启预算告警(邮件/短信)。个人开发者设 50 元以内阈值,企业按项目设置月度上限,部分平台支持自动停服。
常见错误与调试——用日志说话
401 错误:密钥无效。用
curl -v检查 Authorization 头格式。403 错误:权限不足。确认是否已开通模型调用权限,某些模型需单独申请。
429 错误:频率超限。查看
Retry-After头,代码中实现指数退避重试。400 错误:参数错误。检查 model 名称和 messages 格式(是否缺少 role 字段)。
404 错误:接口地址错误。确认 endpoint 拼写和末尾斜杠。
调试技巧:用 logging 记录请求和响应(脱敏密钥),避免手工测试:
import logging
logging.basicConfig(level=logging.DEBUG)
让 API 跑得更快更省——性能与成本双赢
性能优化
连接池:使用
requests.Session()减少 TCP 握手延迟。超时设置:对长提示设置读取超时 ≥ 60 秒,并开启流式输出(
stream=True)。重试策略:对 429、500 类错误用指数退避(尝试 3 次,间隔 1s、2s、4s),401/403 不重试。
成本控制
缓存:相同请求(如客服问答)缓存模型回复,key 为
model + prompt_hash + temperature,TTL 1 小时。避免缓存实时场景。prompt 压缩:删除冗余用语(如“请”),合并系统提示,使用简短指令(如“摘要”代替“请对以下文本进行总结”),可减少 20% token 消耗。
紧急降级方案
当主模型不可用时自动切到备模型。封装函数:
def call_llm(messages, model="qwen-turbo", fallback="qwen-plus"):
try:
return real_call(messages, model)
except (RateLimitError, ServiceUnavailable):
return real_call(messages, fallback)
两个模型返回 JSON 结构基本一致,只需改 model 字段。
总结与下一步行动清单
完成实名认证(预留企业认证时间)
在控制台创建应用并获取密钥
将密钥存入
.env并加入.gitignore测试一个最简单请求(Python + curl 双验证)
开启费用告警(个人 10 元阈值,企业按项目)
确认请求日志中不记录密钥
生产环境实现重试、超时、流式输出
设计缓存策略并确定无需缓存场景
撰写 fallback 函数,做好平台迁移准备
大模型 API 的世界变化很快,但底层的思考框架是稳定的:先决策,再执行;先安全,再优化。如果在某个环节遇到具体问题,欢迎留言交流。