Когда использовать
Когда из «грязного» текста (письмо, заявка, счёт, отзыв) нужно достать поля и положить в базу/таблицу/API. Роль ИИ — парсер. Результат: ровный JSON по твоей схеме, который не сломает код на следующем шаге, — без «Конечно, вот данные:» и без выдуманных полей.
Промт (бери и вставляй)
Извлеки данные из ТЕКСТА строго в JSON по схеме ниже. Верни ТОЛЬКО валидный JSON-объект, без пояснений и markdown.
СХЕМА (ключи и типы фиксированы):
{
"<поле1>": "string",
"<поле2>": "number | null",
"<поле3>": "YYYY-MM-DD | null",
"<поле4>": ["string"] // массив, [] если ничего
}
Правила:
1. Используй РОВНО эти ключи. Не добавляй новых полей и не переименовывай.
2. Если значение в тексте отсутствует или неоднозначно — ставь null (для массива — []). НЕ угадывай и не выдумывай.
3. Числа — без единиц и пробелов (1500, не «1 500 ₽»). Даты — в ISO YYYY-MM-DD.
4. Копируй значения как в тексте (имена, адреса), не переводи и не «причёсывай».
ТЕКСТ: «<ВСТАВЬ ТЕКСТ>».
Приём: фиксированная схема + правило «нет данных → null, не выдумывай» — это ручной аналог strict-режима structured outputs; в API лучше включить json_schema со strict, чтобы формат гарантировался движком.
Пример заполнения
Схема: { "name": "string", "amount": "number | null", "due_date": "YYYY-MM-DD | null", "items": ["string"] }. Текст: «Счёт для ООО „Ромашка“ на 12 500 рублей, оплатить до 15 июня. Позиции: хостинг, домен».
Ожидаемый ответ ИИ: {"name":"ООО \"Ромашка\"","amount":12500,"due_date":"2026-06-15","items":["хостинг","домен"]} — и ничего, кроме этого объекта.
Вариации
- Массив объектов. «Верни JSON-массив: один объект на каждую строку заказа» — для парсинга таблиц/списков.
- С уверенностью. Добавь поле
"confidence": "high|medium|low"на каждое извлечение — чтобы ловить сомнительные. - Через API. В OpenAI/совместимых —
response_format: { type: "json_schema", strict: true }; схему опиши в Pydantic/Zod, тогда невалидный JSON просто не сгенерируется.
Про-советы
- В коде не полагайтесь только на промт — включайте strict-режим (json_schema), иначе на длинных текстах модель иногда добавит вступление и сломает
JSON.parse. Промт-правила нужны для чата, где strict недоступен. - Помечайте необязательные поля как «тип | null» и явно требуйте null при отсутствии — иначе модель «дорисует» правдоподобное значение, и вы получите тихую ошибку в данных.
- Просите КОПИРОВАТЬ значения, а не нормализовать (кроме чисел и дат): авто-«исправление» имён и адресов — частый источник порчи данных при извлечении.