Как я заставил ассистента по базе знаний ВСЕГДА присылать релевантные медиа-ссылки — и почему просто перевести промпт с русского недостаточно

Как я заставил ассистента по базе знаний ВСЕГДА присылать релевантные медиа-ссылки — и почему просто перевести промпт с русского недостаточно

Всем привет! :waving_hand:
Хочу поделиться опытом, который, возможно, сэкономит кому-то часы возни.

Я делал ассистента на базе LLM, который должен отвечать на вопросы по продукции компании. База знаний подключена через RAG, в ней текстовая информация + медиа-контент: изображения, видео, таблицы. Всё красиво, всё в markdown. Пользователь спрашивает — бот ищет в базе и формирует ответ.

Казалось бы, задача простая: ищи, показывай, что нашёл, добавляй ссылки на медиа.
Но именно с этим началась настоящая драма.


:anger_symbol: Проблема: Бот упорно игнорировал медиа-ссылки

Пользователь спрашивает:
“Какие есть продукты у компании?”
А бот отвечает:

Компания предлагает следующие инструменты:
- BASIC: базовый инструмент
- PRO1, PRO2: универсальные инструменты
- ADV: для продвинутого пользователя

А ведь в базе знаний по этому запросу лежит таблица с изображением инструментов. Более того — бот даже иногда писал:

“На изображении показано различие инструментов по назначению…”
Но саму ссылку не вставлял!


:magnifying_glass_tilted_left: Что я делал сначала

Я посмотрел, как у меня был написан системный промпт (на русском):

Проанализируй всю доступную тебе информацию и верни ответ, включающий релевантные медиа-ссылки в формате markdown с описанием.

И это работало! На русском языке он честно подбирал ссылки и вставлял их. Вот пример нормального ответа на тот же вопрос:

Компания предлагает несколько типов инструментов:

- BASIC: ...
- PRO: ...
- ADV: ...

📎 [Изображение с таблицей типов инструментов](https://ссылка-на-контент)

:man_shrugging: А потом я перевёл промпт на английский — и всё сломалось

Вот мой перевод:

Analyze all available information and include relevant media links in markdown format with descriptions.

И всё — ссылки исчезли.


:magnifying_glass_tilted_left: Почему модель “не слушается” английский промпт

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

“You must always include relevant media links…”

  1. Тон и жёсткость формулировок. В русском ты говоришь по сути: «Вставляй, иначе получишь по шапке» :sweat_smile:. В английской версии фраза “Add all relevant media links to your response” может быть интерпретирована как дружеский совет, а не железное правило.

  2. Формулировка “relevant” оставляет слишком много свободы. Когда в инструкции написано “include relevant media links”, модель начинает сама оценивать, насколько эти ссылки действительно нужны. А если она решит, что текст и так отвечает на вопрос — ссылки могут просто не появиться.


:wrench: Что я сделал, чтобы это исправить

Заменил мягкие формулировки на директивные, чтобы модель обязалась вставлять ссылки:

You MUST always include all relevant media links in your response.

Это сработало! ИИ наконец начал возвращать ответы со ссылками.

:warning: Вскрывшаяся вторая проблема

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

  1. Пришлось явно прописать:
    You MUST always include all relevant media links in your response, even if the answer seems complete without them.

  2. В цепочке рассуждения (chain-of-thought) добавил явный шаг:
    Check all available knowledge chunks for relevant media links, even if they are not in the same chunk as the main answer.

  3. Добавил еще один «контрольный» выстрел медиапромпт в цепочку рассуждений:
    Scan the retrieved chunks again and extract all media links related to the user's question. Add them to the final answer in markdown format.


:light_bulb: Выводы

  • Просто переводить промпт с русского на английский недостаточно. Даже вредно! Похоже у русского языка директивность выше по умолчанию. В английском надо прямо говорить, что модель обязана что-то делать.
  • Слово “relevant” может сыграть злую шутку — модель может сама решать, «релевантно или нет». Лучше писать:
    “Include all media links related to the topic, even if the answer seems complete without them.”
  • Если используете RAG — убедитесь, что промпт анализирует все чанки, не только первый. Ведь, ссылки могут быть где угодно.
  • Markdown-ссылки с описанием (пример: [описание](url)) работают отлично, если по описанию определяется, что в них внутри.

Потратил на всё это немало времени, но теперь мой ассистент:

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

Надеюсь, кому-то это сэкономит пару часов экспериментов.

Удачи с вашими LLM! :rocket: