Начало работы с чатом с помощью собственного примера данных для Java

В этой статье показано, как развернуть и запустить пример приложение "Чат с вашими данными для Java". В этом примере реализовано приложение чата с помощью Java, моделей Azure OpenAI в Microsoft Foundry и дополненной генерации на основе поиска (RAG) в Поиск с использованием ИИ Azure для получения ответов о льготах сотрудников в вымышленной компании. Приложение заполнено PDF-файлами, включая руководство сотрудника, документ о преимуществах и список ролей и ожиданий компании.

В этой статье вы выполните следующие задачи:

  • Разверните чатовое приложение в Azure.
  • Получите ответы о преимуществах сотрудников.
  • Измените параметры, чтобы изменить поведение ответов.

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

Эта статья является частью коллекции статей, в которые показано, как создать приложение чата с помощью моделей Azure OpenAI в Microsoft Foundry и поиске ИИ Azure. Другие статьи в коллекции включают:

  • .NET
  • JavaScript
  • Python

Примечание.

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

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

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

Схема, показывающая архитектуру от клиента к серверному приложению.Схема, показывающая архитектуру от клиента к серверному приложению.

Ключевые компоненты архитектуры:

  • Веб-приложение, в котором размещен интерактивный интерфейс чата.
  • Ресурс Поиск с использованием ИИ Azure, который получает ответы из собственных данных.
  • Служба Azure OpenAI, предоставляющий:
    • Ключевые слова для улучшения поиска по собственным данным.
    • Ответы из модели OpenAI.
    • Внедрение из модели ada.

Себестоимость

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

Чтобы выполнить этот пример, вам, возможно, придётся понести небольшие расходы на использование таких служб, как Azure OpenAI, Azure AI Search и службы хранения. После завершения оценки или развертывания приложения удалите все подготовленные ресурсы, чтобы избежать текущих расходов.

Дополнительные сведения о затратах можно найти в примере из репозитория.

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

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

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

  • Пространства кода (рекомендуется)
  • Visual Studio Code

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

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

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

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

Внимание

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

  1. Щелкните правой кнопкой мыши следующую кнопку и выберите "Открыть ссылку" в новом окне , чтобы вы могли одновременно использовать среду разработки и документацию.

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

  2. В разделе "Создание пространства кода" просмотрите параметры конфигурации пространства кода и выберите "Создать пространство кода".

    Screenshot of the confirmation screen before creating a new codespace.Снимок экрана подтверждающего экрана перед созданием нового кодового пространства.

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

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

    azd auth login --use-device-code
    
  5. Скопируйте код из терминала и вставьте его в браузер. Следуйте инструкциям для проверки подлинности с помощью учетной записи Azure.

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

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

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

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

Внимание

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

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

    azd up
    
  2. Если вам будет предложено ввести имя среды, сохраните его в коротком и нижнем регистре, например, myenv. Имя среды используется как часть имени группы ресурсов.

  3. При появлении запроса выберите подписку, в которой будут созданы ресурсы.

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

  5. Если появится запрос на расположение для модели OpenAI, выберите расположение, которое находится рядом с вами. Если то же расположение доступно в качестве первого расположения, выберите это расположение.

  6. Дождитесь развертывания приложения, которое может занять 5–10 минут.

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

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

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

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

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

  1. В браузере выберите или введите Что входит в план Northwind Health Plus, который не входит в стандартный план? в текстовом поле чата.

    Screenshot of chat app's first answer.Снимок экрана: первый ответ приложения чата.

  2. В ответе выберите один из ссылок.

    Screenshot of chat app's first answer with its citation highlighted in a red box.Скриншот с первым ответом приложения чата, где ссылка выделена красной рамкой.

  3. На правой панели используйте вкладки, чтобы понять, как был создан ответ.

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

Использование параметров приложения чата для изменения поведения ответов

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

Screenshot of chat developer settings.Снимок экрана параметров разработчика чата.

