Создание модульных чат-ботов на базе ИИ

Возможно ли создать несколько ИИ-чат-ботов с модульной архитектурой, где один главный бот (main_bot) взаимодействует с пользователями, а сам определяет, каких специализированных ботов подключить к диалогу?

Я внимательно изучил всю документацию по ИИ-плагинам, но пока не уверен, как это реализовать.

Спасибо за такой мощный и настраиваемый инструмент.

Я считаю, что это технически возможно с помощью нашего скриптинга инструментов сейчас. Я ошибаюсь, @sam?

Если у нас есть 3 специализированных бота, каждый со своими документами, изолированы ли их эмбеддинги? Или, по вашему мнению, мне нужно что-то особенное сделать с эмбеддингами/документами, чтобы гарантировать их легкую изоляцию?

Документы, загруженные в Persona, изолированы только для этой Persona.

Можете ли вы привести более конкретный пример?

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

В медицинской литературе по вакцинации содержится огромное количество информации о рисках и преимуществах. Если одна персона (например, VaccineBot) будет знать всё это, это потребует загрузки сотен документов и создаст высокий риск путаницы. Я экспериментировал с таким подходом, но ответы получались не очень хорошими.

Вместо этого я подумал, что мы могли бы создать специализированные персоны:

  • DTaP-Bot
  • HepB-Bot
  • MMR-Bot
  • Rotavirus-Bot
  • Polio-Bot
  • и так далее

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

Например, существуют комбинированные вакцины (6 вакцин в одном уколе), и если родитель задаст вопрос о них, потребуется подключить несколько ботов. Или же при обсуждении визита в 2 месяца, когда младенцу могут ввести до 8 вакцин одновременно, VaccineBot должен будет включить все эти специализированные боты и каким-то образом получить от каждого краткое резюме о их назначении, особенностях, а также о типичных реакциях и т. д.

Эта область становится очень сложной очень быстро:

DTaP = 3 вакцины, 1 укол, не могут быть разделены
HepB = 1 вакцина, 1 укол
MMR = 3 вакцины, 1 укол, не могут быть разделены

Педиатры часто используют комбинированные вакцины, такие как Vaxelis, представляющая собой 6-в-1: DTaP + HepB + Polio + Hib

Визит в 2 месяца может включать Vaxelis + PCV + Rotavirus

Если пользователь задаст вопрос о предстоящем визите в 2 месяца, координирующий бот (VaccineBot) должен будет работать с 6 различными персонами (ботами) или хотя бы вовлечь их в разговор.

Всё ли это имеет смысл?

Я продолжу экспериментировать и сообщу об результатах.

Пожалуйста, создайте аналогичный запрос для VaccineBot: проанализируйте заданный вам вопрос и вызовите наиболее подходящего пользователя на основе следующих тем, используя этот формат: @username

@DTaP-Bot: Охватывает три вакцины, вводимые одной инъекцией, неразделимые.

@HepB-Bot: Касается одной вакцины, вводимой одной инъекцией.

@MMR-Bot: Включает три вакцины, вводимые одной инъекцией, неразделимые.

@Rotavirus-Bot: …

@Polio-Bot: …

Убедитесь, что настройки создаваемых вами ботов включают опцию «другие могут упоминать», чтобы после ответа первого бота к ответу можно было добавить соответствующего бота, предоставив исчерпывающий ответ на запрос.

Я предоставил пример запроса; вы можете обратиться за помощью к ChatGPT, чтобы создать более отточенный и адаптированный запрос, который полностью соответствует вашим предпочтениям.

Хм… Думаю, сегодня мы сможем решить эту задачу с помощью пользовательского инструмента!

  1. Загрузите все документы в пользовательский инструмент.
  2. Передайте инструменту параметры «semantic_query» и «vaccine_name» (enum).
  3. Затем в пользовательском JS выполните поиск по загруженному «vaccine_name» и внедрите этот конкретный фрагмент в контекст.

Это гарантирует, что вы получите контекст только для конкретного подмножества.

Спасибо @kuaza и @sam за отличные рекомендации по тому, как подойти к этому вопросу. Я скоро отчитаюсь.

–Chris

@sam — подход с инструментом сработал великолепно. Спасибо ещё раз.

–Крис

Я был бы рад, если бы вы могли поделиться здесь некоторыми техническими деталями о текущем используемом решении с примерами. Уверен, участники Meta с удовольствием узнают об этом.