报告生成
学习如何使用报告模板生成智能分析报告
什么是报告生成
报告生成是 OctoReport 的核心功能之一,可以基于知识库中的内容,使用 AI 自动生成结构化分析报告。
核心特性:
- 多步骤处理:将复杂报告拆解为多个步骤,每步专注一个任务
- 模型组合:不同步骤可选择不同 LLM 模型(平衡成本与效果)
- 变量注入:动态获取最新数据,自动填充到提示词
- 定时生成:设置周计划,自动生成日报/周报/月报
- 版本管理:保留所有历史报告,随时查看过往版本
报告模板概念
什么是报告模板
报告模板定义了如何生成报告,包含以下配置:
-
基础信息
- 模板名称(例如:"每日AI行业新闻摘要")
- 关联的知识库(从哪些库提取数据)
- 定时策略(何时自动生成)
-
报告步骤(ReportStep)
- 每个模板包含 1-5 个步骤
- 步骤按顺序执行,后一步可使用前一步的输出
- 每步可选择不同的 LLM 模型
-
提示词模板
- 支持变量注入(
{{variable}}) - 支持 JSON 格式数据注入
- 灵活控制输出格式
- 支持变量注入(
模板与报告的关系
报告模板 (ReportTemplate)
├─ 步骤1: 数据汇总 (GPT-4o-mini, 快速汇总)
├─ 步骤2: 深度分析 (GPT-4o, 高质量分析)
└─ 步骤3: 格式化输出 (GPT-4o-mini, Markdown格式)
↓
生成的报告 (Report)
├─ 步骤1结果: 新闻列表摘要
├─ 步骤2结果: 行业趋势分析
└─ 步骤3结果: 完整Markdown报告ℹ️ 提示:一个模板可以生成多份报告,每次生成都会保留完整记录。
多步骤 LLM 处理
为什么需要多步骤
单步骤处理的问题:
- ❌ 提示词过长,模型容易"失焦"
- ❌ 无法平衡成本与效果(要么全用贵模型,要么全用便宜模型)
- ❌ 难以调试(出错时无法定位哪个环节)
多步骤处理的优势:
- ✅ 每步专注一个任务,提高准确性
- ✅ 灵活组合模型(汇总用便宜模型,分析用贵模型)
- ✅ 可单独调试每一步
- ✅ 步骤之间可传递数据
典型的三步骤设计
步骤 1:数据汇总(Data Aggregation)
目标:从大量原始内容中提取关键信息
模型选择:GPT-4o-mini(成本低,速度快)
提示词示例:
你是一个新闻编辑。以下是过去24小时收集的AI行业新闻(JSON格式):
{{contents}}
请为每条新闻生成一句话摘要(30字以内),输出为JSON数组:
[
{"title": "新闻标题", "summary": "摘要", "url": "链接"},
...
]输出格式:JSON数组(约100-200 tokens)
步骤 2:深度分析(Analysis)
目标:基于汇总数据,生成趋势分析
模型选择:GPT-4o(高质量推理)
提示词示例:
以下是今日AI行业新闻摘要:
{{step_1_output}}
请分析以下内容:
1. 主要技术趋势(3-5个)
2. 重点关注的公司/产品
3. 值得关注的投资动向
输出格式:Markdown,每个部分使用二级标题。输出格式:Markdown文本(约500-800 tokens)
步骤 3:格式化输出(Formatting)
目标:将分析内容格式化为最终报告
模型选择:GPT-4o-mini(格式化不需要复杂推理)
提示词示例:
将以下分析内容格式化为完整的日报,添加:
- 标题:"AI行业日报 - {{today}}"
- 日期时间
- 目录结构
- 底部来源说明
分析内容:
{{step_2_output}}输出格式:完整的Markdown报告
💡 最佳实践:汇总和格式化用便宜模型,核心分析用贵模型,可节省70%成本。
变量注入功能
系统变量
报告生成时,以下变量会自动注入:
| 变量 | 说明 | 示例值 |
|---|---|---|
{{today}} | 当前日期 | 2025-01-15 |
{{now}} | 当前时间 | 2025-01-15 14:30:00 |
{{yesterday}} | 昨天日期 | 2025-01-14 |
{{last_7_days}} | 过去7天日期范围 | 2025-01-08 至 2025-01-15 |
{{contents}} | 知识库内容(JSON格式) | 见下方格式说明 |
{{contents}} 数据格式
系统会将知识库内容格式化为 JSON 数组:
[
{
"index": 1,
"title": "OpenAI发布GPT-4.5",
"source_url": "https://example.com/news/1",
"collected_at": "2025-01-15 10:30:00",
"content": "OpenAI今日发布了GPT-4.5版本..."
},
{
"index": 2,
"title": "字节跳动推出豆包AI",
"source_url": "https://example.com/news/2",
"collected_at": "2025-01-15 09:15:00",
"content": "字节跳动正式发布了..."
}
]字段说明:
index:内容序号(便于引用)title:内容标题source_url:来源链接collected_at:收集时间content:正文内容(已清洗)
⚠️ 注意:
{{contents}}仅包含未过期的内容(isExpired=false),自动过滤旧版本。
步骤间变量
后续步骤可引用前一步的输出:
步骤1提示词: "汇总新闻: {{contents}}"
步骤2提示词: "分析趋势: {{step_1_output}}"
步骤3提示词: "格式化报告: {{step_2_output}}"变量命名规则:{{step_N_output}} 其中 N 为步骤序号(1-based)
定时与手动触发
定时策略
周计划模式(推荐)
配置示例:
{
"days": [1, 3, 5],
"hour": 9,
"minute": 0
}说明:
days:星期几执行(1=周一, 7=周日)hour:几点执行(0-23)minute:几分执行(0-59)
适用场景:
- 每日报告:
{days: [1,2,3,4,5], hour: 9, minute: 0}- 工作日早上9点 - 每周报告:
{days: [1], hour: 10, minute: 0}- 每周一上午10点 - 双周报告:
{days: [1,4], hour: 14, minute: 30}- 每周一和周四下午2:30
间隔模式
配置示例:
{
"hours": 6
}说明:每隔 N 小时执行一次
适用场景:实时监控报告(不推荐用于日常报告)
手动触发
两种触发方式:
- 立即生成:在报告管理页面点击"立即生成"按钮
- Ask 触发:在对话中询问"生成今日报告"
手动触发的优势:
- ✅ 随时按需生成
- ✅ 适合临时性报告需求
- ✅ 不占用定时任务配额
💡 建议:日常报告使用定时触发,临时需求使用手动触发。
查看历史报告
报告列表
路径:侧边栏 → 报告管理
列表字段:
- 报告标题(模板名称 + 生成时间)
- 生成状态(成功/失败/进行中)
- 生成时间
- 积分消耗
- 操作按钮(查看详情、重新生成、删除)
筛选功能:
- 按模板筛选
- 按状态筛选(成功/失败)
- 按时间范围筛选(最近7天/30天/全部)
报告详情
包含信息:
- 报告标题和生成时间
- 每个步骤的详细结果
- 每步使用的模型和 Token 消耗
- 总积分消耗
- 数据来源(哪些知识库和数据源)
步骤结果展示:
步骤1: 数据汇总
模型: gpt-4o-mini
输入: 3,245 tokens | 输出: 156 tokens
成本: 8 credits
结果:
[JSON数组内容...]
步骤2: 深度分析
模型: gpt-4o
输入: 156 tokens | 输出: 842 tokens
成本: 45 credits
结果:
## 主要技术趋势
1. ...
步骤3: 格式化输出
模型: gpt-4o-mini
输入: 842 tokens | 输出: 1,024 tokens
成本: 12 credits
结果:
# AI行业日报 - 2025-01-15
...操作功能:
- 复制报告内容(Markdown格式)
- 导出为文件(.md / .pdf)
- 重新生成(使用相同配置)
- 删除报告(不可恢复)
⚠️ 注意:删除报告不会退还积分。
最佳实践
✅ 设计高效的多步骤模板
推荐模式:
- 步骤1:数据汇总(GPT-4o-mini)- 提取关键信息
- 步骤2:核心分析(GPT-4o)- 深度推理
- 步骤3:格式化输出(GPT-4o-mini)- 美化排版
反模式:
- ❌ 单步骤完成所有任务(难以调试,成本高)
- ❌ 过多步骤(>5步)(增加复杂度,降低稳定性)
✅ 优化积分成本
成本优化策略:
- 汇总和格式化使用便宜模型(gpt-4o-mini)
- 仅核心分析使用贵模型(gpt-4o)
- 使用
{{contents}}变量而非重复查询数据库 - 合理设置定时频率(日报而非小时报)
成本对比(假设1000 tokens输入 + 500 tokens输出):
- 全用 GPT-4o:~50 credits/次
- 多步骤组合:~20 credits/次(节省60%)
✅ 提示词设计技巧
清晰的指令:
✅ 好的提示词:
"请从以下新闻中提取3个最重要的行业趋势,每个趋势用1-2句话说明。"
❌ 模糊的提示词:
"分析一下这些新闻。"指定输出格式:
✅ 好的提示词:
"输出为JSON数组:[{title: string, summary: string}]"
❌ 模糊的提示词:
"输出为列表。"使用示例引导:
✅ 好的提示词:
"输出示例:
## 趋势1: 多模态AI崛起
各大厂商纷纷发布...
"✅ 定时策略选择
| 报告类型 | 推荐策略 | 示例配置 |
|---|---|---|
| 日报 | 每日固定时间 | {days:[1,2,3,4,5], hour:9, minute:0} |
| 周报 | 每周一早上 | {days:[1], hour:10, minute:0} |
| 双周报 | 每周一/四 | {days:[1,4], hour:14, minute:0} |
| 月报 | 每月1号 | 手动触发(无周计划支持月级别) |
常见问题
Q1: 报告生成失败怎么办?
可能原因:
- 知识库中没有新内容(过去时间范围内无数据)
- LLM API 调用失败(网络问题或配额不足)
- 提示词格式错误(变量名拼写错误)
解决方法:
- 检查任务日志(侧边栏 → 任务日志 → 查看失败原因)
- 验证知识库是否有数据(知识库管理 → 查看内容列表)
- 测试 LLM 模型是否可用(管理后台 → 模型管理)
Q2: 如何控制报告长度?
方法1 - 限制输入数据:
提示词: "从以下新闻中选择最重要的10条..."方法2 - 指定输出长度:
提示词: "生成约500字的分析报告..."方法3 - 使用摘要步骤:
步骤1: 汇总(压缩到100条摘要)
步骤2: 筛选(选择最重要的10条)
步骤3: 分析(生成最终报告)Q3: 报告内容重复怎么办?
原因:URL 去重策略设置为 UPDATE,重复抓取相同内容
解决方法:
- 将数据源的去重策略改为
KEEP_OLD(仅记录,不重复抓取) - 在报告模板中添加时间筛选:
"从过去24小时的新闻中..." - 使用
collected_at字段排序,优先使用最新内容
Q4: 积分消耗比预期高?
优化建议:
- 检查是否过度使用贵模型(GPT-4o)
- 减少不必要的步骤(能合并的步骤尽量合并)
- 优化提示词,避免冗余描述
- 使用定时触发而非频繁手动触发