Artistic Genius 接入文档

开始之前

Artistic Genius 同时提供 OpenAI 兼容和 Anthropic 兼容两种接口。接入任何客户端都只需要两样东西:接入地址和令牌。

接入地址

用途地址
OpenAI 兼容(Codex、opencode、自己的脚本)https://artistic-genius.vip/v1
Anthropic 兼容(Claude Code)https://artistic-genius.vip(不带 /v1)

获取令牌

  1. 登录 artistic-genius.vip,在左侧菜单打开「接入 › API 密钥」。
  2. 点「创建 API 密钥」,填一个好认的名称。
  3. 在「分组」里选好分组(见下表),额度按需设置,然后提交。
  4. 复制 sk- 开头的密钥,后面各页的配置里都用它。

令牌等于钱包:不要发给别人,不要贴到截图里,不要提交到 Git。泄露了就在「API 密钥」页删掉重建。

选哪个分组

分组决定这个令牌能用哪些模型、按什么倍率计费。一个令牌只属于一个分组,同时用 Codex 和 Claude Code 就建两个令牌。

客户端分组本站默认模型
CodexGPT 优选gpt-6-sol
Claude CodeClaude 尝鲜claude-opus-5-5
opencodeGPT 优选gpt-6-sol
智谱 Z CodeClaude 尝鲜 / GPT 优选 / Gemini 标准claude-opus-5-5 / gpt-6-sol / gemini-3.8-flash-high
API 调用示例按要调用的模型选—

每个分组有哪些模型、价格多少,登录后在「接入 › 可用模型」查看。

建令牌时没选分组,调用会报 No available channel for model ... under group default,模型列表也是空的。到「API 密钥」页编辑这个令牌,把分组改好即可,密钥不用换。

客户端教程

  • Node.js 环境:Codex、Claude Code、opencode 用 npm 安装,先装好 Node.js。
  • Codex:OpenAI 的命令行编程助手。
  • Claude Code:Anthropic 的命令行编程助手。
  • opencode:开源的命令行编程助手,可接多家模型。
  • 智谱 Z Code:智谱的桌面编程应用,在界面里点选配置。
  • API 调用示例:curl、Python、Node.js 直接调用。

本站所有配置都先在 Artistic Genius 上实测通过才写进页面,实测日期见各页底部。

Node.js 环境

Codex、Claude Code、opencode 都通过 npm 安装,需要 Node.js 18 或以上,推荐装当前的 LTS(长期支持)版本。已经装过的直接跳到最后一步验证。

安装

macOS 装了 Homebrew 的,在终端运行:

brew install node

没有 Homebrew,就到 nodejs.org 下载 LTS 版的 macOS 安装包,双击按提示装完。Linux 按 nodejs.org 上对应发行版的说明安装。

到 nodejs.org 下载 LTS 版的 Windows 安装包(.msi),双击按默认选项装完,安装程序会自动把 Node.js 加进 PATH。

装完关掉并重新打开 PowerShell,新窗口才能找到 node 命令。

验证

在终端(Windows 用 PowerShell)运行:

node --version
npm --version

两行都输出版本号,且 node 是 v18 或更高,就可以继续装客户端了。提示找不到命令时,先重开终端再试。

Codex

Codex 是 OpenAI 的命令行编程助手。按下面三步接入后,Codex 的请求全部走 Artistic Genius,不需要登录 ChatGPT 账号。

令牌分组选 GPT 优选,本页默认模型 gpt-6-sol。还没有令牌先看开始之前,没装 Node.js 先看 Node.js 环境。

1. 安装

npm install -g @openai/codex

验证:

codex --version

2. 设置令牌环境变量

配置文件里不写令牌本身,Codex 从环境变量 AG_API_KEY 读取。把 sk-你的令牌 换成自己的令牌:

echo 'export AG_API_KEY="sk-你的令牌"' >> ~/.zshrc && source ~/.zshrc

用 bash 的把两处 ~/.zshrc 换成 ~/.bashrc。

在 PowerShell 里运行:

setx AG_API_KEY "sk-你的令牌"

然后关掉并重新打开 PowerShell,新窗口里才能读到这个变量。

3. 写配置文件

