Files
intl_news/docs/llm-models.md
T
simon c1ab751d95 feat: 日报改为每日一次 + 新增 LLM 使用/成本/缓存文档
- domestic_full.sh / pipeline.sh 新增 --no-report 参数:跳过日报生成,
  保持 M1 抓取 + M2→M6 管道不变,用于 12:00/18:00 只抓不生成日报
- crontab: 07:00 全量含日报,12:00/18:00 --no-report(日报每日一次,降低 LLM 费用)
- docs/llm-models.md: 各 LLM 调用点分别用的 provider/model 事实清单
- docs/llm-cost-analysis.md: 真实 token 消耗与费用构成、降本建议
- docs/llm-cache-optimization.md: DeepSeek 上下文缓存机制与命中率提升设计
- docs/README.md 增加上述三个文档索引
2026-09-04 10:38:33 +08:00

4.5 KiB
Raw Blame History

LLM 使用点与模型对照清单

本文档是「各使用大模型(LLM)的地方分别用哪个 provider / 哪个模型」的唯一事实源。 数据来源:当前 configs/system.yaml + 已生成 data/events/*/ 的实际调用记录(provider/model 字段)。

一、结论速览(当前生效)

场景 使用位置 Provider 模型 计费账户
M4 翻译 + 事件抽取 llm/pipeline.py → llm/extractor.py DeepSeek deepseek-v4-flash DeepSeek
M7 日报 AI 摘要 scheduler/reporter.py::_call_llm_simple DeepSeek deepseek-v4-flash DeepSeek
M5 向量生成 embedding/pipeline.py DashScope text-embedding-v3 阿里云百炼
M6 入库向量/MCP 检索查询向量化 vectorstore/pipeline.py、mcp_server/server.py DashScope text-embedding-v3 阿里云百炼

⚠️ 常见误区:M4 翻译用的就是 DeepSeek(不是 Qwen/DashScope)。有人会误记成「翻译用的是别的模型」,很可能是因为 M5/M6 的向量化走的是 DashScope(阿里云百炼),而翻译走的是 DeepSeek——两者账户 / 账单是分开的。已在 2026-08-21 / 08-22 / 08-30 生成的 data/events/*/xxx.json 中核实 87 条记录的 provider=deepseek、model=deepseek-v4-flash。

二、各调用点详情

1. M4 翻译 + 事件抽取(DeepSeek)

  • 入口:llm/pipeline.py::translate_all_deduped → llm/extractor.py::translate_and_extract
  • 配置来源:configs/system.yaml → llm_scenes.translation
    llm_scenes:
      translation:
        provider: "deepseek"
        model: "deepseek-v4-flash"
        temperature: 0.1
        max_tokens: 8192
    
  • API 密钥:DEEPSEEK_API_KEY、DEEPSEEK_BASE_URL=https://api.deepseek.com(.env)
  • 说明:单篇独立调用,全文英译中 + 投资事件抽取合并一次输出(JSON)。是全项目 token 消耗与费用的绝对主力。

2. M7 日报 AI 摘要(DeepSeek)

  • 入口:scheduler/reporter.py::_call_llm_simple(_generate_ai_summary)
  • 配置来源:configs/system.yaml → llm_scenes.daily_report
    llm_scenes:
      daily_report:
        provider: "deepseek"
        model: "deepseek-v4-flash"
        temperature: 0.3
        max_tokens: 1500
    
  • 说明:高重要度事件分批(≤10 条/批)生成各批摘要后合并;截断时以更高 max_tokens 重试;全部失败走规则兜底。

3. M5 向量生成(DashScope)

  • 入口:embedding/pipeline.py::embed_all_events
  • 配置来源:configs/system.yaml → embedding 段
    embedding:
      provider: "dashscope"
      dashscope_model: "text-embedding-v3"
      dimension: 1024
      batch_size: 10
      max_attempts: 3
      timeout_sec: 30
    
  • API 密钥:QWEN_API_KEY / DASHSCOPE_API_KEY、QWEN_BASE_URL(.env)
  • 说明:批量向量化,输出 dim=1024。费用极低,不计入 DeepSeek 账单。

4. M6 入库 / MCP 检索查询向量化(DashScope)

  • 入口:vectorstore/pipeline.py::search_news(入库 payload 由 M5 结果构建)、mcp_server/server.py::search_news
  • 配置来源:同上 embedding 段(入库向量与查询向量必须同模型,故共用一份配置)。

三、不使用大模型的环节

  • M1 抓取(Playwright/Crawl4AI)、M2 正文提取(trafilatura)、M3 去重(SimHash/指纹库)、M6 Qdrant upsert、M9 MySQL 写入 —— 均不调用 LLM / embedding。

四、切换 provider / 模型时须知

  1. 翻译 / 摘要可选 DeepSeek 或 Qwen:llm_scenes.<场景>.provider 设为 deepseek 或 qwen,同时确认对应 .env 里有对应 *_API_KEY/*_BASE_URL。llm/client.py::load_llm_config 支持 provider 覆盖。
  2. Embedding 不能随便切:Qdrant en_finance_news 入库向量与检索向量必须同模型。切换模型必须 recreate collection 并全量回灌(ingest_all_embeddings(recreate=True)),否则跨模型向量无法比较。
  3. 改配置后建议:改 provider/model 后重跑一次管道确认 data/events/*/ 的 provider/model 字段一致,避免两套模型混用。

五、参考