Skip to content

AI 支援

整合大語言模型實現智慧標註輔助。

Potato 2.0 內建了對大語言模型(LLM)的支援,幫助標註者獲得智慧提示、關鍵詞高亮和標籤建議。

支援的提供商

Potato 支援多種 LLM 提供商:

雲服務提供商:

  • OpenAI(GPT-4、GPT-4 Turbo、GPT-3.5)
  • Anthropic(Claude 3、Claude 3.5)
  • Google(Gemini 1.5 Pro、Gemini 2.0 Flash)
  • Hugging Face
  • OpenRouter

本地/自託管:

  • Ollama(本地執行模型)
  • vLLM(高效能自託管推理)

配置

基本設定

在配置檔案中新增 ai_support 部分:

yaml
ai_support:
  enabled: true
  endpoint_type: openai
 
  ai_config:
    model: gpt-4
    api_key: ${OPENAI_API_KEY}
    temperature: 0.3
    max_tokens: 500

特定提供商配置

OpenAI

yaml
ai_support:
  enabled: true
  endpoint_type: openai
 
  ai_config:
    model: gpt-4o
    api_key: ${OPENAI_API_KEY}
    temperature: 0.3
    max_tokens: 500

Anthropic Claude

yaml
ai_support:
  enabled: true
  endpoint_type: anthropic
 
  ai_config:
    model: claude-3-sonnet-20240229
    api_key: ${ANTHROPIC_API_KEY}
    temperature: 0.3
    max_tokens: 500

Google Gemini

yaml
ai_support:
  enabled: true
  endpoint_type: google
 
  ai_config:
    model: gemini-1.5-pro
    api_key: ${GOOGLE_API_KEY}

本地 Ollama

yaml
ai_support:
  enabled: true
  endpoint_type: ollama
 
  ai_config:
    model: llama2
    base_url: http://localhost:11434

vLLM(自託管)

yaml
ai_support:
  enabled: true
  endpoint_type: vllm
 
  ai_config:
    model: meta-llama/Llama-2-7b-chat-hf
    base_url: http://localhost:8000/v1

視覺 AI 端點

v2.1.0 新增

對於影像和影片標註任務,Potato 支援專用的視覺端點,包括 YOLO、Ollama Vision、OpenAI Vision 和 Anthropic Vision。這些端點支援目標檢測、預標註和視覺分類。

詳見視覺 AI 支援的完整配置說明。

AI 功能

Potato 的 AI 支援提供五種主要功能:

1. 智慧提示

為標註者提供上下文指導,但不揭示答案:

yaml
ai_support:
  enabled: true
  endpoint_type: openai
 
  ai_config:
    model: gpt-4
    api_key: ${OPENAI_API_KEY}
 
  # Hints appear as tooltips or sidebars
  features:
    hints:
      enabled: true

2. 關鍵詞高亮

自動高亮文本中的相關關鍵詞:

yaml
ai_support:
  enabled: true
  endpoint_type: openai
 
  ai_config:
    model: gpt-4
    api_key: ${OPENAI_API_KEY}
 
  features:
    keyword_highlighting:
      enabled: true
      # Highlights are rendered as box overlays on the text

3. 標籤建議

為標註者提供標籤建議(帶置信度指標顯示):

yaml
ai_support:
  enabled: true
  endpoint_type: openai
 
  ai_config:
    model: gpt-4
    api_key: ${OPENAI_API_KEY}
 
  features:
    label_suggestions:
      enabled: true
      show_confidence: true

4. 標籤理由

v2.1.0 新增

為每個標籤可能適用於文本的原因生成平衡的解釋,幫助標註者理解不同分類背後的推理:

yaml
ai_support:
  enabled: true
  endpoint_type: openai
 
  ai_config:
    model: gpt-4
    api_key: ${OPENAI_API_KEY}
 
  features:
    rationales:
      enabled: true

理由以工具提示形式出現,列出每個可用標籤及其可能適用的解釋。這對於培訓標註者或標註決策困難時非常有用。

5. 選項高亮

v2.2.0 新增

AI 輔助高亮離散標註任務(radio、multiselect、likert、select)中最可能正確的選項。系統分析內容並高亮 top-k 個最可能的選項,同時淡化不太可能的選項,但所有選項仍然完全可點選。

