$ sudo teach IT

Представьте, что вы читаете инструкцию, написанную сплошным текстом без абзацев, списков и таблиц. Сложно ориентироваться, правда? LLM испытывает схожие трудности, если данные подаются «без структуры».

Современные языковые модели неплохо разбираются в форматах, но только если вы подадите их правильно. В этом уроке мы разберём, как именно LLM интерпретирует структурированные данные — и как сделать так, чтобы она поняла их так же, как вы.

🔍 Что вы узнаете

  • Как модели "видят" табличные и форматированные данные
  • Почему Markdown и JSON воспринимаются лучше, чем plain text
  • Как давать данные, чтобы избежать ошибок парсинга
  • Как просить LLM возвращать результат в структурированном виде
  • Как подавать CSV и таблицы для надёжного распознавания

🧩 Ключевые термины

  • Markdown - Упрощённый язык разметки для структурирования текста: заголовки, списки, таблицы и кодовые блоки.
  • JSON - Формат обмена данными с чёткой структурой ключ–значение. Удобен для хранения, передачи и парсинга данных.
  • CSV - Табличный формат данных, в котором:
    • строки разделяются через \n,
    • столбцы — через , или ;. Используется для импорта/экспорта из таблиц.
  • Токенизация - Процесс разбиения текста на токены — минимальные единицы (слова, символы, знаки), которые анализирует модель. Чем сложнее структура — тем больше токенов.

🤖 Как LLM видит структурированные данные

LLM — это не Excel, не веб-браузер и не IDE. Она не “видит” визуальную структуру — никаких колонок, ячеек или строк в привычном смысле. Зато она превосходно распознаёт текстовые шаблоны, если структура чётко обозначена в символах.

Думайте о LLM как о читателе-перфекционисте: ей не важно, как это выглядит на экране, но важна предсказуемость формата. Чем ровнее и повторяемее структура — тем лучше она поймёт.

📋 Таблицы = аккуратно выровненные тексты

LLM воспринимает таблицу как последовательность строк, где:

  • каждая строка — одна запись,
  • каждый столбец — часть строки,
  • разделители (|, пробелы, ,) — сигналы, что «вот тут заканчивается одна ячейка и начинается другая».
| Название   | Цена | В наличии |
|------------|------|-----------|
| Футболка   | 1299 | Да        |
| Шорты      | 1599 | Нет       |

📚 Аналогия: для LLM это похоже на аккуратно составленный список студентов на бумаге — если всё выровнено, прочесть легко.

Важно: если строки сдвинуты, пробелы неравномерны или символы путаются, модель может “ослепнуть” — воспринимать таблицу как обычный текст.

✅ Лучше:

  • Использовать Markdown-таблицы (| + ),
  • Выравнивать столбцы,
  • Избегать смешанных форматов в одной таблице.

📦 JSON = структура с точным скелетом

JSON — идеальный формат, если нужно передать чёткую вложенность и логику:

{
  "user": {
    "name": "Иван",
    "role": "менеджер"
  },
  "active": true
}

LLM «любит» JSON, потому что он:

  • предсказуем,
  • валиден для разбора,
  • хорошо подходит для генерации и парсинга.

🧠 Аналогия: JSON — это как чётко заполненная анкета. У каждого вопроса — свой ответ, всё по полочкам.

Советы:

  • Используйте "ключ": значение — без сокращений и лишнего форматирования.
  • Не смешивайте JSON с обычным текстом — помещайте в отдельный блок.

🗂 Списки = пошаговые инструкции

LLM хорошо воспринимает:

  • нумерованные списки (1., 2.) — сигнализируют последовательность,
  • маркированные списки (, ) — просто перечисление.
1. Получить заказ
2. Упаковать
3. Отправить клиенту

🧭 Аналогия: модель видит такой список как чеклист или пошаговое руководство — она может:

  • продолжить его,
  • переписать в другом стиле,
  • выделить ключевые действия.

Рекомендации:

  • Не прерывайте списки вставками.
  • Держите однородную структуру (не чередуйте 1., потом , потом —).

📐 Как улучшить восприятие модели

LLM может быть очень умной, но она не экстрасенс. Чем понятнее и структурированнее вы подаёте данные, тем лучше и точнее будет результат. Представьте, что вы пишете инструкции для помощника-робота, у которого нет глаз, но есть очень хорошая память и логика — ему важно не как красиво, а как чётко.

1. Используйте Markdown-разметку

