/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */
#content_views .toc,
/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */
#content_views.markdown_views > p:empty:has(+ .toc),
#content_views.markdown_views > .toc + p:empty,
/* 富文本旧版目录标记 */
#content_views.htmledit_views #main-toc,
#content_views.htmledit_views #hr-toc,
#content_views.htmledit_views p[id*=\”-toc\”] {
display: none !important;
}
/* 目录去掉后,紧跟的首个标题不再多出一块上边距 */
#content_views.markdown_views > .toc + h1,
#content_views.markdown_views > .toc + h2,
#content_views.markdown_views > .toc + h3,
#content_views.markdown_views > .toc + h4,
#content_views.markdown_views > .toc + p:empty + h1,
#content_views.markdown_views > .toc + p:empty + h2,
#content_views.markdown_views > .toc + p:empty + h3,
#content_views.markdown_views > .toc + p:empty + h4 {
margin-top: 0 !important;
}
很多朋友第一次接触大模型 API(或者其他 REST API)时,拿到了平台发给的 API Key 和 Base URL,却不知道下一步该干什么。这篇文章就把这一步到跑通之间的所有坑都讲清楚。
一、先搞懂这两个东西是什么
1. API Key 是什么?
API Key 相当于你的"身份证 + 钱包":
- 身份认证:服务器通过它确认请求是你发的;
- 计费依据:你调用接口消耗的 token / 次数都会记在这个 key 上。
所以它和密码一样重要,绝对不要:
- 硬编码在代码里上传到 GitHub;
- 发到群里、贴到评论区;
- 写在前端页面代码中(前端的一切都是公开的)。
2. Base URL 是什么?
Base URL 就是接口服务的根地址。
以 OpenAI 兼容接口为例,完整请求地址通常是:
{base_url}/chat/completions
比如你的服务商文档中给出的地址形如:
https://api.你的服务商域名.com/v1
注意:有的文档给的是带 /v1 的,有的不带,SDK 的填法也不一样,这是新手最容易踩的坑之一,后文会细说。
下文统一用 YOUR_BASE_URL 代表你自己的 Base URL,用 YOUR_API_KEY 代表你自己的 Key,用 your-model 代表平台文档里的模型名。
现在绝大多数模型服务商都兼容 OpenAI 接口格式,也就是说:只要你会用一套代码,换一个 base_url + api_key + model 就能切换任意服务商。
二、第一步:把 Key 存到环境变量里
不要把 key 直接写在代码里。正确做法是放进环境变量。
Windows(PowerShell,临时生效)
$env:API_KEY = "YOUR_API_KEY"
$env:BASE_URL = "YOUR_BASE_URL"
Windows(永久生效)
setx API_KEY "YOUR_API_KEY"
setx BASE_URL "YOUR_BASE_URL"
设置完需要重新打开终端才会生效。
Linux / macOS
# 临时生效
export API_KEY="YOUR_API_KEY"
export BASE_URL="YOUR_BASE_URL"
# 永久生效:写入 ~/.bashrc 或 ~/.zshrc
echo 'export API_KEY="YOUR_API_KEY"' >> ~/.bashrc
source ~/.bashrc
或者使用 .env 文件(推荐项目内使用)
在项目根目录创建 .env:
API_KEY=YOUR_API_KEY
BASE_URL=YOUR_BASE_URL
再创建 .gitignore,把 .env 加进去:
.env
三、第二步:用代码调通第一个请求
方式一:Python + OpenAI 兼容 SDK(最推荐)
安装:
pip install openai # OpenAI 兼容接口的通用 SDK
代码:
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["API_KEY"],
base_url=os.environ["BASE_URL"],
)
response = client.chat.completions.create(
model="your-model", # 换成你所用平台的模型名
messages=[
{"role": "system", "content": "你是一个有帮助的助手"},
{"role": "user", "content": "你好,介绍一下你自己"},
],
)
print(response.choices[0].message.content)
看到回复输出,就说明整条链路已经通了。
流式输出(打字机效果):
stream = client.chat.completions.create(
model="your-model",
messages=[{"role": "user", "content": "写一首关于秋天的诗"}],
stream=True,
)
for chunk in stream:
content = chunk.choices[0].delta.content
if content:
print(content, end="", flush=True)
方式二:Python + requests(理解底层原理)
不借助 SDK,直接发 HTTP 请求,帮你理解本质:
import os
import requests
url = os.environ["BASE_URL"] + "/chat/completions"
headers = {
"Authorization": f"Bearer {os.environ['API_KEY']}",
"Content-Type": "application/json",
}
data = {
"model": "your-model",
"messages": [{"role": "user", "content": "你好"}],
}
resp = requests.post(url, headers=headers, json=data)
print(resp.json()["choices"][0]["message"]["content"])
关键点就在这里:
- API Key 放在请求头 Authorization: Bearer <你的key> 中;
- Base URL 拼接路径 /chat/completions 构成最终地址。
所有 SDK 都是在替你做这两件事。
方式三:curl 命令行快速验证
拿到 key 后第一件事,建议先用 curl 测一下通不通:
curl YOUR_BASE_URL/chat/completions \\
-H "Content-Type: application/json" \\
-H "Authorization: Bearer YOUR_API_KEY" \\
-d '{
"model": "your-model",
"messages": [{"role": "user", "content": "hello"}]
}'
Windows 下注意 JSON 里的双引号需要转义,或者把 -d 后面的内容存成文件再用 -d @body.json。
四、第三步:在现成客户端软件里配置
不想写代码?大部分桌面客户端也支持自定义 API:
桌面客户端的通用套路(各类 AI 对话客户端均类似)
打开设置,一般会看到三个输入框:
保存后新建对话即可使用。
常见坑:URL 结尾要不要 /v1?
不同软件要求不一样:
- 有的会自动帮你拼 /v1/chat/completions,此时你填服务商根域名即可,多写了反而 404;
- 有的要求填文档中给出的完整 base url。
排查方法:报 404 就去掉或加上 /v1 再试;报 401 说明是 key 的问题而不是 URL 的问题。
五、常见报错与排查
| 401 Unauthorized | Key 错误或没传对 | 检查 key 是否复制全、是否过期、是否加了 Bearer 前缀 |
| 404 Not Found | URL 路径不对 | 检查 base_url 是否多了/少了 /v1 |
| 429 Too Many Requests | 触发限流 | 降低并发、加重试逻辑 |
| 402 / 403 | 余额不足或无权限 | 去平台充值或申请权限 |
| insufficient_quota | 账户余额为零 | 充值 |
| 连接超时 | 网络不通 | 国内访问境外 API 需要自行解决网络问题,或改用国内服务 |
调试建议:先用 curl 验证,再上代码。curl 通了代码不通,就是代码/SDK 配置问题;curl 都不通,就是网络或账号问题。
六、安全提醒(重要)
总结
拿到 API Key 和 Base URL 后的三步走:
本质上就是一件事:带着 Authorization: Bearer <key> 请求头,向 {base_url}/chat/completions 发一个 JSON。理解了这个,任何 OpenAI 兼容的平台对你来说都是换三个参数的事。
如果这篇文章帮到了你,欢迎点赞收藏,有问题评论区交流~


