Поддержка ИИ
Подключайте к 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:
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
instance_display:
fields:
- {key: body, type: text, label: Ticket}
- {key: screenshot, type: image, label: Screenshot}Anthropic Claude
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
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
# 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: truevLLM (на своём железе)
# 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. Осмысленные подсказки
Дают разметчику контекстную опору, не раскрывая ответ:
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: true2. Подсветка ключевых слов
Автоматически подсвечивает в тексте значимые слова:
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: true3. Предложения меток
Предлагают метки на рассмотрение разметчика (с указанием уверенности):
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: true4. Обоснования меток
Появилось в v2.1.0
Генерируют взвешенные объяснения того, почему к тексту может подойти каждая из меток, помогая разметчику понять логику разных вариантов классификации:
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 вероятных вариантов, приглушая менее вероятные, при этом все варианты остаются кликабельными.
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:
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Стратегии кеширования
- Прогрев: заранее готовит подсказки ИИ для первой пачки объектов при старте сервера (
warm_up_page_count) - Упреждающая загрузка: готовит подсказки для следующих объектов, когда разметчик идёт вперёд (
on_next) или назад (on_prev) - Сохранение на диск: кеши пишутся на диск и переживают перезапуск сервера
Свои промпты
В 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}— описание схемы
Поддержка нескольких схем
Для задач с несколькими схемами разметки поддержку ИИ можно включать выборочно:
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"Полный пример
Законченная конфигурация для анализа тональности с помощью ИИ:
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 безопасно, в переменных окружения:
export OPENAI_API_KEY="sk-..."
export ANTHROPIC_API_KEY="sk-ant-..."
export GOOGLE_API_KEY="..."Ссылайтесь на них в конфигурации синтаксисом ${VARIABLE_NAME}.
О расходах
- По умолчанию обращения к ИИ идут на каждый объект
- Включите кеширование, чтобы сократить повторные запросы к API
- Используйте прогрев и упреждающую загрузку, чтобы готовить подсказки заранее
- Для простых задач подумайте о меньших и более дешёвых моделях
- У локальных провайдеров (Ollama, vLLM) расходов на API нет
Рекомендации
- ИИ помогает, а не заменяет — окончательное решение остаётся за разметчиком
- Включайте кеширование в продакшене — оно снижает и задержки, и расходы
- Тщательно проверяйте промпты — свои промпты нужно валидировать
- Следите за расходами на API — особенно с облачными провайдерами
- Присмотритесь к локальным провайдерам — Ollama или vLLM для больших объёмов разметки
- Берегите ключи — держите их в переменных окружения и никогда не коммитьте
Что почитать дальше
- Подсветка вариантов — подсказки по вариантам с помощью ИИ
- Упорядочивание по разнообразию — разнесение объектов по эмбеддингам
- Визуальная поддержка ИИ — ИИ для разметки изображений и видео
- Разметка через ICL — обучение в контексте с помощью ИИ
- Активное обучение — приоритизация объектов средствами ML
- Возможности для продуктивности — подсветка ключевых слов и подсказки
Детали реализации и шаблоны своих промптов — в исходной документации.