From c32661fd2a99fbc2f261960c8cc587f0c1a38d15 Mon Sep 17 00:00:00 2001 From: phamnazage-jpg Date: Sat, 23 May 2026 18:35:08 +0800 Subject: [PATCH] test(runtime): wire new pricing importers into pipeline smoke and catalog mapping --- scripts/import_360_pricing_test.go | 2 +- scripts/import_plan_catalog_test.go | 122 +++++++++--------- scripts/import_youdao_pricing_test.go | 17 ++- scripts/importer_smoke_gate_test.sh | 2 + scripts/official_pricing_import_common.go | 12 ++ scripts/pipeline_runtime_alignment_test.sh | 24 ++++ scripts/platform360_pricing_lib.go | 8 +- scripts/run_daily.sh | 30 ++++- scripts/run_intel_pipeline.sh | 10 +- scripts/run_real_pipeline.sh | 22 +++- scripts/testdata/youdao_pricing_sample.txt | 94 +++++++++----- scripts/verify_importer_smoke.sh | 18 +++ scripts/youdao_pricing_lib.go | 14 +- ...og_inventory_seed_cn_relays_top20plus.json | 12 +- ...talog_inventory_seed_cn_vendors_top20.json | 56 ++++---- 15 files changed, 299 insertions(+), 144 deletions(-) diff --git a/scripts/import_360_pricing_test.go b/scripts/import_360_pricing_test.go index dead1bd..32beffc 100644 --- a/scripts/import_360_pricing_test.go +++ b/scripts/import_360_pricing_test.go @@ -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) { diff --git a/scripts/import_plan_catalog_test.go b/scripts/import_plan_catalog_test.go index 3d3c8ee..afba396 100644 --- a/scripts/import_plan_catalog_test.go +++ b/scripts/import_plan_catalog_test.go @@ -31,68 +31,68 @@ func TestBuildPlanCatalogRows(t *testing.T) { foundVendorTop20 := false foundRelayTop20Plus := false wantImporterKeys := map[string]string{ - "tencent-cloud-token-plan-enterprise-pro": "tencent_catalog", + "tencent-cloud-token-plan-enterprise-pro": "tencent_catalog", "tencent-cloud-token-plan-enterprise-lite": "tencent_catalog", - "tencent-cloud-coding-plan": "tencent_catalog", - "aliyun-bailian-token-plan-team": "import_aliyun_subscription.go", - "aliyun-bailian-coding-plan": "import_aliyun_subscription.go", - "baidu-qianfan-token-benefit-pack": "import_baidu_subscription.go", - "baidu-qianfan-coding-plan": "import_baidu_subscription.go", - "bytedance-doubao-api-payg": "import_bytedance_pricing.go", - "zhipu-glm-coding-plan": "import_zhipu_coding_plan.go", - "minimax-token-plan": "import_minimax_subscription.go", - "volcengine-ark-coding-plan": "import_bytedance_subscription.go", - "huawei-cloud-maas-package-plan": "import_huawei_package.go", - "ctyun-token-plan": "import_ctyun_subscription.go", - "ctyun-coding-plan": "import_ctyun_subscription.go", - "cucloud-aicp-platform": "import_cucloud_catalog.go", - "cucloud-ai-app-platform": "import_cucloud_catalog.go", - "cucloud-aisp-token-plan-pricing": "import_cucloud_pricing.go", - "mobile-cloud-ai-market": "import_mobile_cloud_pricing.go", - "aliyun-modelscope-api-inference": "import_catalog_seed_verification.go", - "youdao-zhiyun-maas": "import_youdao_pricing.go", - "ctyun-model-inference-payg": "import_catalog_seed_verification.go", - "360-open-platform": "import_360_pricing.go", - "siliconflow-siliconcloud": "import_siliconflow_pricing.go", - "ppio-model-api": "import_ppio_pricing.go", - "ucloud-umodelverse": "import_ucloud_pricing.go", - "anthropic-api-payg": "import_catalog_seed_verification.go", - "xai-api-payg": "import_catalog_seed_verification.go", - "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", - "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", - "infinigence-api-payg": "import_catalog_seed_verification.go", - "qingcloud-coreshub": "import_coreshub_pricing.go", - "ksyun-xingliu-platform": "import_catalog_seed_verification.go", - "google-gemini-api-payg": "import_catalog_seed_verification.go", - "mistral-api-payg": "import_catalog_seed_verification.go", - "cohere-api-payg": "import_catalog_seed_verification.go", - "openrouter-api-payg": "fetch_openrouter.go", - "together-ai-api-payg": "import_catalog_seed_verification.go", - "fireworks-ai-api-payg": "import_catalog_seed_verification.go", - "deepinfra-api-payg": "import_catalog_seed_verification.go", - "groq-api-payg": "import_catalog_seed_verification.go", - "replicate-api-payg": "import_catalog_seed_verification.go", - "hyperbolic-api-payg": "import_catalog_seed_verification.go", - "novita-ai-api-payg": "import_catalog_seed_verification.go", - "azure-openai-service-payg": "import_azure_openai_pricing.go", - "amazon-bedrock-payg": "import_bedrock_pricing.go", - "google-vertex-ai-genai-payg": "import_vertex_pricing.go", - "cloudflare-workers-ai-payg": "import_cloudflare_pricing.go", - "baseten-inference-payg": "import_catalog_seed_verification.go", - "cerebras-inference-payg": "import_catalog_seed_verification.go", - "perplexity-agent-api-payg": "import_perplexity_pricing.go", - "sambanova-cloud-payg": "import_catalog_seed_verification.go", - "jdcloud-joybuilder-payg": "import_catalog_seed_verification.go", + "tencent-cloud-coding-plan": "tencent_catalog", + "aliyun-bailian-token-plan-team": "import_aliyun_subscription.go", + "aliyun-bailian-coding-plan": "import_aliyun_subscription.go", + "baidu-qianfan-token-benefit-pack": "import_baidu_subscription.go", + "baidu-qianfan-coding-plan": "import_baidu_subscription.go", + "bytedance-doubao-api-payg": "import_bytedance_pricing.go", + "zhipu-glm-coding-plan": "import_zhipu_coding_plan.go", + "minimax-token-plan": "import_minimax_subscription.go", + "volcengine-ark-coding-plan": "import_bytedance_subscription.go", + "huawei-cloud-maas-package-plan": "import_huawei_package.go", + "ctyun-token-plan": "import_ctyun_subscription.go", + "ctyun-coding-plan": "import_ctyun_subscription.go", + "cucloud-aicp-platform": "import_cucloud_catalog.go", + "cucloud-ai-app-platform": "import_cucloud_catalog.go", + "cucloud-aisp-token-plan-pricing": "import_cucloud_pricing.go", + "mobile-cloud-ai-market": "import_mobile_cloud_pricing.go", + "aliyun-modelscope-api-inference": "import_catalog_seed_verification.go", + "youdao-zhiyun-maas": "import_youdao_pricing.go", + "ctyun-model-inference-payg": "import_catalog_seed_verification.go", + "360-open-platform": "import_360_pricing.go", + "siliconflow-siliconcloud": "import_siliconflow_pricing.go", + "ppio-model-api": "import_ppio_pricing.go", + "ucloud-umodelverse": "import_ucloud_pricing.go", + "anthropic-api-payg": "import_catalog_seed_verification.go", + "xai-api-payg": "import_catalog_seed_verification.go", + "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_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", + "infinigence-api-payg": "import_catalog_seed_verification.go", + "qingcloud-coreshub": "import_coreshub_pricing.go", + "ksyun-xingliu-platform": "import_catalog_seed_verification.go", + "google-gemini-api-payg": "import_catalog_seed_verification.go", + "mistral-api-payg": "import_catalog_seed_verification.go", + "cohere-api-payg": "import_catalog_seed_verification.go", + "openrouter-api-payg": "fetch_openrouter.go", + "together-ai-api-payg": "import_catalog_seed_verification.go", + "fireworks-ai-api-payg": "import_catalog_seed_verification.go", + "deepinfra-api-payg": "import_catalog_seed_verification.go", + "groq-api-payg": "import_catalog_seed_verification.go", + "replicate-api-payg": "import_catalog_seed_verification.go", + "hyperbolic-api-payg": "import_catalog_seed_verification.go", + "novita-ai-api-payg": "import_catalog_seed_verification.go", + "azure-openai-service-payg": "import_azure_openai_pricing.go", + "amazon-bedrock-payg": "import_bedrock_pricing.go", + "google-vertex-ai-genai-payg": "import_vertex_pricing.go", + "cloudflare-workers-ai-payg": "import_cloudflare_pricing.go", + "baseten-inference-payg": "import_catalog_seed_verification.go", + "cerebras-inference-payg": "import_catalog_seed_verification.go", + "perplexity-agent-api-payg": "import_perplexity_pricing.go", + "sambanova-cloud-payg": "import_catalog_seed_verification.go", + "jdcloud-joybuilder-payg": "import_catalog_seed_verification.go", } for _, row := range rows { if row.CatalogCode == "zhipu-glm-coding-plan" { diff --git a/scripts/import_youdao_pricing_test.go b/scripts/import_youdao_pricing_test.go index 4311428..d18951d 100644 --- a/scripts/import_youdao_pricing_test.go +++ b/scripts/import_youdao_pricing_test.go @@ -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", } { diff --git a/scripts/importer_smoke_gate_test.sh b/scripts/importer_smoke_gate_test.sh index 5e11a54..7cb0173 100755 --- a/scripts/importer_smoke_gate_test.sh +++ b/scripts/importer_smoke_gate_test.sh @@ -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' diff --git a/scripts/official_pricing_import_common.go b/scripts/official_pricing_import_common.go index ba615b0..35449d2 100644 --- a/scripts/official_pricing_import_common.go +++ b/scripts/official_pricing_import_common.go @@ -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: diff --git a/scripts/pipeline_runtime_alignment_test.sh b/scripts/pipeline_runtime_alignment_test.sh index 58ceda7..be64b83 100644 --- a/scripts/pipeline_runtime_alignment_test.sh +++ b/scripts/pipeline_runtime_alignment_test.sh @@ -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" diff --git a/scripts/platform360_pricing_lib.go b/scripts/platform360_pricing_lib.go index 2f9507f..3af716d 100644 --- a/scripts/platform360_pricing_lib.go +++ b/scripts/platform360_pricing_lib.go @@ -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 diff --git a/scripts/run_daily.sh b/scripts/run_daily.sh index 509f0bc..72722c4 100755 --- a/scripts/run_daily.sh +++ b/scripts/run_daily.sh @@ -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 \ diff --git a/scripts/run_intel_pipeline.sh b/scripts/run_intel_pipeline.sh index 2f404c0..c184c83 100755 --- a/scripts/run_intel_pipeline.sh +++ b/scripts/run_intel_pipeline.sh @@ -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 diff --git a/scripts/run_real_pipeline.sh b/scripts/run_real_pipeline.sh index ca2b36b..020ff3e 100755 --- a/scripts/run_real_pipeline.sh +++ b/scripts/run_real_pipeline.sh @@ -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 "火山方舟价格导入失败" diff --git a/scripts/testdata/youdao_pricing_sample.txt b/scripts/testdata/youdao_pricing_sample.txt index 12b9968..9ed30b5 100644 --- a/scripts/testdata/youdao_pricing_sample.txt +++ b/scripts/testdata/youdao_pricing_sample.txt @@ -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 即将上线 diff --git a/scripts/verify_importer_smoke.sh b/scripts/verify_importer_smoke.sh index 805bc14..94ad1e5 100755 --- a/scripts/verify_importer_smoke.sh +++ b/scripts/verify_importer_smoke.sh @@ -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" diff --git a/scripts/youdao_pricing_lib.go b/scripts/youdao_pricing_lib.go index 8c87d3a..d23a746 100644 --- a/scripts/youdao_pricing_lib.go +++ b/scripts/youdao_pricing_lib.go @@ -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) } diff --git a/seeds/plan_catalog_inventory_seed_cn_relays_top20plus.json b/seeds/plan_catalog_inventory_seed_cn_relays_top20plus.json index c141f52..38f5919 100644 --- a/seeds/plan_catalog_inventory_seed_cn_relays_top20plus.json +++ b/seeds/plan_catalog_inventory_seed_cn_relays_top20plus.json @@ -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 }, diff --git a/seeds/plan_catalog_inventory_seed_cn_vendors_top20.json b/seeds/plan_catalog_inventory_seed_cn_vendors_top20.json index 42332dd..198f8c6 100644 --- a/seeds/plan_catalog_inventory_seed_cn_vendors_top20.json +++ b/seeds/plan_catalog_inventory_seed_cn_vendors_top20.json @@ -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 官网与公开飞书 Cookbook;platform.modelbest.cn 当前 404,尚未发现稳定公开 payg 价格页,暂保持目录级入口核验。", "catalogSegment": "vendor_top20", "marketRank": 17 },