@dialogai/dialog-class
v1.11.16
Published
Отвечает за реализацию диалогового формата общения с пользователем.
Downloads
1,677
Readme
Класс Dialog
Отвечает за реализацию диалогового формата общения с пользователем.
Особенность решения состоит в применении паттерна проектирования "Наблюдатель" (Observer). За диалогом наблюдают один или более "наблюдателей", и в зависимости от развития диалога дают LLM дополнительные инструкции либо выполняют другие действия. Например, при реализации иерархического мультиагентного решения используется "супервайзер", который также размещает своего наблюдателя, который, в свою очередь, может вообще прервать текущий диалог и переключиться на другие задачи.
Подключение
const {Dialog} = require("@dialogai/dialog-class");
Настройка
Пример настройки диалога для получения информации о профессиональном опыте и интересах пользователя:
const {
DefineSkillEmphasisObserver, // Дает дополнительные инструкции как расставить акценты в диалоге
DiscussProfessionalIntentObserver, // Проверяет, хочет ли пользователь продолжать диалог на профессиональную тему
IsDialogFinishedObserver, // Проверяет, что диалог завершен
ProfessionalSkillObserver, // Собирает и фиксирует все данные о профессиональном опыте пользователя
SpeakIntentObserver, // Проверяет, готов ли пользователь общаться
TooManyQuestionsObserver // Проверяет, не задает ли LLM более одного вопроса в ответе
} = require("@dialogai/dialog-observers");
/**
* @param supervisor {DialogSupervisor}
* @returns {Dialog}
*/
function buildDialog(supervisor) {
let dialog = new Dialog({
dialog_code: 'GUPD',
start_system_msg: `
Ты должен узнать об интересах и опыте работы пользователя. Начни диалог первым. Задавай вопросы поэтапно,
не более одного за один раз.
Сначала познакомься, пойми, ты общаешься с мужчиной или женщиной (но не спрашивай напрямую,
просто определи это из ответов).
Общайся нейтрально, без особого восторга.
Давай оценки ответам не слишком часто, только если это уместно.
Нужно помочь ему рассказать о его интересах, которые есть сегодня, и которые были в прошлом.
Не углубляйся только в одну тему, постарайся переходить к следующей.
Избегай длинных рассуждений. Говорить должен пользователь, а не ты.
`,
tool_name: 'discuss_skills_experience_and_hobbies',
tool_description: `Используется когда нужно узнать опыт работы и интересы пользователя
(по запросу пользователя или если это требуется в ходе диалога).`
});
if (supervisor) {
dialog
.reg_observer(supervisor.getObserver())
.set_session_id(supervisor.thread_id)
.get_tool_for(supervisor);
}
dialog
.reg_observer(new IsDialogFinishedObserver())
.reg_observer(new SpeakIntentObserver())
.reg_observer(new TooManyQuestionsObserver())
.reg_observer(new DefineSkillEmphasisObserver())
.reg_observer(new ProfessionalSkillObserver())
.reg_observer(new DiscussProfessionalIntentObserver());
// С помощью данного поля акцентируются дополнительные стартовые инструкции
dialog.additional_starting_instructions.push(Dialog.get_instruction("Узнай имя и возраст пользователя."));
console.log('DIALOG :: ', dialog.toString());
return dialog;
}