Добавить {username} в качестве параметра шаблона в системные промпты ИИ-персон

Это мой первый вклад в проект. Приношу извинения, если что-то сделал не так, и глубоко благодарен за терпение и любые советы, если есть лучший способ сделать это.

На сколько это имеет значение, я являюсь клиентом Pro.

Мне нужен был надёжный способ определить, какой пользователь взаимодействует с ИИ-агентом. Вот что я придумал. Большое спасибо за уделённое время и любые советы.

Добавить {username} как шаблонный параметр в системные промпты ИИ-персоны

Я отправил PR #41446 ( FEATURE: Add {username} template param to BotContext - Pull Request #41446 - discourse/discourse - GitHub ), добавляющий {username} в BotContext::TEMPLATE_PARAMS.

Сценарий использования: персоне, выступающей в роли моста к внешнему сервису, необходимо разрешение идентификатора текущего пользователя на стороне сервера, а не вывод им LLM из текста сообщения. На данный момент нет чистого способа сделать это. {participants} заполняется только для личных сообщений, а просьба к LLM распознать имя пользователя из метаданных темы ненадёжна и создаёт поверхность для инъекций.

Изменение небольшое (один новый метод, одна строка добавлена в белый список) и аддитивное. Существующие промпты не затронуты, если только они не содержали буквальный {username}.

Ещё раз спасибо!

6 лайков

О, я также заполнил CLA. Думаю, я учёл все нюансы. Ещё раз спасибо.

2 лайка

Просто на связи. Если я могу чем-то помочь, пожалуйста, дайте мне знать. Спасибо :purple_heart:

1 лайк

Спасибо за PR!

Только что объединил.

6 лайков

Потрясающе! Большое спасибо :purple_heart:

3 лайка

Я также обсудил это с @falco, но хочу предупредить, что это очень тонкий инструмент.

В частности, мы уже включаем имя пользователя в сообщение «User»:

Это видно в логах AI API.

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

Теперь… одно наблюдение, которое я сделал в наших шаблонах vllm: мы отбрасываем имя, что объясняет, почему хостинговые модели CDCK не имеют этой функции. Я сейчас работаю над патчем, чтобы исправить это.

3 лайка