配置文件位置:macOS / Linux 是 ~/.codex/config.toml,Windows 是 %USERPROFILE%\.codex\config.toml。这几项只在这个用户级文件里生效,写在项目目录里的 .codex/config.toml 不起作用。

用编辑器打开(文件不存在会新建):

mkdir -p ~/.codex && touch ~/.codex/config.toml && open -e ~/.codex/config.toml

Linux 把最后的 open -e 换成 nano。

mkdir -Force $HOME\.codex | Out-Null; notepad $HOME\.codex\config.toml

记事本提示「是否创建新文件」时选「是」。

文件是空的(第一次用 Codex)

把下面整段粘进去保存:

model_provider = "artistic-genius"
model = "gpt-6-sol"

[model_providers.artistic-genius]
name = "Artistic Genius"
base_url = "https://artistic-genius.vip/v1"
env_key = "AG_API_KEY"
wire_api = "responses"

文件里已经有内容

原有的 MCP、profile 等配置都保留,只加两处:

  1. 把下面两行放到文件最上面,任何 [...] 段之前。文件顶部原来就有 model = ... 或 model_provider = ... 的,直接改那一行,不要重复写,否则 Codex 会报配置错误。
    model_provider = "artistic-genius"
    model = "gpt-6-sol"
  2. 把这一段加到文件末尾:
    [model_providers.artistic-genius]
    name = "Artistic Genius"
    base_url = "https://artistic-genius.vip/v1"
    env_key = "AG_API_KEY"
    wire_api = "responses"

4. 开始使用

进入项目目录运行:

codex

启动信息里 provider 显示 artistic-genius、model 显示 gpt-6-sol 就是接好了。换别的模型改配置里的 model,可用模型见控制台「接入 › 可用模型」。

常见问题

现象处理
报 Missing environment variable: `AG_API_KEY` 或 401令牌没在当前终端生效。macOS 运行 echo $AG_API_KEY | cut -c1-5,Windows 运行 $env:AG_API_KEY.Substring(0,5),应显示 sk- 开头;不是就重做第 2 步并重开终端。
报 No available channel ... under group default令牌没选分组,到「API 密钥」页把分组改成 GPT 优选。
报模型不存在检查 model 拼写,以及令牌分组里有没有这个模型。
报 duplicate key文件里 model 或 model_provider 写了两遍,删掉旧的那行。
启动信息里 provider 是 openai,或提示 model_providers.artistic-genius.model is ignored,或要求登录 ChatGPTmodel_provider、model 两行没放在文件最上面(被当成了某个 [...] 段里的内容),或写在了项目目录的配置里。把两行移到文件第一行。

实测:2026-09-29,Codex 0.159.0(codex-cli)。

Claude Code

Claude Code 是 Anthropic 的命令行编程助手。按下面几步接入后,请求全部走 Artistic Genius,不需要 Anthropic 账号。

令牌分组选 Claude 尝鲜,本页默认模型 claude-opus-5-5。还没有令牌先看开始之前,没装 Node.js 先看 Node.js 环境。

1. 安装

npm install -g @anthropic-ai/claude-code

验证:

claude --version

2. 写配置文件

配置文件位置:macOS / Linux 是 ~/.claude/settings.json,Windows 是 %USERPROFILE%\.claude\settings.json。写在这里,命令行和 IDE 插件都会生效。

用编辑器打开(文件不存在会新建):

mkdir -p ~/.claude && touch ~/.claude/settings.json && open -e ~/.claude/settings.json

Linux 把最后的 open -e 换成 nano。

mkdir -Force $HOME\.claude | Out-Null; notepad $HOME\.claude\settings.json

记事本提示「是否创建新文件」时选「是」。

文件是空的(第一次用 Claude Code)

把下面整段粘进去,sk-你的令牌 换成自己的令牌,保存:

{
  "env": {
    "ANTHROPIC_BASE_URL": "https://artistic-genius.vip",
    "ANTHROPIC_AUTH_TOKEN": "sk-你的令牌",
    "ANTHROPIC_MODEL": "claude-opus-5-5",
    "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1"
  }
}

文件里已经有内容

