$ sudo teach IT

Вы уже знаете, как задать простой промпт и получить от модели ответ. Но как быть, если задача сложнее? Если вам нужно не просто сгенерировать текст, а задать структуру, повторить стиль, или подключить внешнюю логику? В этом уроке вы узнаете, как использовать два важных приёма: Few-shot prompting и Tool Use.

Представьте, что вы учитесь писать письма — проще, если перед глазами есть примеры. Модель тоже "учится" от примеров. А если письмо нужно сгенерировать на основе данных или после расчётов — модель может использовать внешние инструменты (от Python до API).

❓ Что вы узнаете в рамках статьи

  • Что такое few-shot prompting и зачем нужны примеры
  • Как использовать шаблоны и демонстрации в промптах
  • Что такое tool use и как он расширяет возможности модели
  • Как подключать внешние действия: код, API, калькулятор
  • Как писать agnostic-промпты (независимые от модели и инструмента)

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

  • Few-shot Prompt - Промпт, содержащий 1-3 примера правильного ввода/вывода
  • Tool Use - Использование внешних инструментов (например, Python, API, калькулятор)
  • Agnostic Prompt - Промпт, независимый от конкретной модели или интерфейса
  • Function calling - Механизм в API, позволяющий LLM вызывать заданные функции

🔹 Few-shot prompting: учим на примерах

В обычной ситуации вы просто формулируете задание и надеетесь, что модель поймёт, что и как нужно сделать. Но большие языковые модели — не маги. Они действуют по вероятности, на основе похожих паттернов. А значит, чем яснее вы покажете формат, тем точнее будет результат.

Few-shot prompting — это способ дать модели 1–3 хороших примера, прежде чем попросить сгенерировать новый. Это как показать образец, чтобы было понятно, в каком стиле и структуре писать.

📌 Пример из практики

Представим, что вы хотите, чтобы модель переводила фразы с русского на английский.

Если просто написать:

Переведи: «Мы готовим обед»

Модель может справиться — а может и не угадать нужное время, стиль, или начнёт объяснять перевод, вместо того чтобы просто его дать.

А если использовать few-shot:

User: Переведи: "Я иду в школу"
Bot: I am going to school.

User: Переведи: "Она читает книгу"
Bot: She is reading a book.

User: Переведи: "Мы готовим обед"
Bot:

Теперь у неё есть контекст и структура. Она видит, каков формат, какие времена используются, как строятся ответы — и с высокой вероятностью продолжит в том же духе.

📎 Аналогия: ученик по образцу

Это как если вы даёте школьнику домашнее задание по математике. В одном случае — просто задачу. В другом — две похожих решённых задачи и ещё одну — на самостоятельное выполнение.

Без примеров:

«Реши: 3 × (2 + 5)»

С примерами:

1. 2 × (1 + 4) = 10
2. 5 × (3 + 2) = 25
3. 3 × (2 + 5) = ?

Во втором случае ученик быстрее поймёт логику — и решит правильно.

🛠 Где это особенно полезно

Few-shot prompting работает отлично:

  • при генерации однородных структур, как email, уведомления, посты;
  • при переводе — особенно между разными стилями (формальный ↔ разговорный);
  • при анализе данных — например, извлечении сущностей, классификации, составлении резюме;
  • при создании кода — если нужно следовать шаблону (например, React-компонент или SQL-запрос с пояснением);
  • при заполнении анкет, генерации сценариев, карточек, форм.

💡 Что важно помнить

Few-shot — это не просто показать пару примеров. Нужно:

  • Сделать их максимально похожими по стилю на ожидаемый результат;
  • Выбрать репрезентативные (лучшие) кейсы;
  • Убедиться, что структура понятна и логично продолжается.

📎 Аналогия: вы не просто даёте человеку шаблон резюме, а даёте пример классного резюме, максимально близкого по профилю. Тогда он и своё составит лучше.

🔹 Tool Use: сначала подумай, потом сделай

Обычно языковые модели дают ответы "из головы" — то есть на основе накопленных знаний. Но что, если нужно посчитать, обратиться к базе, сделать запрос в API или выполнить код? Тут на помощь приходит подход Tool Use — использование внешних инструментов вместе с reasoning.

🧠 Что это такое

Tool Use — это когда модель сначала размышляет, а затем делает действие: вызывает функцию, делает API-запрос, выполняет Python-вычисление или обращается к справочнику. После этого она анализирует результат и формулирует окончательный ответ.

📎 Аналогия: Вы спрашиваете ассистента:

«А сколько это в евро?» Он не называет цифру наугад, а сначала открывает сайт с курсом, считает в калькуляторе — и потом говорит вам результат.

📌 Примеры

Простой reasoning (только размышления):

Вопрос: Сколько секунд в 3 часах?
Модель:
- 1 час = 3600 секунд
- 3 часа = 3 * 3600 = 10 800
Ответ: 10 800 секунд

Здесь модель сама сделала расчёт. Но если задача сложнее — лучше использовать Tool.

