Skip to content

Bobchasm/intelligent-logs-analysis

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

82 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

智能数据分析系统

        使用常见经典的大模型技术应用如CoT、prompt engineering、RAG、function calling 等的智能日志分析系统。

目录


1 技术栈

1.1 后端

technology version description
Django 4.2.0+ Web框架
Django Ninja 1.0.0+ API框架
ChromaDB 0.4.0+ 向量数据库
LangChain 0.1.0+ LLM应用框架
LlamaIndex 0.10.0+ 数据索引框架
PyJWT 2.8.0+ JWT认证
Sentence-Transformers 2.2.0+ 文本向量化
Transformers 4.30.0+ 预训练模型
PyTorch 2.0.0+ 深度学习框架
Pandas 2.0.0+ 数据处理

1.2 前端

technology version description
Vue 3 3.5.18 前端框架
Vite 7.1.12 构建工具
Pinia 3.0.3 状态管理
Vue Router 4.5.1 路由管理
Marked 16.4.0 Markdown渲染
Highlight.js 11.11.1 代码高亮
KaTeX 0.16.25 数学公式渲染

1.3 使用模型汇总

模型类型 模型名称 来源 用途 配置位置
嵌入模型 all-MiniLM-L6-v2 HuggingFace 语义检索 topklogsystem.py
大语言模型 DeepSeek DeepSeek API Chat,查询重写、重排序 settings.py
分词模型 Jieba Python库 中文分词 hybrid_retrieval.py

2 项目启动

2.1 基础环境配置

1.前置要求

  • 操作系统:Linux / macOS / Windows (WSL2推荐)
  • Python:3.8或更高版本
  • Node.js:16.0或更高版本
  • Conda:Anaconda或Miniconda
  • 内存:建议8GB以上
  • 硬盘:至少10GB可用空间

2.创建虚拟环境

# 创建名为 intelligent-analysis 的Python 3.10环境
conda create -n intelligent-analysis python=3.10 -y

# 激活环境
conda activate intelligent-analysis

# 验证Python版本
python --version  # 应该显示 Python 3.10.x

3.配置系统环境变量

方式一:命令行

# Linux/Mac
export AI_API_KEY="your_api_key_here"
export AI_MODEL_NAME="deepseek-chat"

# Windows PowerShell
$env:AI_API_KEY="your_api_key_here"
$env:AI_MODEL_NAME="deepseek-chat"

方式二:直接修改 settings.py

打开 django_backend/deepseek_project/settings.py,修改:

# AI API 配置(用于快速响应)
AI_API_URL = 'https://api.deepseek.com/chat/completions'
AI_API_KEY = 'your_api_key_here'  # 填入你的API Key
AI_MODEL_NAME = 'deepseek-chat'

2.2 项目环境配置

1.克隆项目

# 克隆代码仓库
git clone git fetch https://gitee.com/dai-mingjing/intelligent-data-analysis.git
cd intelligent-data-analysis

2.2.1 后端

1.安装Python依赖

# 确保已激活conda环境
conda activate intelligent-analysis
# 进入后端目录
cd django_backend
# 安装依赖包
pip install -r requirements.txt

2.下载嵌入模型

        由于常见的网络不稳定可能导致初始化 RAG 时无法获取到相关模型导致启动失败,需要先在本机上下载用于 RAG 的模型,然后直接移动到 WSL 的项目中。同时由于脚本无法灵活跨越 WSL 和本机的文件系统(每个人URL可能不同)以及模型太大无法 git 跟踪,所以需要手动进行这一步。

先在本地的 cmd 中执行:

# 安装依赖
pip install -U "huggingface_hub[cli]" transformers sentence-transformers
# 下载模型 all-MiniLM-L6-v2
huggingface-cli download sentence-transformers/all-MiniLM-L6-v2 --local-dir ./all-MiniLM-L6-v2

将路径 C:\Users\<你的用户名>\.cache\huggingface\hub\models--sentence-transformers--all-MiniLM-L6-v2\snapshots\<一串东西> 下的所有东西传到 WSL 中项目指定目录 \data\django_backend\data\models\all-MiniLM-L6-v2

  • 注:services.py 的 34 行附近的 _vector_system 中设置的 embedding_model 就是这个模型的存放目录

