开始之前
Artistic Genius 同时提供 OpenAI 兼容和 Anthropic 兼容两种接口。接入任何客户端都只需要两样东西:接入地址和令牌。
接入地址
| 用途 | 地址 |
|---|---|
| OpenAI 兼容(Codex、opencode、自己的脚本) | https://artistic-genius.vip/v1 |
| Anthropic 兼容(Claude Code) | https://artistic-genius.vip(不带 /v1) |
获取令牌
- 登录 artistic-genius.vip,在左侧菜单打开「接入 › API 密钥」。
- 点「创建 API 密钥」,填一个好认的名称。
- 在「分组」里选好分组(见下表),额度按需设置,然后提交。
- 复制
sk-开头的密钥,后面各页的配置里都用它。
令牌等于钱包:不要发给别人,不要贴到截图里,不要提交到 Git。泄露了就在「API 密钥」页删掉重建。
选哪个分组
分组决定这个令牌能用哪些模型、按什么倍率计费。一个令牌只属于一个分组,同时用 Codex 和 Claude Code 就建两个令牌。
| 客户端 | 分组 | 本站默认模型 |
|---|---|---|
| Codex | GPT 优选 | gpt-6-sol |
| Claude Code | Claude 尝鲜 | claude-opus-5-5 |
| opencode | GPT 优选 | gpt-6-sol |
| 智谱 Z Code | Claude 尝鲜 / 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 等配置都保留,只加两处:
- 把下面两行放到文件最上面,任何
[...]段之前。文件顶部原来就有model = ...或model_provider = ...的,直接改那一行,不要重复写,否则 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"
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,或要求登录 ChatGPT | model_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、主题等设置都保留,只改两处:
- 在
"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" } } } - 最外层加一行默认模型;原来就有
"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 格式 | 模型 |
|---|---|---|---|
| Claude | Claude 尝鲜 | Anthropic Messages | claude-opus-5-5、claude-sonnet-5-5 |
| GPT | GPT 优选 | Responses | gpt-6-sol、gpt-6-luna |
| Gemini | Gemini 标准 | Chat Completions | gemini-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 URL | https://artistic-genius.vip/v1 |
| API 格式 | Anthropic Messages (/v1/messages)(默认就是它,不用改) |
| API Key | 你的 sk- 令牌(Claude 尝鲜分组) |
Base URL 一定要带 /v1,这点和 Claude Code 不同:Z Code 只会在后面补 /messages,不带 /v1 就会请求到错误地址。
供应商默认叫「新供应商」,想改名就点右上角「⋯ › 重命名」,比如改成 Artistic Genius。
3. 添加 Claude 模型
点「模型列表」右边的「+ 添加模型」,模型 ID 填 claude-opus-5-5。保持「智能配置」开着,上下文窗口和最大输出会自动填好,点「保存」。
用同样的方法再加一个 claude-sonnet-5-5。填好后左侧供应商名旁的圆点变绿,表示已连通。想再确认,可以点模型行的插头图标「测试模型」。
4. 添加 GPT 供应商和模型
回到「模型设置」,同样点「+ 添加供应商 › 创建自定义供应商」,再建一个供应商,可以重命名为 Artistic Genius GPT:
| 项目 | 填写 |
|---|---|
| Base URL | https://artistic-genius.vip/v1 |
| API 格式 | 改成 Responses (/responses) |
| API Key | 你的 sk- 令牌(GPT 优选分组) |
然后「+ 添加模型」,模型 ID 填 gpt-6-sol。Z Code 还不认识 GPT-6,智能配置只会填一套保守的默认值,要手动改下面几项(改过的项会自动转为手动管理,其他项不受影响):
| 项目 | 改成 |
|---|---|
| 上下文窗口 | 272000 |
| 最大输出 Token | 128000 |
| 输入类型 | 文本之外再勾「图片」「PDF」 |
| 模型能力 | 勾「工具调用」「结构化输出」 |
| 推理等级(从低到高) | 删掉默认的 disabled、enabled,按顺序添加 none、low、medium、high、xhigh、max |
「推理参数映射」保持默认,不用改。保存后用同样的设置再加一个 gpt-6-luna(更便宜,适合简单任务)。
上下文填 272000 是有意的:单次请求超过 272K 就按长上下文价计费,输入价翻倍。Z Code 按这里填的上下文窗口管理对话长度,填这个数能让请求一直停在便宜的那一档。
5. 添加 Gemini 供应商和模型
再建一个供应商,可以重命名为 Artistic Genius Gemini:
| 项目 | 填写 |
|---|---|
| Base URL | https://artistic-genius.vip/v1 |
| API 格式 | 改成 Chat Completions |
| API Key | 你的 sk- 令牌(Gemini 标准分组) |
「+ 添加模型」,模型 ID 填 gemini-3.8-flash-high,手动改下面几项:
| 项目 | 改成 |
|---|---|
| 上下文窗口 | 1000000 |
| 最大输出 Token | 64000 |
| 输入类型 | 全部勾上:图片、视频、音频、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 供应商下的模型)。模型右边的「中」是思考强度,点开可以调,可选档位就是上面给每个模型设的推理等级。
发一句话试试,有回复就说明接好了。想写项目代码,先点输入框上方的「选择项目」打开项目文件夹。
想更快更省,就换成 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 Completions | https://artistic-genius.vip/v1/chat/completions | GPT、Gemini 等,最通用 |
| Responses | https://artistic-genius.vip/v1/responses | GPT |
| Messages | https://artistic-genius.vip/v1/messages | Claude |
令牌的分组要和调用的模型对应:调 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。