Skip to content

senzi/chat_bot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LLM 驱动的 Python 脚本生成器

本项目是一个基于 Flask 的 Web 应用,它利用大型语言模型(LLM)根据用户提出的问题,动态生成并执行 Python 脚本,最终以友好的方式展示数据分析结果。

功能特性

  • 动态脚本生成: 根据用户输入的问题,通过 LLM(默认为 DeepSeek)生成用于数据分析的 Python 脚本。
  • 安全执行: 在隔离环境中执行生成的脚本,并对执行时间、输出大小进行限制。
  • 三阶段处理流程:
    1. 代码生成: 根据用户问题和预设的 schema.json 生成 Python 脚本。
    2. 结果分析: 执行脚本后,由 LLM 分析输出结果,判断是否能回答用户问题。
    3. 智能回答/重试: 如果结果有效,LLM 会整理成 Markdown 格式的报告;否则,将尝试重新生成脚本(最多三次)。
    4. 兜底回答: 若多次尝试失败,LLM 将直接基于问题进行文本回答。
  • 流式响应 (SSE): 前端通过 Server-Sent Events (SSE) 实时接收后端的处理日志和最终结果,提升用户体验。
  • 数据驱动: 脚本主要针对项目根目录下的数据文件进行处理,其数据结构由 schema.json 定义。

项目结构

.
├── app.py                  # Flask 应用主文件
├── requirements.txt        # Python 依赖
├── templates/
│   └── index.html          # 前端页面
├── generated_scripts/      # 存放动态生成的 Python 脚本
├── schema.json             # 数据文件的结构定义
├── your_data_file.ndjson   # 【需用户提供】示例数据文件
├── .env.example            # 环境变量示例
└── README.md               # 本文档

快速开始

1. 环境准备

  • 安装 Python 3.x
  • 克隆本项目

2. 安装依赖

在项目根目录下执行以下命令:

pip install -r requirements.txt

3. 配置环境变量

.env.example 文件复制为 .env,并填入你的 API 密钥:

DEEPSEEK_API_KEY="sk-xxxxxxxxxxxxxxxx"

4. 准备数据文件

确保项目根目录下存在一个数据文件(例如 your_data_file.ndjson),其格式应符合 schema.json 的描述。

5. 运行应用

python app.py

应用将在 http://127.0.0.1:5000 启动。

使用方法

  1. 打开浏览器并访问 http://127.0.0.1:5000
  2. 在输入框中输入你想要查询的问题(例如:“统计一下昨天谁最活跃”)。
  3. 点击“提交”按钮。
  4. 页面将实时显示后端处理日志,并在完成后展示最终的分析报告。

适配与定制

更改目标数据文件

默认情况下,生成的 Python 脚本会尝试读取名为 your_data_file.ndjson 的文件。这个文件名硬编码在 app.pyPROMPT1_TEMPLATE 变量中。

要适配您自己的数据文件(例如 my_chat_logs.ndjson),请执行以下操作:

  1. 修改 app.py: 打开 app.py 文件。
  2. 定位 PROMPT1_TEMPLATE: 找到名为 PROMPT1_TEMPLATE 的多行字符串变量。
  3. 更改文件名: 在该字符串中,将所有 your_data_file.ndjson 的实例替换为您自己的文件名。

示例:

# app.py

# ...

PROMPT1_TEMPLATE = """你是一个群聊Bot的Python脚本生成器。
...
说明:
- 项目根目录下存在一个名为 `my_chat_logs.ndjson` 的数据文件...
...
3) 读取 `my_chat_logs.ndjson` 时必须指定 encoding="utf-8", errors="ignore"。
...
数据处理与留痕:
- 对于统计、筛选、匹配类问题,应遍历 `my_chat_logs.ndjson`,优先用正则。
...
"""

通过修改这个 Prompt 模板,您可以完全控制生成脚本的行为,包括但不限于:

  • 指定不同的数据源文件。
  • 调整脚本的数据处理逻辑。
  • 修改对生成脚本的格式或输出要求。

注意事项

  • 安全性: 动态执行代码具有一定风险。本项目通过限制执行权限、超时和输出来降低风险,但仍建议在受控环境中使用。
  • API 密钥: 请妥善保管你的 API 密钥,不要泄露到公共代码库中。
  • 数据文件: 数据文件是本项目的核心数据源,其内容和格式直接影响脚本的执行结果。

About

No description, website, or topics provided.

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Contributors