Управляемое извлечение фактов (IE) с оценкой достоверности
Индекс кейса: INFO-01
Описание идеи (зачем это надо, контекст):
Для ML-инженера недостаточно просто "попросить" LLM пересказать текст; необходимо извлекать (Information Extraction, IE) конкретные факты в строго заданном формате и, что критически важно, понимать границы применимости модели.
Задача IE (Information Extraction) — не просто извлечь информацию, а уметь отличать наличие факта от его отсутствия и сообщать уровень уверенности.Ваша система должна найти основной факт, действующее лицо, дату, место и источник и оценить собственную уверенность в предоставленных фактах.
Этот кейс тренирует создание промптов, надёжных в продакшн-сценариях, где ошибки интерпретации приводят к искажению аналитики или дезинформации.
Чему вы научитесь:
- Промпт-инжиниринг для структурированных данных: как заставить LLM строго следовать JSON-формату.
- Работа с неопределённостью: как формулировать запросы, чтобы модель честно указывала “нет данных” вместо выдумок.
- Linguistic debugging: как формулировка (“найди” vs “извлеки”, “укажи” vs “если возможно”) влияет на поведение модели.
- Итеративная отладка: как изменять промпт после ошибок, не ломая удачные кейсы.
Задача:
Разработайте промпт, который принимает ссылку на статью и возвращает JSON строго следующего вида:
{
"main_fact": "...", // Ключевой факт статьи (string)
"main_actor": "...", // Главное действующее лицо/организация (string, null если нет)
"event_date": "...", // Дата события (string, null если нет)
"location": "...", // Место события (string, null если нет)
"source_reference": "...", // На что ссылается (string, null если нет)
"confidence": {
"main_fact": "high/medium/low",
"main_actor": "high/medium/low",
"event_date": "high/medium/low",
"location": "high/medium/low",
"source_reference": "high/medium/low"
}
}
Требования:
- Структура JSON не должна нарушаться.
- Если данные отсутствуют — возвращайте null.
- Если информация неявна или противоречива — указывайте low confidence.
- Никаких комментариев, пояснений или текста вне JSON.
Вам предоставляется единый список статей (см. Исходные данные). Вы можете использовать любые статьи из этого списка для разработки, отладки и создания примеров (one-shot/few-shot learning).
Финальное тестирование будет проводиться на 5 статьях из этого же списка и одной статьи из закрытого списка, которые будут выбраны жюри в момент оценки. Так как вы не знаете заранее, какие именно 5 статей будут тестовыми, ваш промпт должен быть устойчивым ко всему списку и обобщаться на статьи за его пределами.
В список намеренно включены статьи, где информация: а) Отсутствует (например, нет даты или места). б) Противоречива или неявна (например, "событие произошло на прошлой неделе").
Ваша задача — "научить" LLM с помощью промпта корректно обрабатывать эти пограничные случаи. Вместо додумывания фактов система должна возвращать null (для отсутствующих данных) и выставлять low confidence (для неявных или противоречивых).
Советы:
- Сначала протестируйте промпт на 2–3 статьях и посмотрите, где он ошибается:
- Если модель «выдумывает» дату — добавьте требование о null.
- Если JSON ломается — разделите инструкцию на части (контекст, формат, пример).
- Если уверенность всегда high — уточните, что модель должна сомневаться при неполных данных.
Исходные данные:
- https://www.culture.ru/materials/258004/koporskii-chai-kak-kiprei-vydavali-za-elitnoe-kitaiskoe-syre
- https://i-m-i.ru/news/yandex-music-has-launched-a-new-recommendation-feature
- https://i-m-i.ru/news/zabelin-lecture
- https://i-m-i.ru/news/imanbek-after-the-grammy
- https://www.culture.ru/materials/254296/odisseya-nikolaya-rezanova
- https://www.theartnewspaper.ru/posts/20251007-vugy/
- https://www.theartnewspaper.ru/posts/20250514-meov/
- https://78.ru/news/2025-10-09/andriano-chelentano-ispolnit-pesnyu-na-stihi-rubalskoi
- https://www.championat.com/other/article-6206610-fide-anonsirovala-novyj-chempionat-mira-po-shahmatam-total-chess-world-championship-tour-chto-za-turnir-budet-li-igrat-karlsen.html
- https://habr.com/ru/news/959196/
Критерии оценки:
-
Точность извлечения фактов (40 баллов)
Оценивается F1-score по точному совпадению для main_fact, main_actor, event_date, location, source_reference. Совпадение null с эталоном засчитывается как корректное извлечение. -
Обработка неопределённых и противоречивых данных (20 баллов)
Баллы начисляются, если модель корректно выставляет low confidence или null при неявных/отсутствующих данных. Штраф, если выдано high confidence, но значение неверное. -
Структурированность вывода (15 баллов)
JSON должен быть полностью валидным и соответствовать образцу. Любая ошибка парсинга даёт 0 баллов за кейс. -
Итеративная устойчивость и воспроизводимость (15 баллов)
Промпт должен работать без ручных правок на новых статьях. Баллы даются за универсальность и стабильность поведения на разнообразных источниках. -
Качество промпта и инженерный подход (5 баллов)
Ясная структура запроса, логика инструкций, корректное использование ролей, подсказок и примеров. -
Креативность и оформление (5 баллов)
Ясный язык, аккуратная подача финального промпта и вашего анализа. Решение легко читать и проверять.
Для сдачи проекта:
Отчет по проекту:
В свободной форме опишите
- Состав команды
- Финальный промпт
- В свободной форме опишите:
- Задачу, которую вы решали
- Метрики, которые вы создали для этой задачи
- Фиксируйте, что делаете для решения задачи, и что получается
- И в конце - расскажите то, что важно рассказать о вашем проекте
Ссылки на все диалоги с LLM, которые приводят к финальному решению.
Уникальное для кейса:
Добавить в отчёт:
- Таблица: Статья | main_fact | main_actor | event_date | location | Confidence|
Тестирование:
- Минимум на 5 статьях из списка
- Показать 2-3 примера с JSON-выводом
- Отметить граничные случаи (отсутствие даты, противоречия)