3.初始化数据库

# 在 django_backend 目录下执行
# 清空旧数据(可选,首次安装跳过)
python scripts/clear_sessions.py

# 生成迁移文件
python manage.py makemigrations
# 应用数据库迁移
python manage.py migrate
# 删除向量存储目录(如果存在)
rm -rf data/vector_stores

首次启动时,系统会自动构建向量索引

4.*配置工具系统API_key (可选)

不配置时系统将不会使用工具调用

在 /tool_system/api_config.py 中设置你的 api_key,完成后可测试是否配置成功:

python tool_system/test_all.py

5.启动

python manage.py runserver 0.0.0.0:8000

2.2.2 前端

1.安装依赖

# 进入前端目录
cd vue_frontend
# 安装依赖(使用npm)
npm install
# npm失败时使用
cnpm i

# 或使用yarn(如果已安装)
# yarn install
# 或使用pnpm(如果已安装)
# pnpm install

2.启动

npm run dev

2.3 启动系统便捷操作

# 激活conda环境
conda activate intelligent-analysis
# 进入后端目录
cd django_backend
# 启动Django开发服务器 (端口默认8000)
python manage.py runserver 0.0.0.0:8000

新开一个终端窗口:

# 进入前端目录
cd vue_frontend
# 启动开发服务器 (端口默认8082)
npm run dev

3 配置说明

3.1 后端

1.Django配置文件

django_backend/deepseek_project/settings.py

2.向量模型路径配置

检查 django_backend/deepseek_api/services.py

# 确保embedding_model路径正确
embedding_model = HuggingFaceEmbeddings(
    model_name="./data/models/all-MiniLM-L6-v2",
    model_kwargs={'device': 'cpu'},
    encode_kwargs={'normalize_embeddings': True}
)

3.获取DeepSeek API密钥

  1. 访问 DeepSeek平台
  2. 注册并登录账号
  3. 充值(最低¥1元即可)
  4. 创建API密钥
  5. 复制密钥并配置到环境变量或settings.py

费用参考

  • 输入:¥0.001/千tokens
  • 输出:¥0.002/千tokens
  • ¥1元约可进行1000次对话

4.工具api_key配置

/tool_system/api_config.py

3.2 前端配置

3.2.1 API地址配置

编辑 vue_frontend/src/api.js,确认后端API地址:

// 开发环境使用相对路径,生产环境配置完整URL
const BASE_URL = 'http://localhost:8000/api'  // 根据实际后端端口修改

3.2.2 Vite配置

编辑 vue_frontend/vite.config.js

export default defineConfig({
  plugins: [vue()],
  server: {
    port: 8082,  // 前端端口
    proxy: {
      '/api': {
        target: 'http://localhost:8081',  // 后端地址
        changeOrigin: true
      }
    }
  }
})

4 项目结构与功能说明

4.1 整体结构

