Skip to content

管理仪表板

实时监控标注进度、管理标注者和配置设置。

Potato 2.0 包含一个综合管理仪表板,用于监控标注进度、跟踪标注者表现以及实时管理任务配置。

访问仪表板

API 密钥认证

在配置中设置管理员 API 密钥:

yaml
admin_api_key: "your-secure-api-key-here"

通过 /admin 访问仪表板,并在提示时输入您的 API 密钥。

认证方式

  1. 直接导航 - 前往 /admin 并输入 API 密钥
  2. 基于标头 - 在请求中包含 X-API-Key 标头
  3. 调试模式 - 设置 debug: true 后,来自服务器本机的请求无需密钥即可打开管理页面

调试模式只对来自服务器本机的请求免密钥开放管理页面,即来自回环地址、且不带 X-Forwarded-For、X-Real-IP 或 Forwarded 标头的请求。同一台机器上不添加转发标头的隧道或反向代理会让每个调用方看起来都来自本机,因此切勿在已部署的服务器上开启 debug:

yaml
# Development only
debug: true  # Admin pages open without a key for requests from this machine

仪表板标签页

概览标签页

标注任务的高层指标:

  • 总用户数 - 已注册标注者数量
  • 总标注数 - 已完成的标注总数
  • 完成率 - 数据标注完成百分比
  • 活跃会话 - 当前活跃的标注者
  • 任务配置 - 当前设置摘要

标注者标签页

每个标注者的详细信息:

列描述
用户 ID标注者标识符
阶段当前工作流阶段
标注数已完成数量
工作时间总花费时间
速度每小时标注数
最后活动最近的操作

功能:

  • 按任意列排序
  • 按阶段或活动筛选
  • 导出标注者数据
  • 查看单个标注者详情

实例标签页

浏览和管理标注实例:

列描述
ID实例标识符
文本预览前 100 个字符
标注数已接收的标注数
分歧度标注者间分歧评分
标注者标注用户列表

功能:

  • 分页(每页 25、50 或 100 条)
  • 按标注数、分歧度等排序
  • 按标注数量筛选
  • 查看完整实例详情

配置标签页

实时修改设置,无需重启:

  • 每用户最大标注数 - 限制每个用户可标注的项目数
  • 每项最大标注数 - 每个实例的目标标注数
  • 分配策略 - 实例如何分配给用户

更改立即生效。

分配策略

从仪表板配置实例分配方式:

策略描述
random随机分配
ordered顺序(从头到尾)
least_annotated优先选择标注最少的项目
max_diversity最大化每项的标注者多样性
active_learning基于不确定性的优先排序
llm_basedLLM 驱动的分配

时间分析

仪表板跟踪详细的时间数据:

  • 总工作时间 - 所有标注会话的总和
  • 平均每条标注时间 - 每项的平均时间
  • 每小时标注数 - 吞吐率
  • 会话时长 - 每次登录会话的时间

时间数据来源于行为跟踪和页面交互事件。

配置

基本设置

yaml
# Enable admin dashboard
admin_api_key: "your-secure-api-key"

完整配置

yaml
admin_api_key: "your-secure-api-key"
 
# How long a session may sit idle before the server clears it.
# The clock restarts on every request, so it bounds inactivity,
# not the length of a shift. Default 480.
session_timeout_minutes: 480
 
# Editable from the Configuration tab while the server runs
assignment_strategy: least_annotated
max_annotations_per_user: 100
max_annotations_per_item: 3

API 端点

管理仪表板由 REST API 端点驱动:

统计

text
GET /admin/api/overview

返回整体任务统计信息。

标注者

text
GET /admin/api/annotators
GET /admin/user_state/<user_id>

列出所有标注者或获取特定用户的详情。

实例

text
GET /admin/api/instances?page=1&page_size=25&sort_by=annotation_count&sort_order=desc&filter_completion=
GET /admin/item_state/<item_id>

列出实例,支持分页和筛选。

配置

text
GET /admin/api/config
POST /admin/api/config

获取或更新任务配置。

训练进度

text
GET /admin/training/api/status
GET /admin/training/api/runs
GET /admin/training/api/runs/<run_id>

训练阶段统计和每用户进度。

主动学习

text
GET /admin/active-learning/stats

主动学习模型状态和性能指标。

监控功能

可疑活动检测

仪表板可以标记潜在的问题行为:

  • 非常快的标注速度
  • 异常的会话模式
  • 一致的答案模式
  • 缺失的标注

质量指标

跟踪标注质量指标:

  • 标注者间一致性
  • 每条标注时间分布
  • 标签分布平衡
  • 训练阶段表现

安全最佳实践

API 密钥管理

yaml
# Use environment variables
admin_api_key: ${ADMIN_API_KEY}
bash
export ADMIN_API_KEY="your-secure-key"

访问控制

  • 使用强大、唯一的 API 密钥
  • 定期轮换密钥
  • 不要公开暴露管理端点
  • 在生产环境中使用 HTTPS

审计日志

仪表板跟踪管理员操作:

  • 配置更改
  • 用户管理操作
  • 数据导出
  • 访问尝试

配置示例

yaml
annotation_task_name: "Sentiment Analysis"
task_dir: "."
port: 8000
 
# Admin dashboard
admin_api_key: ${ADMIN_API_KEY}
session_timeout_minutes: 480
 
# Data and annotation configuration
data_files:
  - "data/reviews.json"
 
item_properties:
  id_key: id
  text_key: text
 
annotation_schemes:
  - annotation_type: radio
    name: sentiment
    description: "How does this review read?"
    labels:
      - Positive
      - Negative
      - Neutral
 
# Assignment settings (editable from the Configuration tab)
assignment_strategy: least_annotated
max_annotations_per_user: 100
max_annotations_per_item: 3
 
output_annotation_dir: "output/"
export_annotation_format: jsonl
 
user_config:
  allow_all_users: true

性能考虑

大型数据集

对于包含数千个实例的数据集:

  • 使用分页(实例标签页)
  • 启用延迟加载
  • 考虑使用数据库后端以获得更好的性能

多标注者

对于有多个并发标注者的任务:

  • 设置合适的刷新间隔
  • 监控服务器资源
  • 使用数据库后端以提高可扩展性
yaml
# For large-scale deployments
database:
  type: mysql
  host: localhost
  database: potato_db
  username: ${DB_USER}
  password: ${DB_PASSWORD}

故障排除

无法访问仪表板

  • 验证配置中已设置 API 密钥
  • 检查 URL 是否为 /admin
  • 确保 API 密钥完全匹配
  • 检查配置中是否有拼写错误

仪表板加载缓慢

  • 减少页面大小
  • 增加刷新间隔
  • 考虑使用数据库后端
  • 检查服务器资源

统计未更新

  • 验证自动刷新已启用
  • 检查刷新间隔设置
  • 手动刷新页面
  • 检查 JavaScript 错误

延伸阅读

有关实现细节,请参阅源文档。