LLM “понимает” Markdown примерно так же, как человек видит форматированный документ в Google Docs или Notion:

  • # Заголовки помогают разделять смысловые блоки.
  • Таблицы на | и — делают данные удобными для анализа.
  • Код-блоки ````` сохраняют точный формат — без искажений.

✅ Пример:

Вот заказы:

| ID | Имя клиента | Сумма  |
|----|-------------|--------|
| 1  | Иванов      | 3200 ₽ |
| 2  | Смирнова    | 4500 ₽ |

📌 Аналогия: Markdown — это как аккуратно оформленный документ для коллеги. Без стилей и графики, но с ясной структурой, где всё видно по заголовкам и таблицам.

👉 В ответ модель без труда рассчитает: "Средний чек: 3850 ₽"

2. Не ломайте формат длинными строками

LLM не любит «ковры» из текста — когда много структурированных данных подряд, но в одну строку. Это мешает ей «увидеть» повторяющиеся паттерны.

❌ Плохо:

{name: "Анна", age: 30, city: "Kazan"} {name: "Игорь", age: 28, city: "Omsk"}

Модель может воспринять это как простой текст и не распарсить.

✅ Хорошо:

[
  { "name": "Анна", "age": 30, "city": "Kazan" },
  { "name": "Игорь", "age": 28, "city": "Omsk" }
]

📌 Аналогия: длинная строка — как список продуктов, записанный без запятых: «молокохлебсыряблока». Форматирование — это как поставить пробелы и знаки препинания, чтобы всё стало ясно.

3. Просите конкретный формат на выходе

Модель умеет возвращать данные в любом виде — но по умолчанию выбирает вольный текст. Если вам нужен таблицей — скажите. Хотите JSON — укажите это явно.

Примеры:

✅ “Сделай таблицу в Markdown” ✅ “Верни ответ в формате JSON: name, age, city” ✅ “Список — маркерами, не абзацем”

📌 Аналогия: это как заказ в кафе. Если вы не сказали, какой гарнир — шеф выберет сам. Лучше уточнить: «С рисом, пожалуйста».

🧪 Гайды: “Научите ИИ читать ваш CSV”

CSV — это простой, но капризный формат. Он выглядит как текст, но несёт в себе структуру таблицы.

Name,Age,Score
Alice,24,88
Bob,27,91

💡 Чтобы модель правильно прочитала CSV:

  • Подавайте его в код-блоке (чтобы сохранить формат).

  • Следите за запятыми — если они внутри текста, оборачивайте значение в кавычки:

    Name,Comment
    Alice,"Good, but not perfect"
    
    

Что модель может делать с CSV:

  • Подсчитать среднее значение
  • Найти записи по условию
  • Сконвертировать в JSON
  • Превратить в Markdown-таблицу

💡 Пример промпта:

“Проанализируй следующий CSV и выведи средний балл. Верни результат в виде Markdown-таблицы.”

📌 Аналогия: CSV для модели — как список с колонками, начерченный в блокноте. Если строки аккуратные — она поймёт. Если в кучу — запутается.

✅ Примеры промптов

Цель Промпт Ожидаемый формат
Анализ данных “Вот таблица заказов (в Markdown). Подсчитай общую сумму.” Число или строка с пояснением
Генерация JSON “Создай карточку товара. Верни JSON с полями: name, price, tags” JSON
Извлечение из списка “Вот список клиентов. Укажи, у кого сумма заказа выше 5000 ₽.” Список или таблица
Преобразование CSV “Преобразуй CSV ниже в Markdown-таблицу” Markdown-таблица

❌ Частые ошибки

  • Ошибка: Без форматированияКак выглядит: данные идут слитно, без отступов, таблица разваливается Что делать: оборачивайте таблицу или JSON в код-блоки с тройными кавычками (```) и используйте Markdown-разметку
  • Ошибка: Плохой CSVКак выглядит: строки склеены, нарушены кавычки, лишние запятые Что делать: проверьте структуру CSV, экранируйте запятые внутри текста (например, оборачивайте значение в кавычки)
  • Ошибка: Нет запроса на форматКак выглядит: просите “дай список товаров” — получаете сплошной текст или абзац Что делать: явно указать: “сделай таблицу в Markdown” или “верни результат в JSON”
  • Ошибка: Таблица “вручную” пробеламиКак выглядит: данные выровнены пробелами, но ширина неровная, текст “плывёт” Что делать: используйте Markdown-таблицы с символом | и горизонтальными линиями ---, либо форматируйте в код-блоках с фиксированной шириной шрифта

❓ Частые вопросы

Q: Обязательно ли использовать Markdown или JSON?A: Не обязательно, но это помогает. Форматы вроде Markdown и JSON позволяют модели лучше понять структуру данных и уменьшить ошибки при генерации и парсинге.

Q: Почему модель путается в таблице, даже если я дал данные?A: Возможно, таблица представлена в виде обычного текста без чёткой разметки. Используйте Markdown-таблицы или оберните таблицу в код-блок (тройные обратные кавычки).

Q: Можно ли вставлять Google Sheets или Excel напрямую?A: Нет, но вы можете:

  • скопировать данные в виде таблицы и отформатировать их в Markdown;
  • экспортировать в CSV и вставить как текстовый код-блок;
  • или вручную описать структуру таблицы в примерах.

Q: Как быть, если таблица слишком большая?A: Сократите её до 3–5 строк или используйте примеры. Иначе вы рискуете выйти за пределы контекстного окна модели. Модель важнее шаблон, чем полный объём.

Q: Что выбрать — JSON, список или таблицу?A: Зависит от цели:

  • для машинной обработки → JSON;
  • для визуального анализа → Markdown-таблица;
  • для краткого вывода → маркированный список.

📌 Итоги

  • LLM понимает таблицы, списки и JSON только если вы подадите их правильно
  • Используйте Markdown и код-блоки — это универсальный способ структурирования
  • Уточняйте, в каком формате вы хотите ответ — модель подстроится
  • Даже простой CSV можно анализировать, если он читаемо оформлен
  • Чем яснее структура — тем надёжнее результат

В следующем уроке мы поговорим о метриках качества промптов — как оценить, “хорошо” ли сработала модель, и научиться управлять результатами более объективно.

На следующий урок