其他设置都保留,只在最外层的 "env": { ... } 里加下面 4 行;原来没有 "env" 的,就在最外层大括号里新加一个 "env": { ... }。注意行尾逗号:每项之间要有逗号,最后一项后面不能有。

"ANTHROPIC_BASE_URL": "https://artistic-genius.vip",
"ANTHROPIC_AUTH_TOKEN": "sk-你的令牌",
"ANTHROPIC_MODEL": "claude-opus-5-5",
"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1"

四项的作用:接入地址(不带 /v1)、令牌、默认模型、关掉遥测和自动更新检查等非必要联网。

系统里设置过 ANTHROPIC_API_KEY 环境变量的,先把它删掉,避免和这里的令牌冲突。以前登录过 Anthropic 官方账号的,进入 Claude Code 后先运行 /logout。

3. 开始使用

进入项目目录运行:

claude

第一次启动会让你选主题、确认信任当前目录,按回车往下走即可,不需要登录。

思考强度

claude-opus-5-5 默认思考强度就是 medium(中),日常写代码够用,配置里不用写。会话标题的模型名旁会显示当前强度,例如「with medium effort」。

想临时调高或调低,在 Claude Code 里输入:

/effort high

可选 low、medium、high、xhigh、max。强度越高想得越久、消耗越多。只输入 /effort 会弹出滑块;/effort auto 恢复默认。

换成 Sonnet

想更快更省,把配置里的 ANTHROPIC_MODEL 改成 claude-sonnet-5-5,重启 Claude Code 即可。两个模型都在 Claude 尝鲜分组里。

常见问题

现象处理
报 Failed to authenticate,后面跟着「预扣费额度失败,用户剩余额度 ...」不是令牌错了,是余额不够。Claude Code 每次请求会按最大输出先预扣一笔(Opus 约 ¥1),余额低于这个数就会被拒,充值后重试。
报 Failed to authenticate 或 401,没有「预扣费」字样令牌填错或已删除。检查 ANTHROPIC_AUTH_TOKEN,并确认 ANTHROPIC_API_KEY 环境变量已删。
报 No available channel ... under group default令牌没选分组,到「API 密钥」页把分组改成 Claude 尝鲜。
启动后还是要求登录 Anthropic 账号配置没读到:检查文件路径和文件名,并确认 JSON 格式正确(逗号、引号、大括号成对)。

实测:2026-09-29,Claude Code 2.1.284。

opencode

opencode 是开源的命令行编程助手,可以接多家模型。下面把 Artistic Genius 加成它的一个模型来源。

令牌分组选 GPT 优选,本页默认模型 gpt-6-sol。还没有令牌先看开始之前,没装 Node.js 先看 Node.js 环境。

1. 安装

npm install -g opencode-ai

验证:

opencode --version

2. 设置令牌环境变量

和 Codex 用同一个变量 AG_API_KEY,已经为 Codex 设过的跳过这一步。把 sk-你的令牌 换成自己的令牌:

echo 'export AG_API_KEY="sk-你的令牌"' >> ~/.zshrc && source ~/.zshrc

用 bash 的把两处 ~/.zshrc 换成 ~/.bashrc。

在 PowerShell 里运行:

setx AG_API_KEY "sk-你的令牌"

然后关掉并重新打开 PowerShell。

3. 写配置文件

配置文件位置:macOS / Linux 是 ~/.config/opencode/opencode.json,Windows 是 %USERPROFILE%\.config\opencode\opencode.json。

用编辑器打开(文件不存在会新建):

mkdir -p ~/.config/opencode && touch ~/.config/opencode/opencode.json && open -e ~/.config/opencode/opencode.json

Linux 把最后的 open -e 换成 nano。

mkdir -Force $HOME\.config\opencode | Out-Null; notepad $HOME\.config\opencode\opencode.json

记事本提示「是否创建新文件」时选「是」。

文件是空的(第一次用 opencode)

把下面整段粘进去保存。令牌从环境变量读取,这里不用改:

{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "artistic-genius": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "Artistic Genius",
      "options": {
        "baseURL": "https://artistic-genius.vip/v1",
        "apiKey": "{env:AG_API_KEY}"
      },
      "models": {
        "gpt-6-sol": { "name": "GPT-6 Sol" }
      }
    }
  },
  "model": "artistic-genius/gpt-6-sol"
}

