调用 OpenAI 兼容接口实战:从 /v1/models 校验到发起一次对话请求
越来越多模型服务都提供 OpenAI 兼容接口:只要 Base URL 指向 /v1,就能用同一套请求格式调用不同模型。本文记录一次最短的验证链路:先查 /v1/models 确认密钥与模型,再发一次 /v1/chat/completions 对话请求。
一、先确认服务与密钥:GET /v1/models
curl -s http://<host>:<port>/v1/models -H "Authorization: Bearer $API_KEY"
返回的 data 数组里每个模型都有 id,挑一个支持对话的模型记下来,后面发起对话就用它。若返回 401,先检查密钥是否带了多余空格或换行;若连接失败,先确认 Base URL 的协议、端口与路径里是否多写或少写了 /v1。
二、发起一次对话:POST /v1/chat/completions
请求体示例:{"model": "<模型id>", "messages": [{"role": "user", "content": "用一句话介绍 HTTP 状态码 200 的含义。"}], "temperature": 0.7}
成功后在 choices[0].message.content 里取回答。建议先用一个事实性小问题验证,避免一上来就问开放问题,难以判断模型是否真的按预期工作。
三、Python 示例(requests)
import os, requests
base = os.environ["BASE_URL"]
key = os.environ["API_KEY"]
resp = requests.get(f"{base}/v1/models", headers={"Authorization": f"Bearer {key}"}, timeout=30)
resp.raise_for_status()
print([m["id"] for m in resp.json()["data"]])
密钥只放环境变量,不要写进代码、日志和聊天记录;报错时也不要把密钥打印出来。
四、常见问题
模型列表有模型,但对话报 model not found:确认 chat 请求的 model 字段与 models 返回的 id 完全一致。
超时:先调大 timeout,再看服务端日志。
回答为空:检查 choices 是否为空、finish_reason 是 stop 还是 length。
小结:/v1/models 校验连通性与权限,/v1/chat/completions 验证真实对话能力,两步走完,一个 OpenAI 兼容服务就算接通了。(完)
- 点赞
- 收藏
- 关注作者
评论(0)