模型定价(Owner 覆盖)
本页介绍如何让主账户(Owner)在系统默认定价之上提供"差量覆盖"。覆盖值通过配置键 PRICING
写入,立即生效;结算优先使用覆盖值,未覆盖部分回退到系统默认(参考文件:pricing.json
)。
端点与鉴权
- 获取当前覆盖:
GET /x-config
(读取configs.PRICING
字段,字符串) - 设置/更新覆盖:
PUT /x-config
(传入PRICING
字段,字符串) - 清空覆盖(恢复默认):
DELETE /x-config
({"keys":["PRICING"]}
)
需使用主账户密钥(isOwner
)。
数据结构(与 pricing.json
一致)
PRICING
是一个 JSON 字符串,解析后整体结构如下(仅需填写“差量”,未填写的字段保留系统默认)。为简洁起见,以下示例仅保留常用字段;如无特殊需要,可忽略 Size*/Find/Page/Query 等高级计费项:
{
"ChatPricing": {
"<model>": {
"CacheWrite": 0,
"CachedText": 0,
"CachedAudio": 0,
"InputText": 0,
"InputAudio": 0,
"InputImage": 0,
"ReasonText": 0,
"OutputText": 0,
"OutputAudio": 0,
"OutputImage": 0,
"Rates": 1
}
},
"ImgPricing": {
"<model>": {
"Call": 0,
"Rates": 1,
"Sizes": {"1024x1024": 0}
}
},
"AudioPricing": {
"<model>": {
"Input": 0,
"InputAudio": 0,
"Output": 0,
"OutputAudio": 0,
"Call": 0,
"Rates": 1
}
},
"CallPricing": {
"<model>": {"Call": 0, "Rates": 1}
},
"RerankPricing": {
"<model>": {"Input": 0, "Call": 0, "Rates": 1}
},
"FineTuningPricing": {
"<base-model>": {"InputText": 0, "OutputText": 0, "Rates": 1}
}
}
字段含义与单位
ChatPricing(对话/通用)常用字段:
InputText
/OutputText
:USD/百万 tokens(输入/输出文本)CachedText
/CacheWrite
:USD/百万 tokens(缓存读取/写入)ReasonText
:USD/百万 tokens(推理过程文本,如 o1 系列)InputAudio
/OutputAudio
:USD/百万等价 tokens(音频输入/输出)InputImage
/OutputImage
:USD/百万等价 tokens(图像输入/输出)CachedAudio
:USD/百万等价 tokens(缓存音频)Rates
:模型级倍率(缺省 1)
ChatPricing 高级字段(仅特定模型,通常不需要设置):
Call
:USD/次(极少数模型如 Perplexity Sonar 系列使用)SizeHigh
/SizeMedium
/SizeLow
:USD(Perplexity Sonar 系列的搜索结果大小计费)Find
/Query
:USD(OpenAI gpt-4o、Anthropic 等的搜索/grounding 功能)Page
:USD/页(Mistral OCR 等按页计费的模型)
其他定价类别:
- ImgPricing(图片生成):
Call
单次调用费用,Sizes
为不同尺寸的单价(USD/张),Rates
倍率 - AudioPricing(语音/音频):
Input
/Output
(USD/1M tokens),InputAudio
/OutputAudio
(USD/1M tokens),Call
(USD/次),Rates
倍率 - RerankPricing(重排/排序):
Input
(USD/1M tokens),Call
(USD/次),Rates
倍率 - CallPricing(纯调用计费):
Call
(USD/次),Rates
倍率 - FineTuningPricing(微调):以基础模型为键(例如
gpt-4o-mini-2024-07-18
),字段同 ChatPricing 常用字段
行为与覆盖范围
- 支持新增模型名(仅对该主账户生效)。
/v1/models
列表仍基于系统默认,不会显示新增项。 - 未设置的字段与模型沿用系统默认;合并后形成“有效定价”。
- 新增模型要能正常调用,请在
MODEL_MAPPER
或LEVEL_MAPPER
中为它配置路由(映射到实际上游模型或所在 Level)。 - 计费按合并后的“有效定价”结算,并叠加用户维度的
Rates/Factor
系数。
示例
- 最小差量(仅调整一个对话模型的输入/输出单价):
my_pricing.json
{
"ChatPricing": {
"gpt-4o": {"InputText": 3.5, "OutputText": 12, "Rates": 1}
}
}
写入(使用 jq 将 JSON 文件转为字符串):
curl -H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-X PUT https://api.xaixapi.com/x-config \
-d "{\"PRICING\": $(jq -Rs . < my_pricing.json)}"
- 覆盖图片尺寸单价(仅改动某些尺寸):
{
"ImgPricing": {
"dall-e-3": {"Sizes": {"1024x1024": 0.05, "1792x1024": 0.10}}
}
}
- 读取与清空:
# 读取当前覆盖(字符串形式)
curl -H "Authorization: Bearer $API_KEY" https://api.xaixapi.com/x-config | jq -r '.configs.PRICING'
# 清空覆盖,恢复系统默认
curl -H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-X DELETE https://api.xaixapi.com/x-config \
-d '{"keys":["PRICING"]}'
校验与限制
- JSON 大小 ≤ 128 KB
- 条目总数(所有板块内模型条数之和)≤ 1024
- 拒绝未知字段(严格模式解析)
- 所有数值必须是有限且非负