Создание простого агента Введение После того как основная мультиагентная система запущена и работает, добавление новых агентов становится простой задачей. Мы создаем специализированных помощников, каждый из которых решает определенный круг задач. В этом разделе мы создадим агента CompanyInfo, который будет отвечать исключительно на вопросы о компании - контакты, адреса офисов, время работы. Особенность этого агента в том, что он не обращается к RAG базе знаний, а хранит всю информацию прямо в промпте. Это упрощает работу модели и ускоряет получение ответов. Этап 1: Подготовка информации о компании Создание промпта с данными компании Первым делом подготовим базовый промпт с информацией о компании. Назовем его about_prompt: _**ЦЕНТРАЛЬНЫЙ ОФИС**_ **Контакты** Адрес: 123456, г. Примерск, ул. Центральная, дом 10А Горячая линия: 8 800 000 00 00 (бесплатно по России) Часы работы: пн-вс с 9:00 до 21:00 **Отдел качества:** +7 (900) 123-45-67 Часы работы: пн-вс с 9:00 до 21:00 **Интернет-банк:** 8 804 000 11 11 **Главный офис обслуживания, пос. Банковский** Адрес: 140000, Примерская область, г. Финансск, д. Кредитное, ул. Сберегательная, д.1, стр. 1 Телефон: +7 (900) 765-43-21 Часы работы: пн-пт c 9:00 до 18:00 **Склад документов «ПримерБанк»** Адрес: Россия, 140001, Примерская область, рп. Храновск, ул. Архивная, д. 5 Телефон: +7 (900) 111-22-33 Часы работы: пн-чт 9.00-18.00, пт 9.00-16.30 Подробнее: https://primerbank.ru/contacts --- _**ОФИСЫ В РЕГИОНАХ**_ **Воронеж** 394000, г. Примероград, ул. Финансовая, 8, оф. 101 Тел.: +7 (902) 234-56-78 **Екатеринбург** 620000, г. Примерск-Урал, ул. Сибирская, 22, оф. 5 Тел.: +7 (903) 345-67-89 **Краснодар** 350000, г. Примеродар, ул. Южная, 50 Тел.: +7 (904) 456-78-90 Добавление промпта в систему Откройте таблицу gpt_prompts и создайте новую запись: agent_name: CompanyInfo name: about_prompt prompt: вставьте текст выше Этап 2: Интеграция агента в систему Для подключения нового агента нужно выполнить три шага в строгом порядке: Конфигурация - описать параметры агента Скрипт - создать логику обработки Маршрутизация - добавить в систему выбора агентов Шаг 1: Обновление конфигурации Откройте плагин AgentsParams и найдите секцию с основным агентом. Нам нужно: А) Добавить новый инструмент в маршрутизатор В секции detectRoute найдите routerTools и дополните массив: detectRoute: { // ... остальные параметры остаются без изменений routerTools: [{ tools: "RAG_Tools", // Существующий инструмент route: "RAG:DetectIntent_and_FindChunks" }, { tools: "INFO_Tools", // Новый инструмент для информации о компании route: "CompanyInfo" // Имя скрипта, который создадим далее }], // ... остальные параметры остаются без изменений } Б) Создать конфигурацию для нового агента Добавьте новое условие после основного блока MainFlow: else if (activeAgent === "CompanyInfo") { // Агент для работы с информацией о компании agentCFG = { common: { title: "About Agent", // Понятное имя агента agentName: "CompanyInfo", // Техническое имя promptTable: "gpt_prompts", // Таблица с промптами userQueryAttibName: "user_query", // Атрибут с вопросом пользователя historyMaxLength: 4, // Длина истории диалога exitScript: "MainFlow:FollowUp" // Скрипт завершения }, userReply: { // Настройки генерации ответов provider: "OpenAI", model: "gpt-4o", modelParams: { "temperature": 1 }, errorScript: "RAG:ErrorFallback", // Обработка ошибок useHistory: 1, // Использовать историю диалога addUserQuery: 1, // Добавлять вопрос пользователя sendBotAnwser: 1, // Отправлять ответ пользователю systemPrompts: { start: ["$about_prompt"], // Промпт с информацией о компании final: [] // Финальные промпты (пустой массив) // Структура: about_prompt + история диалога }, } } } Шаг 2: Создание скрипта агента Создайте новый скрипт с именем CompanyInfo (как указано в конфигурации выше): // Устанавливаем активного агента lead.setAttr('activeAgent', 'CompanyInfo') // Загружаем конфигурацию агента snippet("Business.AgentsParams.MainConfig") // Подключаем библиотеку для работы с ИИ const LLMClient = require("Common.MetabotAI.LLMClient") // Создаем сессию для генерации ответа const llm = new LLMClient("UserReply", agentCFG.common.agentName) // Передаем вопрос пользователя в обработку llm.addUserQuery(lead.getAttr(agentCFG.common.userQueryAttibName)) // Запускаем генерацию и отправку ответа пользователю llm.nextFlow("RAG:UserReply") Как работает этот скрипт: Устанавливает режим работы с агентом CompanyInfo Загружает его настройки из конфигурации Берет вопрос пользователя и передает в ИИ Генерирует ответ на основе промпта с информацией о компании Запускает скрипт UserReply для отправки ответа пользователю Шаг 3: Обновление системы маршрутизации Откройте таблицу gpt_prompts, найдите промпт route_prompt для агента MainFlow и обновите секцию с инструментами: **RAG_Tools** - Используется, когда нужно ответить на вопросы об услугах и продукции компании, об условиях эксплуатации продукции, об используемых инструментах для монтажа продукции и т.д. **INFO_Tools** - Используется когда пользователь хочет узнать о филиалах компании, контактных данных или времени их работы Этап 3: Тестирование и результат Запуск системы После внесения всех изменений запустите бота так же, как в основном примере. Система теперь автоматически: Анализирует вопрос пользователя Определяет подходящий инструмент (RAG_Tools или INFO_Tools) Направляет запрос соответствующему агенту Получает точный ответ из подготовленной информации Примеры работы Вопросы для CompanyInfo агента: "Где находится ваш филиал в Екатеринбурге?" "Время работы горячей линии?" "Телефон кредитного отдела?" "Часы работы московского филиала?" Вопросы для RAG агента: "Какие у вас условия по ипотеке?" "Как оформить депозит?" "Тарифы на обслуживание карт" Преимущества такого подхода Скорость ответа - информация о компании доступна мгновенно Точность - данные всегда актуальные и не зависят от поиска в базе знаний Простота поддержки - легко обновить информацию в одном промпте Масштабируемость - можно добавить любое количество таких агентов Ваша мультиагентная система теперь умеет не только искать информацию в документах, но и давать быстрые ответы по заранее подготовленным данным.