操练场接口 POST /pg/chat/completions
控制台「操练场」在页面上试跑模型时用的入口(与 API 同一套计费)。
请求
| 字段 | 必填 | 说明 |
|---|---|---|
model |
是 | 公开模型名 |
messages |
是 | 对话数组 |
group |
否 | 指定分组试跑 |
# 浏览器里用:控制台 → 操练场 → 选模型 → 发送
# 该页面走的就是这个端点,计费与 API 一致
计费口径
与正式 API 同口径,试跑同样计费,可在使用日志里看到。
错误
| 状态 | 典型原因 |
|---|---|
| 401 | 未登录 |
| 403 | 分组无权限 |
错误响应里会带 request id,排查与对账时请保留(见错误码与限流)。
端点可达性验证
下面这段由文档验收套件真实执行:向本机网关发起一次未带 Key 的请求,
必须得到 401 与结构化 JSON 错误——证明该路径已被网关注册、且受鉴权中间件保护。
python3 -c "
import os,urllib.error,urllib.request
base=(os.environ.get('HEIMA_PROBE_BASE') or os.environ.get('HEIMA_BASE_URL','http://127.0.0.1:3000/v1')).split('/v1')[0]
req=urllib.request.Request(base+'/pg/chat/completions',data=b'{}',method='POST',headers={'Content-Type':'application/json'})
try:
urllib.request.urlopen(req,timeout=15)
raise SystemExit('expected 401 for unauthenticated request')
except urllib.error.HTTPError as e:
body=e.read().decode('utf-8','ignore')
assert e.code==401, 'unexpected status %s: %s'%(e.code,body[:160])
assert 'error' in body or 'message' in body, 'non-JSON error body: %s'%body[:160]
print('endpoint reachable & auth-guarded: /pg/chat/completions')
"
说明:探针只证明"路由存在 + 鉴权生效",不产生任何上游调用与费用。
常见问题
- 这个端点要额外开通吗? 取决于模型与上游:模型详情页会标注支持的端点;未开放时会返回明确错误, 不会静默降级到别的接口。
- 并发/限流如何? 平台有三层保护(模型 RPM、渠道容量、临时黑名单), 拒绝时返回 429/403 且不消耗上游。
相关端点
- 对话补全 POST /v1/chat/completions
- 文本补全 POST /v1/completions
- 向量化 POST /v1/embeddings
- 重排 POST /v1/rerank
- 文生图 POST /v1/images/generations
- 图像编辑 POST /v1/images/edits
- 图像变体 POST /v1/images/variations
- 语音合成 POST /v1/audio/speech
- 语音转写 POST /v1/audio/transcriptions
- 语音翻译 POST /v1/audio/translations
- 模型清单 GET /v1/models
- 模型详情 GET /v1/models/{model}
- Anthropic 协议 POST /v1/messages
- Responses 接口 POST /v1/responses
- 实时会话 WebSocket /v1/realtime
- 内容审核 POST /v1/moderations
- 联网检索 POST /v1/alpha/search
- 文件接口 /v1/files
- 微调接口 /v1/fine-tunes
- 绘图任务 /mj/*
- 音乐任务 /suno/*
- 任务查询 GET /mj/task/{id}/fetch