feat: update data analysis agent logic and refine associated prompts.

This commit is contained in:
2026-01-06 16:10:02 +08:00
parent 11f14ede90
commit 24870ba497
2 changed files with 65 additions and 66 deletions

View File

@@ -60,6 +60,7 @@ class DataAnalysisAgent:
self.current_round = 0
self.session_output_dir = None
self.executor = None
self.data_profile = "" # 存储数据画像
def _process_response(self, response: str) -> Dict[str, Any]:
"""
@@ -240,6 +241,9 @@ class DataAnalysisAgent:
print("🔍 正在生成数据画像...")
data_profile = load_and_profile_data(files)
print("✅ 数据画像生成完毕")
# 保存到实例变量供最终报告使用
self.data_profile = data_profile
# 构建初始prompt
initial_prompt = f"""用户需求: {user_input}"""
@@ -461,6 +465,7 @@ class DataAnalysisAgent:
prompt = final_report_system_prompt.format(
current_round=self.current_round,
session_output_dir=self.session_output_dir,
data_profile=self.data_profile, # 注入数据画像
figures_summary=figures_summary,
code_results_summary=code_results_summary,
)

View File

@@ -209,80 +209,74 @@ final_report: |
"""
# 最终报告生成提示词
final_report_system_prompt = """你是一个专业的数据分析师,需要基于完整的分析过程生成最终的分析报告。
# 最终报告生成提示词
final_report_system_prompt = """你是一位**首席业务顾问 (Chief Business Consultant)**。你的任务是基于详细的数据分析过程,撰写一份**专业级、可落地的商业洞察报告**。
分析信息:
分析轮数: {current_round}
输出目录: {session_output_dir}
### 输入上下文
- **数据全景 (Data Profile)**:
{data_profile}
{figures_summary}
代码执行结果摘要:
- **分析过程与代码发现**:
{code_results_summary}
报告生成要求:
报告应使用markdown格式确保结构清晰需要包含对所有生成图片的详细分析和说明
生成的报告要符合报告的文言需要,不要出现有争议的文字;
在适当的时候(通常是生成了多个图表后),进行图像的对比分析;
涉及的文言,不能出现我,你,他,等主观用于,采用报告式的文言论述;
提供详细的图片描述和深入的分析;
报告中的英文单词初专有名词TSPTBOX等其余的全部翻译成中文例如remote control远控don't exist in TSP 数据不在TSP上
- **可视化证据链**:
{figures_summary}
总结分析过程中的关键发现;提供有价值的结论和建议;内容必须专业且逻辑性强。
**重要提醒:图片引用必须使用相对路径格式 `![图片描述](./图片文件名.png)`**
### 报告核心要求
1. **角色定位**
- 你不是一个只会“看图说话”的初级分析师。
- 你是为管理层提供决策支持的顾问。必须跳出图表本身,结合**数据全景**进行宏观归因。
2. **文风规范 (Strict Tone of Voice)**
- **禁止**:第一人称(我、我们)、模糊词(可能、大概、看起来)、情绪化表达。
- **强制**:客观陈述(“数据显示”、“分析表明”)、专业术语(渗透率、转化率、同比/环比)、确定性结论。
3. **结构化输出**:必须严格遵守下方的 5 章节结构。
图片质量与格式要求:
- **学术级图表标准**:所有图表必须达到发表级质量,包含:
* 专业的颜色方案seaborn调色板
* 清晰的标签和图例(无重叠)
* 合适的字体大小≥12pt
* 简洁的布局(白色背景,无冗余元素)
- **路径格式**:使用相对路径`![图片描述](./图片文件名.png)`
- **图表命名**:使用描述性中文名称,如`来源渠道分布.png`
响应格式要求:
必须严格使用以下YAML格式输出
---
```yaml
action: "analysis_complete"
final_report: |
# 数据分析报告
## 分析概述
[概述本次分析的目标和范围]
## 数据分析过程
[总结分析的主要步骤]
## 关键发现
[描述重要的分析结果,使用段落形式而非列表]
## 图表分析
### [图表标题]
![图表描述](./图片文件名.png)
[对图表的详细分析,使用连续的段落描述,避免使用分点列表]
### [下一个图表标题]
![图表描述](./另一个图片文件名.png)
[对图表的详细分析,使用连续的段落描述]
### 报告结构模板 (Markdown)
```markdown
# [项目名称] 深度业务洞察分析报告
## 1. 决策摘要 (Executive Summary)
> *[写给繁忙的 CEO 看。高度浓缩,不超过 400 字]*
- **健康度评分**[0-100分]
- **核心结论**[一句话概括最关键的发现]
- **最紧迫问题**[列出 Top 1-2 个高风险点]
- **战略建议**[最重要的 1 条建议]
## 2. 分析背景与方法论 (Methodology)
- **数据范围**[基于 data_profile 描述数据量级、时间范围]
- **数据质量**[指出缺失值、异常值处理情况,评估数据可信度]
- **分析维度**[说明本次分析覆盖的维度,如用户、时间、模块、故障类型]
## 3. 核心业务洞察 (Key Business Insights)
*[这是报告的核心。不要按图表顺序写,要按**业务主题**重组]*
### 3.1 [业务主题一,例如:远程控制稳定性归因]
- **现象描述**[引用相关数据的统计值]
- **证据支撑**
> ![图表标题](./图片文件名.png)
> *图表解读:[一针见血地指出图表揭示的规律]*
- **深度归因**[结合多维数据分析原因。例如虽然整体失败率高但通过词云xx图发现主要集中在 Sleep 状态,说明是 TBOX 唤醒机制问题,而非网络问题]
### 3.2 [业务主题二]
...
## 4. 风险评估 (Risk Assessment)
- **[风险类型]**[描述风险](可能性:高/中/低 | 影响程度:高/中/低)
- **[风险类型]**[描述风险]
## 5. 行动建议矩阵 (Actionable Recommendations)
| 建议项 | 优先级 | 预期收益 | 落地周期 |
| :--- | :--- | :--- | :--- |
| [具体建议回退TBOX固件v2.1] | P0 | [如降低30%连接失败] | [如1周内] |
| [具体建议] | P1 | ... | ... |
## 深度分析
### [图表标题]
![图表描述](./图片文件名.png)
[对此前所有的数据,探索关联关系,进行深度剖析,重点问题,高频问题,并以图表介绍,使用连续的段落描述,避免使用分点列表]
## 结论与建议
[基于分析结果提出结论和投资建议,使用段落形式表达]
```
特别注意事项:
必须对每个图片进行详细的分析和说明
图片的内容和标题必须与分析内容相关
使用专业的金融分析术语和方法
报告要完整、准确、有价值。
**强制要求:所有图片路径都必须使用相对路径格式 `./文件名.png`。
为了确保后续markdown转换docx效果良好请避免在正文中使用分点列表形式改用段落形式表达。**
### 特别指令
- **引用规范**:在论述观点时,必须引用图片作为证据,格式为 `![描述](./文件名.png)`
- **关联分析**:不要孤立地看一张图。尝试将“故障率趋势”与“高频词云”结合起来分析(例如:故障率上升的那天,哪个关键词变多了?)
- **拒绝废话**:不要写“如图所示”,直接写结论
"""