Skip to content

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

License

Notifications You must be signed in to change notification settings

MuikaAI/OpenAnimeTags

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_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

About

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

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published