Skip to content

Поддержка ИИ

Подключайте к Potato OpenAI, Claude, Gemini, Ollama, HuggingFace, vLLM и OpenRouter для подсказок меток, предразметки и подсветки ключевых слов с помощью ИИ.

В 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

Визуальные эндпоинты ИИ

Появилось в v2.1.0

Для задач разметки изображений и видео Potato поддерживает отдельные визуальные эндпоинты, включая YOLO, Ollama Vision, OpenAI Vision и Anthropic Vision. Они дают детекцию объектов, предразметку и визуальную классификацию.

Полные настройки — в разделе Визуальная поддержка ИИ.

Возможности ИИ

Поддержка ИИ в Potato даёт пять основных возможностей:

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

Подсветка наиболее вероятных верных вариантов с помощью ИИ для задач с дискретным выбором (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

Строго говоря, это не возможность ИИ, но упорядочивание по разнообразию использует эмбеддинги sentence-transformer, чтобы кластеризовать объекты и подавать их в разнородном порядке, снижая утомление разметчика и улучшая охват. С поддержкой ИИ оно связано тем, что автоматически подгружает подсказки ИИ для переупорядоченных объектов.

Кеширование и производительность

Ответы ИИ можно кешировать, чтобы ускорить работу и снизить расходы на 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. Прогрев: заранее готовит подсказки ИИ для первой пачки объектов при старте сервера (warm_up_page_count)
  2. Упреждающая загрузка: готовит подсказки для следующих объектов, когда разметчик идёт вперёд (on_next) или назад (on_prev)
  3. Сохранение на диск: кеши пишутся на диск и переживают перезапуск сервера

Свои промпты

В Potato есть промпты по умолчанию для каждого типа разметки, они лежат в potato/ai/prompt/. Их можно изменить под свою задачу:

Тип разметкиФайл промпта
Радиокнопкиradio_prompt.txt
Шкалы Лайкертаlikert_prompt.txt
Флажкиcheckbox_prompt.txt
Разметка спановspan_prompt.txt
Ползункиslider_prompt.txt
Выпадающие спискиdropdown_prompt.txt
Ввод числаnumber_prompt.txt
Ввод текстаtext_prompt.txt

Промпты поддерживают подстановку переменных:

  • {text} — текст документа
  • {labels} — доступные метки схемы
  • {description} — описание схемы

Поддержка нескольких схем

Для задач с несколькими схемами разметки поддержку ИИ можно включать выборочно:

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

Полный пример

Законченная конфигурация для анализа тональности с помощью ИИ:

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/"
export_annotation_format: "json"
user_config:
  allow_all_users: true

Переменные окружения

Храните ключи API безопасно, в переменных окружения:

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

Ссылайтесь на них в конфигурации синтаксисом ${VARIABLE_NAME}.

О расходах

  • По умолчанию обращения к ИИ идут на каждый объект
  • Включите кеширование, чтобы сократить повторные запросы к API
  • Используйте прогрев и упреждающую загрузку, чтобы готовить подсказки заранее
  • Для простых задач подумайте о меньших и более дешёвых моделях
  • У локальных провайдеров (Ollama, vLLM) расходов на API нет

Рекомендации

  1. ИИ помогает, а не заменяет — окончательное решение остаётся за разметчиком
  2. Включайте кеширование в продакшене — оно снижает и задержки, и расходы
  3. Тщательно проверяйте промпты — свои промпты нужно валидировать
  4. Следите за расходами на API — особенно с облачными провайдерами
  5. Присмотритесь к локальным провайдерам — Ollama или vLLM для больших объёмов разметки
  6. Берегите ключи — держите их в переменных окружения и никогда не коммитьте

Что почитать дальше

Детали реализации и шаблоны своих промптов — в исходной документации.