DEV Community на русском
Подписаться
Создание основы, на которой работает Claudius
В этой статье подробно описывается серверная настройка чат-бота на базе Claude под названием Claudius, уделяя особое внимание системе идентификации, подключению к сервисам и реалиям развертывания. Система идентификации гарантирует, что роли пользователей, такие как администратор, участник или гость, определяются исключительно на сервере и не могут быть изменены клиентом. Это достигается с помощью Auth.js с провайдером Google и адаптером MongoDB, где роли определяются на основе электронной почты администратора, списка разрешенных адресов или по умолчанию устанавливаются как гость. Определенная роль затем встраивается в JWT для эффективного доступа в приложении. Процесс предоставления также устанавливает значения по умолчанию для полей, специфичных для пользователя, и гарантирует, что роль пересчитывается при каждом входе в систему.Подключение проверяется с помощью маршрута проверки работоспособности, который отправляет запрос к MongoDB Atlas и, при необходимости, выполняет небольшой вызов модели Claude Haiku Bedrock. Этот зонд проверяет, может ли приложение успешно взаимодействовать со своим ИИ-бэкендом, и возвращает метаданные использования токенов. Приложение также определяет каталог ИИ-моделей с соответствующими идентификаторами профилей вывода и информацией о ценах. Переменные среды проверяются итеративно по мере необходимости для каждого этапа разработки, причем текущий набор включает учетные данные для аутентификации, базы данных и Bedrock.В ходе этого этапа настройки были обнаружены и устранены несколько критических проблем, или "подводных камней". Серьезная проблема заключалась в обеспечении того, чтобы правильная база данных была выбрана как адаптером Auth.js, так и вспомогательным модулем базы данных приложения, поскольку отсутствующий путь к базе данных в строке подключения по умолчанию приводил к недоступной базе данных "test". Пул соединений был оптимизирован путем глобального кэширования клиента MongoDB. Управление зависимостями в монорепозитории требовало тщательного внимания к зависимостям времени выполнения и включения специфичных для платформы бинарных файлов в необязательные зависимости для развертывания. Основа для идентификации пользователей и взаимодействия с сервисами теперь заложена, хотя основная функция чата еще не реализована.