文件里已经有内容

原有的 MCP、主题等设置都保留,只改两处:

  1. 在 "provider": { ... } 里加下面这一项;原来没有 "provider" 的,在最外层新建 "provider": { ... } 把它放进去。
    "artistic-genius": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "Artistic Genius",
      "options": {
        "baseURL": "https://artistic-genius.vip/v1",
        "apiKey": "{env:AG_API_KEY}"
      },
      "models": {
        "gpt-6-sol": { "name": "GPT-6 Sol" }
      }
    }
  2. 最外层加一行默认模型;原来就有 "model" 的,直接改它的值:
    "model": "artistic-genius/gpt-6-sol"

注意逗号:同一层的每项之间要有逗号,最后一项后面不能有。

4. 开始使用

进入项目目录运行:

opencode

想先确认配置读到了,运行下面的命令,应输出 artistic-genius/gpt-6-sol:

opencode models artistic-genius

想加别的模型,在 "models" 里照格式多写几项(名字要和控制台「接入 › 可用模型」里的一致),然后在 opencode 里用 /models 切换。

常见问题

现象处理
报 Invalid token环境变量没生效或令牌填错。macOS 运行 echo $AG_API_KEY | cut -c1-5,Windows 运行 $env:AG_API_KEY.Substring(0,5),应显示 sk- 开头;不是就重做第 2 步并重开终端。
报 No available channel ... under group default令牌没选分组,到「API 密钥」页把分组改成 GPT 优选。
opencode models artistic-genius 没有输出配置没读到:检查文件路径和文件名,并确认 JSON 格式正确。

实测:2026-09-29,opencode 1.18.33。

智谱 Z Code

Z Code 是智谱出品的桌面 AI 编程应用。在它的设置里把 Artistic Genius 加成自定义供应商,就能用 Claude、GPT、Gemini 模型写代码,不需要智谱账号。全程在界面里点选,不用改配置文件。

一个令牌只属于一个分组,所以每家模型各建一个供应商、各用一个令牌。用不到的可以跳过。

供应商令牌分组API 格式模型
ClaudeClaude 尝鲜Anthropic Messagesclaude-opus-5-5、claude-sonnet-5-5
GPTGPT 优选Responsesgpt-6-sol、gpt-6-luna
GeminiGemini 标准Chat Completionsgemini-3.8-flash-high、gemini-3.7-flash-high

还没有令牌先看开始之前。三个供应商的 Base URL 都是 https://artistic-genius.vip/v1。

1. 安装

到官网 zcode.z.ai 下载安装。

第一次打开会出现「欢迎来到 ZCode」。不用连接 Z.ai 或 BigModel 账号:点「使用 API key」,再点「暂时跳过」(这里要的是智谱自己的 Key,不是 Artistic Genius 令牌)。之后的几页引导可以一路「跳过」。

2. 添加 Claude 供应商

点左下角的齿轮打开设置,进入「模型设置」,点右上角「+ 添加供应商」,在「其他」里选「创建自定义供应商」。

模型设置 › 添加供应商,其他分类下的「创建自定义供应商」

按下表填写,每填完一项会自动保存:

项目填写
Base URLhttps://artistic-genius.vip/v1
API 格式Anthropic Messages (/v1/messages)(默认就是它,不用改)
API Key你的 sk- 令牌(Claude 尝鲜分组)

Base URL 一定要带 /v1,这点和 Claude Code 不同:Z Code 只会在后面补 /messages,不带 /v1 就会请求到错误地址。

自定义供应商表单:Base URL、API 格式、API Key、模型列表

供应商默认叫「新供应商」,想改名就点右上角「⋯ › 重命名」,比如改成 Artistic Genius。

3. 添加 Claude 模型

点「模型列表」右边的「+ 添加模型」,模型 ID 填 claude-opus-5-5。保持「智能配置」开着,上下文窗口和最大输出会自动填好,点「保存」。

添加模型:模型 ID 填 claude-opus-5-5,智能配置自动填入上下文与最大输出

