Начало работы с бессерверным чатом ИИ с помощью RAG с помощью LangChain.js
Создание приложений ИИ может быть сложным. Благодаря LangChain.js, Функции Azure и бессерверным технологиям можно упростить этот процесс. Эти средства управляют инфраструктурой и масштабируются автоматически, позволяя сосредоточиться на функциональных возможностях чат-бота. Чат-бот использует корпоративные документы для создания ответов ИИ.
Код содержит примеры данных для вымышленной компании. Клиенты могут задавать вопросы о продуктах компании. Эти данные содержат документы по условиям обслуживания компании, политике конфиденциальности и руководству по поддержке.
Снимок экрана: приложение чата в браузере с несколькими предложениями для ввода чата и текстового поля чата для ввода вопроса.
Примечание.
В этой статье используется один или несколько шаблонов приложений ИИ в качестве основы для примеров и рекомендаций в этой статье. Шаблоны приложений ИИ предоставляют вам хорошо поддерживаемые и простые в развертывании эталонные реализации, которые помогают обеспечить высококачественную отправную точку для приложений ИИ.
Обзор архитектуры
Приложение чата
Пользователь взаимодействует с приложением:
- Интерфейс чата в клиентском веб-приложении для беседы.
- Клиентское веб-приложение отправляет запрос пользователя в БЕССерверный API через HTTP-вызовы.
- Бессерверный API создает цепочку для координации взаимодействия между ИИ Azure и поиском ИИ Azure для создания ответа.
- Извлечение PDF-документа с помощью Azure Blob Storage.
- Затем созданный ответ отправляется в веб-приложение и отображается пользователю.
Простая архитектура приложения чата показана на следующей схеме:
Схема, показывающая архитектуру от клиента к внутреннему приложению.
LangChain.js упрощает сложность между службами
Поток API полезен, чтобы понять, как LangChain.js помогает в данной ситуации путём абстрагирования взаимодействий. Конечная точка API без сервера:
- Получает вопрос от пользователя.
- Создает клиентские объекты:
- Azure OpenAI для внедрения и чата
- Поиск Векторного хранилища векторов в Azure AI
- Создает цепочку документов с моделью LLM, сообщением чата (запросами системы и пользователя) и источником документа.
- Создает цепочку извлечения из цепочки документов и хранилища векторов.
- Потоковая передача ответов из цепочки извлечения.
Работа разработчика заключается в правильной настройке служб зависимостей, таких как Azure OpenAI и Поиск ИИ Azure, и правильно создавать цепочки. Базовая логика цепочки знает, как устранить запрос. Это позволяет создавать цепочки из множества различных служб и конфигураций до тех пор, пока они работают с требованиями LangChain.js.
Где находится Azure в этой архитектуре?
Это приложение выполняется из нескольких компонентов:
Веб-приложение, созданное с помощью одного веб-компонента чата, созданного с помощью Lit и размещенного на Статические веб-приложения Azure. Код находится в папке
packages/webapp
.Бессерверный API, созданный с помощью Функции Azure и использования LangChain.js для приема документов и создания ответов на запросы чата пользователя. Код находится в папке
packages/webapp
.Служба Azure OpenAI для создания внедрения и создания ответа.
База данных для хранения текста, извлеченного из документов и векторов, созданных LangChain.js, с помощью поиска ИИ Azure.
Хранилище файлов для хранения исходных документов с помощью Хранилище BLOB-объектов Azure.
Необходимые компоненты
Среда контейнера разработки доступна со всеми зависимостями, необходимыми для выполнения этой статьи. Контейнер разработки можно запустить в GitHub Codespaces (в браузере) или локально с помощью Visual Studio Code.
Чтобы использовать эту статью, вам потребуются следующие предварительные требования:
- подписка Azure — создайте бесплатную учетную запись.
- Разрешения учетной записи Azure. Учетная запись Azure должна иметь разрешения Microsoft.Authorization/roleAssignments/write, такие как администратор доступа пользователей или владелец.
- Учетная запись GitHub.
Открытие среды разработки
Используйте следующие инструкции для развертывания предварительно настроенной среды разработки, содержащей все необходимые зависимости для выполнения этой статьи.
GitHub Codespaces запускает контейнер разработки, управляемый GitHub, с Помощью Visual Studio Code для Интернета в качестве пользовательского интерфейса. Для наиболее простой среды разработки используйте GitHub Codespaces, чтобы у вас были правильные средства разработчика и зависимости, предварительно установленные для выполнения этой статьи.
Внимание
Все учетные записи GitHub могут использовать пространства Кода до 60 часов бесплатно каждый месяц с 2 основными экземплярами. Дополнительные сведения см. в GitHub Codespaces ежемесячно включаемых в хранилище и основные часы.
Откройте в Codespace.
Дождитесь запуска пространства кода. Этот процесс запуска может занять несколько минут.
В терминале в нижней части экрана войдите в Azure с помощью Интерфейса командной строки разработчика Azure.
azd auth login
Завершите процесс проверки подлинности.
Остальные задачи в этой статье выполняются в контексте этого контейнера разработки.
Развертывание и запуск
Пример репозитория содержит все файлы кода и конфигурации, необходимые для развертывания бессерверного приложения чата в Azure. Ниже приведены инструкции по развертыванию примера в Azure.
Развертывание приложения чата в Azure
Внимание
Ресурсы Azure, созданные в этом разделе, несут немедленные затраты, в первую очередь из ресурса поиска ИИ Azure. Эти ресурсы могут начислять затраты, даже если вы прерываете команду до его полного выполнения.
Подготовьте ресурсы Azure и разверните исходный код с помощью следующей команды Командной строки разработчика Azure:
azd up
Ответьте на запросы, используя следующую таблицу:
Prompt Ответ Имя среды Сохраните его коротким и строчным регистром. Добавьте имя или псевдоним. Например, john-chat
. Он используется в качестве части имени группы ресурсов.Отток подписок Выберите подписку для создания ресурсов. Расположение (для размещения) Выберите расположение рядом с вами из списка. Расположение модели OpenAI Выберите расположение рядом с вами из списка. Если то же расположение доступно в качестве первого расположения, выберите это. Дождитесь развертывания приложения. Для завершения развертывания может потребоваться 5–10 минут.
После успешного развертывания приложения в терминале отображаются два URL-адреса.
Выберите этот URL-адрес, чтобы
Deploying service webapp
открыть приложение чата в браузере.
Использование приложения чата для получения ответов из PDF-файлов
Приложение чата предварительно загружено с информацией о аренде из каталога PDF-файлов. Вы можете использовать приложение чата, чтобы задать вопросы о процессе аренды. В следующих шагах описан процесс использования приложения чата.
В браузере выберите или введите политику возврата.
Выберите следующий вопрос.
Снимок экрана: рекомендуемый запрос и ответ в приложении чата.
В ответе выберите ссылку, чтобы просмотреть документ, используемый для создания ответа. Это обеспечивает доставку документа из служба хранилища Azure клиенту. Когда вы закончите работу с новой вкладкой браузера, закройте его, чтобы вернуться к бессерверному приложению чата.
Очистка ресурсов
Очистка ресурсов Azure
Ресурсы Azure, созданные в этой статье, выставляются в подписку Azure. Если вы не ожидаете, что эти ресурсы потребуются в будущем, удалите их, чтобы избежать дополнительных расходов.
Удалите ресурсы Azure и удалите исходный код с помощью следующей команды Azure Developer CLI:
azd down --purge
Очистка GitHub Codespaces
Удаление среды GitHub Codespaces гарантирует, что вы можете максимально увеличить объем бесплатных прав на базовые часы, которые вы получаете для вашей учетной записи.
Внимание
Дополнительные сведения о правах учетной записи GitHub см . в GitHub Codespaces ежемесячно включено в хранилище и основные часы.
Войдите на панель мониторинга GitHub Codespaces (https://github.com/codespaces).
Найдите текущие запущенные пространства Codespaces, полученные из
Azure-Samples/serverless-chat-langchainjs
репозитория GitHub.Снимок экрана: все запущенные пространства Codespace, включая их состояние и шаблоны.
Откройте контекстное меню для
...
пространства кода и нажмите кнопку "Удалить".
Получить помощь
Этот пример репозитория предлагает сведения об устранении неполадок.
Если проблема не устранена, зайдите в журнал проблемы репозитория.