02 五大引擎关键组件设计
学习理念:这一篇深入每个引擎的内部设计。每个引擎都是一个独立的 LangGraph 工作流,有相同的"搜索→总结→反思→再搜索→格式化"循环模式。理解了这个循环模式,你就掌握了本项目所有引擎的通用骨架。
📖 阅读优先级
| 等级 | 章节 | 说明 |
|---|---|---|
| 🔴 必须理解 | 通用工作流模式 | 每个引擎都用的搜索→总结→反思循环 |
| 🟡 理解即可 | 各引擎差异 | Insight/Media/Query 的搜索策略不同 |
| 🟢 了解即可 | Forum/Report | 讨论和报告生成,了解流程即可 |
一、通用工作流模式
🔴【必须理解】 每个研究引擎(Insight/Media/Query)都使用相同的 7 阶段工作流:
generate_structure → initial_search → initial_summary
→ reflection_search → reflection_summary → format_report → save_report| 阶段 | 做什么 | 是否调 LLM |
|---|---|---|
| generate_structure | 规划报告段落结构(输出 JSON) | ✅ |
| initial_search | 根据段落目标生成搜索 query | ✅ |
| initial_summary | 根据搜索结果为段落写初稿 | ✅ |
| reflection_search | 发现初稿不足,补充搜索 | ✅ |
| reflection_summary | 根据补充结果更新段落 | ✅ |
| format_report | 整理成最终 Markdown 报告 | ✅ |
| save_report | 保存文件 | ❌ |
核心思路:先规划结构 → 再逐段搜索 → 初稿 → 反思不足 → 再搜索 → 更新 → 格式化。这个模式比"直接让 LLM 写"质量更高,因为有"反思"环节。
二、InsightEngine——舆情情感分析
| 维度 | 说明 |
|---|---|
| 数据来源 | 本地舆情数据库(爬虫采集) |
| 核心能力 | 情感分析、主题聚类、关键词提取 |
| 输出 | 公众态度报告、情绪分布、争议点分析 |
典型节点 prompt 示例(generate_structure):
python
SYSTEM_PROMPT_REPORT_STRUCTURE = """
你是一位深度研究助手。给定一个查询,你需要规划一个报告的结构和其中包含的段落。
最多5个段落。确保段落的排序合理有序。
一旦大纲创建完成,你将获得工具来分别为每个部分搜索网络并进行反思。
确保输出是一个符合上述输出JSON模式定义的JSON对象。
只返回JSON对象,不要有解释或额外文本。
"""输出示例:
json
[
{"title": "公众情绪总览", "content": "分析整体情绪倾向、情绪强度和时间变化"},
{"title": "热点话题聚类", "content": "识别讨论最集中的话题和子话题"},
{"title": "争议焦点", "content": "分析不同群体之间的观点分歧和争议点"}
]三、MediaEngine——媒体传播分析
| 维度 | 说明 |
|---|---|
| 数据来源 | 网络搜索工具(公开网页、新闻媒体) |
| 核心能力 | 媒体来源识别、传播路径分析、报道角度比对 |
| 输出 | 媒体分析报告、传播链路、报道差异分析 |
MediaEngine 需要回答的问题:
| 问题 | 说明 |
|---|---|
| 哪些媒体在报道 | 识别官方媒体、市场化媒体、自媒体的不同来源 |
| 媒体怎么报道 | 分析不同媒体的报道角度和叙事框架 |
| 信息如何扩散 | 梳理首发来源、扩散节点、关键传播者 |
| 报道是否存在分歧 | 对比不同媒体之间的共识和争议 |
| 后续风险是什么 | 判断话题未来发酵方向 |
四、QueryEngine——事实核验查询
| 维度 | 说明 |
|---|---|
| 数据来源 | 权威站点、官方信息源 |
| 核心能力 | 搜索引擎优化、信息交叉验证、来源可信度评级 |
| 输出 | 事实核验报告、官方信息汇总 |
搜索优化:QueryEngine 使用了搜索优化策略,通过生成精确的搜索 query 来获取高质量结果,而不是简单搜索。
五、SearchService——多引擎并行编排
🟡【理解即可】 SearchService 负责同时启动三个引擎,收集结果。
用户请求 → SearchService
│
├── 启动 InsightEngine(异步)
├── 启动 MediaEngine(异步)
├── 启动 QueryEngine(异步)
│
└── 等待所有引擎完成 → 收集三份报告每个引擎独立运行,互不阻塞。全部完成后触发 ForumEngine。
六、ForumEngine——专家论坛讨论
🟡【理解即可】 ForumEngine 模拟一群专家围坐讨论舆情事件。
工作流程:
三引擎报告完成 → ForumEngine 读取各引擎摘要
│
├── 主持人角色:"各位专家,请对以下舆情事件发表看法"
├── 专家1(Insight视角):"从公众情绪来看..."
├── 专家2(Media视角):"从媒体报道来看..."
├── 专家3(Query视角):"从事实核验来看..."
│
└── 多轮讨论 → 主持人总结 → 输出论坛纪要七、ReportEngine——报告生成
🟢【了解即可】 ReportEngine 汇总所有信息,生成最终报告。
流程:
三引擎报告 + 论坛纪要 → ReportEngine
│
├── 提取关键发现
├── 结构化组织(背景→分析→结论→建议)
├── 渲染 HTML/Markdown 模板
└── 输出最终报告文件八、三个引擎的分工对比
| 维度 | InsightEngine | MediaEngine | QueryEngine |
|---|---|---|---|
| 关注对象 | 公众讨论和评论观点 | 媒体报道和传播路径 | 权威事实和官方信息 |
| 数据来源 | 本地舆情数据库 | 网络搜索工具 | 权威站点、新闻搜索 |
| 输出重点 | 公众态度、情绪、争议点 | 媒体叙事、传播链路 | 事实核验、来源可信度 |
| 搜索策略 | 数据库查询 | 通用网络搜索 | 精准搜索优化 |
九、本阶段文件索引
| 优先级 | 文件 | 路径 |
|---|---|---|
| 🔥 P0 | 02_关键组件设计讲解.md | 1.笔记/课件/ |
| 🔥 P0 | 05_MediaEngine与QueryEngine及ForumEngine构建.md | 1.笔记/课件/ |
| 🟡 P1 | 03_项目编码实战.md | 1.笔记/课件/ |
| 🟡 P1 | 04_项目脚手架与单引擎工作流构建.md | 1.笔记/课件/ |