Поделиться через


Начало работы с бессерверным чатом ИИ с помощью RAG с помощью LangChain.js

Создание приложений ИИ может быть сложным. Благодаря LangChain.js, Функции Azure и бессерверным технологиям можно упростить этот процесс. Эти средства управляют инфраструктурой и масштабируются автоматически, позволяя сосредоточиться на функциональных возможностях чат-бота. Чат-бот использует корпоративные документы для создания ответов ИИ.

Код содержит примеры данных для вымышленной компании. Клиенты могут задавать вопросы о продуктах компании. Эти данные содержат документы по условиям обслуживания компании, политике конфиденциальности и руководству по поддержке.

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

Примечание.

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

Обзор архитектуры

Приложение чата

Пользователь взаимодействует с приложением:

  • Интерфейс чата в клиентском веб-приложении для беседы.
  • Клиентское веб-приложение отправляет запрос пользователя в бессерверный API, используя HTTP-вызовы.
  • Бессерверный API создает цепь для координации взаимодействия между Azure AI и Azure AI Search для генерации ответа.
  • Извлечение PDF-документа с помощью Azure Blob Storage.
  • Затем созданный ответ отправляется в веб-приложение и отображается пользователю.

Простая архитектура приложения чата показана на следующей схеме:

Diagram showing architecture from client to backend app.Схема, показывающая архитектуру от клиента к серверному приложению.

LangChain.js упрощает сложность между службами

Поток API полезен, чтобы понять, как LangChain.js помогает в данной ситуации путём абстрагирования взаимодействий. Конечная безсерверная API-точка:

  • Получает вопрос от пользователя.
  • Создает клиентские объекты:
    • Azure OpenAI для внедрения и чата
    • Поиск векторов в Azure AI хранилище
  • Создает цепочку документов с моделью LLM, сообщением чата (запросами системы и пользователя) и источником документа.
  • Создает цепочку извлечения из цепочки документов и хранилища векторов.
  • Потоковая трансляция ответов из цепочки извлечения.

Работа разработчика заключается в правильной настройке служб зависимостей, таких как Azure OpenAI и Поиск ИИ Azure, и правильно создавать цепочки. Базовая логика цепочки знает, как устранить запрос. Это позволяет создавать цепочки из множества различных служб и конфигураций до тех пор, пока они работают с требованиями LangChain.js.

Где находится Azure в этой архитектуре?

Это приложение выполняется из нескольких компонентов:

  • Веб-приложение, созданное на основе единственного компонента для чата, разработанного с помощью Lit и размещённого на платформе Azure Static Web Apps. Код находится в папке packages/webapp.

  • Бессерверный API, созданный с помощью Azure Functions и LangChain.js для обработки документов и генерации ответов на запросы пользователя в чате. Код находится в папке packages/api.

  • Служба Azure OpenAI для создания эмбеддингов и генерации ответов.

  • База данных для хранения текста, извлеченного из документов, и векторов, созданных LangChain.js, с использованием Azure AI Search.

  • Хранилище файлов для хранения исходных документов с использованием Azure Blob Storage.

Предварительные условия

Среда контейнера разработки доступна со всеми зависимостями, необходимыми для работы с этой статьей. Контейнер разработки можно запустить в GitHub Codespaces (в браузере) или локально с помощью Visual Studio Code.

Чтобы использовать эту статью, вам потребуются следующие предварительные требования:

  • Пространства кода (рекомендуется)
  • Visual Studio Code
  • подписка Azure — создайте бесплатную учетную запись.
  • Разрешения для учетной записи Azure — ваша учетная запись должна обладать разрешениями Microsoft.Authorization/roleAssignments/write, такими как администратор доступа пользователей или владелец.
  • Учетная запись GitHub.

Открытие среды разработки

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

  • GitHub Codespaces (рекомендуется)
  • Visual Studio Code

GitHub Codespaces запускает контейнер разработки, управляемый GitHub, с Visual Studio Code для Web в качестве пользовательского интерфейса. Для наиболее простой среды разработки используйте GitHub Codespaces, чтобы у вас были правильные средства разработчика и зависимости, предварительно установленные для выполнения этой статьи.

Внимание