用同样的方法再加一个 claude-sonnet-5-5。填好后左侧供应商名旁的圆点变绿,表示已连通。想再确认,可以点模型行的插头图标「测试模型」。

配置完成的 Artistic Genius 供应商,包含两个模型

4. 添加 GPT 供应商和模型

回到「模型设置」,同样点「+ 添加供应商 › 创建自定义供应商」,再建一个供应商,可以重命名为 Artistic Genius GPT:

项目填写
Base URLhttps://artistic-genius.vip/v1
API 格式改成 Responses (/responses)
API Key你的 sk- 令牌(GPT 优选分组)

然后「+ 添加模型」,模型 ID 填 gpt-6-sol。Z Code 还不认识 GPT-6,智能配置只会填一套保守的默认值,要手动改下面几项(改过的项会自动转为手动管理,其他项不受影响):

项目改成
上下文窗口272000
最大输出 Token128000
输入类型文本之外再勾「图片」「PDF」
模型能力勾「工具调用」「结构化输出」
推理等级(从低到高)删掉默认的 disabled、enabled,按顺序添加 none、low、medium、high、xhigh、max

「推理参数映射」保持默认,不用改。保存后用同样的设置再加一个 gpt-6-luna(更便宜,适合简单任务)。

上下文填 272000 是有意的:单次请求超过 272K 就按长上下文价计费,输入价翻倍。Z Code 按这里填的上下文窗口管理对话长度,填这个数能让请求一直停在便宜的那一档。

5. 添加 Gemini 供应商和模型

再建一个供应商,可以重命名为 Artistic Genius Gemini:

项目填写
Base URLhttps://artistic-genius.vip/v1
API 格式改成 Chat Completions
API Key你的 sk- 令牌(Gemini 标准分组)

「+ 添加模型」,模型 ID 填 gemini-3.8-flash-high,手动改下面几项:

项目改成
上下文窗口1000000
最大输出 Token64000
输入类型全部勾上:图片、视频、音频、PDF(Gemini 是全模态模型)
模型能力勾「工具调用」「结构化输出」
推理等级(从低到高)删掉默认的 disabled、enabled,按顺序添加 low、medium、high

Gemini 的思考关不掉,只有 low / medium / high 三档。推理等级里不要留 disabled 或 none,选了会报错。

「推理参数映射」同样保持默认。保存后用同样的设置再加一个 gemini-3.7-flash-high。

6. 开始使用

点左上角「返回工作区」,在输入框右下角点「选择模型」,选 Artistic Genius › claude-opus-5-5(或者 GPT、Gemini 供应商下的模型)。模型右边的「中」是思考强度,点开可以调,可选档位就是上面给每个模型设的推理等级。

输入框右下角已选中 Artistic Genius/claude-opus-5-5

发一句话试试,有回复就说明接好了。想写项目代码,先点输入框上方的「选择项目」打开项目文件夹。

发送测试消息后 claude-opus-5-5 回复 OK

想更快更省,就换成 claude-sonnet-5-5 或 gpt-6-luna。

常见问题

现象处理
首页提示「当前没有可用模型」还没添加模型,或者模型行右侧的开关是关的。回到「模型设置」检查。
报错里有「预扣费额度失败」余额不够。Z Code 每次请求会按「最大输出 Token」先预扣一笔(Opus 约 ¥1),充值后重试。
报错 401 或令牌无效API Key 填错或令牌已删除,回到「模型设置」重新粘贴。
报错 No available channel ... under group default令牌没选分组,到「API 密钥」页把分组改成这个供应商对应的分组(见本页开头的表)。
报错 No available channel for model gpt-6-sol under group Claude 尝鲜 这类令牌分组和模型不对应,比如在 GPT 供应商里填了 Claude 尝鲜的令牌。每个供应商用自己分组的令牌。
Gemini 报 thinking cannot be disabled推理等级里还留着 disabled 或 none。删掉它们,只留 low / medium / high。

实测:2026-09-29,Z Code 3.14.4(macOS)。

API 调用示例

自己写脚本或程序调用 Artistic Genius 时参考这一页。接口和 OpenAI、Anthropic 官方格式一致,只要把地址换成 Artistic Genius、密钥换成你的令牌。

