Software-Engineering-2026-Class/SEPSES-CSKG-LLM-Chatbot-Kelompok-5
GitHub: Software-Engineering-2026-Class/SEPSES-CSKG-LLM-Chatbot-Kelompok-5
基于LLM的网络安全知识图谱聊天机器人,用于风险评估。
Stars: 0 | Forks: 0
# SEPSES-CSKG-LLM-Chatbot-Kelompok-5
## 一个集成了网络安全知识图谱的LLM聊天界面,用于网络安全风险评估
## 项目描述
基于LLM的聊天机器人系统,集成了**SEPSES网络安全知识图谱(CSKG)**,用于网络安全分析。实现了**混合RAG + GraphRAG**架构,结合以下功能:
- 对SEPSES KG(CVE、CWE、CAPEC、CPE、ATT&CK)的SPARQL查询
- 通过ChromaDB对本地安全日志的语义搜索
- 通过OpenRouter进行多LLM评估(访问100+个不同提供商的模型)
## 小组成员:
| 姓名 | 学号 | Github |
|-------|------|--------|
| Fahmi Abdillah Zain | 24/539422/PA/22904 | FahmiZain16 |
| Muhammad Dhafin A. G. | 24/539735/PA/22916 | Lemielll |
| Ajie Armansyah Sunaryo | 24/545286/PA/23170 | AjieArmansyahSunaryo |
| Satya Wira Pramudita | 24/543649/PA/23102 | satyawirapramudita |
## 开发团队
| 角色 | 姓名 | 分支 |
| ------------------- | -------------------------------- | ---------------------- |
| 知识架构师 | Ajie Armansyah Sunaryo | `feature/kg-engine` |
| RAG 逻辑开发 | Fahmi Abdillah Zain | `feature/rag-logic` |
| 全栈UI开发 | Muhammad Dhafin Alfeizar Gandhan | `feature/frontend-ui` |
| 评估员与日志开发 | Satya Wira Pramudita | `feature/eval-log-dev` |
## 架构
```
User Query
│
▼
Streamlit Frontend
│
▼
RAG Pipeline Orchestrator
├── NL2SPARQL → SEPSES SPARQL Endpoint
│ CVE / CWE / CAPEC / CPE / ATT&CK
└── Vector Search → ChromaDB
Local Security Logs (Snort / Syslog / Windows Event)
│
▼
LLM Generator (via OpenRouter API)
OpenAI | Google | Anthropic | Meta | Mistral | 100+ models
│
▼
Response + KG Graph Visualization + Source Citations
│
▼
LLM-as-a-Judge Evaluator
```
## 运行方式
### 前置条件
- Python 3.10+
- OpenRouter API密钥:[https://openrouter.ai/keys](https://openrouter.ai/keys)
- (可选)Docker用于本地Jena Fuseki
### 1. 设置环境
```
# 克隆仓库
git clone https://github.com/satyawirapramudita/SEPSES-CSKG-LLM-Chatbot.git
cd SEPSES-CSKG-LLM-Chatbot
# 创建虚拟环境
python -m venv .venv
.venv\Scripts\activate # Windows
# 安装依赖
pip install -r requirements.txt
```
### 2. 配置
```
# 复制模板并填写所需值
copy .env.example .env
# 编辑.env文件,添加API密钥和相应配置
```
### 3. 运行应用程序
```
streamlit run frontend/app.py
```
### 4. 运行评估
```
# 模拟模式(无需API密钥)
python evaluation/run_eval.py --llm openai/gpt-4o-mini google/gemini-flash-latest --mock
# 实时模式,使用OpenRouter的各种模型
python evaluation/run_eval.py --llm openai/gpt-4o-mini anthropic/claude-3.5-sonnet --category all
```
## 📁 项目结构
```
SEPSES-CSKG-LLM-Chatbot/
├── .env.example # Template environment variables
├── requirements.txt # Python dependencies
├── docker-compose.yml # Fuseki + Ollama + App services
│
├── kg_engine/ # [Ajie] Knowledge Graph Engine
│ ├── sparql_client.py # SEPSES SPARQL endpoint client
│ ├── graph_builder.py # NetworkX graph builder
│ ├── ontology_schema.txt # SEPSES ontology schema
│ └── queries/ # SPARQL query templates
│ ├── vulnerability_lookup.rq
│ ├── search_by_product.rq
│ └── get_capec_from_cve.rq
│
├── rag_logic/ # [Fahmi] RAG Pipeline
│ ├── rag_pipeline.py # Main orchestrator
│ ├── nl2sparql.py # NL → SPARQL (LangChain)
│ ├── multi_hop.py # Multi-hop KG reasoning
│ ├── llm_connector.py # GPT/Mistral abstraction
│ └── prompt_templates.py # System/user prompts
│
├── log_analysis/ # [Satya] Log Analysis + Vector DB
│ ├── log_parser.py # Snort/Syslog/WinEvent/Apache parser
│ ├── vector_store.py # ChromaDB wrapper
│ └── hybrid_retriever.py # BM25 + Semantic + RRF fusion
│
├── frontend/ # [Dhafin] Streamlit Frontend
│ ├── app.py # Multi-page Streamlit app
│ └── components/
│ ├── chat_window.py # Chat UI + citations
│ ├── graph_visualizer.py # pyvis KG graph
│ ├── log_uploader.py # Log file upload
│ └── eval_dashboard.py # Evaluation charts
│
├── evaluation/ # [Satya] Evaluation Framework
│ ├── benchmark_dataset.json # 30 pertanyaan benchmark
│ ├── grader.py # LLM-as-a-Judge pipeline
│ ├── run_eval.py # CLI runner
│ └── results/ # Output evaluasi
│
└── data/
├── cskg_dumps/ # SEPSES RDF dump files
├── chroma_db/ # ChromaDB persistent storage
└── sample_logs/ # Sample security logs
└── snort_sample.log
```
## 主要功能
| 功能 | 描述 |
|-------|-----------|
| 安全分析 | 通过SPARQL查询SEPSES KG(CVE、CWE、CAPEC、CPE、ATT&CK)进行安全分析 |
| 威胁行为者分析 | 多跳遍历CVE→CWE→CAPEC→ATT&CK |
| 恶意软件调查 | 通过KG进行恶意软件技术调查 |
| 日志分析 | 上传 + 分析Snort/Syslog/Windows事件日志 |
| KG QA | 直接对SEPSES CSKG进行问答 |
| 图形可视化 | KG实体关系的交互式可视化 |
| 多LLM评估 | 通过OpenRouter比较不同的LLM模型 |
## 为什么选择OpenRouter?
本项目使用**OpenRouter**作为统一的API网关,以访问来自不同提供商的100+个LLM模型。优势:
| 优势 | 描述 |
|------------|-----------|
| **单一API** | 一个API密钥即可访问所有模型(OpenAI、Google、Anthropic、Meta、Mistral等) |
| **成本效益** | 竞争力和透明度高的价格,按token付费,无需订阅 |
| **模型灵活性** | 可以轻松切换模型而无需更改代码 - 只需更改模型名称 |
| **无基础设施** | 无需维护Ollama服务器或本地GPU |
| **自动回退** | 内置对主要模型失败的备用模型 |
| **速率限制** | 内置速率限制和重试逻辑 |
**可用的模型:**
- **OpenAI**: gpt-4o, gpt-4o-mini, gpt-3.5-turbo
- **Google**: gemini-flash-latest, gemini-1.5-pro, gemini-1.5-flash
- **Anthropic**: claude-3.5-sonnet, claude-3-opus, claude-3-haiku
- **Meta**: llama-3-70b-instruct, llama-3-8b-instruct
- **Mistral**: mistral-7b-instruct, mixtral-8x7b-instruct, mixtral-8x22b-instruct
- 以及100+个其他模型:[https://openrouter.ai/models](https://openrouter.ai/models)
## SEPSES CSKG数据源
| 数据集 | URL |
| ---------------- | -------------------------------------- |
| SPARQL端点 | https://w3id.org/sepses/sparql |
| RDF存档 | https://w3id.org/sepses/dumps/ |
| CVE词汇表 | http://w3id.org/sepses/vocab/ref/cve |
| CWE词汇表 | http://w3id.org/sepses/vocab/ref/cwe |
| CAPEC词汇表 | http://w3id.org/sepses/vocab/ref/capec |
| CPE词汇表 | http://w3id.org/sepses/vocab/ref/cpe |
| CVSS词汇表 | http://w3id.org/sepses/vocab/ref/cvss |
标签:Kubernetes, Terrascan, 逆向工具