Все учетные записи GitHub могут бесплатно использовать Codespaces до 60 часов в месяц с экземплярами, содержащими 2 ядра. Дополнительные сведения см. в GitHub Codespaces о ежемесячно включаемом хранилище и основных часах.

  1. Откройте в Codespace.

    Open in GitHub CodespacesОткрыть в GitHub Codespaces

  2. Дождитесь запуска пространства кода. Этот процесс запуска может занять несколько минут.

  3. В терминале в нижней части экрана войдите в Azure с помощью Интерфейса командной строки разработчика Azure.

    azd auth login
    

    Завершите процесс проверки подлинности.

  4. Остальные задачи в этой статье выполняются в контексте этого контейнера разработки.

Развертывание и запуск

Пример репозитория содержит все файлы кода и конфигурации, необходимые для развертывания бессерверного приложения чата в Azure. Ниже приведены инструкции по развертыванию примера в Azure.

Развертывание приложения чата в Azure

Внимание

Ресурсы Azure, созданные в этом разделе, несут немедленные затраты, в основном из-за ресурса Azure AI Search. Эти ресурсы могут начислять затраты, даже если вы прерываете выполнение команды до её полного завершения.

  1. Подготовьте ресурсы Azure и разверните исходный код с помощью следующей команды Командной строки разработчика Azure:

    azd up
    
  2. Ответьте на запросы, используя следующую таблицу:

    Запрос Ответ
    Имя среды Оставьте коротким и строчным. Добавьте имя или псевдоним. Например, john-chat. Он используется в качестве части имени группы ресурсов.
    Подписка Выберите подписку для создания ресурсов.
    Расположение (для размещения) Выберите место рядом с вами из списка.
    Расположение модели OpenAI Выберите место ближайшее к вам из списка. Если то же расположение доступно в качестве первого расположения, выберите это.
  3. Дождитесь развертывания приложения. Для завершения развертывания может потребоваться 5–10 минут.

  4. После успешного развертывания приложения в терминале отображаются два URL-адреса.

  5. Выберите URL-адрес с меткой Deploying service webapp, чтобы открыть приложение чата в браузере.

Использование приложения чата для получения ответов из PDF-файлов

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

  1. В браузере выберите или введите Какая политика возврата.

    Скриншот первого вопроса и ответа в приложении для чата.Скриншот первого вопроса и ответа в приложении для чата.

  2. Выберите следующий вопрос.

    Снимок экрана предлагаемых последующих действий и ответа в приложении чата.

  3. В ответе выберите ссылку, чтобы просмотреть документ, используемый для создания ответа. Это доставляет документ из хранилища Azure для клиента. Когда вы закончите работу с новой вкладкой браузера, закройте его, чтобы вернуться к бессерверному приложению чата.

    Screenshot of original document containing citation.Скриншот исходного документа, содержащего цитату.

Очистка ресурсов

Очистка ресурсов Azure

Ресурсы Azure, созданные в этой статье, оплачиваются через вашу подписку Azure. Если вы не ожидаете, что эти ресурсы потребуются в будущем, удалите их, чтобы избежать дополнительных расходов.

Удалите ресурсы Azure и удалите исходный код с помощью следующей команды Azure Developer CLI:

azd down --purge

Работы по очистке GitHub Codespaces

Удаление среды GitHub Codespaces гарантирует, что вы можете максимально использовать объем свободного лимита по часам на ядро, которые предоставляются для вашей учетной записи.

Внимание

Дополнительные сведения о правах учетной записи GitHub см. в разделе Ежемесячно включенное хранилище и основные часы в GitHub Codespaces.

  1. Войдите на панель мониторинга GitHub Codespaces.

  2. Найдите ваши текущие запущенные пространства Codespaces из репозитория GitHub Azure-Samples/serverless-chat-langchainjs.

    Screenshot of all the running Codespaces including their status and templates.Снимок экрана: все запущенные пространства Codespace, включая их состояние и шаблоны.

  3. Откройте контекстное меню, ..., для пространства кода и затем выберите «Удалить».

Получить помощь

Данный репозиторий содержит информацию по устранению неполадок.

Если ваша проблема не устранена, добавьте её в раздел Issues на репозитории.

  • Начните с оценки ответов в чат-приложении на JavaScript.
  • Узнайте больше о том, как AZD используется в этом шаблоне:
    • запись блога технологического сообщества
    • видео реактора