DRGAI开发者文档进入控制台 ↗
BUILD WITH DRG AI

接入你的客户端。

通过 OpenAI 格式的 HTTP 接口获取模型列表、发送消息,并读取回复与积分用量。

BASE URLhttps://drg.polarise.lol/v1
当前服务能力

回复由管理员配置的关键词规则与预设文本生成。reasoning_content 是思考示意,不代表模型的内部推理。接口支持文本对话及流式输出。

发起第一次请求

  1. 在控制台注册并验证邮箱,然后登录。
  2. 在“兑换积分”中兑换激活码,确保余额达到模型门槛并足以支付本次调用。
  3. 在“API 密钥”中创建并保存完整的 sk- 密钥。
  4. 调用 GET /v1/models 获取模型 ID,再发送对话请求。

以下命令适用于 Bash / zsh。DRG_API_KEY 环境变量需先设为你在控制台创建的密钥。

cURL · 模型列表
curl https://drg.polarise.lol/v1/models \
  -H "Authorization: Bearer $DRG_API_KEY"
cURL · 对话补全
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 后执行:

PowerShell
$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”填写完整密钥。

ACCESS

认证与账户

所有 /v1/ 接口都需要密钥,包括模型列表。每次请求携带:

HTTP 请求头
Authorization: Bearer sk-你的完整密钥
Content-Type: application/json

密钥由已验证邮箱的账户创建,完整内容仅显示一次。每个账户最多拥有 20 个有效密钥;撤销后立即失效。网页的登录 Cookie 不能替代 API 密钥。

邮箱验证码由 no-reply@polarise.lol 发出,10 分钟有效、只能使用一次。验证码累计输错 5 次后失效。旧账户登录时如果提示验证邮箱,按页面流程绑定邮箱即可继续使用原账户及余额。

MODELS

GET /v1/models

返回当前启用的模型。也可在模型广场无需登录按厂商浏览公开模型信息。余额不足仍可查询列表;调用模型时才检查余额。

JSON · 响应结构示例
{
  "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
    }
  }]
}
字段类型说明
idstring发送对话时填写的模型 ID。
drg.vendorstring管理员设置的厂商分类,留空时显示未分类。
createdinteger模型创建时间,Unix 秒。
drg.input_points_per_millionnumber每百万输入 token 的积分。
drg.output_points_per_millionnumber每百万输出 token 的积分,包含思考示意。
drg.min_balancenumber发起调用时要求的最低积分余额。
drg.avatar_urlstring / null模型头像的公开 URL,未设置时为 null。
drg.reasoning_effortsarray可用的思考名称与数值等级映射。
drg.default_reasoning_effortstring省略 reasoning_effort 时使用的等级名称。
drg.tool_calls_supportedboolean当前为 false;不会执行或生成工具调用。

上方为结构示例。费率、余额门槛和可用模型可由管理员更改,以实时接口返回值为准。

CHAT COMPLETIONS

POST /v1/chat/completions

提交消息并获取一条回复。请求体为 JSON。

参数类型 / 默认值说明
model 必填string已启用的模型 ID。
messages 必填array1–100 条消息,至少一条非空 user 消息。
streamboolean / false为 true 时以 SSE 返回增量内容。
max_tokensinteger / 163841–16384;限制输出总 token,包含思考示意。
max_completion_tokensinteger同上;同时提供时优先于 max_tokens。
reasoning_effortstring / 模型默认值思考等级名称,使用模型列表返回的可用值。
tools / functionsarray / null接受最多 128 项定义以兼容客户端,但不会执行工具。
tool_choice / function_callstring / null接受 auto、none 或省略;强制调用不支持。
ninteger / 1仅支持 1。
stream_options.include_usageboolean / false流式结束前增加一条完整用量事件。
response_formatobject仅支持 {"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 计量。

JSON · 请求
{
  "model": "drg-ai",
  "messages": [{"role": "user", "content": "你好"}],
  "max_tokens": 256,
  "reasoning_effort": "medium",
  "stream": false
}

非流式响应

JSON · 响应结构示例
{
  "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 接口。

SERVER-SENT EVENTS

读取流式输出

将 stream 设为 true。响应类型为 text/event-stream; charset=utf-8;每个事件由 data: 开头,空行分隔。每条 JSON 的 object 为 chat.completion.chunk,并携带同一组 id、created、model。

JSON · 流式请求
{
  "model": "drg-ai",
  "messages": [{"role": "user", "content": "你好"}],
  "stream": true,
  "reasoning_effort": "high",
  "stream_options": {"include_usage": true}
}
  1. 首个事件在 choices[0].delta 中返回 role: "assistant"。
  2. 若启用思考展示,先拼接各事件的 delta.reasoning_content。
  3. 再拼接 delta.content,得到最终回复。
  4. 完成事件返回 finish_reason 和 drg.points 等计费信息。
  5. 若请求 include_usage,随后返回 choices: [] 的独立事件,其中 usage 为完整用量。
  6. data: [DONE] 表示流结束。
解析时保留增量

JSON 事件不是完整消息。分别累计 content 和 reasoning_content;usage 事件的 choices 是空数组,不能直接读取 choices[0]。

BILLING

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 次成功调用。

ERROR HANDLING

错误与限制

失败时返回相应 HTTP 状态和统一 JSON 错误对象。读取 error.code 判断类型,error.message 用于展示具体原因。

JSON · 错误结构示例
{
  "error": {
    "message": "积分余额不足,无法支付本次调用。",
    "type": "invalid_request_error",
    "param": null,
    "code": "insufficient_quota"
  }
}
HTTP常见 code原因
400invalid_request_error / unsupported_parameter / unsupported_required_tool_call参数、消息或 token 上限无效,或使用不支持的功能。
401invalid_api_key密钥缺失、无效或被撤销。
402insufficient_quota未达到余额门槛,或余额不足以支付费用。
403email_verification_required账户邮箱未验证。
404model_not_found / not_found模型不存在、已停用,或接口路径无效。
413invalid_request_error请求体过大。
429rate_limit_exceeded调用过于频繁;响应含 Retry-After: 60。
500server_error服务内部错误。
  • 对话调用:每账户每分钟最多 60 次,网页与 API 共用额度。
  • 消息总内容:最多 50,000 个 JavaScript 字符;完整输入计量最多 16,384 token。
  • 请求体:Content-Length 超过 1,000,000 字节或读取的正文超过 1,000,000 个字符时拒绝。
  • 输出:最多 16,384 token,正文与思考示意共用上限。
  • 支持 /v1 接口跨域调用,允许 Authorization 和 Content-Type 请求头。
CONSOLE CONFIGURATION

管理员配置

管理员在控制台管理模型、激活码和回复规则。普通账户仅拥有密钥、积分兑换与调用功能。

模型

在编辑弹窗中设置 ID、名称、厂商分类、费率、最低余额、启用状态和思考开关。保存厂商后,模型广场自动按厂商分组。可上传不超过 256 KB 的 PNG、JPEG、GIF 或 WebP 头像,并配置多个思考名称、0–10 数值等级和默认项。客户端使用模型 ID 发起请求,头像与等级映射返回在模型列表的 drg 字段。模型列表中可点击“删除”;删除后立即停止后续调用,并从模型列表隐藏,已有调用记录和扣费历史保留。

激活码

每批生成 1–100 个激活码并指定每个码的积分。每个码只能兑换一次;未兑换的码可停用。

回复规则

配置关键词与对应回复、未命中的默认内容、全局思考展示开关和 0–100 毫秒的流式输出间隔。

修改后用于后续请求。管理员账户 SaonvWart 仅允许使用已验证的 admin@polarise.lol 注册。