mirror of
https://git.openapi.site/https://github.com/desirecore/config-center.git
synced 2026-10-21 07:44:13 +08:00
48 lines
2.8 KiB
JavaScript
48 lines
2.8 KiB
JavaScript
import { test } from 'node:test'
|
||
import assert from 'node:assert/strict'
|
||
import { readFileSync, readdirSync } from 'node:fs'
|
||
import { fileURLToPath } from 'node:url'
|
||
import { join } from 'node:path'
|
||
import { parseSourcePage } from '../scripts/validate-sources.mjs'
|
||
|
||
const root = fileURLToPath(new URL('../', import.meta.url))
|
||
const read = path => JSON.parse(readFileSync(join(root, path), 'utf8'))
|
||
test('Kimi domestic token prices remain distinct from write TTL and subscription prices', () => {
|
||
const provider = read('compute/providers/moonshot.json')
|
||
const model = provider.models.find(item => item.modelName === 'kimi-k3')
|
||
assert.equal(provider.priceCurrency, 'CNY')
|
||
assert.deepEqual([model.inputPrice, model.outputPrice, model.extra.cacheHitPrice], [20, 100, 2])
|
||
assert.equal(model.maxOutputTokens, 1048576)
|
||
assert.match(model.extra.pricingNotes, /TTL 5min 20, TTL 1h 40/)
|
||
const page = parseSourcePage(readFileSync(join(root, 'docs/model-sources/providers/moonshot/models/kimi-k3.md'), 'utf8'))
|
||
const proof = page.records.find(item => item.config === 'compute/providers/moonshot.json').fieldSources
|
||
for (const field of ['inputPrice', 'outputPrice', 'extra.cacheHitPrice']) assert.ok(proof.some(item => item.field === field && item.source === 'kimi-pricing'))
|
||
})
|
||
test('Xiaomi normal API prices do not use batch rates or ASR duration as token prices', () => {
|
||
const provider = read('compute/providers/xiaomi.json')
|
||
const old = provider.models.find(item => item.modelName === 'mimo-v2.5-pro')
|
||
assert.deepEqual([old.inputPrice, old.outputPrice, old.extra.cachedInputPrice], [3, 6, 0.025])
|
||
const asr = provider.models.find(item => item.modelName === 'mimo-v2.5-asr')
|
||
assert.equal(asr.inputPrice, undefined)
|
||
assert.equal(asr.outputPrice, undefined)
|
||
const fast = provider.models.find(item => item.modelName === 'mimo-v2.6-pro-ultraspeed')
|
||
assert.deepEqual([fast.inputPrice, fast.outputPrice], [30, 60])
|
||
})
|
||
test('Baidu Coding Plan does not inherit native ERNIE vision or obsolete quota multipliers', () => {
|
||
const plan = read('compute/coding-plans/baidu-coding.json')
|
||
assert.equal(plan.models.some(item => item.capabilities?.includes('vision')), false)
|
||
const glm = plan.models.find(item => item.modelName === 'glm-5.1')
|
||
assert.match(glm.description, /高峰抵扣 ×4 \/ 低峰 ×3/)
|
||
assert.ok(read('compute/providers/baidu.json').models.find(item => item.modelName === 'ernie-5.0').capabilities.includes('vision'))
|
||
})
|
||
test('JavaScript shell pages cannot silently become verified Volcengine parameters', () => {
|
||
const directory = join(root, 'docs/model-sources/providers/volcengine/models')
|
||
for (const file of readdirSync(directory)) {
|
||
const page = parseSourcePage(readFileSync(join(directory, file), 'utf8'))
|
||
for (const record of page.records) {
|
||
assert.equal(record.status, 'pending')
|
||
assert.deepEqual(record.fieldSources, [])
|
||
}
|
||
}
|
||
})
|