@fish-under-sea/magpie-neartoken 0.2.4 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.mjs +104 -37
- package/package.json +1 -1
- package/page/app.js +242 -58
- package/page/groups.js +2 -2
- package/page/icon.svg +3 -27
- package/page/index.html +2 -0
- package/page/latest.js +2 -2
- package/page/market.css +137 -0
- package/page/pricing.js +2 -0
- package/page/version.js +1 -1
package/index.mjs
CHANGED
|
@@ -97,18 +97,41 @@ function text(quota, cur) {
|
|
|
97
97
|
}
|
|
98
98
|
|
|
99
99
|
/** 倍率的写法:0.1 → 0.1,1 → 1。 */
|
|
100
|
-
|
|
101
|
-
return String(Math.round(v * 10000) / 10000)
|
|
102
|
-
}
|
|
100
|
+
const ratioText = (v) => String(Math.round(v * 10000) / 10000)
|
|
103
101
|
|
|
104
|
-
/**
|
|
105
|
-
const
|
|
106
|
-
/** 视频模型的名字词。 */
|
|
107
|
-
const FILMS = ['veo', 'sora', 'kling', 'seedance', 'hailuo', 'vidu', 'pixverse', 'runway', 'luma', 'wan2', 'wanx-video', 'minimax-video', 'movie', 'video', 't2v', 'i2v']
|
|
108
|
-
/** 既不聊也不画不拍的名字。 */
|
|
109
|
-
const SKIP = ['embedding', 'embed-', 'text-embedding', 'tts', 'transcribe', 'asr', 'rerank', 'moderation', 'whisper', 'speech']
|
|
102
|
+
/** ratioOf 是分组倍率,没给就是 0。 */
|
|
103
|
+
const ratioOf = (ratios, name) => (Number(ratios?.[name]) > 0 ? Number(ratios[name]) : 0)
|
|
110
104
|
|
|
111
|
-
|
|
105
|
+
/** 站点自己的约定:带 -c 后缀的模型工具调用不可靠,一律不给。 */
|
|
106
|
+
/**
|
|
107
|
+
* kindOf 按站点给的字段判断一个模型属于哪一类。
|
|
108
|
+
*
|
|
109
|
+
* 站点在 /api/pricing 里已经标好了端点类型和分组名,不需要猜模型名字:
|
|
110
|
+
* image-generation → 生图,openai-video → 视频(omni / sd2.0 / sd2.5 /
|
|
111
|
+
* minimax-h3 都是这一类,名字里一个视频关键词都没有),分组里的 TTS /
|
|
112
|
+
* ASR / Suno → 语音,向量模型分组 → 向量,其余 → 对话。
|
|
113
|
+
*/
|
|
114
|
+
function kindOf(row) {
|
|
115
|
+
const ends = Array.isArray(row?.supported_endpoint_types) ? row.supported_endpoint_types : []
|
|
116
|
+
const groups = Array.isArray(row?.enable_groups) ? row.enable_groups.join(' ') : ''
|
|
117
|
+
const text = (String(row?.model_name || '') + ' ' + groups + ' ' + String(row?.description || '')).toLowerCase()
|
|
118
|
+
if (ends.includes('image-generation')) return 'image'
|
|
119
|
+
if (ends.includes('openai-video') || /(^|[-_])video([-_]|$)|veo|seedance|sora|kling/i.test(text)) return 'video'
|
|
120
|
+
if (/tts|text-to-speech|asr|speech|whisper|suno|audio|语音|转文字/i.test(text)) return 'audio'
|
|
121
|
+
if (/embedding|embed|rerank|向量/i.test(text)) return 'embedding'
|
|
122
|
+
return 'chat'
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/** kindOutput 是 magpie 的 capabilities.output:分区靠它认。 */
|
|
126
|
+
function kindOutput(kind) {
|
|
127
|
+
switch (kind) {
|
|
128
|
+
case 'image': return { image: true, text: true }
|
|
129
|
+
case 'video': return { video: true, text: true }
|
|
130
|
+
case 'audio': return { audio: true, text: true }
|
|
131
|
+
case 'embedding': return { embedding: true, text: true }
|
|
132
|
+
default: return { text: true }
|
|
133
|
+
}
|
|
134
|
+
}
|
|
112
135
|
|
|
113
136
|
/**
|
|
114
137
|
* 目录:把 /api/pricing 展开成 magpie 的模型表。
|
|
@@ -118,22 +141,18 @@ const hasWord = (id, words) => words.some((w) => id.toLowerCase().includes(w))
|
|
|
118
141
|
* 按那一行走那一组——这就是"模型后面跟着它的分组"。
|
|
119
142
|
*/
|
|
120
143
|
async function catalog(disabled = new Set()) {
|
|
121
|
-
// 同时把「全部分组」抄一份给页面:页面在沙箱里发不出网络请求,但能加载自己
|
|
122
|
-
// 目录下的脚本,所以这里写 page/groups.js,模型广场按它重绘。
|
|
123
144
|
const groupsOut = new Map()
|
|
124
145
|
const env = await call('/api/pricing')
|
|
125
146
|
const rows = Array.isArray(env?.data) ? env.data : []
|
|
126
147
|
const refs = env?.group_refs && typeof env.group_refs === 'object' ? env.group_refs : {}
|
|
127
148
|
const ratios = env?.group_ratio && typeof env.group_ratio === 'object' ? env.group_ratio : {}
|
|
149
|
+
// 完整快照给模型广场:页面按它一比一重绘站点 /pricing
|
|
150
|
+
writePricing(env)
|
|
128
151
|
const out = {}
|
|
129
152
|
for (const row of rows) {
|
|
130
153
|
const model = String(row?.model_name ?? '').trim()
|
|
131
|
-
if (!model
|
|
132
|
-
const
|
|
133
|
-
const chat = ends.length === 0 || ends.some((e) => ['openai', 'openai-response', 'anthropic', 'gemini'].includes(e))
|
|
134
|
-
const drawer = hasWord(model, DRAWS) || ends.includes('image-generation')
|
|
135
|
-
const film = hasWord(model, FILMS)
|
|
136
|
-
if (!chat && !drawer && !film) continue
|
|
154
|
+
if (!model) continue
|
|
155
|
+
const kind = kindOf(row)
|
|
137
156
|
const all = Array.isArray(row?.enable_groups) && row.enable_groups.length ? row.enable_groups : ['']
|
|
138
157
|
// 先按「全部分组」计数(关掉的也算),模型广场要显示它有多少个模型
|
|
139
158
|
for (const raw of all) {
|
|
@@ -147,7 +166,7 @@ async function catalog(disabled = new Set()) {
|
|
|
147
166
|
for (const raw of groups) {
|
|
148
167
|
const group = String(raw ?? '').trim()
|
|
149
168
|
const ref = group && refs[group] ? String(refs[group]) : ''
|
|
150
|
-
const ratio =
|
|
169
|
+
const ratio = ratioOf(ratios, group)
|
|
151
170
|
const id = ref ? `${ref}::${model}` : model
|
|
152
171
|
const label = group ? (ratio > 0 ? `${group} ${ratioText(ratio)}x` : group) + ' · ' + model : model
|
|
153
172
|
out[id] = {
|
|
@@ -158,35 +177,91 @@ async function catalog(disabled = new Set()) {
|
|
|
158
177
|
output: Number(row?.max_tokens) > 0 ? Number(row.max_tokens) : 0,
|
|
159
178
|
},
|
|
160
179
|
...(ref ? { headers: { 'x-neartoken-group': ref } } : {}),
|
|
180
|
+
// 站点自己的分类,交给 magpie 的四个分区(图像/视频/语音/向量)
|
|
181
|
+
...(kind === 'chat' ? {} : { kind }),
|
|
161
182
|
capabilities: {
|
|
162
183
|
toolcall: true,
|
|
163
|
-
|
|
164
|
-
...(film ? { output: { video: true, text: true } } : {}),
|
|
184
|
+
output: kindOutput(kind),
|
|
165
185
|
},
|
|
166
186
|
}
|
|
167
187
|
}
|
|
168
188
|
}
|
|
169
189
|
writeGroups([...groupsOut.values()].map((g) => ({
|
|
170
190
|
...g,
|
|
171
|
-
ratio:
|
|
191
|
+
ratio: ratioOf(ratios, g.name),
|
|
172
192
|
ref: refs[g.name] ? String(refs[g.name]) : '',
|
|
173
193
|
})).sort((a, b) => a.name.localeCompare(b.name, 'zh')))
|
|
174
194
|
return out
|
|
175
195
|
}
|
|
176
196
|
|
|
177
197
|
/**
|
|
178
|
-
* writeGroups 把分组表写成 page/groups.js
|
|
198
|
+
* writeGroups 把分组表写成 page/groups.js;writePricing 把整份站点目录写成
|
|
199
|
+
* page/pricing.js,给沙箱里的页面用。
|
|
179
200
|
*
|
|
180
201
|
* 页面发不出网络请求(CSP connect-src 'none'),但能加载自己目录下的脚本,
|
|
181
|
-
*
|
|
182
|
-
*
|
|
202
|
+
* 所以这里不推数据、只落文件:`<script src="pricing.js?t=…">` 一引就有。
|
|
203
|
+
* 写不进去(插件目录只读)就跳过,页面用包内那份静态快照。
|
|
183
204
|
*/
|
|
205
|
+
function writeGroups(groups) {
|
|
206
|
+
try {
|
|
207
|
+
const js = 'self.NEARTOKEN_GROUPS = ' + JSON.stringify(groups) + '\nself.NEARTOKEN_GROUPS_AT = ' + Date.now() + '\n'
|
|
208
|
+
writeFileSync(join(here, 'page', 'groups.js'), js, 'utf8')
|
|
209
|
+
} catch {
|
|
210
|
+
/* 只读安装:页面自己会说没拿到明细 */
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
|
|
184
214
|
/**
|
|
185
|
-
*
|
|
186
|
-
*
|
|
187
|
-
* 页面自己查不了(沙箱禁联网),但插件能:这里顺手问一次 registry,页面
|
|
188
|
-
* 「检查更新」时加载这个脚本就知道新不新。一分钟内不重复问。
|
|
215
|
+
* writePricing 把 /api/pricing 原样裁成模型广场需要的形状,写成 page/pricing.js。
|
|
216
|
+
* 与包内那份静态快照同形状,页面优先用这份(实时),静态那份只是首次兜底。
|
|
189
217
|
*/
|
|
218
|
+
function writePricing(env) {
|
|
219
|
+
try {
|
|
220
|
+
const keep = ['description', 'tags', 'icon', 'vendor_id', 'enable_groups', 'supported_endpoint_types',
|
|
221
|
+
'model_ratio', 'model_price', 'completion_ratio', 'cache_ratio', 'create_cache_ratio',
|
|
222
|
+
'quota_type', 'billing_mode', 'billing_expr', 'context_window', 'max_tokens',
|
|
223
|
+
'input_modalities', 'reasoning_levels']
|
|
224
|
+
// 包内快照里带了一批站点 /pricing 页面的描述与运行状态(/api/pricing 没给)。
|
|
225
|
+
// 实时刷新时把它们并回来,别让刷新把首屏说明冲掉。
|
|
226
|
+
const extra = new Map()
|
|
227
|
+
try {
|
|
228
|
+
const old = readFileSync(join(here, 'page', 'pricing.js'), 'utf8')
|
|
229
|
+
const raw = old.slice(old.indexOf('=') + 1).trim().replace(/;\s*$/, '')
|
|
230
|
+
const prev = JSON.parse(raw)
|
|
231
|
+
for (const m of prev?.models || []) {
|
|
232
|
+
const x = {}
|
|
233
|
+
for (const k of ['description', 'status', 'latency', 'throughput']) if (m[k] !== undefined) x[k] = m[k]
|
|
234
|
+
if (Object.keys(x).length) extra.set(m.name, x)
|
|
235
|
+
}
|
|
236
|
+
} catch { /* 没有旧快照就只用 API 字段 */ }
|
|
237
|
+
const models = (Array.isArray(env?.data) ? env.data : []).map((m) => {
|
|
238
|
+
const name = String(m?.model_name ?? '')
|
|
239
|
+
const o = { name }
|
|
240
|
+
for (const k of keep) if (m[k] !== undefined && m[k] !== null && m[k] !== '') o[k] = m[k]
|
|
241
|
+
// API 里没有 description 时,用页面快照里的那段说明
|
|
242
|
+
if (!o.description && extra.get(name)?.description) o.description = extra.get(name).description
|
|
243
|
+
return Object.assign(o, extra.get(name) || {})
|
|
244
|
+
})
|
|
245
|
+
const snap = {
|
|
246
|
+
at: Date.now(),
|
|
247
|
+
source: 'https://neartoken.cc/api/pricing',
|
|
248
|
+
version: env?.pricing_version ?? '',
|
|
249
|
+
models,
|
|
250
|
+
groups: env?.group_ratio ?? {},
|
|
251
|
+
refs: env?.group_refs ?? {},
|
|
252
|
+
notes: env?.usable_group ?? {},
|
|
253
|
+
auto: env?.auto_groups ?? [],
|
|
254
|
+
vendors: env?.vendors ?? [],
|
|
255
|
+
endpoints: env?.supported_endpoint ?? {},
|
|
256
|
+
}
|
|
257
|
+
writeFileSync(join(here, 'page', 'pricing.js'),
|
|
258
|
+
'// 由插件运行时从 /api/pricing 写入\nself.NEARTOKEN_PRICING = ' + JSON.stringify(snap) + '\n', 'utf8')
|
|
259
|
+
} catch {
|
|
260
|
+
/* 只读安装:用包内静态快照 */
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
/** stampLatest 把 npm 上的最新版本写进 page/latest.js,一分钟内不重复问。 */
|
|
190
265
|
let latestAskedAt = 0
|
|
191
266
|
async function stampLatest() {
|
|
192
267
|
if (Date.now() - latestAskedAt < 60_000) return
|
|
@@ -208,14 +283,6 @@ async function stampLatest() {
|
|
|
208
283
|
/* 问不到就保持原样:页面会说「没查到」 */
|
|
209
284
|
}
|
|
210
285
|
}
|
|
211
|
-
function writeGroups(groups) {
|
|
212
|
-
try {
|
|
213
|
-
const js = 'self.NEARTOKEN_GROUPS = ' + JSON.stringify(groups) + '\nself.NEARTOKEN_GROUPS_AT = ' + Date.now() + '\n'
|
|
214
|
-
writeFileSync(join(here, 'page', 'groups.js'), js, 'utf8')
|
|
215
|
-
} catch {
|
|
216
|
-
/* 只读安装:页面自己会说没拿到明细 */
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
286
|
|
|
220
287
|
export default async function neartoken(input, options) {
|
|
221
288
|
// 页面写进来的开关:关掉的分组,它们的模型不再出现在 magpie 的列表里。
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fish-under-sea/magpie-neartoken",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "NearToken for magpie: a provider whose sign-in is the site's own device authorization, models listed per billing group with their multiplier, balance and vouchers on magpie's usage card, plus a page for spending and top-ups.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "index.mjs",
|
package/page/app.js
CHANGED
|
@@ -219,9 +219,8 @@
|
|
|
219
219
|
if (key !== 'home' && view.configured && !windows.has(span)) {
|
|
220
220
|
call('neartoken:usage', { range: span }).then((w) => { windows.set(span, w); render() }).catch(showError)
|
|
221
221
|
}
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
}
|
|
222
|
+
// 模型广场的数据在 page/pricing.js(包内快照 + 插件运行时覆盖),
|
|
223
|
+
// 页面加载时就已就位,不需要再动态取。
|
|
225
224
|
},
|
|
226
225
|
}, label)))
|
|
227
226
|
}
|
|
@@ -421,68 +420,253 @@
|
|
|
421
420
|
await loadGroups(true)
|
|
422
421
|
render()
|
|
423
422
|
}
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
423
|
+
// ---------- 模型广场:一比一复刻 neartoken.cc/pricing ----------
|
|
424
|
+
|
|
425
|
+
let marketQuery = ''
|
|
426
|
+
let marketGroup = ''
|
|
427
|
+
let marketKind = 'all'
|
|
428
|
+
let marketUnit = 'M'
|
|
429
|
+
let marketMode = 'standard'
|
|
430
|
+
let marketSort = 'default'
|
|
431
|
+
let marketLayout = 'grid'
|
|
432
|
+
const marketVendors = new Set()
|
|
433
|
+
const MARKET_KINDS = [['all', '全部'], ['chat', '对话'], ['image', '生图'], ['video', '视频'], ['audio', '语音'], ['embedding', '向量']]
|
|
434
|
+
|
|
435
|
+
/** pricing 是包内静态快照(插件运行时会把实时目录覆盖进同一个文件)。 */
|
|
436
|
+
function pricing() {
|
|
437
|
+
const p = self.NEARTOKEN_PRICING
|
|
438
|
+
return p && Array.isArray(p.models) && p.models.length ? p : null
|
|
434
439
|
}
|
|
435
|
-
const BUCKET_ORDER = ['低价', '满血', '图片', '视频', '语音', '向量', '其他']
|
|
436
440
|
|
|
437
|
-
/**
|
|
438
|
-
function
|
|
439
|
-
const
|
|
440
|
-
const
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
if (
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
441
|
+
/** marketKindOf 与 index.mjs 的分类同源:按站点端点判,不猜名字。 */
|
|
442
|
+
function marketKindOf(m) {
|
|
443
|
+
const ends = m?.supported_endpoint_types || []
|
|
444
|
+
const text = [m?.name, (m?.enable_groups || []).join(' '), m?.description].join(' ').toLowerCase()
|
|
445
|
+
if (ends.includes('image-generation')) return 'image'
|
|
446
|
+
if (ends.includes('openai-video') || /(^|[-_])video([-_]|$)|veo|seedance|sora|kling/i.test(text)) return 'video'
|
|
447
|
+
if (/tts|text-to-speech|asr|speech|whisper|suno|audio|语音|转文字/i.test(text)) return 'audio'
|
|
448
|
+
if (/embedding|embed|rerank|向量/i.test(text)) return 'embedding'
|
|
449
|
+
return 'chat'
|
|
450
|
+
}
|
|
451
|
+
|
|
452
|
+
function vendorOf(id) {
|
|
453
|
+
const v = (pricing()?.vendors || []).find((x) => String(x.id) === String(id))
|
|
454
|
+
return v ? v.name : '其他'
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
/** groupBadge 把 [低价][满血] Claude 原生 拆成站点那种彩色小标签。 */
|
|
458
|
+
function groupBadge(name) {
|
|
459
|
+
const parts = String(name || '').match(/\[[^\]]+\]/g) || []
|
|
460
|
+
const rest = String(name || '').replace(/\[[^\]]+\]/g, '').trim()
|
|
461
|
+
const words = parts.map((p) => p.slice(1, -1))
|
|
462
|
+
const colorOf = (w) => {
|
|
463
|
+
if (/低价|反重力|神秘|自有|国模/i.test(w)) return 'green'
|
|
464
|
+
if (/满血|原生|特惠/i.test(w)) return 'red'
|
|
465
|
+
if (/促销|生图|Kiro|灵车/i.test(w)) return 'pink'
|
|
466
|
+
if (/备用|官Key|官key|CC|Argon|GPT Pro|视频|向量/i.test(w)) return 'blue'
|
|
467
|
+
return 'plain'
|
|
451
468
|
}
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
469
|
+
return el('span', { class: 'gb' },
|
|
470
|
+
words.map((w) => el('span', { class: 'gb-tag ' + colorOf(w), text: w })),
|
|
471
|
+
rest ? el('span', { class: 'gb-rest', text: rest }) : null)
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
/**
|
|
475
|
+
* priceOf 反推站点卡片上的价格:
|
|
476
|
+
* 计费表达式里 p/c/cr 的系数 × 该模型最低分组倍率(站点按最低档展示)。
|
|
477
|
+
* 没有表达式(按量计费)时系数 = model_ratio × 2、× completion_ratio、× cache_ratio。
|
|
478
|
+
* 逐个与站点 SSR 卡片核对过:gpt-6-astra ¥2/¥10/¥0.2、claude-sonnet-5-5
|
|
479
|
+
* ¥3/¥15/¥0.15、glm-5.3 ¥2/¥7/¥0.5、gpt-6.1-terra ¥0.26/¥1.3/¥0.013。
|
|
480
|
+
*/
|
|
481
|
+
function priceOf(m) {
|
|
482
|
+
const expr = String(m?.billing_expr || '')
|
|
483
|
+
const coef = (v) => { const x = expr.match(new RegExp('\\b' + v + '\\s*\\*\\s*([\\d.]+)')); return x ? Number(x[1]) : null }
|
|
484
|
+
const ratios = (m?.enable_groups || []).map((g) => Number(pricing()?.groups?.[g])).filter((v) => v > 0)
|
|
485
|
+
const min = ratios.length ? Math.min(...ratios) : 1
|
|
486
|
+
// 生图/音乐这类按次计费:表达式里是 fixed(单价) × 张数,不是 token 系数
|
|
487
|
+
const fixed = expr.match(/fixed\(\s*([\d.]+)\s*\)/)
|
|
488
|
+
if (fixed) return { perCall: Number(fixed[1]) * min, perLabel: '张', tiered: true }
|
|
489
|
+
if (Number(m?.quota_type) === 1 && Number(m?.model_price) > 0) {
|
|
490
|
+
return { perCall: Number(m.model_price), perLabel: '次', tiered: false }
|
|
457
491
|
}
|
|
458
|
-
const
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
492
|
+
const p0 = coef('p') ?? (Number(m?.model_ratio) || 0) * 2
|
|
493
|
+
const c0 = coef('c') ?? p0 * (Number(m?.completion_ratio) || 0)
|
|
494
|
+
const r0 = coef('cr') ?? p0 * (Number(m?.cache_ratio) || 0)
|
|
495
|
+
return { input: p0 * min, output: c0 * min, cache: r0 * min, tiered: !!expr }
|
|
496
|
+
}
|
|
497
|
+
|
|
498
|
+
/** money 是价格写法:¥2、¥0.02;/1K 时把每 1M 的价除以 1000。 */
|
|
499
|
+
function money(v, unit) {
|
|
500
|
+
const x = unit === 'K' ? v / 1000 : v
|
|
501
|
+
if (!x) return '¥0'
|
|
502
|
+
const s = String(Math.round(x * 1e8) / 1e8)
|
|
503
|
+
return '¥' + s
|
|
504
|
+
}
|
|
505
|
+
|
|
506
|
+
/** modelCard 是站点那张卡:厂商、描述、计费、三档价格、分组、端点、状态、详情。 */
|
|
507
|
+
function modelCard(m) {
|
|
508
|
+
const p = priceOf(m)
|
|
509
|
+
const ends = (m?.supported_endpoint_types || []).join(', ')
|
|
510
|
+
const groups = m?.enable_groups || []
|
|
511
|
+
const shownGroups = groups.slice(0, 2)
|
|
512
|
+
const more = groups.length - shownGroups.length
|
|
513
|
+
const kind = marketKindOf(m)
|
|
514
|
+
const priceRow = p.perCall !== undefined
|
|
515
|
+
? el('div', { class: 'mc-prices one' },
|
|
516
|
+
el('div', null, el('span', { text: '按次计费' }), el('b', { text: money(p.perCall, 'M') + ' / ' + p.perLabel })))
|
|
517
|
+
: el('div', { class: 'mc-prices' },
|
|
518
|
+
el('div', null, el('span', { text: '输入' }), el('b', { text: money(p.input, marketUnit) + ' / 1' + marketUnit })),
|
|
519
|
+
el('div', null, el('span', { text: '输出' }), el('b', { text: money(p.output, marketUnit) + ' / 1' + marketUnit })),
|
|
520
|
+
el('div', null, el('span', { text: '缓存读取' }), el('b', { text: money(p.cache, marketUnit) + ' / 1' + marketUnit })))
|
|
521
|
+
const hasStatus = m.status !== undefined && m.status !== null
|
|
522
|
+
const bars = el('span', { class: 'mc-bar' }, Array.from({ length: 10 }, (_, i) =>
|
|
523
|
+
el('i', { class: hasStatus ? (i < Math.round((Number(m.status) || 0) / 10) ? 'ok' : 'bad') : '' })))
|
|
524
|
+
return el('article', { class: 'mc' + (kind !== 'chat' ? ' mc-' + kind : '') },
|
|
525
|
+
el('div', { class: 'mc-head' },
|
|
526
|
+
el('span', { class: 'mc-vicon', text: vendorOf(m.vendor_id).slice(0, 1) }),
|
|
527
|
+
el('div', { class: 'grow' },
|
|
528
|
+
el('div', { class: 'mc-name', text: m.name }),
|
|
529
|
+
el('div', { class: 'mc-vendor', text: vendorOf(m.vendor_id) })),
|
|
530
|
+
el('button', { class: 'mc-copy', title: '复制模型 ID', onclick: () => copy(m.name) }, '⧉')),
|
|
531
|
+
el('p', { class: 'mc-desc', text: m.description || '暂无描述。' }),
|
|
532
|
+
el('div', { class: 'mc-billing ' + (p.tiered ? 'dyn' : 'flat'), text: p.tiered ? '动态计费' : '按量计费' }),
|
|
533
|
+
priceRow,
|
|
534
|
+
el('div', { class: 'mc-line' },
|
|
535
|
+
el('span', { class: 'k', text: '分组' }),
|
|
536
|
+
shownGroups.map((g) => groupBadge(g)),
|
|
537
|
+
more > 0 ? el('span', { class: 'mc-more', text: '+' + more }) : null),
|
|
538
|
+
el('div', { class: 'mc-line' },
|
|
539
|
+
el('span', { class: 'k', text: '端点' }),
|
|
540
|
+
el('span', { class: 'v', text: ends || '—' })),
|
|
541
|
+
el('div', { class: 'mc-stats' },
|
|
542
|
+
el('span', null, el('span', { class: 'k', text: '状态' }),
|
|
543
|
+
el('span', { class: 'v', text: hasStatus ? Number(m.status).toFixed(2) + '%' : '—' })),
|
|
544
|
+
bars,
|
|
545
|
+
el('span', null, el('span', { class: 'k', text: '延迟' }),
|
|
546
|
+
el('span', { class: 'v', text: m.latency || '—s' })),
|
|
547
|
+
el('span', null, el('span', { class: 'k', text: '吞吐' }),
|
|
548
|
+
el('span', { class: 'v', text: m.throughput || '—t/s' }))),
|
|
549
|
+
el('div', { class: 'mc-foot' },
|
|
550
|
+
el('a', { class: 'link', href: 'https://neartoken.cc/pricing', target: '_blank', rel: 'noreferrer' }, '详情 ›')))
|
|
551
|
+
}
|
|
552
|
+
|
|
553
|
+
/** 站点 /pricing 首屏的推荐顺序(抓自它的服务端渲染),默认排序时置顶。 */
|
|
554
|
+
const SITE_FIRST = ['gpt-6-astra', 'gpt-6.1-sol', 'gpt-6-sol', 'gpt-6.1-terra', 'gpt-6-luna',
|
|
555
|
+
'claude-fable-5-1', 'claude-fable-5', 'claude-opus-5-5', 'claude-opus-5',
|
|
556
|
+
'claude-sonnet-5-5', 'claude-sonnet-5', 'glm-5.3']
|
|
557
|
+
|
|
558
|
+
/** filteredModels 把搜索、分组、类型、厂商筛选叠起来。 */
|
|
559
|
+
function filteredModels() {
|
|
560
|
+
const p = pricing()
|
|
561
|
+
if (!p) return []
|
|
562
|
+
let list = p.models.slice()
|
|
563
|
+
if (marketSort !== 'latest') {
|
|
564
|
+
// 默认按站点首屏顺序置顶,其余保持目录原序
|
|
565
|
+
list.sort((a, b) => {
|
|
566
|
+
const ia = SITE_FIRST.indexOf(a.name), ib = SITE_FIRST.indexOf(b.name)
|
|
567
|
+
if (ia !== -1 || ib !== -1) return (ia === -1 ? 999 : ia) - (ib === -1 ? 999 : ib)
|
|
568
|
+
return 0
|
|
569
|
+
})
|
|
466
570
|
}
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
571
|
+
if (marketGroup) list = list.filter((m) => (m.enable_groups || []).includes(marketGroup))
|
|
572
|
+
if (marketKind !== 'all') list = list.filter((m) => marketKindOf(m) === marketKind)
|
|
573
|
+
if (marketVendors.size) list = list.filter((m) => marketVendors.has(String(m.vendor_id)))
|
|
574
|
+
const q = marketQuery.trim().toLowerCase()
|
|
575
|
+
if (q) list = list.filter((m) => [m.name, vendorOf(m.vendor_id), m.description, m.tags,
|
|
576
|
+
(m.enable_groups || []).join(' '), (m.supported_endpoint_types || []).join(' ')].join(' ').toLowerCase().includes(q))
|
|
577
|
+
if (marketSort === 'latest') list = list.slice().reverse()
|
|
578
|
+
return list
|
|
472
579
|
}
|
|
473
580
|
|
|
474
|
-
/**
|
|
475
|
-
function
|
|
476
|
-
const
|
|
477
|
-
const
|
|
478
|
-
|
|
479
|
-
const
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
581
|
+
/** refreshMarketList 只重画右侧列表,不整页 render(保住搜索框焦点)。 */
|
|
582
|
+
function refreshMarketList() {
|
|
583
|
+
const box = $('market-list')
|
|
584
|
+
const count = $('market-count')
|
|
585
|
+
if (!box) return
|
|
586
|
+
const list = filteredModels()
|
|
587
|
+
if (count) count.textContent = list.length + ' 个模型'
|
|
588
|
+
box.className = 'model-grid' + (marketLayout === 'list' ? ' as-list' : '')
|
|
589
|
+
box.replaceChildren(...(list.length ? list.map(modelCard) : [el('p', { class: 'note', text: '没有符合条件的模型。' })]))
|
|
590
|
+
}
|
|
591
|
+
|
|
592
|
+
/** marketCard 是广场整页:顶部工具条 + 左筛选 + 右卡片网格。 */
|
|
593
|
+
function marketCard() {
|
|
594
|
+
const p = pricing()
|
|
595
|
+
const groups = Object.keys(p?.groups || {}).sort((a, b) => (p.groups[a] - p.groups[b]) || a.localeCompare(b, 'zh'))
|
|
596
|
+
const vendors = (p?.vendors || []).slice().sort((a, b) => String(a.name).localeCompare(String(b.name), 'zh'))
|
|
597
|
+
const search = el('input', {
|
|
598
|
+
class: 'market-search', type: 'search', placeholder: '搜索模型名称、供应商、端点或标签...',
|
|
599
|
+
value: marketQuery,
|
|
600
|
+
oninput: (e) => { marketQuery = e.target.value; refreshMarketList() },
|
|
601
|
+
})
|
|
602
|
+
const seg = (items, cur, onPick) => el('div', { class: 'market-seg' },
|
|
603
|
+
items.map(([k, label]) => el('button', {
|
|
604
|
+
'aria-pressed': String(cur === k), onclick: () => { onPick(k); render() },
|
|
605
|
+
}, label)))
|
|
606
|
+
const tools = el('div', { class: 'market-tools' },
|
|
607
|
+
seg([['standard', '标准'], ['topup', '充值']], marketMode, (k) => { marketMode = k }),
|
|
608
|
+
seg([['M', '/1M'], ['K', '/1K']], marketUnit, (k) => { marketUnit = k }),
|
|
609
|
+
el('button', { class: 'market-tool' + (marketSort === 'latest' ? ' on' : ''), onclick: () => { marketSort = marketSort === 'latest' ? 'default' : 'latest'; refreshMarketList() } }, '↑ 最新版本'),
|
|
610
|
+
el('div', { class: 'market-seg' },
|
|
611
|
+
el('button', { 'aria-pressed': String(marketLayout === 'grid'), title: '网格', onclick: () => { marketLayout = 'grid'; refreshMarketList() } }, '▦'),
|
|
612
|
+
el('button', { 'aria-pressed': String(marketLayout === 'list'), title: '列表', onclick: () => { marketLayout = 'list'; refreshMarketList() } }, '☰')))
|
|
613
|
+
const groupChips = el('div', { class: 'market-chips' },
|
|
614
|
+
el('button', {
|
|
615
|
+
class: 'market-chip' + (!marketGroup ? ' on' : ''), onclick: () => { marketGroup = ''; render() },
|
|
616
|
+
}, '所有分组'),
|
|
617
|
+
groups.map((g) => {
|
|
618
|
+
const ratio = Number(p.groups[g]) || 0
|
|
619
|
+
const on = !disabledGroups.has(g)
|
|
620
|
+
return el('div', { class: 'market-chip-wrap' + (marketGroup === g ? ' on' : '') },
|
|
621
|
+
el('button', {
|
|
622
|
+
class: 'market-chip',
|
|
623
|
+
title: '按这个分组筛选',
|
|
624
|
+
onclick: () => { marketGroup = marketGroup === g ? '' : g; render() },
|
|
625
|
+
}, groupBadge(g), ratio > 0 ? el('span', { class: 'ratio', text: 'x' + ratioText(ratio) }) : null),
|
|
626
|
+
el('button', {
|
|
627
|
+
class: 'chip-toggle' + (on ? ' on' : ''),
|
|
628
|
+
'aria-pressed': String(on),
|
|
629
|
+
title: on ? '禁用这个分组(模型不再进 magpie)' : '启用这个分组',
|
|
630
|
+
onclick: () => toggleGroup(g),
|
|
631
|
+
}, on ? '●' : '○'))
|
|
632
|
+
}))
|
|
633
|
+
const kinds = el('div', { class: 'market-chips' },
|
|
634
|
+
MARKET_KINDS.map(([k, label]) => el('button', {
|
|
635
|
+
class: 'market-chip' + (marketKind === k ? ' on' : ''),
|
|
636
|
+
onclick: () => { marketKind = k; render() },
|
|
637
|
+
}, label)))
|
|
638
|
+
const vendorChips = el('div', { class: 'market-chips' },
|
|
639
|
+
vendors.map((v) => el('button', {
|
|
640
|
+
class: 'market-chip' + (marketVendors.has(String(v.id)) ? ' on' : ''),
|
|
641
|
+
onclick: () => {
|
|
642
|
+
const id = String(v.id)
|
|
643
|
+
if (marketVendors.has(id)) marketVendors.delete(id)
|
|
644
|
+
else marketVendors.add(id)
|
|
645
|
+
render()
|
|
646
|
+
},
|
|
647
|
+
}, v.name)))
|
|
648
|
+
const aside = el('aside', { class: 'market-aside' },
|
|
649
|
+
el('div', { class: 'ma-head' },
|
|
650
|
+
el('h3', { text: '筛选' }),
|
|
651
|
+
el('button', { class: 'link', onclick: () => { marketQuery = ''; marketGroup = ''; marketKind = 'all'; marketVendors.clear(); render() } }, '↺ 重置')),
|
|
652
|
+
el('p', { class: 'note', text: '按供应商、分组、类型和标签细化搜索模型。' }),
|
|
653
|
+
el('h4', { text: '分组' }), groupChips,
|
|
654
|
+
el('h4', { text: '类型' }), kinds,
|
|
655
|
+
el('h4', { text: '供应商' }), vendorChips)
|
|
656
|
+
const off = disabledGroups.size
|
|
657
|
+
const body = el('div', { class: 'market-body' },
|
|
658
|
+
aside,
|
|
659
|
+
el('div', { class: 'market-main' },
|
|
660
|
+
el('div', { class: 'market-count', id: 'market-count', text: (p?.models?.length || 0) + ' 个模型' }),
|
|
661
|
+
el('div', { class: 'model-grid', id: 'market-list' }),
|
|
662
|
+
off ? el('p', { class: 'note', text: '已禁用 ' + off + ' 个分组,点分组右侧的小圆点可启用。' })
|
|
663
|
+
: el('p', { class: 'note', text: '点分组名按它筛选;点右侧小圆点禁用/启用分组,被禁用的模型不再进 magpie。' })))
|
|
664
|
+
const wrap = el('section', { class: 'market' },
|
|
665
|
+
el('div', { class: 'market-top' }, search, tools),
|
|
666
|
+
body)
|
|
667
|
+
// 首帧填一次列表
|
|
668
|
+
queueMicrotask(refreshMarketList)
|
|
669
|
+
return wrap
|
|
486
670
|
}
|
|
487
671
|
|
|
488
672
|
/** 使用日志:这个窗口里每个模型花了多少、用了多少 token。 */
|
package/page/groups.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
self.
|
|
1
|
+
self.NEARTOKEN_GROUPS = [{"name":"[低价] 灵车 K3.1 Pro 专用","ratio":0.3,"models":1,"ref":"#49"},{"name":"[低价] 神秘折扣模型","ratio":0.12,"models":7,"ref":"#24"},{"name":"[低价] 视频分组","ratio":1.5,"models":3,"ref":"#31"},{"name":"[低价] 语音合成 TTS","ratio":0.3,"models":5,"ref":"#35"},{"name":"[低价] 语音转文字 ASR","ratio":1,"models":1,"ref":"#27"},{"name":"[低价] DeepSeek","ratio":0.4,"models":3,"ref":"#16"},{"name":"[低价] GPT 福利","ratio":0.2,"models":6,"ref":"#56"},{"name":"[低价] Grok","ratio":0.1,"models":13,"ref":"#37"},{"name":"[低价] Seedance","ratio":1,"models":2,"ref":"#19"},{"name":"[低价][备用] GPT Pro","ratio":0.3,"models":8,"ref":"#13"},{"name":"[低价][促销] GPT Image","ratio":0.5,"models":2,"ref":"#39"},{"name":"[低价][反重力] Gemini","ratio":0.5,"models":18,"ref":"#5"},{"name":"[低价][满血] 国模","ratio":0.6,"models":9,"ref":"#6"},{"name":"[低价][满血] Claude 特惠","ratio":1.1,"models":6,"ref":"#22"},{"name":"[低价][满血] Claude 原生","ratio":1.5,"models":6,"ref":"#61"},{"name":"[低价][满血] DeepSeek 1017","ratio":0.5,"models":2,"ref":"#38"},{"name":"[低价][满血] GPT Pro 2","ratio":0.26,"models":8,"ref":"#14"},{"name":"[低价][满血][自有] GLM 官方","ratio":0.25,"models":2,"ref":"#17"},{"name":"[低价][生图] 生图特惠","ratio":0.2,"models":14,"ref":"#9"},{"name":"[低价][Kiro] 高智企业 Claude","ratio":1,"models":6,"ref":"#42"},{"name":"[官key] GPT","ratio":0.9,"models":5,"ref":"#28"},{"name":"[满血] Argon 专用","ratio":1,"models":1,"ref":"#47"},{"name":"[满血] CC 不降智精选","ratio":1.8,"models":10,"ref":"#7"},{"name":"[满血] GPT 不降智精选","ratio":0.35,"models":8,"ref":"#2"},{"name":"[满血] GPT Pro 500 高速","ratio":0.5,"models":2,"ref":"#57"},{"name":"[满血] Kimi K3.1 Pro 专用","ratio":0.6,"models":1,"ref":"#48"},{"name":"[满血] Suno","ratio":1,"models":5,"ref":"#67"},{"name":"[满血][官Key] DeepSeek","ratio":0.8,"models":2,"ref":"#15"},{"name":"[满血][官Key] Gemini","ratio":2,"models":6,"ref":"#8"},{"name":"[生图] Gemini","ratio":1,"models":7,"ref":"#29"},{"name":"[生图] GPT Image","ratio":1,"models":2,"ref":"#4"},{"name":"[AIS] Gemini 向量模型","ratio":1,"models":3,"ref":"#34"}]
|
|
2
|
+
self.NEARTOKEN_GROUPS_AT = 1793773919667
|
package/page/icon.svg
CHANGED
|
@@ -1,28 +1,4 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
<stop offset="0" stop-color="#FFEFB8"/>
|
|
5
|
-
<stop offset="55%" stop-color="#FFD166"/>
|
|
6
|
-
<stop offset="100%" stop-color="#FFA63A"/>
|
|
7
|
-
</radialGradient>
|
|
8
|
-
<linearGradient id="leaf" x1="0" y1="0" x2="1" y2="1">
|
|
9
|
-
<stop offset="0" stop-color="#A9EBC6"/>
|
|
10
|
-
<stop offset="100%" stop-color="#39A377"/>
|
|
11
|
-
</linearGradient>
|
|
12
|
-
</defs>
|
|
13
|
-
<!-- 叶与梗 -->
|
|
14
|
-
<path d="M128 66c-4-19 6-31 26-35 3 19-7 31-26 35z" fill="url(#leaf)" stroke="#2B7F5C" stroke-width="7" stroke-linejoin="round"/>
|
|
15
|
-
<path d="M125 74c2-9 2-16 1-23" stroke="#2B7F5C" stroke-width="8" stroke-linecap="round" fill="none"/>
|
|
16
|
-
<!-- 果身 -->
|
|
17
|
-
<circle cx="128" cy="152" r="82" fill="url(#body)" stroke="#FFF8E9" stroke-width="10"/>
|
|
18
|
-
<!-- 脸 -->
|
|
19
|
-
<ellipse cx="104" cy="150" rx="7.5" ry="9" fill="#4A3B2A"/>
|
|
20
|
-
<ellipse cx="152" cy="150" rx="7.5" ry="9" fill="#4A3B2A"/>
|
|
21
|
-
<circle cx="101.5" cy="147" r="2.4" fill="#FFFDF4"/>
|
|
22
|
-
<circle cx="149.5" cy="147" r="2.4" fill="#FFFDF4"/>
|
|
23
|
-
<path d="M118 170c6 7 14 7 20 0" stroke="#4A3B2A" stroke-width="7" stroke-linecap="round" fill="none"/>
|
|
24
|
-
<ellipse cx="80" cy="168" rx="13" ry="8" fill="#FF8E7A" opacity="0.55"/>
|
|
25
|
-
<ellipse cx="176" cy="168" rx="13" ry="8" fill="#FF8E7A" opacity="0.55"/>
|
|
26
|
-
<!-- 高光 -->
|
|
27
|
-
<ellipse cx="97" cy="118" rx="24" ry="15" fill="#FFFDF3" opacity="0.5" transform="rotate(-28 97 118)"/>
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24" color="#a2acbb" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round">
|
|
2
|
+
<!-- 空心五角星:外五点、内五点交替,只描边不填充 -->
|
|
3
|
+
<path d="M12 3 L14.12 9.09 L20.56 9.22 L15.42 13.11 L17.29 19.28 L12 15.6 L6.71 19.28 L8.58 13.11 L3.44 9.22 L9.88 9.09 Z"/>
|
|
28
4
|
</svg>
|
package/page/index.html
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
6
6
|
<title>NearToken</title>
|
|
7
7
|
<link rel="stylesheet" href="style.css">
|
|
8
|
+
<link rel="stylesheet" href="market.css">
|
|
8
9
|
</head>
|
|
9
10
|
<body>
|
|
10
11
|
<div class="wrap">
|
|
@@ -28,6 +29,7 @@
|
|
|
28
29
|
</div>
|
|
29
30
|
<script src="_magpie/bridge.js"></script>
|
|
30
31
|
<script src="version.js"></script>
|
|
32
|
+
<script src="pricing.js"></script>
|
|
31
33
|
<script src="app.js"></script>
|
|
32
34
|
</body>
|
|
33
35
|
</html>
|
package/page/latest.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
self.
|
|
1
|
+
self.NEARTOKEN_LATEST = "0.2.5"
|
|
2
|
+
self.NEARTOKEN_LATEST_AT = 1793773917619
|
package/page/market.css
ADDED
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
|
|
2
|
+
/* ---------- 模型广场(一比一复刻 neartoken.cc/pricing) ---------- */
|
|
3
|
+
|
|
4
|
+
.market { display: block; }
|
|
5
|
+
|
|
6
|
+
.market-top {
|
|
7
|
+
display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
|
|
8
|
+
padding: 10px 12px; margin: 14px 0 10px;
|
|
9
|
+
border: 1px solid var(--nt-line); border-radius: 12px; background: rgba(255,255,255,.02);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
.market-search {
|
|
13
|
+
flex: 1 1 220px; min-width: 160px; height: 30px; padding: 0 10px;
|
|
14
|
+
border: 1px solid var(--nt-line); border-radius: 9px;
|
|
15
|
+
background: rgba(0,0,0,.22); color: var(--nt-ink); font-size: 12px;
|
|
16
|
+
}
|
|
17
|
+
.market-search::placeholder { color: var(--nt-faint); }
|
|
18
|
+
.market-search:focus { outline: 1px solid var(--nt-accent); }
|
|
19
|
+
|
|
20
|
+
.market-tools { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
|
|
21
|
+
|
|
22
|
+
.market-seg { display: inline-flex; border: 1px solid var(--nt-line); border-radius: 9px; overflow: hidden; }
|
|
23
|
+
.market-seg button {
|
|
24
|
+
height: 28px; padding: 0 9px; border: 0; background: transparent;
|
|
25
|
+
color: var(--nt-muted); font-size: 11.5px;
|
|
26
|
+
}
|
|
27
|
+
.market-seg button + button { border-left: 1px solid var(--nt-line); }
|
|
28
|
+
.market-seg button[aria-pressed="true"] { color: var(--nt-ink); background: var(--nt-accent-soft); }
|
|
29
|
+
|
|
30
|
+
.market-tool {
|
|
31
|
+
height: 28px; padding: 0 10px; border: 1px solid var(--nt-line); border-radius: 9px;
|
|
32
|
+
background: transparent; color: var(--nt-muted); font-size: 11.5px;
|
|
33
|
+
}
|
|
34
|
+
.market-tool.on { color: var(--nt-ink); border-color: var(--nt-accent); }
|
|
35
|
+
|
|
36
|
+
.market-body { display: grid; grid-template-columns: 190px minmax(0, 1fr); gap: 14px; align-items: start; }
|
|
37
|
+
|
|
38
|
+
.market-aside {
|
|
39
|
+
position: sticky; top: 10px; max-height: calc(100vh - 130px); overflow-y: auto;
|
|
40
|
+
padding: 12px; border: 1px solid var(--nt-line); border-radius: 12px;
|
|
41
|
+
background: rgba(255,255,255,.02);
|
|
42
|
+
}
|
|
43
|
+
.market-aside h3 { margin: 0; font-size: 13px; }
|
|
44
|
+
.market-aside h4 { margin: 14px 0 7px; font-size: 11px; color: var(--nt-muted); font-weight: 600; }
|
|
45
|
+
.market-aside .note { font-size: 10.5px; line-height: 1.5; margin: 6px 0 0; }
|
|
46
|
+
.ma-head { display: flex; align-items: baseline; justify-content: space-between; }
|
|
47
|
+
.ma-head .link { border: 0; background: transparent; padding: 0; }
|
|
48
|
+
|
|
49
|
+
.market-chips { display: flex; flex-wrap: wrap; gap: 5px; }
|
|
50
|
+
|
|
51
|
+
.market-chip-wrap { position: relative; display: inline-flex; align-items: center; }
|
|
52
|
+
.market-chip {
|
|
53
|
+
display: inline-flex; align-items: center; gap: 5px;
|
|
54
|
+
min-height: 25px; padding: 0 8px; border: 1px solid var(--nt-line); border-radius: 999px;
|
|
55
|
+
background: transparent; color: var(--nt-muted); font-size: 10.5px; white-space: nowrap;
|
|
56
|
+
}
|
|
57
|
+
.market-chip.on, .market-chip-wrap.on > .market-chip {
|
|
58
|
+
color: var(--nt-ink); border-color: var(--nt-accent); background: var(--nt-accent-soft);
|
|
59
|
+
}
|
|
60
|
+
.market-chip .ratio { font-family: var(--nt-code); color: var(--nt-faint); font-size: 10px; }
|
|
61
|
+
.market-chip .gb { display: inline-flex; align-items: center; gap: 3px; }
|
|
62
|
+
.gb-tag { padding: 1px 4px; border-radius: 4px; font-size: 9.5px; color: #fff; }
|
|
63
|
+
.gb-tag.green { background: #2f8f68; }
|
|
64
|
+
.gb-tag.red { background: #b0475c; }
|
|
65
|
+
.gb-tag.pink { background: #8b4f9e; }
|
|
66
|
+
.gb-tag.blue { background: #3f6fa8; }
|
|
67
|
+
.gb-tag.plain { background: #5a6270; }
|
|
68
|
+
.gb-rest { color: var(--nt-ink); }
|
|
69
|
+
|
|
70
|
+
.chip-toggle {
|
|
71
|
+
width: 16px; height: 24px; padding: 0; border: 0; background: transparent;
|
|
72
|
+
color: var(--nt-faint); font-size: 10px; line-height: 1;
|
|
73
|
+
}
|
|
74
|
+
.chip-toggle.on { color: #4cc38a; }
|
|
75
|
+
|
|
76
|
+
.market-main { min-width: 0; }
|
|
77
|
+
.market-count { font-size: 13px; font-weight: 600; margin: 2px 0 10px; }
|
|
78
|
+
.market-main > .note { margin-top: 10px; }
|
|
79
|
+
|
|
80
|
+
.model-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(238px, 1fr)); gap: 10px; }
|
|
81
|
+
.model-grid.as-list { grid-template-columns: 1fr; }
|
|
82
|
+
|
|
83
|
+
.mc {
|
|
84
|
+
display: flex; flex-direction: column; min-width: 0;
|
|
85
|
+
padding: 12px; border: 1px solid var(--nt-line); border-radius: 12px;
|
|
86
|
+
background: rgba(255,255,255,.02);
|
|
87
|
+
}
|
|
88
|
+
.mc-image { border-color: rgba(139,79,158,.5); }
|
|
89
|
+
.mc-video { border-color: rgba(214,140,60,.5); }
|
|
90
|
+
.mc-audio { border-color: rgba(63,111,168,.5); }
|
|
91
|
+
.mc-embedding { border-color: rgba(47,143,104,.5); }
|
|
92
|
+
|
|
93
|
+
.mc-head { display: flex; align-items: center; gap: 8px; }
|
|
94
|
+
.mc-vicon {
|
|
95
|
+
flex: none; width: 26px; height: 26px; border-radius: 8px;
|
|
96
|
+
display: inline-flex; align-items: center; justify-content: center;
|
|
97
|
+
background: var(--nt-accent-soft); color: var(--nt-accent); font-size: 12px; font-weight: 700;
|
|
98
|
+
}
|
|
99
|
+
.mc-name { font-size: 12.5px; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
100
|
+
.mc-vendor { font-size: 10px; color: var(--nt-muted); }
|
|
101
|
+
.mc-copy { border: 0; background: transparent; color: var(--nt-faint); font-size: 13px; padding: 2px 4px; }
|
|
102
|
+
.mc-copy:hover { color: var(--nt-accent); }
|
|
103
|
+
|
|
104
|
+
.mc-desc {
|
|
105
|
+
margin: 9px 0 8px; font-size: 10.5px; line-height: 1.55; color: var(--nt-muted);
|
|
106
|
+
min-height: 32px; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
|
|
107
|
+
}
|
|
108
|
+
.mc-billing { font-size: 10.5px; font-weight: 600; margin-bottom: 7px; }
|
|
109
|
+
.mc-billing.dyn { color: #e0a44a; }
|
|
110
|
+
.mc-billing.flat { color: #5aa9e6; }
|
|
111
|
+
|
|
112
|
+
.mc-prices { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; margin-bottom: 9px; }
|
|
113
|
+
.mc-prices.one { grid-template-columns: 1fr; }
|
|
114
|
+
.mc-prices > div { display: flex; flex-direction: column; gap: 2px; }
|
|
115
|
+
.mc-prices span { font-size: 10px; color: var(--nt-muted); }
|
|
116
|
+
.mc-prices b { font-family: var(--nt-code); font-size: 11.5px; font-weight: 600; color: var(--nt-ink); }
|
|
117
|
+
|
|
118
|
+
.mc-line { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; margin: 5px 0; font-size: 10px; }
|
|
119
|
+
.mc-line .k, .mc-stats .k { color: var(--nt-muted); margin-right: 4px; }
|
|
120
|
+
.mc-line .v, .mc-stats .v { color: var(--nt-ink); font-family: var(--nt-code); font-size: 10px; }
|
|
121
|
+
.mc-more { color: var(--nt-faint); font-family: var(--nt-code); }
|
|
122
|
+
|
|
123
|
+
.mc-stats {
|
|
124
|
+
display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
|
|
125
|
+
margin-top: 8px; padding-top: 8px; border-top: 1px solid var(--nt-line); font-size: 10px;
|
|
126
|
+
}
|
|
127
|
+
.mc-stats > span { display: inline-flex; align-items: baseline; gap: 3px; }
|
|
128
|
+
.mc-bar { display: inline-flex; gap: 1px; height: 8px; align-items: center; }
|
|
129
|
+
.mc-bar i { width: 2px; height: 8px; background: var(--nt-line); border-radius: 1px; }
|
|
130
|
+
.mc-bar i.ok { background: #3fbf85; }
|
|
131
|
+
.mc-bar i.bad { background: #d08a3c; }
|
|
132
|
+
.mc-foot { margin-top: 8px; text-align: right; }
|
|
133
|
+
|
|
134
|
+
@media (max-width: 620px) {
|
|
135
|
+
.market-body { grid-template-columns: 1fr; }
|
|
136
|
+
.market-aside { position: static; max-height: none; }
|
|
137
|
+
}
|
package/page/pricing.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
// 由 .work/build-snapshot.mjs 从站点 /api/pricing 与 /pricing 生成;插件运行时覆盖
|
|
2
|
+
self.NEARTOKEN_PRICING = {"at":1793776040751,"source":"https://neartoken.cc/api/pricing + /pricing","version":"a42d372ccf0b5dd13ecf71203521f9d2","models":[{"name":"omni","description":"统一视频生成模型,可根据模式、时长和分辨率自动选择合适的处理路径。","tags":"video,unified","vendor_id":3,"enable_groups":["[低价] 视频分组"],"supported_endpoint_types":["openai-video"],"model_ratio":0,"model_price":0.066666666667,"completion_ratio":0,"quota_type":1,"billing_mode":"tiered_expr","billing_expr":"tier(\"base\", u(\"seconds\") * 0.066666666667)"},{"name":"gemini-3.6-flash-c","description":"【按次计费】","vendor_id":3,"enable_groups":["[低价][反重力] Gemini"],"supported_endpoint_types":["gemini","openai"],"model_ratio":0,"model_price":0.096,"completion_ratio":0,"quota_type":1,"context_window":1000000,"max_tokens":64000,"input_modalities":["text"]},{"name":"gpt-6-luna","vendor_id":1,"enable_groups":["[低价][备用] GPT Pro","[低价][满血] GPT Pro 2","[满血] GPT 不降智精选","[低价] GPT 福利","[官key] GPT"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":37.5,"model_price":0,"completion_ratio":2,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"(len <= 272000 ? tier(\"0_272k\", p * 0.1 + cr * 0.01 + cc * 0.125 + c * 0.5) : tier(\"272k_plus\", p * 0.2 + cr * 0.02 + cc * 0.25 + c * 0.75)) * (param(\"service_tier\") == \"fast\" ? 2 : 1) * (param(\"service_tier\") == \"ultrafast\" ? 8 : 1)","context_window":272000,"max_tokens":128000,"input_modalities":["text","image"],"reasoning_levels":["minimal","low","medium","high","xhigh","max"],"description":"GPT-6 Luna 是 GPT-6 家族中最轻量的一员:快速、经济,适合规模化。","status":98.82,"latency":"26.77s","throughput":"54.9t/s"},{"name":"sd2.0","description":"sd2.0 标准档视频生成。seedance 分组按秒计费:480p ¥0.8/秒、720p ¥1/秒;其余分辨率暂未开放。通过 resolution 选择分辨率,费用=对应每秒单价×duration 秒;默认 480p、5 秒,n=1。不支持的档位返回参数错误,不自动降级。支持文本生成,参考素材用 images/videos/audios 数组传入;可通过 /v1/images/upload 上传素材(单文件≤20 MiB)。POST /v1/videos 或 /v1/video/generations,GET 同路径/{task_id} 查询。","tags":"video,per-second","vendor_id":11,"enable_groups":["[低价] Seedance"],"supported_endpoint_types":["openai-video"],"model_ratio":0,"model_price":0.55,"completion_ratio":0,"quota_type":1,"billing_mode":"tiered_expr","billing_expr":"u(\"resolution\") == \"480P\" && u(\"size\") == \"720x1280\" ? tier(\"480P·720x1280\", u(\"seconds\") * 0.8) : u(\"resolution\") == \"480P\" && u(\"size\") == \"1280x720\" ? tier(\"480P·1280x720\", u(\"seconds\") * 0.8) : u(\"resolution\") == \"480P\" && u(\"size\") == \"1792x1024\" ? tier(\"480P·1792x1024\", u(\"seconds\") * 0.8) : u(\"resolution\") == \"480P\" && u(\"size\") == \"1024x1792\" ? tier(\"480P·1024x1792\", u(\"seconds\") * 0.8) : u(\"resolution\") == \"720P\" && u(\"size\") == \"720x1280\" ? tier(\"720P·720x1280\", u(\"seconds\") * 1) : u(\"resolution\") == \"720P\" && u(\"size\") == \"1280x720\" ? tier(\"720P·1280x720\", u(\"seconds\") * 1) : u(\"resolution\") == \"720P\" && u(\"size\") == \"1792x1024\" ? tier(\"720P·1792x1024\", u(\"seconds\") * 1) : u(\"resolution\") == \"720P\" && u(\"size\") == \"1024x1792\" ? tier(\"720P·1024x1792\", u(\"seconds\") * 1) : u(\"resolution\") == \"768P\" && u(\"size\") == \"720x1280\" ? tier(\"768P·720x1280\", u(\"seconds\") * 999) : u(\"resolution\") == \"768P\" && u(\"size\") == \"1280x720\" ? tier(\"768P·1280x720\", u(\"seconds\") * 999) : u(\"resolution\") == \"768P\" && u(\"size\") == \"1792x1024\" ? tier(\"768P·1792x1024\", u(\"seconds\") * 999) : u(\"resolution\") == \"768P\" && u(\"size\") == \"1024x1792\" ? tier(\"768P·1024x1792\", u(\"seconds\") * 999) : u(\"resolution\") == \"1080P\" && u(\"size\") == \"720x1280\" ? tier(\"1080P·720x1280\", u(\"seconds\") * 999) : u(\"resolution\") == \"1080P\" && u(\"size\") == \"1280x720\" ? tier(\"1080P·1280x720\", u(\"seconds\") * 999) : u(\"resolution\") == \"1080P\" && u(\"size\") == \"1792x1024\" ? tier(\"1080P·1792x1024\", u(\"seconds\") * 999) : u(\"resolution\") == \"1080P\" && u(\"size\") == \"1024x1792\" ? tier(\"1080P·1024x1792\", u(\"seconds\") * 999) : u(\"resolution\") == \"2K\" && u(\"size\") == \"720x1280\" ? tier(\"2K·720x1280\", u(\"seconds\") * 999) : u(\"resolution\") == \"2K\" && u(\"size\") == \"1280x720\" ? tier(\"2K·1280x720\", u(\"seconds\") * 999) : u(\"resolution\") == \"2K\" && u(\"size\") == \"1792x1024\" ? tier(\"2K·1792x1024\", u(\"seconds\") * 999) : tier(\"2K·1024x1792\", u(\"seconds\") * 999)"},{"name":"kimi-k3.1-pro","description":"Kimi K3.1 Pro 是 Moonshot 对标 Opus 5.5 的强大模型","icon":"Kimi","vendor_id":7,"enable_groups":["[低价] 灵车 K3.1 Pro 专用","[满血] Kimi K3.1 Pro 专用"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":37.5,"model_price":0,"completion_ratio":1,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"base\", p * 13 + c * 68 + cr * 1.3 + cc * 13 + cc1h * 26)","context_window":1000000,"max_tokens":65535,"input_modalities":["text","image"],"reasoning_levels":["low","high","max"]},{"name":"gemini-3.1-flash-lite","vendor_id":3,"enable_groups":["[低价][反重力] Gemini"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":37.5,"model_price":0,"completion_ratio":4,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"standard\", p * 0.25 + cr * 0.025 + ai * 0.5 + c * 1.5)","context_window":1048576,"max_tokens":65536,"input_modalities":["text","image"],"reasoning_levels":["minimal","low","medium","high","xhigh","max"]},{"name":"suno_stems_by_url","enable_groups":["[满血] Suno"],"supported_endpoint_types":["openai"],"model_ratio":0,"model_price":1.5435,"completion_ratio":0,"quota_type":1},{"name":"gemini-3.8-flash-low","vendor_id":3,"enable_groups":["[低价][反重力] Gemini"],"supported_endpoint_types":["gemini","openai"],"model_ratio":0.75,"model_price":0,"completion_ratio":5,"cache_ratio":0.1,"quota_type":0,"context_window":1000000,"max_tokens":64000,"input_modalities":["text"]},{"name":"claude-fable-5-1","vendor_id":2,"enable_groups":["[低价][满血] Claude 特惠","[低价][满血] Claude 原生","[满血] CC 不降智精选","[低价][Kiro] 高智企业 Claude"],"supported_endpoint_types":["anthropic","openai"],"model_ratio":5,"model_price":0,"completion_ratio":5,"cache_ratio":0.025,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"standard\", p * 10 + cr * 0.25 + cc * 12.5 + cc1h * 20 + c * 50)","context_window":1000000,"max_tokens":128000,"input_modalities":["text","image"],"reasoning_levels":["xhigh","max"],"description":"Anthropic 旗舰 Claude 模型,1M Token 上下文,面向最艰难的长时间编码与知识工作。"},{"name":"gemini-3.8-flash","vendor_id":3,"enable_groups":["[满血][官Key] Gemini","[低价][反重力] Gemini"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":0.75,"model_price":0,"completion_ratio":5,"cache_ratio":0.1,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"standard\", p * 0.75 + cr * 0.075 + ai * 0.75 + c * 3.75)","context_window":1000000,"max_tokens":64000,"input_modalities":["text","image"],"reasoning_levels":["minimal","low","medium","high","xhigh","max"]},{"name":"codex-auto-review","vendor_id":1,"enable_groups":["[低价][备用] GPT Pro","[低价][满血] GPT Pro 2","[满血] GPT 不降智精选"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":1.25,"model_price":0,"completion_ratio":6,"cache_ratio":0.2,"create_cache_ratio":0.2,"quota_type":0,"context_window":1050000,"input_modalities":["text"]},{"name":"gemini-3-flash","vendor_id":3,"enable_groups":["[低价][反重力] Gemini"],"supported_endpoint_types":["gemini","openai"],"model_ratio":0.25,"model_price":0,"completion_ratio":6,"cache_ratio":0.1,"quota_type":0,"context_window":1048576,"max_tokens":65536,"input_modalities":["text","image"],"reasoning_levels":["minimal","low","medium","high","xhigh","max"]},{"name":"gemini-3.7-flash-c","description":"【按次计费】","vendor_id":3,"enable_groups":["[低价][反重力] Gemini"],"supported_endpoint_types":["gemini","openai"],"model_ratio":0,"model_price":0.096,"completion_ratio":0,"quota_type":1,"context_window":1000000,"max_tokens":64000,"input_modalities":["text"]},{"name":"flux-2-pro","description":"FLUX 2 Pro 图像生成模型,按生成图片张数计费。","icon":"Flux","vendor_id":15,"enable_groups":["[低价][生图] 生图特惠"],"supported_endpoint_types":["image-generation","openai","openai-response"],"model_ratio":37.5,"model_price":0,"completion_ratio":1,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"image\", fixed(0.1)) * image_count"},{"name":"sd2.5","description":"sd2.5 标准档视频生成。seedance 分组按秒计费:720p ¥1.2/秒;其他分辨率档位暂未开放。通过 resolution 选择分辨率,费用=对应每秒单价×duration 秒;默认 720p、5 秒,n=1。不支持的档位返回参数错误,不自动降级。支持文本生成,参考素材用 images/videos/audios 数组传入;可通过 /v1/images/upload 上传素材(单文件≤20 MiB)。POST /v1/videos 或 /v1/video/generations,GET 同路径/{task_id} 查询。","tags":"video,per-second","vendor_id":11,"enable_groups":["[低价] Seedance"],"supported_endpoint_types":["openai-video"],"model_ratio":0,"model_price":0.65,"completion_ratio":0,"quota_type":1,"billing_mode":"tiered_expr","billing_expr":"tier(\"base\", u(\"seconds\") * 1.2)"},{"name":"claude-sonnet-5","vendor_id":2,"enable_groups":["[低价][满血] Claude 原生","[满血] CC 不降智精选","[低价][Kiro] 高智企业 Claude","[低价][满血] Claude 特惠"],"supported_endpoint_types":["anthropic","openai"],"model_ratio":1,"model_price":0,"completion_ratio":5,"cache_ratio":0.1,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"standard\", p * 2 + cr * 0.2 + cc * 2.5 + cc1h * 4 + c * 10)","context_window":1000000,"max_tokens":128000,"input_modalities":["text","image"],"reasoning_levels":["xhigh","max"],"description":"Claude 的均衡档位,适合边界清晰的日常工作:开发功能、修 bug、产出精修内容。"},{"name":"grok-4.5量","vendor_id":5,"enable_groups":["[低价] Grok"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":1,"model_price":0,"completion_ratio":3,"cache_ratio":0.25,"create_cache_ratio":1,"quota_type":0,"context_window":500000,"max_tokens":128000,"input_modalities":["text"]},{"name":"minimax-h3","description":"H3 视频生成,视频分组。resolution=720p:¥0.07/秒,费用为单价×duration;resolution=2K:¥2.50/条,4~15 秒同价。未传 resolution 默认 2K,未传 duration 默认 4 秒;专属价格以账户实际价格为准。支持 16:9、9:16,n=1;images 最多9张,audios最多3段且需同时传图片,不支持参考视频。使用 JSON 提交 POST /v1/videos 或 /v1/video/generations,GET 同路径/{task_id} 查询。非法分辨率返回参数错误,不自动降级。","tags":"video,text-to-video,image-to-video,resolution-billing","icon":"Minimax","vendor_id":9,"enable_groups":["[低价] 视频分组"],"supported_endpoint_types":["openai-video"],"model_ratio":0,"model_price":1.6666666666666667,"completion_ratio":0,"quota_type":1,"billing_mode":"tiered_expr","billing_expr":"u(\"resolution\") == \"768P\" ? tier(\"768P\", u(\"seconds\") * 0.046666666667) : tier(\"2K\", 1.666666666667)"},{"name":"suno_sound","enable_groups":["[满血] Suno"],"supported_endpoint_types":["openai"],"model_ratio":0,"model_price":0.308,"completion_ratio":0,"quota_type":1},{"name":"nano-banana-2","description":"Nano Banana 2 图像生成模型,按生成图片张数计费。","icon":"Gemini.Color","vendor_id":3,"enable_groups":["[低价][生图] 生图特惠","[生图] Gemini"],"supported_endpoint_types":["image-generation","openai","openai-response","gemini"],"model_ratio":0,"model_price":0.1,"completion_ratio":0,"quota_type":1,"billing_mode":"tiered_expr","billing_expr":"tier(\"image\", fixed(0.1)) * image_count"},{"name":"gpt-6-sol","vendor_id":1,"enable_groups":["[低价] GPT 福利","[满血] GPT 不降智精选","[官key] GPT","[低价][备用] GPT Pro","[低价][满血] GPT Pro 2"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":37.5,"model_price":0,"completion_ratio":2,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"(len <= 272000 ? tier(\"0_272k\", p * 2 + cr * 0.2 + cc * 2.5 + c * 10) : tier(\"272k_plus\", p * 4 + cr * 0.4 + cc * 5 + c * 15)) * (param(\"service_tier\") == \"fast\" ? 2 : 1) * (param(\"service_tier\") == \"ultrafast\" ? 8 : 1)","context_window":272000,"max_tokens":128000,"input_modalities":["text","image"],"reasoning_levels":["minimal","low","medium","high","xhigh","max"],"description":"GPT-6 Sol 把 Astra 的能力带到更快、更便宜的模型上,适合规模化使用。"},{"name":"claude-opus-5-5","vendor_id":2,"enable_groups":["[低价][满血] Claude 原生","[满血] CC 不降智精选","[低价][Kiro] 高智企业 Claude","[低价][满血] Claude 特惠"],"supported_endpoint_types":["anthropic","openai"],"model_ratio":2,"model_price":0,"completion_ratio":5,"cache_ratio":0.05,"create_cache_ratio":1.25,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"standard\", p * 4 + cr * 0.2 + cc * 5 + cc1h * 8 + c * 20)","context_window":1000000,"max_tokens":128000,"input_modalities":["text","image"],"reasoning_levels":["minimal","low","medium","high","xhigh","max"],"description":"旗舰级表现的 Claude,价格更低,面向智能体工程与长时间编码会话。","status":97.63,"latency":"26.47s","throughput":"72.9t/s"},{"name":"grok-4.6-low","vendor_id":5,"enable_groups":["[低价] Grok"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":1,"model_price":0,"completion_ratio":3,"cache_ratio":0.25,"quota_type":0,"context_window":500000,"max_tokens":128000,"input_modalities":["text"]},{"name":"gpt-image-2.5-sunburst","description":"GPT Image 2.5 Sunburst 图像生成模型,按生成图片张数计费。","icon":"OpenAI","vendor_id":1,"enable_groups":["[生图] GPT Image","[低价][促销] GPT Image"],"supported_endpoint_types":["image-generation","openai","openai-response"],"model_ratio":0,"model_price":0.15,"completion_ratio":0,"quota_type":1,"billing_mode":"tiered_expr","billing_expr":"tier(\"image\", fixed(0.15)) * image_count"},{"name":"claude-opus-4-7","vendor_id":2,"enable_groups":["[满血] CC 不降智精选"],"supported_endpoint_types":["anthropic","openai"],"model_ratio":2.5,"model_price":0,"completion_ratio":5,"cache_ratio":0.1,"create_cache_ratio":1.25,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"standard\", p * 5 + cr * 0.5 + cc * 6.25 + cc1h * 10 + c * 25)","context_window":1000000,"max_tokens":128000,"input_modalities":["text","image"],"reasoning_levels":["xhigh","max"]},{"name":"z-image-turbo","description":"Z-Image Turbo 高速图像生成模型,按生成图片张数计费。","icon":"Qwen.Color","vendor_id":8,"enable_groups":["[低价][生图] 生图特惠"],"supported_endpoint_types":["image-generation","openai","openai-response"],"model_ratio":37.5,"model_price":0,"completion_ratio":1,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"base\", u(\"image_count\") * 0.2)"},{"name":"gemini-3.1-flash-tts-preview","vendor_id":3,"enable_groups":["[低价] 语音合成 TTS"],"supported_endpoint_types":["gemini","openai"],"model_ratio":0.5,"model_price":0,"completion_ratio":20,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"standard\", p * 1 + c * 20)"},{"name":"gemini-3.5-flash","vendor_id":3,"enable_groups":["[满血][官Key] Gemini","[低价][反重力] Gemini"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":0.75,"model_price":0,"completion_ratio":6,"cache_ratio":0.1,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"standard\", p * 1.5 + cr * 0.15 + ai * 1.5 + c * 9)","context_window":200000,"max_tokens":64000,"input_modalities":["text","image"],"reasoning_levels":["minimal","low","medium","high","xhigh","max"]},{"name":"grok-4.5-fast","vendor_id":5,"enable_groups":["[低价] Grok"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":1,"model_price":0,"completion_ratio":3,"cache_ratio":0.25,"create_cache_ratio":1,"quota_type":0,"context_window":500000,"max_tokens":128000,"input_modalities":["text"]},{"name":"gemini-3-pro-image","description":"Gemini 3 Pro Image 图像生成模型,按 token 计费。","icon":"Gemini.Color","vendor_id":3,"enable_groups":["[生图] Gemini"],"supported_endpoint_types":["gemini","openai","image-generation"],"model_ratio":0,"model_price":0.07,"completion_ratio":0,"quota_type":1,"billing_mode":"tiered_expr","billing_expr":"tier(\"standard\", p * 2 + c * 120)"},{"name":"gemini-3.1-flash-image","description":"Gemini 3.1 Flash Image 图像生成模型,按 token 计费。","icon":"Gemini.Color","vendor_id":3,"enable_groups":["[生图] Gemini"],"supported_endpoint_types":["gemini","openai","image-generation"],"model_ratio":0,"model_price":0.07,"completion_ratio":0,"quota_type":1,"billing_mode":"tiered_expr","billing_expr":"tier(\"standard\", p * 0.5 + c * 60)"},{"name":"gemini-3.1-flash-lite-image","description":"Gemini 3.1 Flash Lite Image 图像生成模型,按 token 计费。","icon":"Gemini.Color","vendor_id":3,"enable_groups":["[生图] Gemini"],"supported_endpoint_types":["gemini","openai","image-generation"],"model_ratio":0,"model_price":0.07,"completion_ratio":0,"quota_type":1,"billing_mode":"tiered_expr","billing_expr":"tier(\"standard\", p * 0.25 + c * 30)"},{"name":"gpt-5.6-terra","vendor_id":1,"enable_groups":["[低价][备用] GPT Pro","[低价][满血] GPT Pro 2","[低价] GPT 福利","[满血] GPT 不降智精选"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":37.5,"model_price":0,"completion_ratio":8,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"(len <= 272000 ? tier(\"0_272k\", p * 2 + cr * 0.2 + cc * 2.5 + c * 12) : tier(\"272k_plus\", p * 4 + cr * 0.4 + cc * 5 + c * 18)) * (param(\"service_tier\") == \"fast\" ? 2 : 1) * (param(\"service_tier\") == \"ultrafast\" ? 8 : 1)","context_window":272000,"max_tokens":128000,"input_modalities":["text","image"],"reasoning_levels":["minimal","low","medium","high","xhigh","max"]},{"name":"gemini-embedding-2","vendor_id":3,"enable_groups":["[AIS] Gemini 向量模型"],"supported_endpoint_types":["gemini","openai"],"model_ratio":0.1,"model_price":0,"completion_ratio":4,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"standard\", p * 0.2 + ai * 6.5 + c * 0)"},{"name":"gemini-3.5-flash-lite","vendor_id":3,"enable_groups":["[低价][反重力] Gemini"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":37.5,"model_price":0,"completion_ratio":4,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"standard\", p * 0.3 + cr * 0.03 + c * 2.5)","context_window":1048576,"max_tokens":65536,"input_modalities":["text","image"],"reasoning_levels":["minimal","low","medium","high","xhigh","max"]},{"name":"grok-4.7","vendor_id":5,"enable_groups":["[低价] Grok"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":1,"model_price":0,"completion_ratio":3,"cache_ratio":0.25,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"len <= 200000 ? tier(\"0_200k\", p * 2 + cr * 0.5 + c * 6) : tier(\"200k_plus\", p * 4 + cr * 1 + c * 12)","context_window":500000,"max_tokens":128000,"input_modalities":["text","image"],"reasoning_levels":["minimal","low","medium","high","xhigh","max"]},{"name":"gpt-6.1-terra","vendor_id":1,"enable_groups":["[满血] GPT 不降智精选","[低价][备用] GPT Pro","[低价][满血] GPT Pro 2"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":0.5,"model_price":0,"completion_ratio":5,"cache_ratio":0.05,"create_cache_ratio":1.25,"quota_type":0,"context_window":922000,"max_tokens":128000,"input_modalities":["text","image"],"reasoning_levels":["minimal","low","medium","high","xhigh","max"],"description":"暂无描述。","status":76.12,"latency":"14.22s","throughput":"98.3t/s"},{"name":"glm-5.3","vendor_id":6,"enable_groups":["[低价][满血][自有] GLM 官方","[低价][满血] 国模"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":4,"model_price":0,"completion_ratio":3.5,"cache_ratio":0.25,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"standard\", p * 8 + cr * 2 + cc * 0 + c * 28)","context_window":1000000,"max_tokens":131072,"input_modalities":["text"],"reasoning_levels":["minimal","low","medium","high","xhigh","max"],"description":"GLM-5.3,Z.ai 的智能体编码旗舰,1M 上下文并支持结构化工具调用。","status":100,"latency":"2.97s","throughput":"52.6t/s"},{"name":"suno_lyrics","enable_groups":["[满血] Suno"],"supported_endpoint_types":["openai"],"model_ratio":0,"model_price":0.175,"completion_ratio":0,"quota_type":1},{"name":"gemini-3.1-pro","vendor_id":3,"enable_groups":["[低价][反重力] Gemini"],"supported_endpoint_types":["gemini","openai"],"model_ratio":1,"model_price":0,"completion_ratio":6,"cache_ratio":0.1,"quota_type":0,"context_window":1048576,"max_tokens":65536,"input_modalities":["text","image"],"reasoning_levels":["minimal","low","medium","high","xhigh","max"]},{"name":"gemini-3.8-flash-tts","vendor_id":3,"enable_groups":["[低价] 语音合成 TTS"],"supported_endpoint_types":["gemini","openai"],"model_ratio":0,"model_price":0.08,"completion_ratio":0,"quota_type":1},{"name":"gpt-5.6-sol","vendor_id":1,"enable_groups":["[低价] GPT 福利","[满血] GPT 不降智精选","[官key] GPT","[低价][备用] GPT Pro","[低价][满血] GPT Pro 2"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":37.5,"model_price":0,"completion_ratio":8,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"(len <= 272000 ? tier(\"0_272k\", p * 4 + cr * 0.4 + cc * 5 + c * 20) : tier(\"272k_plus\", p * 8 + cr * 0.8 + cc * 10 + c * 30)) * (param(\"service_tier\") == \"fast\" ? 2 : 1) * (param(\"service_tier\") == \"ultrafast\" ? 8 : 1)","context_window":272000,"max_tokens":128000,"input_modalities":["text","image"],"reasoning_levels":["minimal","low","medium","high","xhigh","max"]},{"name":"hy3","vendor_id":10,"enable_groups":["[低价] 神秘折扣模型"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":0.5,"model_price":0,"completion_ratio":4,"cache_ratio":0.25,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"standard\", p * 0 + cr * 0 + cc * 0 + c * 0)","context_window":256000,"max_tokens":128000,"input_modalities":["text"],"reasoning_levels":["minimal","low","medium","high","xhigh","max"]},{"name":"nano-banana-2.1","description":"Nano Banana 2.1 图像生成模型,按生成图片张数计费。","icon":"Gemini.Color","vendor_id":3,"enable_groups":["[生图] Gemini"],"supported_endpoint_types":["image-generation","gemini","openai"],"model_ratio":0,"model_price":0.12,"completion_ratio":0,"quota_type":1,"billing_mode":"tiered_expr","billing_expr":"tier(\"image\", fixed(0.12)) * image_count"},{"name":"minimax-m3","vendor_id":9,"enable_groups":["[低价][满血] 国模"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":1.09,"model_price":0,"completion_ratio":4,"cache_ratio":0.2,"create_cache_ratio":1,"quota_type":0,"context_window":512000,"max_tokens":128000,"input_modalities":["text","image"]},{"name":"claude-sonnet-4-6","vendor_id":2,"enable_groups":["[满血] CC 不降智精选"],"supported_endpoint_types":["anthropic","openai"],"model_ratio":1.5,"model_price":0,"completion_ratio":5,"cache_ratio":0.1,"create_cache_ratio":1.25,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"standard\", p * 3 + cr * 0.3 + cc * 3.75 + cc1h * 6 + c * 15)","context_window":1000000,"max_tokens":64000,"input_modalities":["text","image"],"reasoning_levels":["max"]},{"name":"gemini-2.5-pro","vendor_id":3,"enable_groups":["[低价][反重力] Gemini"],"supported_endpoint_types":["gemini","openai"],"model_ratio":0.625,"model_price":0,"completion_ratio":8,"cache_ratio":0.1,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"len <= 200000 ? tier(\"0_200k\", p * 1.25 + cr * 0.125 + c * 10) : tier(\"200k_plus\", p * 2.5 + cr * 0.25 + c * 15)","context_window":1048576,"max_tokens":65536,"input_modalities":["text","image"]},{"name":"gemini-3.8-flash-high","vendor_id":3,"enable_groups":["[低价][反重力] Gemini"],"supported_endpoint_types":["gemini","openai"],"model_ratio":0.75,"model_price":0,"completion_ratio":5,"cache_ratio":0.1,"quota_type":0,"context_window":1000000,"max_tokens":64000,"input_modalities":["text"]},{"name":"claude-sonnet-4.6","vendor_id":2,"enable_groups":["[低价][Kiro] 高智企业 Claude","[低价][满血] Claude 特惠"],"supported_endpoint_types":["anthropic","openai"],"model_ratio":1.5,"model_price":0,"completion_ratio":5,"cache_ratio":0.1,"create_cache_ratio":1.25,"quota_type":0,"context_window":1000000,"input_modalities":["text","image"],"reasoning_levels":["minimal","max"]},{"name":"gemini-2.5-flash-preview-tts","vendor_id":3,"enable_groups":["[低价] 语音合成 TTS"],"supported_endpoint_types":["gemini","openai"],"model_ratio":0.25,"model_price":0,"completion_ratio":20,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"standard\", p * 0.5 + c * 10)"},{"name":"seedream-5.0-lite","description":"Seedream 5.0 Lite 图像生成模型,按生成图片张数计费。","icon":"ByteDance","vendor_id":14,"enable_groups":["[低价][生图] 生图特惠"],"supported_endpoint_types":["image-generation","openai","openai-response"],"model_ratio":0,"model_price":1,"completion_ratio":0,"quota_type":1,"billing_mode":"tiered_expr","billing_expr":"tier(\"image\", fixed(1)) * image_count"},{"name":"qwen-image","description":"Qwen Image 图像生成模型,按生成图片张数计费。","icon":"Qwen.Color","vendor_id":8,"enable_groups":["[低价][生图] 生图特惠"],"supported_endpoint_types":["image-generation","openai","openai-response"],"model_ratio":37.5,"model_price":0,"completion_ratio":1,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"base\", u(\"image_count\") * 0.25)"},{"name":"nano-banana-pro","description":"Nano Banana Pro 图像生成模型,按生成图片张数计费。","icon":"Gemini.Color","vendor_id":3,"enable_groups":["[低价][生图] 生图特惠","[生图] Gemini"],"supported_endpoint_types":["image-generation","openai","openai-response","gemini"],"model_ratio":0,"model_price":0.05,"completion_ratio":0,"quota_type":1,"billing_mode":"tiered_expr","billing_expr":"tier(\"image\", fixed(0.05)) * image_count"},{"name":"z-image","description":"Z-Image 图像生成模型,按生成图片张数计费。","icon":"Qwen.Color","vendor_id":8,"enable_groups":["[低价][生图] 生图特惠"],"supported_endpoint_types":["image-generation","openai","openai-response"],"model_ratio":37.5,"model_price":0,"completion_ratio":1,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"image\", fixed(0.3)) * image_count"},{"name":"glm-5.2","vendor_id":6,"enable_groups":["[低价] 神秘折扣模型","[低价][满血] 国模"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":4,"model_price":0,"completion_ratio":3.5,"cache_ratio":0.25,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"standard\", p * 1.4 + cr * 0.26 + cc * 0 + c * 4.4)","context_window":1000000,"max_tokens":131072,"input_modalities":["text"],"reasoning_levels":["minimal","low","medium","high","xhigh","max"]},{"name":"gemini-3.5-transcribe","vendor_id":3,"enable_groups":["[低价] 语音转文字 ASR"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":0,"model_price":0.005,"completion_ratio":0,"quota_type":1},{"name":"gemini-3.8-flash-lite-tts","vendor_id":3,"enable_groups":["[低价] 语音合成 TTS"],"supported_endpoint_types":["gemini","openai"],"model_ratio":0,"model_price":0.08,"completion_ratio":0,"quota_type":1},{"name":"claude-haiku-4.5","vendor_id":2,"enable_groups":["[低价][Kiro] 高智企业 Claude","[低价][满血] Claude 特惠"],"supported_endpoint_types":["anthropic","openai"],"model_ratio":0.5,"model_price":0,"completion_ratio":5,"cache_ratio":0.1,"create_cache_ratio":1.25,"quota_type":0,"context_window":200000,"input_modalities":["text","image"],"reasoning_levels":["low","medium","high","max"]},{"name":"gemini-3.1-flash-lite-preview","vendor_id":3,"enable_groups":["[低价][反重力] Gemini"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":37.5,"model_price":0,"completion_ratio":4,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"standard\", p * 0.25 + cr * 0.025 + ai * 0.5 + c * 1.5)","context_window":1048576,"max_tokens":65536,"input_modalities":["text","image"],"reasoning_levels":["minimal","low","medium","high","xhigh","max"]},{"name":"grok-4.5-low","vendor_id":5,"enable_groups":["[低价] Grok"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":1,"model_price":0,"completion_ratio":3,"cache_ratio":0.25,"quota_type":0,"context_window":500000,"max_tokens":128000,"input_modalities":["text"]},{"name":"grok-4.6","vendor_id":5,"enable_groups":["[低价] Grok"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":1,"model_price":0,"completion_ratio":3,"cache_ratio":0.25,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"len <= 200000 ? tier(\"0_200k\", p * 2 + cr * 0.5 + c * 6) : tier(\"200k_plus\", p * 4 + cr * 1 + c * 12)","context_window":500000,"max_tokens":128000,"input_modalities":["text","image"],"reasoning_levels":["minimal","low","medium","high","xhigh","max"]},{"name":"claude-opus-4-8","vendor_id":2,"enable_groups":["[满血] CC 不降智精选"],"supported_endpoint_types":["anthropic","openai"],"model_ratio":2.5,"model_price":0,"completion_ratio":5,"cache_ratio":0.1,"create_cache_ratio":1.25,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"standard\", p * 5 + cr * 0.5 + cc * 6.25 + cc1h * 10 + c * 25)","context_window":1000000,"max_tokens":128000,"input_modalities":["text","image"],"reasoning_levels":["xhigh","max"]},{"name":"suno_music","enable_groups":["[满血] Suno"],"supported_endpoint_types":["openai"],"model_ratio":0,"model_price":1.5435,"completion_ratio":0,"quota_type":1},{"name":"gemini-3.8-flash-c","description":"【按次计费】","vendor_id":3,"enable_groups":["[低价][反重力] Gemini"],"supported_endpoint_types":["gemini","openai"],"model_ratio":0,"model_price":0.096,"completion_ratio":0,"quota_type":1,"context_window":1000000,"max_tokens":64000,"input_modalities":["text"]},{"name":"ideogram-v3","description":"Ideogram V3 图像生成模型,按生成图片张数计费。","icon":"Ideogram","vendor_id":17,"enable_groups":["[低价][生图] 生图特惠"],"supported_endpoint_types":["image-generation","openai","openai-response"],"model_ratio":37.5,"model_price":0,"completion_ratio":1,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"image\", fixed(0.1)) * image_count"},{"name":"gpt-image-2.5-flare","description":"GPT Image 2.5 Flare 图像生成模型,按生成图片张数计费。","icon":"OpenAI","vendor_id":1,"enable_groups":["[低价][生图] 生图特惠","[低价][促销] GPT Image","[生图] GPT Image"],"supported_endpoint_types":["image-generation","openai","openai-response"],"model_ratio":0,"model_price":0.12,"completion_ratio":0,"quota_type":1,"billing_mode":"tiered_expr","billing_expr":"tier(\"image\", fixed(0.2)) * image_count"},{"name":"gemini-4-argon","vendor_id":3,"enable_groups":["[满血][官Key] Gemini","[满血] Argon 专用"],"supported_endpoint_types":["gemini","openai"],"model_ratio":1,"model_price":0,"completion_ratio":5,"cache_ratio":0.05,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"standard\", p * 2 + cr * 0.1 + ai * 2 + c * 10)","context_window":1048576,"max_tokens":65536,"input_modalities":["text","image"],"reasoning_levels":["low","medium","high"]},{"name":"gemini-2.5-pro-preview-tts","vendor_id":3,"enable_groups":["[低价] 语音合成 TTS"],"supported_endpoint_types":["gemini","openai"],"model_ratio":0.5,"model_price":0,"completion_ratio":20,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"standard\", p * 1 + c * 20)"},{"name":"mimo-v2.6-flash","vendor_id":12,"enable_groups":["[低价] 神秘折扣模型"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":0.5,"model_price":0,"completion_ratio":2,"cache_ratio":0.02,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"standard\", p * 0.14 + cr * 0.0028 + c * 0.28)","context_window":1048576,"max_tokens":131072,"input_modalities":["text","image"]},{"name":"qwen3.8-27b","vendor_id":8,"enable_groups":["[低价] 神秘折扣模型"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":1.5,"model_price":0,"completion_ratio":4,"cache_ratio":0.2,"quota_type":0,"context_window":1000000,"max_tokens":131072,"input_modalities":["text","image"],"reasoning_levels":["minimal","low","medium","high","xhigh","max"]},{"name":"claude-opus-5","vendor_id":2,"enable_groups":["[低价][满血] Claude 原生","[满血] CC 不降智精选","[低价][Kiro] 高智企业 Claude","[低价][满血] Claude 特惠"],"supported_endpoint_types":["anthropic","openai"],"model_ratio":2.5,"model_price":0,"completion_ratio":5,"cache_ratio":0.1,"create_cache_ratio":1.25,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"standard\", p * 5 + cr * 0.5 + cc * 6.25 + cc1h * 10 + c * 25)","context_window":1000000,"max_tokens":64000,"input_modalities":["text","image"],"reasoning_levels":["minimal","xhigh","max"],"description":"Claude Opus 5 旗舰,effort 参数可在思考深度与延迟、成本之间取舍。","status":0,"latency":"1.23s"},{"name":"claude-sonnet-5-5","vendor_id":2,"enable_groups":["[低价][满血] Claude 原生","[满血] CC 不降智精选"],"supported_endpoint_types":["anthropic","openai"],"model_ratio":1,"model_price":0,"completion_ratio":5,"cache_ratio":0.05,"create_cache_ratio":1.25,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"standard\", p * 2 + cr * 0.1 + cc * 2.5 + cc1h * 4 + c * 10)","context_window":1000000,"max_tokens":128000,"input_modalities":["text","image"],"reasoning_levels":["minimal","low","medium","high","xhigh","max"],"description":"Claude 的均衡档位,适合边界清晰的日常工作:开发功能、修 bug、产出精修内容。"},{"name":"seedream-4","description":"Seedream 4 图像生成模型,按生成图片张数计费。","icon":"ByteDance","vendor_id":14,"enable_groups":["[低价][生图] 生图特惠"],"supported_endpoint_types":["image-generation","openai","openai-response"],"model_ratio":0,"model_price":1,"completion_ratio":0,"quota_type":1,"billing_mode":"tiered_expr","billing_expr":"tier(\"image\", fixed(1)) * image_count"},{"name":"claude-fable-5","vendor_id":2,"enable_groups":["[低价][满血] Claude 原生","[满血] CC 不降智精选"],"supported_endpoint_types":["anthropic","openai"],"model_ratio":5,"model_price":0,"completion_ratio":5,"cache_ratio":0.1,"create_cache_ratio":1.25,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"standard\", p * 10 + cr * 1 + cc * 12.5 + cc1h * 20 + c * 50)","context_window":1000000,"max_tokens":128000,"input_modalities":["text","image"],"reasoning_levels":["xhigh","max"],"description":"Anthropic 旗舰 Claude 模型,1M Token 上下文,面向最艰难的长时间编码与知识工作。"},{"name":"gemini-3.6-flash","vendor_id":3,"enable_groups":["[满血][官Key] Gemini","[低价][反重力] Gemini"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":0.75,"model_price":0,"completion_ratio":5,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"standard\", p * 0.75 + cr * 0.075 + ai * 0.75 + c * 3.75)","context_window":1000000,"max_tokens":64000,"input_modalities":["text","image"],"reasoning_levels":["minimal","low","medium","high","xhigh","max"]},{"name":"gemini-3.7-flash","vendor_id":3,"enable_groups":["[低价][反重力] Gemini"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":0.75,"model_price":0,"completion_ratio":5,"cache_ratio":0.1,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"standard\", p * 0.75 + cr * 0.075 + ai * 0.75 + c * 3.75)","context_window":1000000,"max_tokens":64000,"input_modalities":["text","image"],"reasoning_levels":["minimal","low","medium","high","xhigh","max"]},{"name":"grok-4.6-medium","vendor_id":5,"enable_groups":["[低价] Grok"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":1,"model_price":0,"completion_ratio":3,"cache_ratio":0.25,"quota_type":0,"context_window":500000,"max_tokens":128000,"input_modalities":["text"]},{"name":"glm-5.3-flash","vendor_id":6,"enable_groups":["[低价][满血][自有] GLM 官方","[低价][满血] 国模"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":0.4,"model_price":0,"completion_ratio":3.5,"cache_ratio":0.2875,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"standard\", p * 0.8 + cr * 0.23 + cc * 0 + c * 2.8)","context_window":1000000,"max_tokens":131072,"input_modalities":["text","image"],"reasoning_levels":["minimal","low","medium","high","xhigh","max"]},{"name":"claude-opus-4-6","vendor_id":2,"enable_groups":["[满血] CC 不降智精选"],"supported_endpoint_types":["anthropic","openai"],"model_ratio":2.5,"model_price":0,"completion_ratio":5,"cache_ratio":0.1,"create_cache_ratio":1.25,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"standard\", p * 5 + cr * 0.5 + cc * 6.25 + cc1h * 10 + c * 25)","context_window":1000000,"max_tokens":128000,"input_modalities":["text","image"],"reasoning_levels":["max"]},{"name":"gemini-embedding-001","vendor_id":3,"enable_groups":["[AIS] Gemini 向量模型"],"supported_endpoint_types":["gemini","openai"],"model_ratio":0.075,"model_price":0,"completion_ratio":4,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"standard\", p * 0.15 + c * 0)"},{"name":"grok-4.6-xhigh","vendor_id":5,"enable_groups":["[低价] Grok"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":1,"model_price":0,"completion_ratio":3,"cache_ratio":0.25,"quota_type":0,"context_window":500000,"max_tokens":128000,"input_modalities":["text"]},{"name":"gemini-2.5-flash-image","description":"Gemini 2.5 Flash Image 图像生成模型,按 token 计费。","icon":"Gemini.Color","vendor_id":3,"enable_groups":["[生图] Gemini"],"supported_endpoint_types":["gemini","openai","image-generation"],"model_ratio":0,"model_price":0.04,"completion_ratio":0,"quota_type":1,"billing_mode":"tiered_expr","billing_expr":"tier(\"standard\", p * 0.3 + cr * 0.075 + c * 30)"},{"name":"deepseek-v4-pro","vendor_id":4,"enable_groups":["[满血][官Key] DeepSeek","[低价] DeepSeek","[低价][满血] 国模"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":37.5,"model_price":0,"completion_ratio":1,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"weekday(\"UTC\") >= 1 && weekday(\"UTC\") <= 5 && ((hour(\"UTC\") >= 1 && hour(\"UTC\") < 4) || (hour(\"UTC\") >= 6 && hour(\"UTC\") < 10)) ? tier(\"peak\", p * 1.32 + cr * 0.044 + c * 3.96) : tier(\"off_peak\", p * 0.66 + cr * 0.022 + c * 1.98)","context_window":1000000,"max_tokens":384000,"input_modalities":["text"],"reasoning_levels":["minimal","low","medium","high","xhigh","max"]},{"name":"gemini-3.8-flash-medium","vendor_id":3,"enable_groups":["[低价][反重力] Gemini"],"supported_endpoint_types":["gemini","openai"],"model_ratio":0.75,"model_price":0,"completion_ratio":5,"cache_ratio":0.1,"quota_type":0,"context_window":1000000,"max_tokens":64000,"input_modalities":["text"]},{"name":"gemini-embedding-2-preview","vendor_id":3,"enable_groups":["[AIS] Gemini 向量模型"],"supported_endpoint_types":["gemini","openai"],"model_ratio":0.1,"model_price":0,"completion_ratio":4,"quota_type":0},{"name":"gpt-6-astra","vendor_id":1,"enable_groups":["[低价][备用] GPT Pro","[低价][满血] GPT Pro 2","[低价] GPT 福利","[满血] GPT 不降智精选","[满血] GPT Pro 500 高速","[官key] GPT"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":5,"model_price":0,"completion_ratio":5,"cache_ratio":0.1,"create_cache_ratio":1.25,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"(len <= 272000 ? tier(\"0_272k\", p * 10 + cr * 1 + cc * 12.5 + c * 50) : tier(\"272k_plus\", p * 20 + cr * 2 + cc * 25 + c * 75)) * (param(\"service_tier\") == \"fast\" ? 2 : 1) * (param(\"service_tier\") == \"ultrafast\" ? 8 : 1)","context_window":1000000,"max_tokens":128000,"input_modalities":["text","image"],"reasoning_levels":["minimal","low","medium","high","xhigh","max"],"description":"OpenAI 前沿 GPT-6 模型,擅长计算机操作、编码、科学、网络安全与长上下文检索。","status":99.05,"latency":"26.64s","throughput":"52.3t/s"},{"name":"jev-1.13","vendor_id":13,"enable_groups":["[低价] 神秘折扣模型"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":0.21,"model_price":0,"completion_ratio":1,"cache_ratio":1,"quota_type":0,"context_window":64000,"input_modalities":["text"]},{"name":"grok-4.5","vendor_id":5,"enable_groups":["[低价] Grok"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":1,"model_price":0,"completion_ratio":3,"cache_ratio":0.25,"create_cache_ratio":1,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"len <= 200000 ? tier(\"0_200k\", p * 2 + cr * 0.3 + c * 6) : tier(\"200k_plus\", p * 4 + cr * 0.6 + c * 12)","context_window":500000,"max_tokens":128000,"input_modalities":["text","image"],"reasoning_levels":["minimal","low","medium","high","xhigh","max"]},{"name":"grok-4.5-medium","vendor_id":5,"enable_groups":["[低价] Grok"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":1,"model_price":0,"completion_ratio":3,"cache_ratio":0.25,"quota_type":0,"context_window":500000,"max_tokens":128000,"input_modalities":["text"]},{"name":"veo-3.1","description":"高质量视频生成模型,支持文生视频、图生视频和参考素材输入。","tags":"video,unified","vendor_id":3,"enable_groups":["[低价] 视频分组"],"supported_endpoint_types":["openai-video"],"model_ratio":0,"model_price":0.066666666667,"completion_ratio":0,"quota_type":1,"billing_mode":"tiered_expr","billing_expr":"tier(\"base\", u(\"seconds\") * 0.066666666667)"},{"name":"qwen3.8-max","vendor_id":8,"enable_groups":["[低价][满血] 国模"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":1,"model_price":0,"completion_ratio":3,"cache_ratio":0.1,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"standard\", p * 2 + cr * 0.25 + cc * 2.5 + c * 6)","context_window":1000000,"max_tokens":131072,"input_modalities":["text","image"],"reasoning_levels":["minimal","low","medium","high","xhigh","max"]},{"name":"nano-banana-2-lite","description":"Nano Banana 2 Lite 图像生成模型,按生成图片张数计费。","icon":"Gemini.Color","vendor_id":3,"enable_groups":["[低价][生图] 生图特惠"],"supported_endpoint_types":["image-generation","openai","openai-response"],"model_ratio":37.5,"model_price":0,"completion_ratio":1,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"image\", fixed(0.1)) * image_count"},{"name":"kimi-k3","vendor_id":7,"enable_groups":["[低价] 神秘折扣模型","[低价][满血] 国模"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":10,"model_price":0,"completion_ratio":5,"cache_ratio":0.1,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"standard\", p * 3 + cr * 0.3 + cc * 3 + c * 15)","context_window":1048576,"max_tokens":131072,"input_modalities":["text","image"],"reasoning_levels":["minimal","low","medium","high","xhigh","max"]},{"name":"grok-4.5-high","vendor_id":5,"enable_groups":["[低价] Grok"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":1,"model_price":0,"completion_ratio":3,"cache_ratio":0.25,"quota_type":0,"context_window":500000,"max_tokens":128000,"input_modalities":["text"]},{"name":"grok-4.6-high","vendor_id":5,"enable_groups":["[低价] Grok"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":1,"model_price":0,"completion_ratio":3,"cache_ratio":0.25,"quota_type":0,"context_window":500000,"max_tokens":128000,"input_modalities":["text"]},{"name":"seedream-4-5","description":"Seedream 4.5 图像生成模型,按生成图片张数计费。","icon":"ByteDance","vendor_id":14,"enable_groups":["[低价][生图] 生图特惠"],"supported_endpoint_types":["image-generation","openai","openai-response"],"model_ratio":0,"model_price":1,"completion_ratio":0,"quota_type":1,"billing_mode":"tiered_expr","billing_expr":"tier(\"image\", fixed(1)) * image_count"},{"name":"gpt-6.1-sol","vendor_id":1,"enable_groups":["[官key] GPT","[低价][备用] GPT Pro","[低价][满血] GPT Pro 2","[低价] GPT 福利","[满血] GPT 不降智精选","[满血] GPT Pro 500 高速"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":1,"model_price":0,"completion_ratio":5,"cache_ratio":0.05,"create_cache_ratio":1.25,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"(len <= 272000 ? tier(\"0_272k\", p * 2 + cr * 0.1 + cc * 2.5 + c * 10) : tier(\"272k_plus\", p * 4 + cr * 0.2 + cc * 5 + c * 15)) * (param(\"service_tier\") == \"fast\" ? 2 : 1) * (param(\"service_tier\") == \"ultrafast\" ? 8 : 1)","context_window":1000000,"max_tokens":128000,"input_modalities":["text","image"],"reasoning_levels":["minimal","low","medium","high","xhigh","max"],"description":"GPT-6.1 Sol 在 Sol 基础上升级智能体编码与计算机操作,接近 Astra 水平。","status":97.42,"latency":"22.62s","throughput":"51.3t/s"},{"name":"deepseek-flash","description":"当前为 DeepSeek v4.1 Flash 模型,具体检查点看分组,官 Key 为 1017 检查点","icon":"DeepSeek.Color","vendor_id":4,"enable_groups":["[低价] 神秘折扣模型","[满血][官Key] DeepSeek","[低价] DeepSeek","[低价][满血] 国模","[低价][满血] DeepSeek 1017"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":37.5,"model_price":0,"completion_ratio":1,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"weekday(\"UTC\") >= 1 && weekday(\"UTC\") <= 5 && ((hour(\"UTC\") >= 1 && hour(\"UTC\") < 4) || (hour(\"UTC\") >= 6 && hour(\"UTC\") < 10)) ? tier(\"peak\", p * 2 + cr * 0.04 + c * 8) : tier(\"off_peak\", p * 1 + cr * 0.02 + c * 4)","context_window":1000000,"max_tokens":384000,"input_modalities":["text","image"],"reasoning_levels":["minimal","low","medium","high","max"]},{"name":"suno_timing","enable_groups":["[满血] Suno"],"supported_endpoint_types":["openai"],"model_ratio":0,"model_price":0.7718,"completion_ratio":0,"quota_type":1},{"name":"kimseek-r1","enable_groups":["[低价][满血] 国模","[低价][满血] DeepSeek 1017","[低价] DeepSeek"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":37.5,"model_price":0,"completion_ratio":1,"quota_type":0},{"name":"gemini-3-flash-preview","vendor_id":3,"enable_groups":["[满血][官Key] Gemini","[低价][反重力] Gemini"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":0.25,"model_price":0,"completion_ratio":6,"cache_ratio":0.1,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"standard\", p * 0.5 + cr * 0.05 + ai * 1 + c * 3)","context_window":1048576,"max_tokens":65536,"input_modalities":["text","image"],"reasoning_levels":["minimal","low","medium","high","xhigh","max"]},{"name":"gemini-3.1-pro-preview","vendor_id":3,"enable_groups":["[满血][官Key] Gemini","[低价][反重力] Gemini"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":1,"model_price":0,"completion_ratio":6,"cache_ratio":0.1,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"len <= 200000 ? tier(\"0_200k\", p * 2 + cr * 0.2 + c * 12) : tier(\"200k_plus\", p * 4 + cr * 0.4 + c * 18)","context_window":1048576,"max_tokens":65536,"input_modalities":["text","image"],"reasoning_levels":["minimal","low","medium","high","xhigh","max"]},{"name":"grok-imagine-image-2.0","description":"Grok Imagine Image 2.0 图像生成模型,按生成图片张数计费。","icon":"XAI","vendor_id":5,"enable_groups":["[低价][生图] 生图特惠"],"supported_endpoint_types":["image-generation","openai","openai-response"],"model_ratio":37.5,"model_price":0,"completion_ratio":1,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"image\", fixed(0.1)) * image_count"},{"name":"grok-imagine-image","description":"Grok Imagine Image 图像生成模型,按生成图片张数计费。","icon":"XAI","vendor_id":5,"enable_groups":["[低价][生图] 生图特惠","[低价] Grok"],"supported_endpoint_types":["image-generation","openai","openai-response"],"model_ratio":0,"model_price":0.4,"completion_ratio":0,"quota_type":1,"billing_mode":"tiered_expr","billing_expr":"tier(\"image\", fixed(0.4)) * image_count"}],"groups":{"[AIS] Gemini 向量模型":1,"[低价] DeepSeek":0.4,"[低价] GPT 福利":0.2,"[低价] Grok":0.1,"[低价] Seedance":1,"[低价] 灵车 K3.1 Pro 专用":0.3,"[低价] 神秘折扣模型":0.12,"[低价] 视频分组":1.5,"[低价] 语音合成 TTS":0.3,"[低价] 语音转文字 ASR":1,"[低价][Kiro] 高智企业 Claude":1,"[低价][促销] GPT Image":0.5,"[低价][反重力] Gemini":0.5,"[低价][备用] GPT Pro":0.3,"[低价][满血] Claude 原生":1.5,"[低价][满血] Claude 特惠":1.1,"[低价][满血] DeepSeek 1017":0.5,"[低价][满血] GPT Pro 2":0.26,"[低价][满血] Gemini Ultra":0.5,"[低价][满血] 国模":0.6,"[低价][满血][自有] GLM 官方":0.25,"[低价][生图] 生图特惠":0.2,"[官key] GPT":0.9,"[满血] Argon 专用":1,"[满血] CC 不降智精选":1.8,"[满血] GPT Pro 500 高速":0.5,"[满血] GPT 不降智精选":0.35,"[满血] Kimi K3.1 Pro 专用":0.6,"[满血] Suno":1,"[满血][官Key] DeepSeek":0.8,"[满血][官Key] Gemini":2,"[生图] GPT Image":1,"[生图] Gemini":1},"refs":{"[AIS] Gemini 向量模型":"#34","[低价] DeepSeek":"#16","[低价] GPT 福利":"#56","[低价] Grok":"#37","[低价] Seedance":"#19","[低价] 灵车 K3.1 Pro 专用":"#49","[低价] 神秘折扣模型":"#24","[低价] 视频分组":"#31","[低价] 语音合成 TTS":"#35","[低价] 语音转文字 ASR":"#27","[低价][Kiro] 高智企业 Claude":"#42","[低价][促销] GPT Image":"#39","[低价][反重力] Gemini":"#5","[低价][备用] GPT Pro":"#13","[低价][满血] Claude 原生":"#61","[低价][满血] Claude 特惠":"#22","[低价][满血] DeepSeek 1017":"#38","[低价][满血] GPT Pro 2":"#14","[低价][满血] Gemini Ultra":"#12","[低价][满血] 国模":"#6","[低价][满血][自有] GLM 官方":"#17","[低价][生图] 生图特惠":"#9","[官key] GPT":"#28","[满血] Argon 专用":"#47","[满血] CC 不降智精选":"#7","[满血] GPT Pro 500 高速":"#57","[满血] GPT 不降智精选":"#2","[满血] Kimi K3.1 Pro 专用":"#48","[满血] Suno":"#67","[满血][官Key] DeepSeek":"#15","[满血][官Key] Gemini":"#8","[生图] GPT Image":"#4","[生图] Gemini":"#29"},"notes":{"[AIS] Gemini 向量模型":"Gemini 文本向量与嵌入模型(AIStudio 渠道)","[低价] DeepSeek":"DeepSeek 正式版,超低折扣,此分组为 v4 Flash 0731","[低价] GPT 福利":"GPT 低价福利分组,不保障满智力","[低价] Grok":"Grok 系列模型,低价通道","[低价] Seedance":"Seedance 视频生成(低价)","[低价] 灵车 K3.1 Pro 专用":"Kimi K3.1 Pro 灵车渠道","[低价] 神秘折扣模型":"神秘折扣模型合集,低价通道,deepseek flash 为 v4.1 旧版","[低价] 视频分组":"Veo / Minimax / Omni 视频生成,低价通道","[低价] 语音合成 TTS":"语音合成(TTS),低价通道","[低价] 语音转文字 ASR":"语音转文字(ASR),低价通道","[低价][Kiro] 高智企业 Claude":"90% Claude Max","[低价][促销] GPT Image":"降智 GPT Pro 号再上岗","[低价][反重力] Gemini":"Gemini 全系模型(反重力渠道)","[低价][备用] GPT Pro":"GPT Pro 账号反代,低价通道","[低价][满血] Claude 原生":"0 注入,神秘渠道","[低价][满血] Claude 特惠":"特惠,尽量保证满血","[低价][满血] DeepSeek 1017":"最新最热满血 DeepSeek v4.1 Flash 1017 专用特价分组","[低价][满血] GPT Pro 2":"GPT Pro 反代,低价 2 号通道","[低价][满血] Gemini Ultra":"反重力 Ultra 套餐反代,支持 Argon","[低价][满血] 国模":"国产大模型满血版,超低折扣","[低价][满血][自有] GLM 官方":"GLM Coding Plan 转发","[低价][生图] 生图特惠":"","[官key] GPT":"OpenAI 官方 Key 通道,支持 UltraFast","[满血] Argon 专用":"不知道从哪来的,质量比 Ultra 好点","[满血] CC 不降智精选":"Claude 满血满智精选,不降智","[满血] GPT Pro 500 高速":"","[满血] GPT 不降智精选":"GPT 满血不降智精选","[满血] Kimi K3.1 Pro 专用":"Kimi K3.1 Pro 专用渠道","[满血] Suno":"Suno 音乐生成(歌词/整曲/音效/分轨/时间轴),按次计费","[满血][官Key] DeepSeek":"","[满血][官Key] Gemini":"Gemini 官方 API Key 通道","[生图] GPT Image":"GPT Image 图像生成","[生图] Gemini":"Gemini 图像生成"},"auto":["[低价][满血] Gemini Ultra","[满血] CC 不降智精选","[满血] GPT 不降智精选","[低价][生图] 生图特惠","[低价] DeepSeek","[低价][备用] GPT Pro","[低价] Grok","[低价] Seedance","[低价] 视频分组","[低价] 语音合成 TTS","[低价] 语音转文字 ASR","[低价][满血] 国模","[低价] 神秘折扣模型","[AIS] Gemini 向量模型","[满血][官Key] Gemini","[官key] GPT","[生图] GPT Image","[生图] Gemini"],"vendors":[{"id":2,"name":"Anthropic","icon":"Claude.Color"},{"id":7,"name":"Moonshot","icon":"Moonshot"},{"id":10,"name":"腾讯","icon":"Hunyuan.Color"},{"id":1,"name":"OpenAI","icon":"OpenAI"},{"id":5,"name":"xAI","icon":"XAI"},{"id":9,"name":"MiniMax","icon":"Minimax.Color"},{"id":12,"name":"小米","icon":"XiaomiMiMo"},{"id":16,"name":"Midjourney","description":"Midjourney 图像生成服务","icon":"Midjourney"},{"id":6,"name":"智谱","icon":"Zhipu.Color"},{"id":13,"name":"TypeSafe"},{"id":14,"name":"字节跳动","description":"字节跳动 Seedream 图像生成系列","icon":"ByteDance"},{"id":15,"name":"Black Forest Labs","description":"Black Forest Labs FLUX 图像生成系列","icon":"Flux"},{"id":17,"name":"Ideogram","description":"Ideogram 图像生成服务","icon":"Ideogram"},{"id":3,"name":"Google","icon":"Gemini.Color"},{"id":4,"name":"DeepSeek","icon":"DeepSeek.Color"},{"id":8,"name":"阿里巴巴","icon":"Qwen.Color"},{"id":11,"name":"即梦","icon":"Jimeng.Color"}],"endpoints":{"anthropic":{"path":"/v1/messages","method":"POST"},"gemini":{"path":"/v1beta/models/{model}:generateContent","method":"POST"},"image-generation":{"path":"/v1/images/generations","method":"POST"},"openai":{"path":"/v1/chat/completions","method":"POST"},"openai-response":{"path":"/v1/responses","method":"POST"}}}
|
package/page/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// 由 scripts/stamp.mjs 生成,别手改:版本号在 package.json。
|
|
2
|
-
self.NEARTOKEN_VERSION = "0.
|
|
2
|
+
self.NEARTOKEN_VERSION = "0.3.0"
|