动漫角色对话标注系统,用于对AI角色对话进行情感和行为标签标注。
AnimeTags/
├── annotation/ # 前端Vue.js应用
│ ├── src/
│ │ ├── components/ # Vue组件
│ │ ├── stores/ # 状态管理(Pinia风格)
│ │ ├── services/ # API服务
│ │ ├── views/ # 页面视图
│ │ └── utils/ # 工具函数
│ ├── public/ # 静态资源
│ └── package.json # 前端依赖配置
├── backend/ # 后端FastAPI应用
│ ├── app/
│ │ ├── api/ # API路由
│ │ ├── core/ # 核心配置
│ │ ├── db/ # 数据库模型和操作
│ │ ├── schemas/ # Pydantic数据模式
│ │ └── services/ # 业务逻辑服务
│ ├── scripts/ # 数据初始化脚本
│ ├── main.py # FastAPI入口
│ └── requirements.txt # 后端依赖
├── tags.jsonl # 标签定义数据
├── work.jsonl # 待标注对话数据
└── PROJECT_STRUCTURE.md # 本文件
- 用户认证: 简单的用户ID系统
- 标注界面: 对话展示和标签选择
- 进度管理: 跨浏览器的进度同步
- 数据导出: 标注结果导出功能
- 工作项管理: 对话数据的分页加载
- 标注记录: 用户标注的存储和管理
- 进度追踪: 用户标注进度的持久化
- 标签管理: 标签定义和分类
- Vue.js 3: 使用Composition API
- 状态管理: 自定义Pinia风格的响应式状态管理
- HTTP客户端: Axios
- 环境变量: 支持开发和生产环境配置
- FastAPI: 异步Web框架
- SQLAlchemy: ORM和数据库操作
- SQLite: 轻量级数据库
- Pydantic: 数据验证和序列化
- id: 主键
- user_message: 用户输入
- agent_response: AI回复
- created_at: 创建时间
- id: 主键
- worker_id: 标注员ID
- work_item_id: 工作项ID
- selected_tags: JSON格式的标签列表
- is_reported: 是否举报
- created_at: 标注时间
- id: 主键
- user_id: 用户ID
- current_index: 当前进度索引
- total_count: 总数据量
- current_batch: 当前批次
- completed_annotations: JSON格式的已完成标注
- last_updated: 最后更新时间
- Docker & Docker Compose
- 或 Python 3.9+ 和 Node.js 16+
- 克隆项目
- 准备数据文件:
cp work.example.jsonl work.jsonl
- 启动服务:
docker-compose up -d
- 访问:
- 前端页面: http://localhost
- API 文档: http://localhost:8000/docs
- 进入目录:
cd backend - 创建环境配置:
cp .env.example .env - 安装依赖:
pip install -r requirements.txt - 初始化数据:
python scripts/init_progress_tables.py - 启动服务:
python main.py
- 进入目录:
cd annotation - 安装依赖:
npm install(或pnpm/yarn) - 启动开发服:
npm run serve
推荐使用环境变量进行配置。请参考 backend/.env.example 创建 .env 文件。
| 变量名 | 说明 | 默认值 |
|---|---|---|
SECRET_KEY |
JWT加密密钥 (生产环境务必修改) | (默认开发密钥) |
ALLOWED_WORKER_IDS |
允许登录的用户ID列表 (逗号分隔) | admin,test_user |
DATABASE_URL |
数据库连接地址 | sqlite:///./annotation.db |
work.jsonl: 必须存在。待标注的数据文件,每一行是一个JSON对象。请参考work.example.jsonl格式。tags.jsonl: 标签定义文件。请参考tags.example.jsonl格式。annotation.db: SQLite数据库文件 (自动生成)。
- 安全: 请确保修改默认的
SECRET_KEY。 - 数据: 将您的真实数据放入
work.jsonl(注意不要提交到公共仓库)。 - 反向代理: 建议使用 Nginx 处理前端静态资源和后端 API 转发。
MIT License
