Основная навигация

Пять приёмов для улучшения общения клиентского ИИ

Пять проверенных на практике приёмов дизайна диалога помогают клиентским ИИ-агентам общаться яснее и эффективнее.

Краткое содержание

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

  • Намерения в формате «условие — действие» учат модель принимать решения, а не дают ей сценарий, за рамки которого она не может выйти. Положение в промпте само по себе служит инструкцией. Сначала задаётся идентичность, в середине — нюансы поведения, в конце — жёсткие ограничения, а всё действительно критически важное помещается в оба места.

  • Один из самых действенных приёмов — писать промпт в нужной манере, а не описывать её.

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

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

Ранее мы представили новую парадигму промптинга, основанную на идеях из лингвистики и когнитивной психологии. Мы писали о важности создания чётко очерченной предметной области, в которой может действовать агент, и о том, что эта область должна охватывать метазадачу диалога, присущую клиентскому ИИ.

Теперь рассмотрим несколько практических изменений, которые появились в наших промптах при внедрении этих принципов в рабочие системы.

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

В ходе непрерывных исследований и испытаний сформировалось несколько эффективных приёмов. Мы меняли промпт и смотрели, где разговор складывался удачно, а где нет, связывая ошибки с качеством указаний, структурой промпта и выбранными формулировками. В результате появились несколько воспроизводимых подходов, которые меняют восприятие агентом своей роли в разговоре, выбор следующего шага и способность сохранять единый голос при смене контекста.

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

Отделите мышление от речи

Агентную систему можно организовать по-разному, но оркестрируемые многоагентные процессы по-прежнему популярны. Особенно в таких системах самым стабильно полезным изменением стало разделение агентов на тех, которые думают, и тех, которые говорят.

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

Взаимосвязь клиентского и внутреннего уровней в многоагентной системе

Схема разделяет клиентский разговорный уровень и уровень мышления: диалог с пользователем связан с внутренними рассуждениями и инструментами.

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

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

Стоит отметить, что при подходящих условиях новейшие передовые модели уже ставят под сомнение исходную предпосылку этого подхода. Тем не менее многие разработчики по разным причинам всё ещё используют небольшие или более старые модели. В таких случаях мы однозначно рекомендуем разделять внутренние и клиентские задачи.

Используйте намерения реализации вместо примеров

Для моделей без рассуждений few-shot-примеры эффективны: они конкретны, быстро дают результат и хорошо воспринимаются моделями. Проблема заключается в переобучении. Получив пример, модель цепляется за его лексику, ритм и форму и продолжает выдавать близкие варианты того же ответа, даже когда ситуация уже изменилась.

Вы сами того не желая написали сценарий, за рамки которого модель выйти не может.

Более устойчивой альтернативой служат намерения реализации, или эвристики. Вместо того чтобы показывать модели, что говорить в конкретных ситуациях, мы задаём более общую пару «условие — действие»: если происходит X, сделай Y.

Главное отличие в том, что мы не сужаем X и Y с каждым новым примером, делая их всё более жёсткими, а задаём каждому чёткие границы настолько точной инструкцией, что примеры становятся не нужны. Благодаря этому агент реагирует на реальное разнообразие диалогов, а не подгоняет ситуацию под шаблон.

На практике это больше похоже не на примеры, а на применимые правила:

  • Если не хватает важной детали, задай один уточняющий вопрос.

  • Если ответ не подтверждён, скажи об этом прямо и предложи лучший доступный следующий шаг.

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

В этом нет ничего эффектного, но такой подход значительно надёжнее библиотеки примеров ответов: он учит модель принимать решения, а не повторять готовое.

Считайте расположение инструкцией

Положение элемента в промпте влияет на его вес. Эту закономерность мы стабильно наблюдаем в разных моделях и внедрениях. Начало и конец промпта привлекают непропорционально много внимания. В середине находятся нюансы — и именно там им самое место.

Мы строим промпты с учётом этого принципа. Роль и самоощущение агента размещаются в начале, чтобы прежде всего задать его идентичность. В середине приводятся подробности поведения: вероятный ход разговора, эвристики для выбора ответов и круг ситуаций, с которыми должен справляться агент. Жёсткие и не подлежащие обсуждению ограничения размещаются в конце, чтобы они оставались «в центре внимания».

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

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

Анатомия промпта клиентского уровня (если бы промпт состоял из 100 токенов)

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

Пусть сам промпт служит примером

Мы поняли, что few-shot-примеры не стоит использовать и для задания тона речи. Отказ от них стал одним из самых значимых изменений в работе наших клиентских агентов.

Вместо этого мы целиком пишем промпт в нужной манере. Не описываем её и не перечисляем приблизительно подходящие прилагательные, а с первой до последней строки используем эту манеру в полноценном связном тексте. Сам промпт становится демонстрацией. Мы называем это «антискриптовостью»: модель имитирует манеру исходного текста, но может использовать более разнообразные слова и обороты, оставаясь в том же стилистическом поле, что и промпт.

Так мы добиваемся разнообразия, сохраняя единую манеру речи. Это часть нашей стратегии: сделать диалог центральной задачей любого агента, не тратя место на явные инструкции, количество которых мы стараемся свести к минимуму.

Если мы всё же приводим явные примеры тона речи, они показывают, «как делать не надо». Например: «No em dashes. Ever. No clichés. No policy dumping. No over-explanation when a single sentence will close the loop». Негативные ограничения одновременно точнее и менее жёстки, чем позитивные пожелания: они прямо называют типичные ошибки, к которым склонна модель.

Форматирование тоже важно: оно задаёт тон ответа. Промпт с множеством маркированных списков, заголовков и инструкций в скобках подталкивает модель к более упорядоченному и сухому ответу. Если ответ должен звучать как разговор, исходный текст не должен напоминать краткое техническое задание.

Регистр важнее характера

Большинство попыток задать тон с помощью промпта сводится к описанию характера. Для этого перечисляют прилагательные, описывающие, как должен звучать агент. Доброжелательно. Профессионально. Дружелюбно, но лаконично. Сами по себе эти характеристики верны, но восприятие речи в разговоре на деле определяет регистр — то, как один и тот же характер проявляется в разных социальных ситуациях.

Промежуточное сообщение во время обработки запроса не должно звучать как окончательный ответ. Ответ, продиктованный защитным ограничением, не должен звучать так же, как непринуждённая беседа. С расстроенным клиентом нельзя общаться с тем же юмором и обаянием, что и с человеком, который просто изучает предложения.

Один промпт, разные регистры, никаких примеров

Схема из четырёх квадрантов с шаблонами ответов на вредоносные данные, запросы не по теме, неоднозначные данные и промпт-инъекции, включая примеры отказа и уточнений.

В этом и состоит различие между голосом бренда и дизайном диалога. Голос бренда обычно описывает характер, а дизайн диалога определяет, как этот характер проявляется при изменении ситуации. Если сделать всё правильно, наша работа перестаёт быть простым написанием текстов для ответов ИИ. Мы проектируем то, как голос ведёт себя на протяжении разговора.

Промптинг с опорой на диалог

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

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

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

В конечном счёте никто не взаимодействует с архитектурой. Люди взаимодействуют посредством разговора.

Разговор и есть продукт.

Авторы

Douglas Smith, Sam Netherwood