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


Начало работы с бессерверным чатом ИИ с помощью 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 часов бесплатно каждый месяц на двухядровых экземплярах. Дополнительные сведения см. в GitHub Codespaces о ежемесячно включаемом хранилище и основных часах.

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

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

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

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

    azd auth login
    

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

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

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

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

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

Внимание

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

  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
  • Visual Studio Code

Удалите среду 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 используется в этом шаблоне:
    • запись блога технологического сообщества
    • видео реактора