接入你的客户端。
通过 OpenAI 格式的 HTTP 接口获取模型列表、发送消息,并读取回复与积分用量。
https://drg.polarise.lol/v1回复由管理员配置的关键词规则与预设文本生成。reasoning_content 是思考示意,不代表模型的内部推理。接口支持文本对话及流式输出。
发起第一次请求
- 在控制台注册并验证邮箱,然后登录。
- 在“兑换积分”中兑换激活码,确保余额达到模型门槛并足以支付本次调用。
- 在“API 密钥”中创建并保存完整的
sk-密钥。 - 调用
GET /v1/models获取模型 ID,再发送对话请求。
以下命令适用于 Bash / zsh。DRG_API_KEY 环境变量需先设为你在控制台创建的密钥。
curl https://drg.polarise.lol/v1/models \
-H "Authorization: Bearer $DRG_API_KEY"curl https://drg.polarise.lol/v1/chat/completions \
-H "Authorization: Bearer $DRG_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"drg-ai","messages":[{"role":"user","content":"你好"}],"max_tokens":256}'Windows PowerShell 调用方式
将实际密钥保存到 $env:DRG_API_KEY 后执行:
$headers = @{ Authorization = "Bearer $env:DRG_API_KEY" }
$requestBody = @{
model = 'drg-ai'
messages = @(@{ role = 'user'; content = '你好' })
max_tokens = 256
} | ConvertTo-Json -Depth 5
Invoke-RestMethod -Uri 'https://drg.polarise.lol/v1/chat/completions' `
-Method Post -Headers $headers -ContentType 'application/json; charset=utf-8' `
-Body ([System.Text.Encoding]::UTF8.GetBytes($requestBody))示例使用初始模型 drg-ai;实际可用 ID 以模型列表为准。客户端的“Base URL / API 地址”填写上方带 /v1 的地址,“API Key”填写完整密钥。
认证与账户
所有 /v1/ 接口都需要密钥,包括模型列表。每次请求携带:
Authorization: Bearer sk-你的完整密钥
Content-Type: application/json密钥由已验证邮箱的账户创建,完整内容仅显示一次。每个账户最多拥有 20 个有效密钥;撤销后立即失效。网页的登录 Cookie 不能替代 API 密钥。
邮箱验证码由 no-reply@polarise.lol 发出,10 分钟有效、只能使用一次。验证码累计输错 5 次后失效。旧账户登录时如果提示验证邮箱,按页面流程绑定邮箱即可继续使用原账户及余额。
GET /v1/models
返回当前启用的模型。也可在模型广场无需登录按厂商浏览公开模型信息。余额不足仍可查询列表;调用模型时才检查余额。
{
"object": "list",
"data": [{
"id": "drg-ai",
"object": "model",
"created": 1791115200,
"owned_by": "drg_ai",
"drg": {
"vendor": "DRG",
"input_points_per_million": 100,
"output_points_per_million": 100,
"min_balance": 1,
"avatar_url": null,
"reasoning_efforts": [{"name":"low","level":2},{"name":"medium","level":4},{"name":"high","level":7}],
"default_reasoning_effort": "medium",
"tool_calls_supported": false
}
}]
}| 字段 | 类型 | 说明 |
|---|---|---|
id | string | 发送对话时填写的模型 ID。 |
drg.vendor | string | 管理员设置的厂商分类,留空时显示未分类。 |
created | integer | 模型创建时间,Unix 秒。 |
drg.input_points_per_million | number | 每百万输入 token 的积分。 |
drg.output_points_per_million | number | 每百万输出 token 的积分,包含思考示意。 |
drg.min_balance | number | 发起调用时要求的最低积分余额。 |
drg.avatar_url | string / null | 模型头像的公开 URL,未设置时为 null。 |
drg.reasoning_efforts | array | 可用的思考名称与数值等级映射。 |
drg.default_reasoning_effort | string | 省略 reasoning_effort 时使用的等级名称。 |
drg.tool_calls_supported | boolean | 当前为 false;不会执行或生成工具调用。 |
上方为结构示例。费率、余额门槛和可用模型可由管理员更改,以实时接口返回值为准。
POST /v1/chat/completions
提交消息并获取一条回复。请求体为 JSON。
| 参数 | 类型 / 默认值 | 说明 |
|---|---|---|
model 必填 | string | 已启用的模型 ID。 |
messages 必填 | array | 1–100 条消息,至少一条非空 user 消息。 |
stream | boolean / false | 为 true 时以 SSE 返回增量内容。 |
max_tokens | integer / 16384 | 1–16384;限制输出总 token,包含思考示意。 |
max_completion_tokens | integer | 同上;同时提供时优先于 max_tokens。 |
reasoning_effort | string / 模型默认值 | 思考等级名称,使用模型列表返回的可用值。 |
tools / functions | array / null | 接受最多 128 项定义以兼容客户端,但不会执行工具。 |
tool_choice / function_call | string / null | 接受 auto、none 或省略;强制调用不支持。 |
n | integer / 1 | 仅支持 1。 |
stream_options.include_usage | boolean / false | 流式结束前增加一条完整用量事件。 |
response_format | object | 仅支持 {"type":"text"}。 |
思考等级
客户端传文本名称,后端按管理员配置的数值等级生成思考示意。名称可以自定义,数值为 0–10:0 关闭展示,数值越高,文字层次和内容越多。未指定时使用模型的默认等级;未知名称返回 400。
初始映射为 none: 0、minimal: 1、low: 2、medium: 4、high: 7、xhigh: 10。管理员可调整名称、数值和默认项,实际配置以模型列表为准。输出 token 上限也限制思考长度;模型或全局关闭展示时不输出思考。
消息格式
role 可为 system、developer、user、assistant;兼容 tool、function 的文本历史,以及带 tool_calls / function_call 且 content 为 null 的 assistant 历史。content 支持字符串或仅包含 {"type":"text","text":"…"} 的数组。当前规则使用最后一条 user 消息选择回复;其他消息参与输入 token 计量。
{
"model": "drg-ai",
"messages": [{"role": "user", "content": "你好"}],
"max_tokens": 256,
"reasoning_effort": "medium",
"stream": false
}非流式响应
{
"id": "chatcmpl-example",
"object": "chat.completion",
"created": 1791115200,
"model": "drg-ai",
"choices": [{
"index": 0,
"message": {
"role": "assistant",
"content": "你好,很高兴和你交流。",
"reasoning_content": "[思考示意]\n\n对方正在发起一段交流。"
},
"finish_reason": "stop",
"logprobs": null
}],
"usage": {
"prompt_tokens": 100,
"completion_tokens": 200,
"total_tokens": 300,
"completion_tokens_details": {"reasoning_tokens": 150}
},
"drg": {
"points": 0.03,
"tokenizer": "cl100k_base",
"reasoning_source": "illustrative_template",
"reasoning_effort": "medium",
"reasoning_level": 4,
"tool_calls_supported": false
}
}示例中的文本、ID、时间与 token 数仅展示结构,不是上述请求的实际返回。
choices[0].message.content 为最终回复;reasoning_content 仅在模型和全局配置都允许思考展示时出现。未启用时 drg.reasoning_source 为 null。输出正文被 token 上限截断时,finish_reason 为 length,正常结束为 stop。
当前不支持图像、音频、JSON 模式和结构化输出。客户端携带 tools 或 functions 定义时,auto / none 模式可正常返回文本,不会生成 tool_calls。tool_choice: required 或指定函数名称时返回 unsupported_required_tool_call。temperature、top_p、stop 等未列出的生成控制参数目前不生效。未提供 embeddings、images、responses 或旧版 completions 接口。
读取流式输出
将 stream 设为 true。响应类型为 text/event-stream; charset=utf-8;每个事件由 data: 开头,空行分隔。每条 JSON 的 object 为 chat.completion.chunk,并携带同一组 id、created、model。
{
"model": "drg-ai",
"messages": [{"role": "user", "content": "你好"}],
"stream": true,
"reasoning_effort": "high",
"stream_options": {"include_usage": true}
}- 首个事件在
choices[0].delta中返回role: "assistant"。 - 若启用思考展示,先拼接各事件的
delta.reasoning_content。 - 再拼接
delta.content,得到最终回复。 - 完成事件返回
finish_reason和drg.points等计费信息。 - 若请求 include_usage,随后返回
choices: []的独立事件,其中usage为完整用量。 data: [DONE]表示流结束。
JSON 事件不是完整消息。分别累计 content 和 reasoning_content;usage 事件的 choices 是空数组,不能直接读取 choices[0]。
Token 与积分
文本使用 cl100k_base 计量,输入用量包含消息角色及封装开销。输出用量包含正文和思考示意,实际数值以响应的 usage 为准。
| 字段 | 含义 | 计费归属 |
|---|---|---|
prompt_tokens | 输入 token。 | 输入费率 |
completion_tokens | 正文 + 思考示意 token。 | 输出费率 |
reasoning_tokens | 思考示意 token,属于 completion_tokens 的一部分。 | 已包含在输出中,不再重复收费 |
total_tokens | 输入 + 输出。 | 用量汇总 |
drg.points | 本次扣除的积分。 | 最终计费结果 |
ceil(输入 token × 输入费率 + 输出 token × 输出费率) / 1,000,000费率单位为“积分 / 百万 token”。费用向上取整到 0.000001 积分。例如输入 100 token、输出 200 token,两项费率均为 100 时,费用为 0.03 积分。
调用时余额必须达到模型的 min_balance,也必须足以支付本次费用。计费在流式内容发送前完成;客户端中途断开不会自动退回本次费用。控制台“调用记录”显示最近 100 次成功调用。
错误与限制
失败时返回相应 HTTP 状态和统一 JSON 错误对象。读取 error.code 判断类型,error.message 用于展示具体原因。
{
"error": {
"message": "积分余额不足,无法支付本次调用。",
"type": "invalid_request_error",
"param": null,
"code": "insufficient_quota"
}
}| HTTP | 常见 code | 原因 |
|---|---|---|
| 400 | invalid_request_error / unsupported_parameter / unsupported_required_tool_call | 参数、消息或 token 上限无效,或使用不支持的功能。 |
| 401 | invalid_api_key | 密钥缺失、无效或被撤销。 |
| 402 | insufficient_quota | 未达到余额门槛,或余额不足以支付费用。 |
| 403 | email_verification_required | 账户邮箱未验证。 |
| 404 | model_not_found / not_found | 模型不存在、已停用,或接口路径无效。 |
| 413 | invalid_request_error | 请求体过大。 |
| 429 | rate_limit_exceeded | 调用过于频繁;响应含 Retry-After: 60。 |
| 500 | server_error | 服务内部错误。 |
- 对话调用:每账户每分钟最多 60 次,网页与 API 共用额度。
- 消息总内容:最多 50,000 个 JavaScript 字符;完整输入计量最多 16,384 token。
- 请求体:Content-Length 超过 1,000,000 字节或读取的正文超过 1,000,000 个字符时拒绝。
- 输出:最多 16,384 token,正文与思考示意共用上限。
- 支持 /v1 接口跨域调用,允许 Authorization 和 Content-Type 请求头。
管理员配置
管理员在控制台管理模型、激活码和回复规则。普通账户仅拥有密钥、积分兑换与调用功能。
模型
在编辑弹窗中设置 ID、名称、厂商分类、费率、最低余额、启用状态和思考开关。保存厂商后,模型广场自动按厂商分组。可上传不超过 256 KB 的 PNG、JPEG、GIF 或 WebP 头像,并配置多个思考名称、0–10 数值等级和默认项。客户端使用模型 ID 发起请求,头像与等级映射返回在模型列表的 drg 字段。模型列表中可点击“删除”;删除后立即停止后续调用,并从模型列表隐藏,已有调用记录和扣费历史保留。
激活码
每批生成 1–100 个激活码并指定每个码的积分。每个码只能兑换一次;未兑换的码可停用。
回复规则
配置关键词与对应回复、未命中的默认内容、全局思考展示开关和 0–100 毫秒的流式输出间隔。
修改后用于后续请求。管理员账户 SaonvWart 仅允许使用已验证的 admin@polarise.lol 注册。