接口地址适合的模型
Chat Completionshttps://artistic-genius.vip/v1/chat/completionsGPT、Gemini 等,最通用
Responseshttps://artistic-genius.vip/v1/responsesGPT
Messageshttps://artistic-genius.vip/v1/messagesClaude

令牌的分组要和调用的模型对应:调 GPT 用 GPT 优选分组的令牌,调 Claude 用 Claude 尝鲜分组的令牌,见开始之前。

准备:把令牌放进环境变量

下面的示例都从环境变量 AG_API_KEY 读令牌,代码里不写死。在运行示例的同一个终端里先执行:

export AG_API_KEY="sk-你的令牌"
$env:AG_API_KEY = "sk-你的令牌"

curl 示例用的是 macOS / Linux 的写法,Windows 上建议用 Python 或 Node.js 示例。

Python 示例只用标准库,不用装任何包;Node.js 示例需要 Node.js 18 或更高版本(见 Node.js 环境),保存成 .mjs 文件再用 node 文件名.mjs 运行。三段示例都是流式输出,回答会一个字一个字打出来。

Chat Completions

最通用的格式,大多数第三方库和工具都支持。示例用 gpt-6-sol,换成 gemini-3.8-flash-high 等模型时,令牌也要换成对应分组的。

curl -N https://artistic-genius.vip/v1/chat/completions \
  -H "Authorization: Bearer $AG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-6-sol",
    "stream": true,
    "messages": [{"role": "user", "content": "用一句话介绍你自己"}]
  }'
import json, os, urllib.request

req = urllib.request.Request(
    "https://artistic-genius.vip/v1/chat/completions",
    data=json.dumps({
        "model": "gpt-6-sol",
        "stream": True,
        "messages": [{"role": "user", "content": "用一句话介绍你自己"}],
    }).encode(),
    headers={
        "Authorization": "Bearer " + os.environ["AG_API_KEY"],
        "Content-Type": "application/json",
    },
)
with urllib.request.urlopen(req) as resp:
    for line in resp:
        line = line.decode().strip()
        if not line.startswith("data: ") or line == "data: [DONE]":
            continue
        for choice in json.loads(line[6:])["choices"]:
            print(choice["delta"].get("content") or "", end="", flush=True)
print()
const resp = await fetch("https://artistic-genius.vip/v1/chat/completions", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.AG_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    model: "gpt-6-sol",
    stream: true,
    messages: [{ role: "user", content: "用一句话介绍你自己" }],
  }),
});
if (!resp.ok) throw new Error(`${resp.status} ${await resp.text()}`);

const decoder = new TextDecoder();
let buf = "";
for await (const chunk of resp.body) {
  buf += decoder.decode(chunk, { stream: true });
  const lines = buf.split("\n");
  buf = lines.pop();
  for (let line of lines) {
    line = line.trim();
    if (!line.startsWith("data: ") || line === "data: [DONE]") continue;
    for (const choice of JSON.parse(line.slice(6)).choices) {
      process.stdout.write(choice.delta?.content ?? "");
    }
  }
}
console.log();

Responses

OpenAI 的新一代接口,GPT 模型推荐用它。流式时读 response.output_text.delta 事件里的文字。

curl -N https://artistic-genius.vip/v1/responses \
  -H "Authorization: Bearer $AG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-6-sol",
    "stream": true,
    "input": "用一句话介绍你自己"
  }'
import json, os, urllib.request

req = urllib.request.Request(
    "https://artistic-genius.vip/v1/responses",
    data=json.dumps({
        "model": "gpt-6-sol",
        "stream": True,
        "input": "用一句话介绍你自己",
    }).encode(),
    headers={
        "Authorization": "Bearer " + os.environ["AG_API_KEY"],
        "Content-Type": "application/json",
    },
)
with urllib.request.urlopen(req) as resp:
    for line in resp:
        line = line.decode().strip()
        if not line.startswith("data: "):
            continue
        event = json.loads(line[6:])
        if event["type"] == "response.output_text.delta":
            print(event["delta"], end="", flush=True)
print()
const resp = await fetch("https://artistic-genius.vip/v1/responses", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.AG_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    model: "gpt-6-sol",
    stream: true,
    input: "用一句话介绍你自己",
  }),
});
if (!resp.ok) throw new Error(`${resp.status} ${await resp.text()}`);