intelligent-data-analysis/
├── django_backend/              # Django后端
│   ├── data/                   # 数据目录
│   │   ├── knowledge_base/     # 结构化知识库
│   │   │   ├── architecture/   # 架构知识
│   │   │   ├── experience/     # 经验知识
│   │   │   ├── fault_cases/    # 故障案例
│   │   │   ├── solutions/      # 解决方案
│   │   │   └── *.csv           # 知识数据文件
│   │   ├── log/                # 日志文件(向量化源)
│   │   ├── models/             # 本地模型
│   │   │   └── all-MiniLM-L6-v2/  # 向量化模型
│   │   └── vector_stores/      # ChromaDB向量数据库
│   ├── deepseek_api/           # 核心API应用
│   │   ├── __init__.py
│   │   ├── admin.py            # 管理后台配置
│   │   ├── api.py              # API接口定义(1670行)
│   │   ├── apps.py             # 应用配置(启动初始化)
│   │   ├── file_processors.py  # 文件处理
│   │   ├── jwt_utils.py        # JWT工具函数
│   │   ├── llm_client.py       # LLM客户端
│   │   ├── models.py           # 数据模型
│   │   ├── schemas.py          # API数据结构
│   │   ├── services.py         # 核心服务
│   │   ├── tools.py            # 工具调用
│   │   ├── urls.py             # 应用路由
│   │   ├── migrations/         # 数据库迁移文件
│   │   └── management/         # 管理命令
│   │       └── commands/
│   │           └── create_admin.py  # 创建管理员
│   ├── deepseek_project/       # Django项目配置
│   │   ├── __init__.py
│   │   ├── asgi.py             # ASGI配置
│   │   ├── settings.py         # 项目设置
│   │   ├── urls.py             # 项目路由
│   │   └── wsgi.py             # WSGI配置
│   ├── rag_system/             # RAG检索系统
│   │   ├── __init__.py
│   │   ├── advanced_reranker.py    # 高级重排序
│   │   ├── common.py               # 通用数据结构
│   │   ├── data_integration.py     # 数据整合
│   │   ├── enhanced_rag.py         # 增强RAG引擎
│   │   ├── hybrid_retrieval.py     # 混合检索
│   │   ├── rag_config.py           # RAG配置
│   │   └── rag_logger.py           # RAG日志
│   ├── tool_system/            # 工具调用系统
│   │   ├── __init__.py
│   │   ├── api_config.py       # API配置
│   │   ├── integration.py      # 系统集成
│   │   ├── test_all.py         # 测试脚本
│   │   ├── core/               # 核心模块
│   │   │   ├── executor.py     # 工具执行器
│   │   │   ├── manager.py      # 工具管理器
│   │   │   ├── registry.py     # 工具注册中心
│   │   │   └── tool.py         # 工具基类
│   │   └── tools/              # 具体工具实现
│   │       ├── amap_tools.py   # 高德地图工具
│   │       ├── analysis_tools.py   # 分析工具
│   │       └── search_tools.py     # 搜索工具
│   ├── scripts/                # 脚本目录
│   │   ├── clear_sessions.py   # 清空会话
│   │   ├── create_admin.py     # 创建管理员
│   │   ├── create_test_feedback_data.py
│   │   ├── quality_check.py    # 质量检查
│   │   └── test_user_isolation.py  # 测试用户隔离
│   ├── results/                # 结果输出目录
│   ├── db.sqlite3              # SQLite数据库
│   ├── debug.log               # 调试日志
│   ├── manage.py               # Django管理脚本
│   └── requirements.txt        # Python依赖
├── vue_frontend/               # Vue前端
│   ├── src/
│   │   ├── assets/             # 静态资源
│   │   │   ├── highlight.css   # 代码高亮样式
│   │   │   └── styles.css      # 全局样式
│   │   ├── components/         # Vue组件
│   │   │   ├── AdminLogFileUpload.vue  # 管理员上传
│   │   │   ├── ChatInput.vue           # 聊天输入框
│   │   │   ├── ChatMessage.vue         # 消息组件
│   │   │   ├── LogFileUpload.vue       # 文件上传
│   │   │   └── SessionList.vue         # 会话列表
│   │   ├── views/              # 页面视图
│   │   │   ├── AdminDashboard.vue  # 管理员面板
│   │   │   ├── AdminLogin.vue      # 管理员登录
│   │   │   ├── Chat.vue            # 聊天页面
│   │   │   └── Login.vue           # 用户登录
│   │   ├── api.js              # API接口封装
│   │   ├── App.vue             # 根组件
│   │   ├── main.js             # 入口文件
│   │   ├── router.js           # 路由配置
│   │   └── store.js            # 状态管理
│   ├── public/                 # 公共文件
│   ├── index.html              # HTML模板
│   ├── package.json            # 依赖配置
│   ├── vite.config.js          # Vite配置
│   └── README.md
├── documents/                  # 文档目录
│   ├── Django后端核心文件学习指南.md
│   ├── RAG系统与配置详解.md
│   ├── 工具系统指南.md
│   ├── JWT登录注册系统使用说明.md
│   ├── AI_API_配置说明.md
│   └── ...
└── README.md                   # 本文件

4.2 核心模块架构说明

4.2.1 RAG系统架构

用户查询 → 查询重写 → 混合检索 → 高级重排序 → LLM生成 → 返回结果
              ↓
    ┌─────────┼─────────┐
    ↓         ↓         ↓
