Поддержка ИИ
Подключайте к 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-4
api_key: ${OPENAI_API_KEY}
temperature: 0.3
max_tokens: 500Настройка по провайдерам
OpenAI
ai_support:
enabled: true
endpoint_type: openai
ai_config:
model: gpt-4o
api_key: ${OPENAI_API_KEY}
temperature: 0.3
max_tokens: 500Anthropic Claude
ai_support:
enabled: true
endpoint_type: anthropic
ai_config:
model: claude-3-sonnet-20240229
api_key: ${ANTHROPIC_API_KEY}
temperature: 0.3
max_tokens: 500Google Gemini
ai_support:
enabled: true
endpoint_type: google
ai_config:
model: gemini-1.5-pro
api_key: ${GOOGLE_API_KEY}Локальный Ollama
ai_support:
enabled: true
endpoint_type: ollama
ai_config:
model: llama2
base_url: http://localhost:11434vLLM (на своём железе)
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. Осмысленные подсказки
Дают разметчику контекстную опору, не раскрывая ответ:
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: true2. Подсветка ключевых слов
Автоматически подсвечивает в тексте значимые слова:
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 text3. Предложения меток
Предлагают метки на рассмотрение разметчика (с указанием уверенности):
ai_support:
enabled: true
endpoint_type: openai
ai_config:
model: gpt-4
api_key: ${OPENAI_API_KEY}
features:
label_suggestions:
enabled: true
show_confidence: true4. Обоснования меток
Появилось в v2.1.0
Генерируют взвешенные объяснения того, почему к тексту может подойти каждая из меток, помогая разметчику понять логику разных вариантов классификации:
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 вероятных вариантов, приглушая менее вероятные, при этом все варианты остаются кликабельными.
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:
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Стратегии кеширования
- Прогрев: заранее готовит подсказки ИИ для первой пачки объектов при старте сервера (
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: 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Полный пример
Законченная конфигурация для анализа тональности с помощью ИИ:
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 безопасно, в переменных окружения:
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
- Возможности для продуктивности — подсветка ключевых слов и подсказки
Детали реализации и шаблоны своих промптов — в исходной документации.