С reasoning + tool:

Reason: Нужно сделать расчёт
Act: run_python("3 * 3600") → 10800
Answer: 10 800 секунд

Теперь у нас есть объяснение, реальный вызов функции и надёжный результат.

🧪 Где это применимо

Tool Use особенно полезен:

  • когда нужна точность (финансы, время, расстояние);
  • когда данные могут меняться (например, курс валют или погода);
  • при взаимодействии с реальным миром: API, базы данных, сервисы;
  • при выполнении кода — например, в Python или SQL.

📎 Аналогия: Это как если бы у вас был аналитик, который не просто высказывает мнение, а ещё и делает расчёты в Excel, проверяет данные или запрашивает нужную информацию в CRM.

🔧 Что используется под капотом

Всё зависит от платформы. Например:

  • в ChatGPT — встроенные Tools (например, Python-обработчик или Browse);
  • в LangChain — цепочки действий с вызовами внешних функций;
  • в Prompt Engineering UI — возможность прописывать action-подсказки, которые триггерят вызовы.

💡 Зачем это нужно

Tool Use соединяет гибкость LLM и надёжность инструментов:

  • Модель не фантазирует, а проверяет данные
  • Вы можете отследить каждый шаг: reasoning → action → результат
  • Легче находить и исправлять ошибки

📎 Аналогия: Это как если бы модель сначала подумала, потом “пошла посчитала”, а потом вернулась с результатом — объяснив всё по дороге.

🔹 Агностические промпты: пишем независимо от модели

Когда вы создаёте промпт для одной конкретной модели — например, только для ChatGPT — вы можете позволить себе обращаться напрямую: “Ты — ChatGPT, ответь как эксперт”. Но в реальной работе, особенно если вы хотите использовать один и тот же шаблон в разных системах (Gemini, Claude, Mistral, LLaMA и т.д.), важно писать агностично — то есть независимо от конкретной реализации.

🧠 Что такое agnostic-промпт

Агностический (agnostic) промпт — это универсальный запрос, не зависящий от названия модели, интерфейса или специфики платформы. Он фокусируется на задаче, а не на контексте, в котором она выполняется.

📎 Аналогия: Представьте, что вы просите человека нарезать яблоко. Агностично — это “Пожалуйста, нарежь яблоко дольками”. Неагностично — это “Возьми нож на кухне третьей полки слева, встань у раковины, повернись к плите и начни резать”. Второй вариант привязан к контексту, первый — понятен в любом доме.

📌 Как писать агностично

Вот несколько рекомендаций, чтобы ваш промпт работал в разных LLM:

1. Не упоминайте модель

❌ Плохо:

Ты — ChatGPT. Ответь как эксперт в маркетинге.

✅ Лучше:

Дай краткий экспертный совет по маркетингу для B2C-продукта.

2. Избегайте ссылок на интерфейс

❌ Плохо:

Нажми кнопку “продолжить” и сгенерируй следующее сообщение.

✅ Лучше:

Продолжи сообщение в том же стиле, начиная с фразы...

3. Ставьте задачу напрямую

❌ Плохо:

Ты работаешь в Google Sheets, покажи формулу...

✅ Лучше:

Построй формулу для вычисления среднего чека по каждому каналу продаж.

🧪 Где это особенно важно

Агностические промпты особенно нужны:

  • 🛠 В системах, где одна задача отправляется в разные LLM
  • 🧩 При создании шаблонов, ботов или UI-ассистентов
  • 🔁 При переносе сценариев между платформами (например, из Notion AI в ChatGPT)
  • 📦 В no-code/low-code решениях, где модели могут быть заменяемыми

💡 Почему это выгодно

Когда вы пишете промпт агностично:

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

📎 Аналогия: Вы не говорите “заварите Lipton в этой конкретной кружке”, а говорите “заварите чёрный чай” — и это работает и в кафе, и дома, и в офисе.

❌ Наиболее частые ошибки

  • Слишком мало примеров → модель не улавливает формат
  • Примеры противоречат инструкции
  • Модель "галлюцинирует" действия, если tool use не задан
  • Смешение стилей и форматов в одном промпте
  • Указания на UI, которых нет в целевой среде

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

Нужно ли всегда давать примеры? Нет. Но при сложном формате — это значительно повышает точность.

Можно ли использовать tool use без кода? Да, можно имитировать: "вообрази, что ты запустил..." — модель всё равно строит reasoning.

Как сделать tool use в ChatGPT? Включить Code Interpreter или использовать function calling в API.

✅ Итоги

Сегодня вы познакомились с двумя мощными подходами:

  • Few-shot prompting — помогает модели "понять по примерам"
  • Tool Use — даёт модели доступ к вычислениям, базам и API

Они расширяют обычное взаимодействие с LLM, делая генерацию более точной, объяснимой и контролируемой. Вы сможете использовать эти подходы в собственных промптах, шаблонах, пайплайнах — и сделать свои решения гораздо гибче.

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