← Назад к блогу

Постановка задачи для ИИ: от «сделай умно» к детерминированному результату

AIPrompt EngineeringYandexGPTLLMSCADAPython

Почему 80% работы с LLM — это формулировка границ задачи. Трёхуровневая спецификация, JSON Schema, триггеры и чек-лист для production-интеграций.

Почему «сделай умный анализ» не работает

ИИ — вероятностный инструмент, работающий только в явно очерченных границах. Размытая постановка вроде «проанализируй лог и выдай рекомендации» заставляет модель галлюцинировать, придумывать метрики и тратить токены на воду. В SCADA.AI 80% времени уходит на формулировку границ, 20% — на код. Без этого точность вызова падает до 40%, время ответа растёт до 15 секунд.

Трёхуровневая постановка задачи

Каждый инструмент проходит три уровня спецификации.

Уровень 1: Бизнес-требование

Определяем ожидаемый результат.

Инженер пишет: «проанализируй системный лог за последний час»
Ожидаемый результат: Markdown-отчёт с количеством событий по типам, критическими ошибками, аномалиями и рекомендациями.

Уровень 2: Техническая спецификация (JSON Schema)

Описываем tool так, чтобы YandexGPT точно понимал, когда и как его вызывать.

{
    "function": {
        "name": "analyze_system_logs",
        "description": "Анализирует системный лог SCADA.AI. Вызывается когда пользователь просит 'проанализируй лог', 'что происходит в системе', 'анализ логов'. Возвращает Markdown-отчёт с категоризацией событий, выделением критических ошибок и аномалий.",
        "parameters": {
            "type": "object",
            "properties": {
                "limit": {"type": "integer", "description": "Количество последних записей (по умолчанию 500)"},
                "timeframe": {"type": "string", "enum": ["1h", "6h", "24h", "7d"], "description": "Временной интервал для анализа"}
            }
        }
    }
}

Уровень 3: System prompt

Жёсткие правила, триггеры и ограничения.

Ты — модуль анализа системных логов SCADA.AI.
Правила:
1. Когда пользователь просит анализ лога — ВСЕГДА вызывай tool analyze_system_logs
2. Не анализируй лог самостоятельно — только через tool
3. Формат ответа: Markdown с заголовками ##, списками -, кодом
4. Если tool вернул ошибку — сообщи об этом пользователю, не придумывай данные
Триггеры вызова:
- «проанализируй лог»
- «что происходит в системе»
- «анализ логов»

Процесс: от use cases до тестирования

  1. Собираем use cases (5-10 реальных фраз).
  2. Определяем границы (что tool НЕ должен делать).
  3. Пишем JSON Schema (с enum, description, примерами).
  4. Пишем system prompt (правила + триггеры + ограничения).
  5. Реализуем tool (возвращает структуру, не сырые данные).
  6. Тестируем (20-30 запросов, замер точности).

Что ИИ может, а что не может

ПараметрБез чёткой постановкиС чёткой постановкой
Точность вызова tool~40%~95%
Время ответа10-15 секунд3-5 секунд
ГаллюцинацииЧастоРедко

Что ИИ НЕ может:

  • Принимать решения на основе неполных данных
  • Работать с realtime-данными без tools
  • Гарантировать детерминированность (при temperature=0.6 ответы варьируются)
  • Обрабатывать объёмы сверх 32 768 токенов
  • Понимать доменную специфику без описания

Что ИИ МОЖЕТ хорошо:

  • Суммаризировать структурированные данные
  • Переформулировать технический язык в человеческий
  • Выявлять паттерны в тексте
  • Генерировать Markdown-отчёты
  • Выбирать tool из 5-7 доступных по контексту

Грабли из production-опыта

  1. «Сделай умный анализ» — худшая постановка. Модель не знает контекста. Нужно: «проанализируй по критериям A, B, C, верни Markdown».
  2. Описание tool без триггеров. description: "Анализирует лог" бесполезно. Добавляйте прямые фразы-триггеры.
  3. Возврат сырых данных. 50 000 строк → модель не влезает в контекст → галлюцинации. Решение: агрегированный summary.
  4. Отсутствие обработки ошибок. Tool упал → pipeline лёг. Решение: всегда возвращать {"status": "ok"|"error"}.
  5. Temperature=0.9 для анализа. Модель креативничает. Для инженерных задач нужна 0.3-0.5.

Чек-лист

  • Сформулировано бизнес-требование
  • Описаны триггеры (5-10 фраз)
  • Создана JSON Schema с enum
  • Написан system prompt с правилами
  • Tool возвращает структуру
  • Реализован возврат статуса
  • Протестировано на 20+ запросах (> 90% точности)
  • Temperature < = 0.5 для анализа

Итог

ИИ не заменяет дисциплину. Он усиливает её при чётких границах. Трёхуровневая спецификация, триггеры и детерминированная обработка — путь к 95% точности в production.