wu981526092's picture
add
286c429
# AgentGraph Sample Data System
这是重构后的 sample data 系统,使用 JSON 文件而不是硬编码的 Python 数据,更容易维护和扩展。
## 📁 文件结构
```
samples/
├── README.md # 本文档
├── samples_config.json # 样本配置文件
├── traces/ # Trace数据目录
│ └── python_documentation_inquiry.json
└── knowledge_graphs/ # Knowledge Graph数据目录
└── kg_python_documentation_enhanced.json
```
## 🔧 配置系统
### `samples_config.json`
主配置文件,定义所有可用的样本:
```json
{
"samples": [
{
"id": "python_documentation_demo",
"name": "Python Documentation Assistant Demo",
"description": "...",
"trace_file": "traces/python_documentation_inquiry.json",
"knowledge_graph_file": "knowledge_graphs/kg_python_documentation_enhanced.json",
"tags": ["programming", "rag_assistant", "documentation"],
"complexity": "enhanced",
"trace_type": "documentation_search",
"trace_source": "sample_data",
"features": [
"rag_search",
"failure_detection",
"optimization_recommendations"
]
}
],
"metadata": {
"version": "1.0.0",
"created": "2025-01-27",
"description": "..."
}
}
```
## 📄 数据文件格式
### Trace 文件
- 位置:`traces/`目录
- 格式:标准 JSON,包含 filename, title, description, content 等字段
- Content 字段包含完整的 trace 数据(observations, metadata 等)
### Knowledge Graph 文件
- 位置:`knowledge_graphs/`目录
- 格式:标准 JSON,包含 filename, trace_index, graph_data 等字段
- Graph_data 包含 entities, relations, failures, optimizations, metadata
## 🔄 向后兼容性
新的`sample_data.py`保持了与旧 API 的完全兼容性:
```python
# 这些调用仍然正常工作
from backend.database.sample_data import SAMPLE_TRACES, SAMPLE_KNOWLEDGE_GRAPHS
from backend.database.sample_data import insert_sample_data, get_sample_data_info
```
## ✨ 新增功能
### 动态加载
- 支持运行时添加新样本(修改 JSON 文件即可)
- 自动验证 JSON 格式
- 更好的错误处理和日志
### 配置管理
```python
from backend.database.sample_data import list_available_samples, get_sample_data_info
# 列出所有可用样本
samples = list_available_samples()
# 获取详细信息
info = get_sample_data_info()
```
## 🚀 添加新样本
### 1. 准备数据文件
创建 trace 和 knowledge graph 的 JSON 文件,放在相应目录下。
### 2. 更新配置
`samples_config.json`中添加新条目:
```json
{
"id": "new_sample_id",
"name": "New Sample Name",
"description": "Description of the sample",
"trace_file": "traces/new_trace.json",
"knowledge_graph_file": "knowledge_graphs/new_kg.json",
"tags": ["tag1", "tag2"],
"complexity": "standard",
"trace_type": "custom",
"trace_source": "sample_data",
"features": ["feature1", "feature2"]
}
```
### 3. 自动加载
系统会自动检测并加载新样本,无需重启。
## 🎯 优势
1. **易于维护**:数据与代码分离,修改样本不需要改 Python 代码
2. **版本控制友好**:JSON diff 更清晰,方便 code review
3. **扩展性强**:添加新样本只需添加 JSON 文件
4. **类型安全**:JSON schema 验证(可扩展)
5. **向后兼容**:现有代码无需修改
## 🛠️ 开发工具
### 测试新系统
```bash
cd backend/database
python sample_data_new.py
```
### 验证 JSON 格式
```bash
python -m json.tool samples/traces/new_trace.json
python -m json.tool samples/knowledge_graphs/new_kg.json
```
## 📊 从 algorithm-generated.jsonl 迁移
当我们准备好从 algorithm-generated.jsonl 中选择样本时:
1. 运行`multi_agent_knowledge_extractor.py`生成 KG
2. 将 trace 和 KG 分别保存为 JSON 文件
3.`samples_config.json`中添加配置条目
4. 自动集成到系统中
这个结构使得批量添加真实样本变得非常简单!