test(runtime): wire new pricing importers into pipeline smoke and catalog mapping

This commit is contained in:
phamnazage-jpg
2026-05-23 18:35:08 +08:00
parent e757cd2dd7
commit c32661fd2a
15 changed files with 299 additions and 144 deletions

View File

@@ -45,7 +45,7 @@ func TestRun360PricingImportDryRunPrintsSummary(t *testing.T) {
for _, want := range []string{
"source=360-pricing-import",
"models=4",
"operator=360 Open Platform",
"operator=360 ZhiNao",
"dry_run=true",
} {
if !strings.Contains(output, want) {

View File

@@ -61,12 +61,12 @@ func TestBuildPlanCatalogRows(t *testing.T) {
"alibaba-qwen-api-payg": "import_qwen_pricing.go",
"tencent-hunyuan-api-payg": "import_hunyuan_pricing.go",
"huawei-pangu-api-payg": "import_huawei_maas_pricing.go",
"baichuan-api-payg": "import_catalog_seed_verification.go",
"01ai-api-payg": "import_catalog_seed_verification.go",
"sensenova-api-payg": "import_catalog_seed_verification.go",
"xfyun-spark-api-payg": "import_catalog_seed_verification.go",
"360-zhinao-api-payg": "import_catalog_seed_verification.go",
"youdao-ziyue-api-payg": "import_catalog_seed_verification.go",
"baichuan-api-payg": "import_baichuan_pricing.go",
"01ai-api-payg": "import_lingyiwanwu_pricing.go",
"sensenova-api-payg": "import_sensenova_pricing.go",
"xfyun-spark-api-payg": "import_xfyun_pricing.go",
"360-zhinao-api-payg": "import_360_pricing.go",
"youdao-ziyue-api-payg": "import_youdao_pricing.go",
"modelbest-minicpm-api-payg": "import_catalog_seed_verification.go",
"baai-flagopen-api-payg": "import_catalog_seed_verification.go",
"skywork-api-payg": "import_catalog_seed_verification.go",

View File

@@ -20,17 +20,20 @@ func TestParseYoudaoPricingCatalogBuildsRecords(t *testing.T) {
if err != nil {
t.Fatalf("parseYoudaoPricingCatalog 返回错误: %v", err)
}
if len(records) != 5 {
t.Fatalf("期望 5 条有道价格记录,实际 %d", len(records))
if len(records) != 10 {
t.Fatalf("期望 10 条有道价格记录,实际 %d", len(records))
}
if records[0].ModelID != "youdao-deepseek-v4-flash" {
t.Fatalf("首条 modelID 错误: %q", records[0].ModelID)
}
if records[2].ProviderName != "Moonshot AI" {
t.Fatalf("Kimi provider 归一化错误: %q", records[2].ProviderName)
if records[5].ProviderName != "Moonshot AI" {
t.Fatalf("Kimi provider 归一化错误: %q", records[5].ProviderName)
}
if records[4].ContextLength != 128000 {
t.Fatalf("GLM-5 上下文长度错误: %d", records[4].ContextLength)
if records[8].ProviderName != "Zhipu AI" {
t.Fatalf("智谱 provider 归一化错误: %q", records[8].ProviderName)
}
if records[8].ContextLength != 200000 {
t.Fatalf("GLM-5 上下文长度错误: %d", records[8].ContextLength)
}
}
@@ -47,7 +50,7 @@ func TestRunYoudaoPricingImportDryRunPrintsSummary(t *testing.T) {
output := out.String()
for _, want := range []string{
"source=youdao-pricing-import",
"models=5",
"models=10",
"operator=Youdao Zhiyun MaaS",
"dry_run=true",
} {

View File

@@ -32,6 +32,8 @@ printf '%s' "$PASS_OUTPUT" | grep -q '\[PASS\] importer_smoke=hunyuan-fixture'
printf '%s' "$PASS_OUTPUT" | grep -q '\[PASS\] importer_smoke=hunyuan-live'
printf '%s' "$PASS_OUTPUT" | grep -q '\[PASS\] importer_smoke=mobile-cloud-fixture'
printf '%s' "$PASS_OUTPUT" | grep -q '\[PASS\] importer_smoke=mobile-cloud-live'
printf '%s' "$PASS_OUTPUT" | grep -q '\[PASS\] importer_smoke=youdao-fixture'
printf '%s' "$PASS_OUTPUT" | grep -q '\[PASS\] importer_smoke=youdao-live'
printf '%s' "$PASS_OUTPUT" | grep -q '\[PASS\] importer_smoke=cucloud-pricing-fixture'
printf '%s' "$PASS_OUTPUT" | grep -q '\[PASS\] importer_smoke=cucloud-pricing-live'
printf '%s' "$PASS_OUTPUT" | grep -q '\[PASS\] importer_smoke=huawei-maas-fixture'

View File

@@ -444,6 +444,8 @@ func providerMetadata(providerName string) (string, string, string) {
switch providerName {
case "Alibaba", "Qwen":
return "阿里云", "CN", "https://tongyi.aliyun.com"
case "360":
return "360", "CN", "https://ai.360.com/open/models"
case "Amazon":
return "亚马逊", "US", "https://aws.amazon.com"
case "Anthropic":
@@ -452,6 +454,8 @@ func providerMetadata(providerName string) (string, string, string) {
return "智源", "CN", "https://www.baai.ac.cn"
case "Baidu":
return "百度", "CN", "https://cloud.baidu.com"
case "Baichuan":
return "百川智能", "CN", "https://platform.baichuan-ai.com"
case "ByteDance":
return "字节跳动", "CN", "https://www.volcengine.com"
case "China Mobile":
@@ -478,12 +482,20 @@ func providerMetadata(providerName string) (string, string, string) {
return "OpenAI", "US", "https://openai.com"
case "Perplexity":
return "Perplexity", "US", "https://www.perplexity.ai"
case "SenseTime":
return "商汤科技", "CN", "https://www.sensetime.com"
case "Tencent":
return "腾讯", "CN", "https://cloud.tencent.com"
case "Huawei":
return "华为", "CN", "https://www.huaweicloud.com"
case "iFlytek":
return "科大讯飞", "CN", "https://www.xfyun.cn"
case "Yi":
return "零一万物", "CN", "https://platform.lingyiwanwu.com"
case "xAI":
return "xAI", "US", "https://x.ai"
case "Xiaomi":
return "小米", "CN", "https://xiaomi.com"
case "Zhipu AI":
return "智谱", "CN", "https://open.bigmodel.cn"
default:

View File

@@ -26,20 +26,38 @@ check_contains "scripts/run_daily.sh" 'error_exit "腾讯云套餐导入失败"'
check_contains "scripts/run_intel_pipeline.sh" 'run_or_fail "qwen_pricing" "通义千问价格导入失败"'
check_contains "scripts/run_intel_pipeline.sh" 'run_or_fail "hunyuan_pricing" "腾讯混元价格导入失败"'
check_contains "scripts/run_intel_pipeline.sh" 'run_or_fail "mobile_cloud_pricing" "移动云 MoMA 价格导入失败"'
check_contains "scripts/run_intel_pipeline.sh" 'run_or_fail "youdao_pricing" "网易有道价格导入失败"'
check_contains "scripts/run_intel_pipeline.sh" 'run_or_fail "platform360_pricing" "360 智脑价格导入失败"'
check_contains "scripts/run_intel_pipeline.sh" 'run_or_fail "cucloud_pricing" "联通云 Token Plan 价格导入失败"'
check_contains "scripts/run_intel_pipeline.sh" 'run_or_fail "huawei_maas_pricing" "华为云 MaaS 价格导入失败"'
check_contains "scripts/run_intel_pipeline.sh" 'run_or_fail "baichuan_pricing" "百川价格导入失败"'
check_contains "scripts/run_intel_pipeline.sh" 'run_or_fail "lingyiwanwu_pricing" "零一万物价格导入失败"'
check_contains "scripts/run_intel_pipeline.sh" 'run_or_fail "sensenova_pricing" "商汤 SenseNova 价格导入失败"'
check_contains "scripts/run_intel_pipeline.sh" 'run_or_fail "xfyun_pricing" "讯飞价格导入失败"'
check_contains "scripts/run_intel_pipeline.sh" 'run_or_fail "bytedance_pricing" "火山方舟价格导入失败"'
check_contains "scripts/run_real_pipeline.sh" 'merge_failed_source_keys "qwen_pricing"'
check_contains "scripts/run_real_pipeline.sh" 'merge_failed_source_keys "hunyuan_pricing"'
check_contains "scripts/run_real_pipeline.sh" 'merge_failed_source_keys "mobile_cloud_pricing"'
check_contains "scripts/run_real_pipeline.sh" 'merge_failed_source_keys "youdao_pricing"'
check_contains "scripts/run_real_pipeline.sh" 'merge_failed_source_keys "platform360_pricing"'
check_contains "scripts/run_real_pipeline.sh" 'merge_failed_source_keys "cucloud_pricing"'
check_contains "scripts/run_real_pipeline.sh" 'merge_failed_source_keys "huawei_maas_pricing"'
check_contains "scripts/run_real_pipeline.sh" 'merge_failed_source_keys "baichuan_pricing"'
check_contains "scripts/run_real_pipeline.sh" 'merge_failed_source_keys "lingyiwanwu_pricing"'
check_contains "scripts/run_real_pipeline.sh" 'merge_failed_source_keys "sensenova_pricing"'
check_contains "scripts/run_real_pipeline.sh" 'merge_failed_source_keys "xfyun_pricing"'
check_contains "scripts/run_real_pipeline.sh" 'merge_failed_source_keys "bytedance_pricing"'
check_contains "scripts/run_daily.sh" 'merge_failed_source_keys "qwen_pricing"'
check_contains "scripts/run_daily.sh" 'merge_failed_source_keys "hunyuan_pricing"'
check_contains "scripts/run_daily.sh" 'merge_failed_source_keys "mobile_cloud_pricing"'
check_contains "scripts/run_daily.sh" 'merge_failed_source_keys "youdao_pricing"'
check_contains "scripts/run_daily.sh" 'merge_failed_source_keys "platform360_pricing"'
check_contains "scripts/run_daily.sh" 'merge_failed_source_keys "cucloud_pricing"'
check_contains "scripts/run_daily.sh" 'merge_failed_source_keys "huawei_maas_pricing"'
check_contains "scripts/run_daily.sh" 'merge_failed_source_keys "baichuan_pricing"'
check_contains "scripts/run_daily.sh" 'merge_failed_source_keys "lingyiwanwu_pricing"'
check_contains "scripts/run_daily.sh" 'merge_failed_source_keys "sensenova_pricing"'
check_contains "scripts/run_daily.sh" 'merge_failed_source_keys "xfyun_pricing"'
check_contains "scripts/run_daily.sh" 'merge_failed_source_keys "bytedance_pricing"'
@@ -47,8 +65,14 @@ check_contains "scripts/verify_importer_smoke.sh" 'run_smoke "tencent-live"'
check_contains "scripts/verify_importer_smoke.sh" 'run_smoke "qwen-fixture"'
check_contains "scripts/verify_importer_smoke.sh" 'run_smoke "hunyuan-fixture"'
check_contains "scripts/verify_importer_smoke.sh" 'run_smoke "mobile-cloud-fixture"'
check_contains "scripts/verify_importer_smoke.sh" 'run_smoke "youdao-fixture"'
check_contains "scripts/verify_importer_smoke.sh" 'run_smoke "platform360-fixture"'
check_contains "scripts/verify_importer_smoke.sh" 'run_smoke "cucloud-pricing-fixture"'
check_contains "scripts/verify_importer_smoke.sh" 'run_smoke "huawei-maas-fixture"'
check_contains "scripts/verify_importer_smoke.sh" 'run_smoke "baichuan-fixture"'
check_contains "scripts/verify_importer_smoke.sh" 'run_smoke "lingyiwanwu-fixture"'
check_contains "scripts/verify_importer_smoke.sh" 'run_smoke "sensenova-fixture"'
check_contains "scripts/verify_importer_smoke.sh" 'run_smoke "xfyun-fixture"'
check_contains "scripts/verify_importer_smoke.sh" 'run_smoke "bytedance-fixture"'
echo "pipeline_runtime_alignment_test: PASS"

View File

@@ -30,11 +30,11 @@ func parse360PricingCatalog(raw string) ([]officialPricingRecord, error) {
ProviderNameCn: providerNameCn,
ProviderCountry: providerCountry,
ProviderWebsite: providerWebsite,
OperatorName: "360 Open Platform",
OperatorName: "360 ZhiNao",
OperatorNameCn: "360 智脑开放平台",
OperatorCountry: "CN",
OperatorWebsite: "https://ai.360.com",
OperatorType: "relay",
OperatorWebsite: default360PricingURL,
OperatorType: "official",
Region: "CN",
Currency: "CNY",
InputPrice: mustParseSubscriptionPrice(match[3]),
@@ -43,7 +43,7 @@ func parse360PricingCatalog(raw string) ([]officialPricingRecord, error) {
SourceURL: default360PricingURL,
ModelSourceURL: default360PricingURL,
DateConfidence: "unknown",
DateSourceKind: "official_product_page",
DateSourceKind: "official_pricing",
Modality: detectModality(modelName),
}
record.IsFree = record.InputPrice == 0 && record.OutputPrice == 0

View File

@@ -22,7 +22,7 @@ MODEL_COUNT=""
FETCH_OUT="${PROJECT_DIR}/models.json"
FETCH_TOTAL="0"
PIPELINE_STAGE_SET="openrouter,multi_source,official_imports,daily_signal_snapshot,daily_report"
PIPELINE_SOURCE_SET="openrouter,moonshot,deepseek,openai,zhipu,baidu,bytedance,tencent_subscription,aliyun_subscription,baidu_subscription,ctyun_subscription,bytedance_subscription,huawei_package,zhipu_coding_plan,minimax_subscription,cucloud_catalog,cucloud_pricing,mobile_cloud_pricing,youdao_pricing,platform360_pricing,siliconflow_pricing,ppio_pricing,ucloud_pricing,coreshub_pricing,cloudflare_pricing,perplexity_pricing,vertex_pricing,bedrock_pricing,azure_openai_pricing,qwen_pricing,hunyuan_pricing,huawei_maas_pricing,bytedance_pricing,catalog_seed_verification"
PIPELINE_SOURCE_SET="openrouter,moonshot,deepseek,openai,zhipu,baidu,bytedance,tencent_subscription,aliyun_subscription,baidu_subscription,ctyun_subscription,bytedance_subscription,huawei_package,zhipu_coding_plan,minimax_subscription,cucloud_catalog,cucloud_pricing,mobile_cloud_pricing,youdao_pricing,platform360_pricing,siliconflow_pricing,ppio_pricing,ucloud_pricing,coreshub_pricing,cloudflare_pricing,perplexity_pricing,vertex_pricing,bedrock_pricing,azure_openai_pricing,qwen_pricing,hunyuan_pricing,huawei_maas_pricing,baichuan_pricing,lingyiwanwu_pricing,sensenova_pricing,xfyun_pricing,bytedance_pricing,catalog_seed_verification"
PIPELINE_FAILED_SOURCE_SET="none"
MULTI_SOURCE_AUDIT="multi_source_audit=unavailable"
PIPELINE_AUDIT_SUMMARY=""
@@ -419,6 +419,34 @@ if ! go run -tags llm_script \
merge_failed_source_keys "huawei_maas_pricing"
error_exit "华为云 MaaS 价格导入失败"
fi
if ! go run -tags llm_script \
scripts/subscription_import_common.go \
scripts/official_pricing_import_common.go \
scripts/import_baichuan_pricing.go >> "$LOG_FILE" 2>&1; then
merge_failed_source_keys "baichuan_pricing"
error_exit "百川价格导入失败"
fi
if ! go run -tags llm_script \
scripts/subscription_import_common.go \
scripts/official_pricing_import_common.go \
scripts/import_lingyiwanwu_pricing.go >> "$LOG_FILE" 2>&1; then
merge_failed_source_keys "lingyiwanwu_pricing"
error_exit "零一万物价格导入失败"
fi
if ! go run -tags llm_script \
scripts/subscription_import_common.go \
scripts/official_pricing_import_common.go \
scripts/import_sensenova_pricing.go >> "$LOG_FILE" 2>&1; then
merge_failed_source_keys "sensenova_pricing"
error_exit "商汤 SenseNova 价格导入失败"
fi
if ! go run -tags llm_script \
scripts/subscription_import_common.go \
scripts/official_pricing_import_common.go \
scripts/import_xfyun_pricing.go >> "$LOG_FILE" 2>&1; then
merge_failed_source_keys "xfyun_pricing"
error_exit "讯飞价格导入失败"
fi
if ! go run -tags llm_script \
scripts/subscription_import_common.go \
scripts/official_pricing_import_common.go \

View File

@@ -27,7 +27,7 @@ REPORT_DATE="${REPORT_DATE:-$(date +%F)}"
FETCH_OUT="$ROOT_DIR/models.json"
FETCH_TOTAL="0"
PIPELINE_STAGE_SET="openrouter,multi_source,official_imports,daily_signal_snapshot"
PIPELINE_SOURCE_SET="openrouter,moonshot,deepseek,openai,zhipu,baidu,bytedance,tencent_subscription,aliyun_subscription,baidu_subscription,ctyun_subscription,bytedance_subscription,huawei_package,zhipu_coding_plan,minimax_subscription,cucloud_catalog,cucloud_pricing,mobile_cloud_pricing,youdao_pricing,platform360_pricing,siliconflow_pricing,ppio_pricing,ucloud_pricing,coreshub_pricing,cloudflare_pricing,perplexity_pricing,vertex_pricing,bedrock_pricing,azure_openai_pricing,qwen_pricing,hunyuan_pricing,huawei_maas_pricing,bytedance_pricing,catalog_seed_verification"
PIPELINE_SOURCE_SET="openrouter,moonshot,deepseek,openai,zhipu,baidu,bytedance,tencent_subscription,aliyun_subscription,baidu_subscription,ctyun_subscription,bytedance_subscription,huawei_package,zhipu_coding_plan,minimax_subscription,cucloud_catalog,cucloud_pricing,mobile_cloud_pricing,youdao_pricing,platform360_pricing,siliconflow_pricing,ppio_pricing,ucloud_pricing,coreshub_pricing,cloudflare_pricing,perplexity_pricing,vertex_pricing,bedrock_pricing,azure_openai_pricing,qwen_pricing,hunyuan_pricing,huawei_maas_pricing,baichuan_pricing,lingyiwanwu_pricing,sensenova_pricing,xfyun_pricing,bytedance_pricing,catalog_seed_verification"
PIPELINE_FAILED_SOURCE_SET="none"
MULTI_SOURCE_AUDIT="multi_source_audit=unavailable"
PIPELINE_AUDIT_SUMMARY=""
@@ -181,6 +181,14 @@ run_or_fail "hunyuan_pricing" "腾讯混元价格导入失败" \
go run -tags llm_script ./scripts/subscription_import_common.go ./scripts/official_pricing_import_common.go ./scripts/import_hunyuan_pricing.go
run_or_fail "huawei_maas_pricing" "华为云 MaaS 价格导入失败" \
go run -tags llm_script ./scripts/subscription_import_common.go ./scripts/official_pricing_import_common.go ./scripts/import_huawei_maas_pricing.go
run_or_fail "baichuan_pricing" "百川价格导入失败" \
go run -tags llm_script ./scripts/subscription_import_common.go ./scripts/official_pricing_import_common.go ./scripts/import_baichuan_pricing.go
run_or_fail "lingyiwanwu_pricing" "零一万物价格导入失败" \
go run -tags llm_script ./scripts/subscription_import_common.go ./scripts/official_pricing_import_common.go ./scripts/import_lingyiwanwu_pricing.go
run_or_fail "sensenova_pricing" "商汤 SenseNova 价格导入失败" \
go run -tags llm_script ./scripts/subscription_import_common.go ./scripts/official_pricing_import_common.go ./scripts/import_sensenova_pricing.go
run_or_fail "xfyun_pricing" "讯飞价格导入失败" \
go run -tags llm_script ./scripts/subscription_import_common.go ./scripts/official_pricing_import_common.go ./scripts/import_xfyun_pricing.go
run_or_fail "bytedance_pricing" "火山方舟价格导入失败" \
go run -tags llm_script ./scripts/subscription_import_common.go ./scripts/official_pricing_import_common.go ./scripts/import_bytedance_pricing.go

View File

@@ -28,7 +28,7 @@ REPORT_DATE="$(report_date_value)"
FETCH_OUT="$ROOT_DIR/models.json"
FETCH_TOTAL="0"
PIPELINE_STAGE_SET="openrouter,multi_source,official_imports,daily_signal_snapshot,daily_report"
PIPELINE_SOURCE_SET="openrouter,moonshot,deepseek,openai,zhipu,baidu,bytedance,tencent_subscription,aliyun_subscription,baidu_subscription,ctyun_subscription,bytedance_subscription,huawei_package,zhipu_coding_plan,minimax_subscription,cucloud_catalog,cucloud_pricing,mobile_cloud_pricing,youdao_pricing,platform360_pricing,siliconflow_pricing,ppio_pricing,ucloud_pricing,coreshub_pricing,cloudflare_pricing,perplexity_pricing,vertex_pricing,bedrock_pricing,azure_openai_pricing,qwen_pricing,hunyuan_pricing,huawei_maas_pricing,bytedance_pricing,catalog_seed_verification"
PIPELINE_SOURCE_SET="openrouter,moonshot,deepseek,openai,zhipu,baidu,bytedance,tencent_subscription,aliyun_subscription,baidu_subscription,ctyun_subscription,bytedance_subscription,huawei_package,zhipu_coding_plan,minimax_subscription,cucloud_catalog,cucloud_pricing,mobile_cloud_pricing,youdao_pricing,platform360_pricing,siliconflow_pricing,ppio_pricing,ucloud_pricing,coreshub_pricing,cloudflare_pricing,perplexity_pricing,vertex_pricing,bedrock_pricing,azure_openai_pricing,qwen_pricing,hunyuan_pricing,huawei_maas_pricing,baichuan_pricing,lingyiwanwu_pricing,sensenova_pricing,xfyun_pricing,bytedance_pricing,catalog_seed_verification"
PIPELINE_FAILED_SOURCE_SET="none"
MULTI_SOURCE_AUDIT="multi_source_audit=unavailable"
PIPELINE_AUDIT_SUMMARY=""
@@ -289,6 +289,26 @@ if ! go run -tags llm_script "./scripts/subscription_import_common.go" "./script
record_failure "华为云 MaaS 价格导入失败"
exit 1
fi
if ! go run -tags llm_script "./scripts/subscription_import_common.go" "./scripts/official_pricing_import_common.go" "./scripts/import_baichuan_pricing.go"; then
merge_failed_source_keys "baichuan_pricing"
record_failure "百川价格导入失败"
exit 1
fi
if ! go run -tags llm_script "./scripts/subscription_import_common.go" "./scripts/official_pricing_import_common.go" "./scripts/import_lingyiwanwu_pricing.go"; then
merge_failed_source_keys "lingyiwanwu_pricing"
record_failure "零一万物价格导入失败"
exit 1
fi
if ! go run -tags llm_script "./scripts/subscription_import_common.go" "./scripts/official_pricing_import_common.go" "./scripts/import_sensenova_pricing.go"; then
merge_failed_source_keys "sensenova_pricing"
record_failure "商汤 SenseNova 价格导入失败"
exit 1
fi
if ! go run -tags llm_script "./scripts/subscription_import_common.go" "./scripts/official_pricing_import_common.go" "./scripts/import_xfyun_pricing.go"; then
merge_failed_source_keys "xfyun_pricing"
record_failure "讯飞价格导入失败"
exit 1
fi
if ! go run -tags llm_script "./scripts/subscription_import_common.go" "./scripts/official_pricing_import_common.go" "./scripts/import_bytedance_pricing.go"; then
merge_failed_source_keys "bytedance_pricing"
record_failure "火山方舟价格导入失败"

View File

@@ -1,36 +1,72 @@
DeepSeek V4 Flash
DeepSeek-V4-Flash
DeepSeek
上下文长度 1M
输入:¥1.0
输出:¥2.0
查看详情
DeepSeek-V4-Pro
DeepSeek
上下文长度 1M
输入:¥12.0
输出:¥24.0
查看详情
Qwen-3.5-Plus
Qwen
上下文长度 1M
输入:¥0.8
输出:¥4.8
查看详情
Qwen-3.5-Flash
Qwen
上下文长度 128K
输入:¥0.5
输出:¥2
查看详情
DeepSeek V4 Pro
DeepSeek
上下文长度 128K
输入:¥2
输出:¥8
查看详情
Kimi K2.6
Kimi
上下文长度 262K
输入:¥4
输出:¥16
查看详情
MiniMax M2.5
Minimax
上下文长度 1M
输入:¥1
输出:¥8
查看详情
GLM-5
Zhipu
上下文长度 128K
输入:¥1
输出:¥3
查看详情
输出:¥1.5
即将上线
Qwen-3.6-Plus
Qwen
上下文长度 1M
输入:¥2.0
输出:¥12.0
查看详情
Kimi-K2.5
Kimi
上下文长度 256K
输入:¥0.8
输出:¥3.2
输入:¥4
输出:¥21
查看详情
Kimi-K2.6
Kimi
上下文长度 256K
输入:¥6.5
输出:¥27.0
查看详情
Minimax-M2.5
Minimax
上下文长度 200K
输入:¥2.1
输出:¥8.4
查看详情
Minimax-M2.7
Minimax
上下文长度 200K
输入:¥2.1
输出:¥8.4
查看详情
GLM-5
智谱
上下文长度 200K
输入:¥4.0
输出:¥18.0
查看详情
GLM-5.1
智谱
上下文长度 200K
输入:¥6.0
输出:¥24.0
查看详情
MiMo-V2.5
小米
上下文长度 1M
输入:¥0.56
输出:¥2.80
即将上线

View File

@@ -12,9 +12,15 @@ TENCENT_FIXTURE_PATH="${TENCENT_FIXTURE_PATH:-./scripts/testdata/tencent_token_p
QWEN_FIXTURE_PATH="${QWEN_FIXTURE_PATH:-./scripts/testdata/qwen_pricing_sample.txt}"
HUNYUAN_FIXTURE_PATH="${HUNYUAN_FIXTURE_PATH:-./scripts/testdata/hunyuan_pricing_sample.txt}"
MOBILE_CLOUD_FIXTURE_PATH="${MOBILE_CLOUD_FIXTURE_PATH:-./scripts/testdata/mobile_cloud_pricing_sample.html}"
YOUDAO_FIXTURE_PATH="${YOUDAO_FIXTURE_PATH:-./scripts/testdata/youdao_pricing_sample.txt}"
CUCLOUD_FIXTURE_PATH="${CUCLOUD_FIXTURE_PATH:-./scripts/testdata/cucloud_pricing_sample.html}"
BYTEDANCE_FIXTURE_PATH="${BYTEDANCE_FIXTURE_PATH:-./scripts/testdata/bytedance_ark_pricing_sample.txt}"
HUAWEI_MAAS_FIXTURE_PATH="${HUAWEI_MAAS_FIXTURE_PATH:-./scripts/testdata/huawei_maas_pricing_sample.json}"
BAICHUAN_FIXTURE_PATH="${BAICHUAN_FIXTURE_PATH:-./scripts/testdata/baichuan_pricing_sample.txt}"
LINGYIWANWU_FIXTURE_PATH="${LINGYIWANWU_FIXTURE_PATH:-./scripts/testdata/lingyiwanwu_pricing_sample.txt}"
PLATFORM360_FIXTURE_PATH="${PLATFORM360_FIXTURE_PATH:-./scripts/testdata/platform360_pricing_sample.txt}"
SENSENOVA_FIXTURE_PATH="${SENSENOVA_FIXTURE_PATH:-./scripts/testdata/sensenova_pricing_sample.txt}"
XFYUN_FIXTURE_PATH="${XFYUN_FIXTURE_PATH:-./scripts/testdata/xfyun_pricing_sample.html}"
last_meaningful_line() {
awk 'NF && $0 !~ /^exit status [0-9]+$/ { line=$0 } END { print line }'
@@ -53,10 +59,22 @@ run_smoke "hunyuan-fixture" "go run -tags llm_script ./scripts/subscription_impo
run_smoke "hunyuan-live" "go run -tags llm_script ./scripts/subscription_import_common.go ./scripts/official_pricing_import_common.go ./scripts/import_hunyuan_pricing.go -dry-run"
run_smoke "mobile-cloud-fixture" "go run -tags llm_script ./scripts/subscription_import_common.go ./scripts/official_pricing_import_common.go ./scripts/import_mobile_cloud_pricing.go -fixture ${MOBILE_CLOUD_FIXTURE_PATH@Q} -dry-run"
run_smoke "mobile-cloud-live" "go run -tags llm_script ./scripts/subscription_import_common.go ./scripts/official_pricing_import_common.go ./scripts/import_mobile_cloud_pricing.go -dry-run"
run_smoke "youdao-fixture" "go run -tags llm_script ./scripts/subscription_import_common.go ./scripts/official_pricing_import_common.go ./scripts/youdao_pricing_lib.go ./scripts/import_youdao_pricing.go -fixture ${YOUDAO_FIXTURE_PATH@Q} -dry-run"
run_smoke "youdao-live" "go run -tags llm_script ./scripts/subscription_import_common.go ./scripts/official_pricing_import_common.go ./scripts/youdao_pricing_lib.go ./scripts/import_youdao_pricing.go -dry-run"
run_smoke "platform360-fixture" "go run -tags llm_script ./scripts/subscription_import_common.go ./scripts/official_pricing_import_common.go ./scripts/platform360_pricing_lib.go ./scripts/import_360_pricing.go -fixture ${PLATFORM360_FIXTURE_PATH@Q} -dry-run"
run_smoke "platform360-live" "go run -tags llm_script ./scripts/subscription_import_common.go ./scripts/official_pricing_import_common.go ./scripts/platform360_pricing_lib.go ./scripts/import_360_pricing.go -dry-run"
run_smoke "cucloud-pricing-fixture" "go run -tags llm_script ./scripts/subscription_import_common.go ./scripts/official_pricing_import_common.go ./scripts/import_cucloud_pricing.go -fixture ${CUCLOUD_FIXTURE_PATH@Q} -dry-run"
run_smoke "cucloud-pricing-live" "go run -tags llm_script ./scripts/subscription_import_common.go ./scripts/official_pricing_import_common.go ./scripts/import_cucloud_pricing.go -dry-run"
run_smoke "huawei-maas-fixture" "go run -tags llm_script ./scripts/subscription_import_common.go ./scripts/official_pricing_import_common.go ./scripts/import_huawei_maas_pricing.go -fixture ${HUAWEI_MAAS_FIXTURE_PATH@Q} -dry-run"
run_smoke "huawei-maas-live" "go run -tags llm_script ./scripts/subscription_import_common.go ./scripts/official_pricing_import_common.go ./scripts/import_huawei_maas_pricing.go -dry-run"
run_smoke "baichuan-fixture" "go run -tags llm_script ./scripts/subscription_import_common.go ./scripts/official_pricing_import_common.go ./scripts/import_baichuan_pricing.go -fixture ${BAICHUAN_FIXTURE_PATH@Q} -dry-run"
run_smoke "baichuan-live" "go run -tags llm_script ./scripts/subscription_import_common.go ./scripts/official_pricing_import_common.go ./scripts/import_baichuan_pricing.go -dry-run"
run_smoke "lingyiwanwu-fixture" "go run -tags llm_script ./scripts/subscription_import_common.go ./scripts/official_pricing_import_common.go ./scripts/import_lingyiwanwu_pricing.go -fixture ${LINGYIWANWU_FIXTURE_PATH@Q} -dry-run"
run_smoke "lingyiwanwu-live" "go run -tags llm_script ./scripts/subscription_import_common.go ./scripts/official_pricing_import_common.go ./scripts/import_lingyiwanwu_pricing.go -dry-run"
run_smoke "sensenova-fixture" "go run -tags llm_script ./scripts/subscription_import_common.go ./scripts/official_pricing_import_common.go ./scripts/import_sensenova_pricing.go -fixture ${SENSENOVA_FIXTURE_PATH@Q} -dry-run"
run_smoke "sensenova-live" "go run -tags llm_script ./scripts/subscription_import_common.go ./scripts/official_pricing_import_common.go ./scripts/import_sensenova_pricing.go -dry-run"
run_smoke "xfyun-fixture" "go run -tags llm_script ./scripts/subscription_import_common.go ./scripts/official_pricing_import_common.go ./scripts/import_xfyun_pricing.go -fixture ${XFYUN_FIXTURE_PATH@Q} -dry-run"
run_smoke "xfyun-live" "go run -tags llm_script ./scripts/subscription_import_common.go ./scripts/official_pricing_import_common.go ./scripts/import_xfyun_pricing.go -dry-run"
run_smoke "bytedance-fixture" "go run -tags llm_script ./scripts/subscription_import_common.go ./scripts/official_pricing_import_common.go ./scripts/import_bytedance_pricing.go -fixture ${BYTEDANCE_FIXTURE_PATH@Q} -dry-run"
run_smoke "bytedance-live" "go run -tags llm_script ./scripts/subscription_import_common.go ./scripts/official_pricing_import_common.go ./scripts/import_bytedance_pricing.go -dry-run"

View File

@@ -8,9 +8,9 @@ import (
"strings"
)
const defaultYoudaoPricingURL = "https://ai.youdao.com/new/model-service"
const defaultYoudaoPricingURL = "https://ai.youdao.com/new/thinkflow"
var youdaoCardPattern = regexp.MustCompile(`(?s)([A-Za-z0-9.+\- ]+)\n([A-Za-z][A-Za-z0-9 ]+)\n.*?上下文长度\s*([0-9A-Za-z., ]+)\n.*?输入[:]?\s*¥?([\d.]+)\n.*?输出[:]?\s*¥?([\d.]+)\n.*?(查看详情|即将上线)`)
var youdaoCardPattern = regexp.MustCompile(`(?s)([A-Za-z0-9.+\- ]+)\n([^\n]+)\n.*?上下文长度\s*([0-9A-Za-z., ]+)\n.*?输入[:]?\s*¥?([\d.]+)\n.*?输出[:]?\s*¥?([\d.]+)\n.*?(查看详情|即将上线)`)
func parseYoudaoPricingCatalog(raw string) ([]officialPricingRecord, error) {
matches := youdaoCardPattern.FindAllStringSubmatch(raw, -1)
@@ -36,8 +36,8 @@ func parseYoudaoPricingCatalog(raw string) ([]officialPricingRecord, error) {
OperatorName: "Youdao Zhiyun MaaS",
OperatorNameCn: "有道智云 MaaS",
OperatorCountry: "CN",
OperatorWebsite: "https://sf.163.com",
OperatorType: "relay",
OperatorWebsite: defaultYoudaoPricingURL,
OperatorType: "official",
Region: "CN",
Currency: "CNY",
InputPrice: mustParseSubscriptionPrice(match[4]),
@@ -46,7 +46,7 @@ func parseYoudaoPricingCatalog(raw string) ([]officialPricingRecord, error) {
SourceURL: defaultYoudaoPricingURL,
ModelSourceURL: defaultYoudaoPricingURL,
DateConfidence: "unknown",
DateSourceKind: "official_product_page",
DateSourceKind: "official_pricing",
Modality: detectModality(modelName),
}
record.IsFree = record.InputPrice == 0 && record.OutputPrice == 0
@@ -70,6 +70,10 @@ func normalizeYoudaoProvider(raw string) string {
return "MiniMax"
case "zhipu":
return "Zhipu AI"
case "智谱":
return "Zhipu AI"
case "xiaomi", "小米":
return "Xiaomi"
default:
return strings.TrimSpace(raw)
}

View File

@@ -577,21 +577,21 @@
"operatorName": "Youdao Zhiyun MaaS",
"operatorNameCn": "有道智云 MaaS",
"operatorCountry": "CN",
"operatorWebsite": "https://sf.163.com",
"operatorType": "relay",
"operatorWebsite": "https://ai.youdao.com/new/thinkflow",
"operatorType": "official",
"platformName": "Youdao Zhiyun MaaS",
"platformNameCn": "有道智云 MaaS",
"platformType": "relay_platform",
"planFamily": "pay_as_you_go",
"planStatus": "confirmed",
"sourceKind": "official_product_page",
"sourceURL": "https://sf.163.com/product/maas",
"sourceTitle": "有道智云 MaaS",
"sourceKind": "official_pricing",
"sourceURL": "https://ai.youdao.com/new/thinkflow",
"sourceTitle": "ThinkFlow 官网",
"region": "CN",
"currency": "CNY",
"billingCycle": "usage",
"importerKey": "import_youdao_pricing.go",
"notes": "支持多模型与渠道分销。",
"notes": "当前可访问的官方公开价格源为 ai.youdao.com/new/thinkflow页面公开 DeepSeek/Qwen/Kimi/MiniMax/GLM 等模型的输入/输出 token 单价,并展示渠道转发能力。",
"catalogSegment": "relay_top20plus",
"marketRank": 14
},

View File

@@ -293,7 +293,7 @@
"region": "CN",
"currency": "CNY",
"billingCycle": "usage",
"importerKey": "import_catalog_seed_verification.go",
"importerKey": "import_baichuan_pricing.go",
"notes": "当前以按量价格页为主。",
"catalogSegment": "vendor_top20",
"marketRank": 11
@@ -320,8 +320,8 @@
"region": "CN",
"currency": "CNY",
"billingCycle": "usage",
"importerKey": "import_catalog_seed_verification.go",
"notes": "官方文档可确认 API 平台与模型接入。",
"importerKey": "import_lingyiwanwu_pricing.go",
"notes": "官方文档价格表当前公开 yi-lightning 与 yi-vision-v2 两个按量模型,价格单位为每 1M token。",
"catalogSegment": "vendor_top20",
"marketRank": 12
},
@@ -347,8 +347,8 @@
"region": "CN",
"currency": "CNY",
"billingCycle": "usage",
"importerKey": "import_catalog_seed_verification.go",
"notes": "当前公开为按量价格页。",
"importerKey": "import_sensenova_pricing.go",
"notes": "官方公开信号为公测期免费开放、所有当前模型完全开放;当前按 0 价 free-tier 入库 3 个公开模型SenseNova 6.7 Flash-Lite / SenseNova U1 Fast / DeepSeek V4 Flash。",
"catalogSegment": "vendor_top20",
"marketRank": 13
},
@@ -368,14 +368,14 @@
"platformType": "official_vendor",
"planFamily": "pay_as_you_go",
"planStatus": "confirmed",
"sourceKind": "official_product_page",
"sourceURL": "https://www.xfyun.cn/doc/spark/Web.html",
"sourceTitle": "星火大模型 Web API",
"sourceKind": "official_pricing",
"sourceURL": "https://xinghuo.xfyun.cn/sparkapi?scr=price",
"sourceTitle": "讯飞星火大模型API-大模型API-大模型接口-科大讯飞",
"region": "CN",
"currency": "CNY",
"billingCycle": "usage",
"importerKey": "import_catalog_seed_verification.go",
"notes": "已确认官方 API 文档与开放能力。",
"importerKey": "import_xfyun_pricing.go",
"notes": "当前公开价格页披露 X2/X1.5 / Ultra / Pro / Lite 四档 blended token 单价卡片。",
"catalogSegment": "vendor_top20",
"marketRank": 14
},
@@ -384,25 +384,25 @@
"providerName": "360",
"providerNameCn": "360",
"providerCountry": "CN",
"providerWebsite": "https://openmodel.360.cn",
"providerWebsite": "https://ai.360.com/open/models",
"operatorName": "360 ZhiNao",
"operatorNameCn": "360 智脑",
"operatorNameCn": "360 智脑开放平台",
"operatorCountry": "CN",
"operatorWebsite": "https://openmodel.360.cn",
"operatorWebsite": "https://ai.360.com/open/models",
"operatorType": "official",
"platformName": "360 ZhiNao API",
"platformNameCn": "360 智脑开放平台",
"platformType": "official_vendor",
"planFamily": "pay_as_you_go",
"planStatus": "confirmed",
"sourceKind": "official_product_page",
"sourceURL": "https://openmodel.360.cn/",
"sourceTitle": "360 智脑开放平台",
"sourceKind": "official_pricing",
"sourceURL": "https://ai.360.com/open/models",
"sourceTitle": "模型广场_360智脑开放平台",
"region": "CN",
"currency": "CNY",
"billingCycle": "usage",
"importerKey": "import_catalog_seed_verification.go",
"notes": "已确认官方开放平台入口。",
"importerKey": "import_360_pricing.go",
"notes": "当前可访问的官方公开价格源为 ai.360.com/open/models页面包含 360 自有模型与第三方模型的输入/输出 token 单价,当前按该官方开放平台的广义价格面入库。",
"catalogSegment": "vendor_top20",
"marketRank": 15
},
@@ -415,21 +415,21 @@
"operatorName": "Youdao Ziyue",
"operatorNameCn": "子曰大模型",
"operatorCountry": "CN",
"operatorWebsite": "https://sf.163.com",
"operatorWebsite": "https://ai.youdao.com/new/thinkflow",
"operatorType": "official",
"platformName": "Youdao Ziyue API",
"platformNameCn": "网易有道子曰开放平台",
"platformType": "official_vendor",
"planFamily": "pay_as_you_go",
"planStatus": "confirmed",
"sourceKind": "official_product_page",
"sourceURL": "https://sf.163.com/product/maas",
"sourceTitle": "有道智云 MaaS",
"sourceKind": "official_pricing",
"sourceURL": "https://ai.youdao.com/new/thinkflow",
"sourceTitle": "ThinkFlow 官网",
"region": "CN",
"currency": "CNY",
"billingCycle": "usage",
"importerKey": "import_catalog_seed_verification.go",
"notes": "官方可提供 MaaS 与子曰模型接入。",
"importerKey": "import_youdao_pricing.go",
"notes": "当前可访问的官方公开价格源为 ai.youdao.com/new/thinkflow页面同时覆盖 DeepSeek/Qwen/Kimi/MiniMax/GLM 等第三方模型价卡,当前按该官方开放平台广义价格面入库,不能等同于“仅子曰自研模型价格表”。",
"catalogSegment": "vendor_top20",
"marketRank": 16
},
@@ -438,11 +438,11 @@
"providerName": "ModelBest",
"providerNameCn": "面壁智能",
"providerCountry": "CN",
"providerWebsite": "https://platform.modelbest.cn",
"providerWebsite": "https://modelbest.cn",
"operatorName": "ModelBest",
"operatorNameCn": "面壁开放平台",
"operatorCountry": "CN",
"operatorWebsite": "https://platform.modelbest.cn",
"operatorWebsite": "https://modelbest.cn",
"operatorType": "official",
"platformName": "MiniCPM API",
"platformNameCn": "MiniCPM 开放平台",
@@ -450,13 +450,13 @@
"planFamily": "pay_as_you_go",
"planStatus": "confirmed",
"sourceKind": "official_product_page",
"sourceURL": "https://platform.modelbest.cn/",
"sourceURL": "https://modelbest.cn/",
"sourceTitle": "面壁开放平台",
"region": "CN",
"currency": "CNY",
"billingCycle": "usage",
"importerKey": "import_catalog_seed_verification.go",
"notes": "官方开放平台可确认模型接入入口。",
"notes": "当前公开可访问入口为 modelbest.cn 官网与公开飞书 Cookbookplatform.modelbest.cn 当前 404尚未发现稳定公开 payg 价格页,暂保持目录级入口核验。",
"catalogSegment": "vendor_top20",
"marketRank": 17
},