No history yet

Продвинутая структура текстовых запросов

От простых вопросов к сложным инструкциям

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

Ключевая идея — разделить ваш запрос на логические блоки. Модель должна четко понимать, где ее роль, где инструкции, а где данные для обработки. Это снижает вероятность ошибок и «галлюцинаций», делая ответы предсказуемыми и полезными.

Системные и пользовательские инструкции

Представьте, что вы нанимаете ассистента. Сначала вы даете ему общую должностную инструкцию: кто он, какими правилами руководствуется, в каком стиле общается. А затем ставите конкретные задачи на день. В проектировании промптов это разделение реализуется через системные и пользовательские сообщения.

Системная инструкция (System Prompt) задает фундаментальное поведение, роль и ограничения для модели на всю сессию. Пользовательская инструкция (User Prompt) — это ваш конкретный запрос в рамках заданной системы.

Многие платформы, включая API от OpenAI и Anthropic, позволяют явно разделять эти два типа инструкций. Системное сообщение обрабатывается с особым вниманием и задает тон всему дальнейшему диалогу. Это самый надежный способ «настроить» модель под себя.

## Пример: Редактор кода

# Системная инструкция
Ты — опытный Python-разработчик, который пишет чистый, эффективный код по стандарту PEP 8. Ты не пишешь комментарии к очевидным вещам, но объясняешь сложные алгоритмы. Твои ответы всегда содержат только код, без лишних фраз вроде «Конечно, вот код».

# Пользовательская инструкция
Напиши функцию, которая принимает на вход список целых чисел и возвращает новый список, содержащий только уникальные значения в исходном порядке.

В этом примере системная инструкция определяет роль (Python-разработчик), стиль (PEP 8, минимум комментариев) и формат ответа (только код). Пользовательское сообщение — это уже конкретная задача. Модель будет решать ее, строго следуя заданным правилам.

Разделители для ясности

Что если вам нужно передать модели статью для анализа и попросить ее найти ключевые тезисы? Модель может запутаться, где заканчиваются ваши инструкции и начинается сама статья. Чтобы этого избежать, используют разделители.

Разделители — это специальные символы или теги, которые обрамляют разные части вашего промпта, создавая четкую структуру. Наиболее распространенные варианты:

  • Тройные кавычки: """текст для анализа"""
  • Тройные обратные кавычки: ```текст для анализа```
  • XML-теги: <text_to_analyze>текст для анализа</text_to_analyze>

Модели от Anthropic (Claude) особенно хорошо обучены на распознавание XML-тегов, что делает их предпочтительным выбором при работе с этими моделями. Они позволяют создавать вложенные и сложные структуры, похожие на HTML-разметку.

## Пример с XML-тегами

<system_prompt>
Ты — литературный критик. Твоя задача — проанализировать предоставленный отрывок текста и кратко изложить его основную идею. Твой ответ должен быть в формате JSON.
</system_prompt>

<instructions>
1.  Внимательно прочти текст в тегах <text>.
2.  Определи главную мысль автора.
3.  Сформулируй ее в одном-двух предложениях.
4.  Создай JSON-объект с ключами "main_idea" и "keywords", где keywords — это список из 3-5 ключевых слов.
</instructions>

<text>
Здесь находится длинный отрывок из анализируемой статьи о влиянии технологий на современное общество...
</text>

Такая структура не оставляет модели простора для домыслов. Она точно знает, что анализировать, каким инструкциям следовать и где находится ее «личность».

Проектирование роли и формата

Задание роли, или «персоны», — один из самых мощных приемов. Когда вы говорите модели «Ты — эксперт по кибербезопасности», она автоматически активирует знания из этой области, использует соответствующую терминологию и подходит к задаче с нужной точки зрения.

Не менее важен и формат вывода. Если вам нужны данные для дальнейшей обработки в программе, просите их в виде JSON. Если готовите отчет — в виде таблицы Markdown. Чем точнее вы опишете желаемый результат, тем меньше правок потребуется.

Просто попросить «сделай JSON» недостаточно. Лучше предоставить пример структуры: {"user_id": ..., "feedback_summary": ..., "sentiment": "positive|negative|neutral"}. Это называется 'few-shot prompting' — обучение на нескольких примерах.

Для контроля стиля и длины используйте четкие ограничения. Вместо «напиши коротко» используйте «напиши ответ не более чем в 50 словах» или «составь список из 3-х пунктов». Жесткие рамки направляют модель и помогают избежать «воды».

Грамотное проектирование промптов — это навык, который превращает языковую модель из интересной игрушки в мощный рабочий инструмент. Экспериментируйте со структурой, ролями и форматами, чтобы добиться от ИИ именно тех результатов, которые вам нужны.