业务背景】 在流程工业(如石油化工、电力、冶金等)中,企业通常会采集大量设备、 35 工艺、质量等生产数据,保存为 CSV 或数据库格式。传统的数据分析依赖专业 工程师进行建模与解释,效率低且门槛高。引入自然语言指令驱动的 AI Agent 系统,可以显著提升数据分析的智能化程度,辅助工程师完成数据统计、相关性 分析、机器学习建模和报告生成等任务。。 5.项目说明 【问题说明】 数据分析存在重复性工作(如相关性分析、数据清洗、建模)。 普通用户缺少数据分析和数据建模的能力,无法完成此类任务。 学生需设计一个基于 LLM(大语言模型)的智能 Agent,能够根据用户的自 然语言指令完成工业数据的分析任务,包括统计分析、建模训练与推理,最终自 动生成分析报告。 【用户期望】 最终系统需满足以下用户需求: 数据文件管理功能: 支持上传、查看、删除本地 CSV 数据文件。 统计分析能力: 支持均值、标准差、最大/最小值统计。 数据分析能力: 相关性分析,时滞分析,异常检测。 建模能力: 支持常见机器学习模型,如线性回归、决策树、随机森林等,支持训 练、评估和模型保存。 自然语言指令驱动的分析流程 用户通过自然语言输入需求(如“请对流量与温度做相关性分析”) LLM 自动生成并使用外置的python解释器执行 Python 分析代码 报告输出功能:系统将结果反馈给 LLM,由其生成简明的分析结论或 报告,自动生成包含图表与文字描述的分析报告。 6.任务要求 【开发说明】 36 本命题产品要求选手深入理解工业场景中设备数据分析与决策支持的实际 需求,发挥大语言模型(LLM)在自然语言理解的技术优势,打造一个面向工业 数据分析的智能 Agent 平台。该平台应支持用户通过自然语言指令统计分析、 建模推理及分析报告自动生成等任务,实现“用户提问 → 智能执行 → 自动 报告”闭环流程,体现工业智能体在实际业务中的可落地性与实用价值。 【技术要求与指标】 1. 指令解析与代码生成模块 o 接入开源大模型,如 ChatGLM、LLaMA、CodeGeeX、deepseek等 o 根据用户指令生成合法的 Python 代码 2. 代码执行引擎 o 安全执行 Python 脚本(使用 exec() 或沙箱环境) o 捕获执行输出、图表或异常信息 3. 结果解释模块 o 将执行结果传回大模型 o 由大模型生成自然语言报告 4. 前端交互界面 o 提供基础的用户输入框、文件管理页面和报告展示区 o 可使用 Web(如 Flask + Vue) 5. 提供系统原型 【提交材料】 (1)项目概要介绍; (2)项目简介 PPT; (3)项目详细方案; (4)项目演示视频; (5)企业要求提交的材料: ①产品使用手册:包括产品功能架构、使用流程图和典型学习示例; ②产品交互演示:对产品的交互过程进行录制; ③项目的详细分工及过程文档:对团队成员的角色、分工、排期和过程进 行记录。 37 (6)团队自愿提交的其他补充材料。 【任务清单】 包括但不限于以下功能: (1)数据文件管理,csv文件的上传,删除 (2)通过Agent实现指定文件数据的统计分析 (3)通过Agent实现指定文件数据的分析,包括相关性分析,时滞分析, 异常检测等。 (4)通过Agent实现数据建模,建立传统的机器学习模型,模型训练和推 理。 (5)通过Agent实现数据分析报告(最好图文并茂) (6)通过Agent实现模型评估报告(最好图文并茂) (7)Agent分析用户意图,生成Python代码,并执行,获取运行结果的能 力。 【开发工具与数据接口】 Python:pandas, matplotlib, scikit-learn /其它 LLM 接口:DeepSeek API / 本地大模型调用接口 / Ollama/其它 Agent框架:LangChain/LangGraph/其它 前端:Flask/其它 + HTML/CSS/JS /其它 安全执行环境:exec()/subprocess + 沙箱机制/其它。 根据需求设计项目
时间: 2025-07-19 08:24:36 浏览: 11
<think>我们正在设计一个基于LLM的智能Agent系统,用于工业数据分析。系统需要支持自然语言指令,生成并执行Python代码,然后生成报告。以下是实现该系统的关键步骤和组件:
1. **系统架构**:
- 前端:使用Flask(Python Web框架)提供简单的用户界面,支持文件上传、指令输入和报告展示。
- 后端:使用Flask处理HTTP请求,调用LLM生成代码,执行代码并返回结果。
- 大语言模型(LLM):可以选择使用DeepSeek API(或本地部署的模型如ChatGLM)作为核心的指令解析和代码生成引擎。
- Agent框架:可以使用LangChain来构建Agent,因为它提供了与LLM交互、工具调用和链式流程的便捷方式。
2. **功能模块**:
a. **数据文件管理**:
- 提供上传CSV文件、查看文件列表和删除文件的功能。文件存储在服务器的指定目录(例如`./data`)。
- 后端API:
- `POST /upload`:上传文件
- `GET /files`:获取文件列表
- `DELETE /file/<filename>`:删除文件
b. **指令解析与代码生成**:
- 用户输入自然语言指令(例如“请计算文件data.csv中温度列的平均值”)。
- 系统将指令与当前可用的数据文件信息(如列名)结合,构造提示词(prompt)发送给LLM。
- LLM生成相应的Python代码(使用pandas进行数据分析,matplotlib绘图,scikit-learn建模等)。
c. **代码执行引擎**:
- 使用`exec()`执行生成的代码,但为了安全,需要限制执行环境(沙箱)。可以使用`globals`和`locals`字典来限制可用的模块和函数。
- 或者使用`subprocess`在隔离的进程中运行代码,并设置超时。
- 捕获执行过程中的输出(包括文本和图表)。图表可以保存为图片文件(如PNG),然后将图片路径返回。
d. **结果解释与报告生成**:
- 将代码执行的结果(文本输出、图表路径、可能的错误信息)再次发送给LLM,要求其生成自然语言的分析报告。
- LLM根据执行结果生成报告,包括文字描述和嵌入图片(在HTML报告中)。
e. **报告展示**:
- 前端展示由LLM生成的HTML格式的报告(包含文字和图片)。
3. **安全考虑**:
- 限制代码执行环境,禁止访问敏感系统资源。
- 使用白名单机制,只允许导入特定的安全模块(如pandas, numpy, matplotlib, sklearn等)。
- 对用户上传的文件进行安全检查(如文件大小、类型、内容等)。
4. **开发工具与库**:
- 后端:Flask, pandas, numpy, matplotlib, scikit-learn, langchain(可选)
- LLM接口:deepseek(使用其API,需要API key)
- 前端:HTML/CSS/JS,可以使用Bootstrap快速搭建界面。
5. **实现步骤**:
a. 搭建Flask应用框架。
b. 实现文件管理功能(上传、查看、删除)。
c. 设计LLM提示词模板,用于生成代码。例如:
```
你是一个数据分析助手,请根据用户指令生成Python代码。用户上传的文件路径为:{file_path},文件包含的列有:{columns}。
用户指令:{user_query}
请生成代码,要求使用pandas读取文件,并完成相应操作。代码中不要使用文件路径,直接使用变量df表示数据框(因为文件已经读取到df中)。
注意:生成的代码必须是完整的,并且最后要打印结果或保存图表(图表保存为png文件,路径为'./static/figures/figure_{timestamp}.png')。
```
d. 实现代码执行函数,能够捕获输出和异常。
e. 实现结果解释模块,将结果和图表路径传给LLM,生成报告。
f. 前端界面:一个简单的表单用于输入指令,一个文件上传表单,一个区域展示报告。
6. **代码执行示例**:
假设用户指令:“请计算温度列的平均值”,生成的代码可能是:
```python
import pandas as pd
df = pd.read_csv('data.csv')
mean_temp = df['温度'].mean()
print(f"温度列的平均值为: {mean_temp}")
```
执行后,捕获输出字符串,然后将其传给LLM生成报告。
7. **报告生成示例**:
将执行输出(如“温度列的平均值为: 25.6”)和用户指令传给LLM,生成报告:
“根据您的指令,我们对数据文件中的温度列进行了平均值计算,结果为25.6摄氏度。”
8. **高级分析(如建模)**:
对于建模任务,用户指令可能是:“使用随机森林预测温度”。
生成代码可能包括:数据预处理、划分训练集测试集、训练模型、评估模型(如计算R2分数)并保存模型,同时绘制特征重要性图等。
执行后,将评估结果和图表传给LLM生成报告。
9. **异常处理**:
- 代码生成可能出错:LLM可能生成错误代码,需要捕获异常并反馈给用户。
- 执行超时:设置超时时间,避免长时间运行。
10. **前端界面**:
- 主页:文件列表(可删除)、上传按钮、指令输入框、提交按钮。
- 报告展示区域(支持显示图片和文字)。
由于时间限制,我们不会实现所有细节,但会构建一个基本可用的原型。
现在,我们将按照要求设计项目,并准备回答相关问题。
§§相关问题§§
1. 在工业数据分析场景中,如何确保生成的Python代码的安全性,防止恶意代码执行?
2. 如果用户上传的CSV文件包含缺失值或异常值,系统应如何处理?
3. 如何优化LLM生成的代码以提高执行效率,特别是在处理大规模工业数据时?
4. 系统如何支持用户对同一数据集进行多次分析并保存中间结果(如训练好的模型)?
5. 在自然语言指令解析中,如何提高LLM对复杂工业术语和场景的理解准确性?</think>### 基于LLM的工业数据分析智能Agent系统设计
#### 系统架构设计
1. **前端交互层**
- 使用Vue.js + Flask构建Web界面
- 功能模块:
- 文件管理(CSV上传/查看/删除)
- 自然语言指令输入框
- 报告展示区(支持图文混合输出)
- 模型管理面板(训练/推理/评估)
2. **Agent核心引擎**
```mermaid
graph LR
A[用户指令] --> B(LLM指令解析)
B --> C{Python代码生成}
C --> D[安全执行环境]
D --> E[数据分析/建模]
E --> F[结果捕获]
F --> G[LLM报告生成]
G --> H[前端展示]
```
3. **关键技术实现**
- **指令解析**:使用LangChain框架构建提示模板,示例指令处理流程:
```python
from langchain.chains import LLMChain
prompt_template = """
你是一个工业数据分析专家,请根据用户指令生成Python代码:
可用库:pandas, sklearn, matplotlib
当前文件:{file_path}
指令:{user_query}
输出要求:返回可执行代码,包含图表保存路径
"""
```
- **安全执行引擎**:
```python
def safe_execute(code: str):
restricted_globals = {"__builtins__": None}
allowed_modules = ["pandas", "numpy", "sklearn", "matplotlib"]
for mod in allowed_modules:
restricted_globals[mod] = __import__(mod)
try:
exec(code, restricted_globals)
return {"status": "success", "output": restricted_globals.get('result', '')}
except Exception as e:
return {"status": "error", "message": str(e)}
```
- **机器学习建模流程**:
```python
# LLM生成的示例代码
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import r2_score
df = pd.read_csv('process_data.csv')
X = df[['pressure', 'flow_rate']]
y = df['temperature']
model = RandomForestRegressor(n_estimators=100)
model.fit(X_train, y_train)
predictions = model.predict(X_test)
plt.scatter(y_test, predictions)
plt.savefig('correlation_plot.png')
print(f'R2 Score: {r2_score(y_test, predictions)}')
```
4. **报告生成机制**
- 执行结果结构化:
```json
{
"metrics": {"MAE": 0.32, "R2": 0.89},
"figures": ["corr_plot.png", "residuals.png"],
"data_summary": "检测到5%异常值"
}
```
- LLM报告提示词:
```
请根据JSON数据分析结果生成中文报告:
1. 包含关键指标解读
2. 解释图表含义
3. 给出生产优化建议
4. 使用Markdown格式
```
#### 典型工作流程
1. 用户上传`pump_sensor.csv`
2. 输入指令:*"分析进口压力与流量相关性,检测异常值并建立预测模型"*
3. Agent生成代码并执行:
- 皮尔逊相关系数计算
- Isolation Forest异常检测
- 随机森林回归建模
4. 输出图文报告:

**分析结论**:压力与流量呈强正相关(r=0.82),检测到12个异常工况点...
#### 创新点
1. **工业语义增强**:在提示词中嵌入领域术语表(如PID图元件名称)
2. **沙箱双保险**:Docker容器 + 模块白名单机制
3. **动态代码校验**:AST语法树分析禁止危险操作(如`os.system`调用)
4. **缓存优化**:自动复用已训练模型避免重复计算
阅读全文
相关推荐