语义检索   BM25检索   元数据过滤
 (0.6)      (0.3)      (0.1)
    ↓         ↓         ↓
    └─────────┼─────────┘
              ↓
        结果合并与去重
              ↓
        高级重排序
    ┌─────────┼─────────┐
    ↓         ↓         ↓
语义匹配度  关键词覆盖  上下文相关性
  (0.4)      (0.3)      (0.3)

4.2.2 数据流向

日志文件(.csv/.txt/.md/.json)
        ↓
    文档加载器
        ↓
    文本分块
        ↓
    向量化(all-MiniLM-L6-v2)
        ↓
   ChromaDB存储
        ↓
    向量检索 ←─── 用户查询
        ↓
    重排序
        ↓
    上下文构建
        ↓
    LLM生成回答

4.3 核心功能

4.1 智能问答系统 (最核心)

CoT 思维链引导推理

Prompt Engineering 增强提示词

RAG 高效准确检索外部知识,减轻模型幻觉

Function Recalling 为LLM提供工具调用,降低响应不确定性

4.2 用户与会话系统

用户相关

  • 用户注册:用户名、密码、邮箱注册
  • JWT认证:基于令牌的安全认证,有效期7天
  • 会话隔离:不同用户的会话完全隔离
  • 密码安全:使用Django哈希加密

会话相关

  • 多会话支持:每个用户可创建多个独立会话
  • 历史记录:自动保存对话历史
  • 会话重命名:支持自定义会话名称
  • 会话删除:清理不需要的历史会话

4.3 管理员功能

  • 用户管理:查看、编辑、删除用户
  • 日志管理:批量上传日志文件
  • 系统监控:查看系统使用统计
  • 反馈分析:查看用户反馈数据

5 开发指南

5.1 扩展知识库

5.1.1 添加日志文件

方式一:项目中处理

将新的日志文件放入 django_backend/data/log/ 目录:

# 支持的格式
- CSV文件:逐行处理
- TXT/MD文件:整文件处理
- JSON/JSONL文件:整文件处理

删除django_backend/data/vector_stores,并重启后端,系统会自动向量化新文件

方式二:前端上传

在管理端的文件上传中直接选择文件,增量更新,无需直接操作项目文件

5.1.2 添加结构化知识

编辑 django_backend/data/knowledge_base/ 下的CSV文件:

  • fault_cases.csv:故障案例
  • experience.csv:经验知识
  • architecture.csv:架构信息
  • solutions.csv:解决方案

CSV格式示例

服务,级别,错误,消息,组件,原因
AuthService,ERROR,INVALID_TOKEN,Token校验失败,TokenValidator,JWT签名算法不匹配

5.2 添加新工具

5.2.1 创建工具类

tool_system/tools/ 下创建新文件:

from tool_system.core.tool import Tool, ToolResult

class MyCustomTool(Tool):
    def __init__(self):
        super().__init__(
            name="my_custom_tool",
            description="我的自定义工具"
        )

    def execute(self, **kwargs) -> ToolResult:
        # 实现工具逻辑
        return ToolResult(
            success=True,
            data={"result": "执行结果"}
        )

    def get_schema(self) -> Dict[str, Any]:
        return {
            "type": "function",
            "function": {
                "name": self.name,
                "description": self.description,
                "parameters": {
                    "type": "object",
                    "properties": {
                        "param1": {"type": "string", "description": "参数1"}
                    },
                    "required": ["param1"]
                }
            }
        }

5.2.2 注册工具

tool_system/integration.py 中注册:

from tool_system.tools.my_tools import MyCustomTool

def initialize_tools():
    manager = get_tool_manager()
    manager.register_tool(
        MyCustomTool(),
        category="custom",
        tags=["自定义"],
        enabled=True
    )

6 贡献指南

欢迎贡献代码、报告问题或提出建议!

6.1 提交问题

  • 描述问题现象
  • 提供复现步骤
  • 附上错误日志
  • 说明环境信息

6.2 提交代码

  1. Fork本仓库
  2. 创建功能分支
  3. 提交代码并编写测试
  4. 提交Pull Request

7 联系方式

如有问题或建议,请通过以下方式联系:

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors