Skip to content

Repository files navigation

AnimeTags

动漫角色对话标注系统,用于对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: 数据验证和序列化

数据库表结构

WorkItem (工作项)

  • id: 主键
  • user_message: 用户输入
  • agent_response: AI回复
  • created_at: 创建时间

WorkerAnnotation (标注记录)

  • id: 主键
  • worker_id: 标注员ID
  • work_item_id: 工作项ID
  • selected_tags: JSON格式的标签列表
  • is_reported: 是否举报
  • created_at: 标注时间

UserProgress (用户进度)

  • id: 主键
  • user_id: 用户ID
  • current_index: 当前进度索引
  • total_count: 总数据量
  • current_batch: 当前批次
  • completed_annotations: JSON格式的已完成标注
  • last_updated: 最后更新时间

快速开始

前置要求

  • Docker & Docker Compose
  • 或 Python 3.9+ 和 Node.js 16+

使用 Docker 启动 (推荐)

  1. 克隆项目
  2. 准备数据文件:
    cp work.example.jsonl work.jsonl
  3. 启动服务:
    docker-compose up -d
  4. 访问:

本地开发启动

后端

  1. 进入目录: cd backend
  2. 创建环境配置: cp .env.example .env
  3. 安装依赖: pip install -r requirements.txt
  4. 初始化数据: python scripts/init_progress_tables.py
  5. 启动服务: python main.py

前端

  1. 进入目录: cd annotation
  2. 安装依赖: npm install (或 pnpm/yarn)
  3. 启动开发服: npm run serve

配置文件

环境变量

推荐使用环境变量进行配置。请参考 backend/.env.example 创建 .env 文件。

变量名说明默认值
SECRET_KEYJWT加密密钥 (生产环境务必修改)(默认开发密钥)
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

About

一个好看的动漫角色对话标注系统,用于对AI角色对话进行情感和行为标签标注。

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages