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-4o-mini"
    api_key: "${OPENAI_API_KEY}"
    temperature: 0.7
    max_tokens: 800
    include:
      all: true

Настройка по провайдерам

OpenAI

yaml
instance_display:
  fields:
    - {key: body, type: text, label: Ticket}
    - {key: screenshot, type: image, label: Screenshot}

Anthropic Claude

yaml
ai_support:
  enabled: true
  endpoint_type: "openai"
  ai_config:
    model: "gpt-4o-mini"
    api_key: "${OPENAI_API_KEY}"
    include:
      all: false
      special_include:
        "0":
          "0": ["hint", "keyword"]
        "1":
          "1": ["hint"]
        "2":
          "0": ["hint", "keyword"]
          "1": ["hint", "keyword"]

Google Gemini

yaml
ai_support:
  enabled: true
  endpoint_type: "openai"
  ai_config:
    model: "gpt-4o-mini"
    api_key: "${OPENAI_API_KEY}"
    include:
      all: true
  cache_config:
    disk_cache:
      enabled: true
      path: "annotation_output/ai_cache.json"
    prefetch:
      warm_up_page_count: 20
      on_next: 10
      on_prev: 3

Локальный Ollama

yaml
# config.yaml, committed, no secrets
ai_support:
  enabled: true
  ai_config_file: ai-config.yaml
 
  ai_config:
    temperature: 0.7
    max_tokens: 800
    include:
      all: true

vLLM (на своём железе)

yaml
# ai-config.yaml, gitignored
endpoint_type: ollama
model: qwen3:0.6b
base_url: http://localhost:11434

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

Появилось в 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-4o-mini"
    api_key: "${OPENAI_API_KEY}"
    temperature: 0.7
    max_tokens: 800
    include:
      all: true

2. Подсветка ключевых слов

Автоматически подсвечивает в тексте значимые слова:

yaml
ai_support:
  enabled: true
  endpoint_type: "anthropic"
  ai_config:
    model: "claude-sonnet-4-20250514"
    api_key: "${ANTHROPIC_API_KEY}"
    temperature: 0.7
    max_tokens: 800
    include:
      all: true

3. Предложения меток

Предлагают метки на рассмотрение разметчика (с указанием уверенности):

yaml
ai_support:
  enabled: true
  endpoint_type: "gemini"
  ai_config:
    model: "gemini-2.0-flash-exp"
    api_key: "${GOOGLE_API_KEY}"
    max_tokens: 800
    include:
      all: true

4. Обоснования меток

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

Генерируют взвешенные объяснения того, почему к тексту может подойти каждая из меток, помогая разметчику понять логику разных вариантов классификации:

yaml
ai_support:
  enabled: true
  endpoint_type: "ollama"
  ai_config:
    model: "llama3.2"
    base_url: "http://localhost:11434"
    max_tokens: 800
    include:
      all: true

Обоснования появляются подсказкой, где перечислена каждая доступная метка с объяснением, почему она может подойти. Это удобно при обучении разметчиков и в случаях, когда решение даётся тяжело.

5. Подсветка вариантов

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

Подсветка наиболее вероятных верных вариантов с помощью ИИ для задач с дискретным выбором (radio, multiselect, likert, select). Система анализирует содержимое и подсвечивает top-k вероятных вариантов, приглушая менее вероятные, при этом все варианты остаются кликабельными.

yaml
ai_support:
  enabled: true
  endpoint_type: "vllm"
  ai_config:
    model: "meta-llama/Llama-3.2-3B-Instruct"
    base_url: "http://localhost:8000"
    max_tokens: 800
    include:
      all: true

Полные настройки — в разделе Подсветка вариантов.

Дополнительно: упорядочивание по разнообразию

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

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

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

Ответы ИИ можно кешировать, чтобы ускорить работу и снизить расходы на API:

yaml
ai_support:
  enabled: true
  endpoint_type: "open_router"
  ai_config:
    model: "openai/gpt-4o-mini"
    api_key: "${OPENROUTER_API_KEY}"
    max_tokens: 800
    include:
      all: true

Стратегии кеширования

  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: "ollama"
  visual_endpoint_type: "ollama_vision"
  ai_config:
    model: "llama3.2"
    include:
      all: true
  visual_ai_config:
    model: "qwen2.5-vl:7b"

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

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

yaml
annotation_task_name: "Sentiment Analysis with AI Support"
task_dir: "."
 
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 text?"
    labels: ["positive", "negative", "neutral"]
 
  - annotation_type: multiselect
    name: topics
    description: "What topics are discussed?"
    labels: ["product", "service", "price", "quality"]
 
ai_support:
  enabled: true
  endpoint_type: "openai"
  ai_config:
    model: "gpt-4o-mini"
    api_key: "${OPENAI_API_KEY}"
    temperature: 0.7
    max_tokens: 800
    include:
      all: true
  cache_config:
    disk_cache:
      enabled: true
      path: "annotation_output/ai_cache.json"
    prefetch:
      warm_up_page_count: 20
      on_next: 10
      on_prev: 3
 
output_annotation_dir: "output/"
export_annotation_format: jsonl
 
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. Берегите ключи — держите их в переменных окружения и никогда не коммитьте

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

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