yaml
ai_support:
  enabled: true
  endpoint_type: openai
 
  ai_config:
    model: gpt-4o-mini
    api_key: ${OPENAI_API_KEY}
 
  option_highlighting:
    enabled: true
    top_k: 3
    dim_opacity: 0.4
    auto_apply: true

詳見選項高亮的完整配置說明。

互補功能:多樣性排序

v2.2.0 新增

雖然嚴格來說不是 AI 功能,多樣性排序使用 sentence-transformer 嵌入對項目進行聚類並以多樣化順序呈現,減少標註者疲勞並提高覆蓋率。它通過自動為重排序的項目預取 AI 提示來與 AI 支援整合。

快取和效能

AI 響應可以被快取以提高效能並降低 API 成本:

yaml
ai_support:
  enabled: true
  endpoint_type: openai
 
  ai_config:
    model: gpt-4
    api_key: ${OPENAI_API_KEY}
 
  cache_config:
    disk_cache:
      enabled: true
      path: "ai_cache/cache.json"
 
    # Pre-generate hints on startup and prefetch upcoming
    prefetch:
      warm_up_page_count: 100
      on_next: 5
      on_prev: 2

快取策略

  1. 預熱:伺服器啟動時為初始批次實例預生成 AI 提示(warm_up_page_count
  2. 預取:標註者向前(on_next)或向後(on_prev)導航時,為即將到來的實例生成提示
  3. 磁碟持久化:快取儲存到磁碟,伺服器重啟後仍然有效

自定義提示

Potato 為每種標註類型包含預設提示,儲存在 potato/ai/prompt/ 中。你可以為特定任務自定義這些提示:

標註類型提示檔案
單選按鈕radio_prompt.txt
Likert 量表likert_prompt.txt
核取方塊checkbox_prompt.txt
片段標註span_prompt.txt
滑塊slider_prompt.txt
下拉選單dropdown_prompt.txt
數字輸入number_prompt.txt
文本輸入text_prompt.txt

提示支援變數替換:

  • {text} - 文件文本
  • {labels} - 模式的可用標籤
  • {description} - 模式描述

多模式支援

對於有多個標註模式的任務,你可以有選擇地啟用 AI 支援:

yaml
ai_support:
  enabled: true
  endpoint_type: openai
 
  ai_config:
    model: gpt-4
    api_key: ${OPENAI_API_KEY}
 
  # Only enable for specific schemes
  special_include:
    - page: 1
      schema: sentiment
    - page: 1
      schema: topics

完整示例

AI 輔助情感分析的完整配置:

yaml
annotation_task_name: "AI-Assisted Sentiment Analysis"
task_dir: "."
port: 8000
 
data_files:
  - "data/reviews.json"
 
item_properties:
  id_key: id
  text_key: text
 
annotation_schemes:
  - annotation_type: radio
    name: sentiment
    description: "What is the sentiment of this review?"
    labels:
      - Positive
      - Negative
      - Neutral
 
ai_support:
  enabled: true
  endpoint_type: openai
 
  ai_config:
 
  features:
 
  cache_config:
 
output_annotation_dir: "output/"
output_annotation_format: "json"
allow_all_users: true

環境變數

使用環境變數安全儲存 API 金鑰:

bash
export OPENAI_API_KEY="sk-..."
export ANTHROPIC_API_KEY="sk-ant-..."
export GOOGLE_API_KEY="..."

在配置中使用 ${VARIABLE_NAME} 語法引用它們。

成本考慮

  • 預設情況下每個實例都會呼叫 AI
  • 啟用快取以減少重複的 API 呼叫
  • 使用預熱和預取來預生成提示
  • 對於簡單任務考慮使用更小/更便宜的模型
  • 本地提供商(Ollama、vLLM)無 API 成本

最佳實踐

  1. 將 AI 作為輔助而非替代 - 讓標註者做最終決定
  2. 生產環境啟用快取 - 減少延遲和成本
  3. 徹底測試提示 - 自定義提示應經過驗證
  4. 監控 API 成本 - 跟蹤使用情況,特別是雲服務提供商
  5. 考慮本地提供商 - 大批次標註使用 Ollama 或 vLLM
  6. 保護 API 憑證 - 使用環境變數,永遠不要提交金鑰

延伸閱讀

有關實現細節和自定義提示模板,請參閱原始碼文件