Настройка Описание
Переопределение шаблона запроса Запрос, используемый для создания ответа.
Получение этого большого количества результатов поиска Количество результатов поиска, используемых для создания ответа. Эти источники отображаются в вкладках "Ход размышления" и "Содержимое поддержки" цитаты.
Исключить категорию Категория документов, исключенных из результатов поиска.
Использование семантического ранжировщика для извлечения Функция поиска ИИ Azure , использующая машинное обучение для повышения релевантности результатов поиска.
Использование сводок в контекстном запросе вместо целых документов Когда оба параметра Use semantic ranker и Use query-contextual summaries выбраны, LLM использует заголовки, извлеченные из ключевых отрывков, а не из всех отрывков, в наиболее высоко ранжированных документах.
Предложите последующие вопросы Предложите в приложении чата дальнейшие вопросы на основе ответа.
Режим извлечения Vectors + Text означает, что результаты поиска основаны на тексте документов и эмбеддингах документов. Векторы подразумевают, что результаты поиска основаны на векторных представлениях документов. Текст означает, что результаты поиска основаны на тексте документов.
Ответы на завершение чата потоковой передачи Передавайте ответ по частям вместо ожидания, пока полный ответ не станет доступным.

Ниже описан процесс изменения параметров.

  1. В браузере перейдите на вкладку "Параметры разработчика ".

  2. Установите флажок Предложить дальнейшие вопросы и задайте один и тот же вопрос еще раз.

    What is my deductible?
    

    Чат возвращает предлагаемые дополнительные вопросы, такие как эти:

    1. What is the cost sharing for out-of-network services?
    2. Are preventive care services subject to the deductible?
    3. How does the prescription drug deductible work?
    
  3. На вкладке "Настройки" снимите флажок "Использовать семантический ранжировщик для извлечения".

  4. Задайте тот же вопрос снова?

    What is my deductible?
    
  5. Что такое разница в ответах?

    Например, ответ, который использовал семантический рангер, предоставил один ответ: The deductible for the Northwind Health Plus plan is $2,000 per year

    Ответ без семантического ранжирования вернул результат, который потребовал больше усилий для получения ответа: Based on the information provided, it is unclear what your specific deductible is. The Northwind Health Plus plan has different deductible amounts for in-network and out-of-network services, and there is also a separate prescription drug deductible. I would recommend checking with your provider or referring to the specific benefits details for your plan to determine your deductible amount На основании предоставленной информации, неясно, какова ваша конкретная франшиза. План Northwind Health Plus предусматривает разные суммы франшизы для услуг внутри сети и вне сети, а также имеется отдельная франшиза на рецептурные лекарства. Я бы рекомендовал обратиться к вашему поставщику или ознакомиться с конкретными деталями выгод вашего плана, чтобы определить сумму вашей франшизы.

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

После завершения упражнения удалите все ресурсы, которые больше не нужны.

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

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

azd down --purge

Очистите GitHub Codespaces

  • GitHub Кодспейсы
  • Visual Studio Code

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

Внимание

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

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

  2. Найдите запущенные в настоящий момент Codespaces из репозитория GitHub Azure-Samples/azure-search-openai-demo-java.

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

  3. Откройте контекстное меню для пространства кода и нажмите кнопку "Удалить".

    Снимок экрана контекстного меню для одной инстанции Codespace с выделенной опцией удаления.

Как ответить на вопрос?

Приложение разделено на два приложения:

  • Интерфейсное приложение JavaScript, использующее платформу React с инструментом сборки Vite.
  • Серверное приложение Java, которое отвечает на этот вопрос.

API /chat пошагово выполняет процесс получения ответа:

  • Создание параметров RAG: создание ряда параметров, используемых для формирования ответа.
  • Создание подхода с использованием моделей RAG: применяйте сочетание моделей, основанных на извлечении информации, и генеративных моделей для разработки подхода, обеспечивающего точный и естественный отклик.
  • Запустите подход с параметрами RAG и предыдущей беседой: используйте подход и параметры RAG для создания ответа на основе предыдущей беседы. Ответ содержит сведения о том, какие документы использовались для создания ответа.

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

Этот пример репозитория предлагает сведения об устранении неполадок. Если ваша проблема не устранена, зарегистрируйте её в разделе Проблемырепозитория.

Следующие шаги