const decoder = new TextDecoder();
let buf = "";
for await (const chunk of resp.body) {
  buf += decoder.decode(chunk, { stream: true });
  const lines = buf.split("\n");
  buf = lines.pop();
  for (let line of lines) {
    line = line.trim();
    if (!line.startsWith("data: ")) continue;
    const event = JSON.parse(line.slice(6));
    if (event.type === "response.output_text.delta") process.stdout.write(event.delta);
  }
}
console.log();

Messages(Claude)

Anthropic 官方格式,用 Claude 尝鲜分组的令牌。令牌放在 x-api-key 请求头,max_tokens 必须填。

curl -N https://artistic-genius.vip/v1/messages \
  -H "x-api-key: $AG_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-opus-5-5",
    "max_tokens": 1024,
    "stream": true,
    "messages": [{"role": "user", "content": "用一句话介绍你自己"}]
  }'
import json, os, urllib.request

req = urllib.request.Request(
    "https://artistic-genius.vip/v1/messages",
    data=json.dumps({
        "model": "claude-opus-5-5",
        "max_tokens": 1024,
        "stream": True,
        "messages": [{"role": "user", "content": "用一句话介绍你自己"}],
    }).encode(),
    headers={
        "x-api-key": os.environ["AG_API_KEY"],
        "anthropic-version": "2023-06-01",
        "Content-Type": "application/json",
    },
)
with urllib.request.urlopen(req) as resp:
    for line in resp:
        line = line.decode().strip()
        if not line.startswith("data: "):
            continue
        event = json.loads(line[6:])
        if event["type"] == "content_block_delta" and event["delta"]["type"] == "text_delta":
            print(event["delta"]["text"], end="", flush=True)
print()
const resp = await fetch("https://artistic-genius.vip/v1/messages", {
  method: "POST",
  headers: {
    "x-api-key": process.env.AG_API_KEY,
    "anthropic-version": "2023-06-01",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    model: "claude-opus-5-5",
    max_tokens: 1024,
    stream: true,
    messages: [{ role: "user", content: "用一句话介绍你自己" }],
  }),
});
if (!resp.ok) throw new Error(`${resp.status} ${await resp.text()}`);

const decoder = new TextDecoder();
let buf = "";
for await (const chunk of resp.body) {
  buf += decoder.decode(chunk, { stream: true });
  const lines = buf.split("\n");
  buf = lines.pop();
  for (let line of lines) {
    line = line.trim();
    if (!line.startsWith("data: ")) continue;
    const event = JSON.parse(line.slice(6));
    if (event.type === "content_block_delta" && event.delta.type === "text_delta") {
      process.stdout.write(event.delta.text);
    }
  }
}
console.log();

claude-opus-5-5 会先输出一段思考,再输出正文。示例只打印正文(text_delta),思考内容(thinking_delta)被跳过了。

查令牌余额

curl -s https://artistic-genius.vip/api/usage/token/ \
  -H "Authorization: Bearer $AG_API_KEY"

返回的 data 里:total_used 是已用额度,total_available 是剩余额度,unlimited_quota 表示令牌是否不限额。额度换算成人民币:

¥ = 额度 ÷ 500000 × 7

例如 total_used 是 66860,就是用了约 ¥0.94。

令牌设成「无限额度」时,total_available 会显示成负数,没有参考意义,这时能用多少取决于账户余额,到网站「钱包管理」页查看。

常见问题

现象处理
Python 报 KeyError: 'AG_API_KEY',Node.js 或 curl 报 401 Invalid token没设置环境变量,或者设置和运行不在同一个终端窗口。
报 No available channel for model ... under group ...令牌分组和模型不对应,换成对应分组的令牌。
报「预扣费额度失败」余额不够。每次请求会按 max_tokens(或模型默认最大输出)先预扣一笔,充值或调小 max_tokens。
不用流式时,Claude 回复取到的是思考内容返回的 content 里第一块可能是思考(thinking),要找 type 为 text 的那一块,不能直接取第一个。

实测:2026-09-29,Python 3、Node.js 25.9、curl。