Начало работы с чатом с помощью собственного примера данных для Java
Статья
В этой статье показано, как развернуть и запустить чат с примером данных для Java. В этом примере реализовано приложение чата с помощью Java, Azure OpenAI Service и извлечения дополненного поколения (RAG) в службе поиска искусственного интеллекта Azure, чтобы получить ответы о преимуществах сотрудников в вымышленной компании. Приложение заполнено PDF-файлами, включая руководство сотрудника, документ о преимуществах и список ролей и ожиданий компании.
Измените параметры, чтобы изменить поведение ответов.
Завершив эту статью, вы можете начать изменение нового проекта с помощью пользовательского кода.
Эта статья является частью коллекции статей, демонстрирующих создание приложения чата с помощью Службы OpenAI Azure и поиска ИИ Azure. Другие статьи в коллекции включают:
В этой статье используется один или несколько шаблонов приложений ИИ в качестве основы для примеров и рекомендаций в этой статье. Шаблоны приложений ИИ предоставляют вам хорошо поддерживаемые и простые в развертывании эталонные реализации, которые помогают обеспечить высококачественную отправную точку для приложений ИИ.
Обзор архитектуры
Простая архитектура приложения чата показана на следующей схеме:
Схема, показывающая архитектуру от клиента к внутреннему приложению.
Ключевые компоненты архитектуры:
Веб-приложение для размещения интерактивного чата.
Ресурс поиска ИИ Azure для получения ответов из собственных данных.
Служба Azure OpenAI для предоставления:
Ключевые слова для улучшения поиска по собственным данным.
Ответы из модели OpenAI.
Внедрение из модели ada
Себестоимость
Большинство ресурсов в этой архитектуре используют базовую или ценовую категорию потребления. Цены на потребление основаны на использовании, что означает, что вы оплачиваете только то, что вы используете. За завершение этой статьи взимается плата, но она минимальная. Когда вы закончите работу со статьей, вы можете удалить ресурсы для прекращения расходов.
Среда контейнера разработки доступна со всеми зависимостями, необходимыми для выполнения этой статьи. Контейнер разработки можно запустить в GitHub Codespaces (в браузере) или локально с помощью Visual Studio Code.
Чтобы использовать эту статью, вам потребуются следующие предварительные требования:
Разрешения учетной записи Azure — у вашей учетной записи Azure должны быть разрешения Microsoft.Authorization/roleAssignments/write, например, администратора доступа пользователей или владельца.
Разрешения учетной записи Azure. У вашей учетной записи Azure должны быть разрешения Microsoft.Authorization/roleAssignments/write, такие как администратор доступа пользователей или владелец.
GitHub Codespaces запускает контейнер разработки, управляемый GitHub, с Помощью Visual Studio Code для Интернета в качестве пользовательского интерфейса. Для наиболее простой среды разработки используйте GitHub Codespaces, чтобы у вас были правильные средства разработчика и зависимости, предварительно установленные для выполнения этой статьи.
На странице "Создание пространства кода" просмотрите параметры конфигурации пространства кода и выберите "Создать пространство кода".
Снимок экрана подтверждения перед созданием нового пространства кода.
Дождитесь запуска пространства кода. Этот процесс запуска может занять несколько минут.
В терминале в нижней части экрана войдите в Azure с помощью Интерфейса командной строки разработчика Azure.
Bash
azd auth login
Скопируйте код из терминала и вставьте его в браузер. Следуйте инструкциям по проверке подлинности с помощью учетной записи Azure.
Остальные задачи в этой статье выполняются в контексте этого контейнера разработки.
Расширение "Контейнеры разработки" для Visual Studio Code требует установки Docker на локальном компьютере. Расширение размещает контейнер разработки локально с помощью узла Docker с правильными средствами разработчика и предустановленными зависимостями для выполнения этой статьи.
Создайте локальный каталог на компьютере для проекта.
Bash
mkdir my-intelligent-app && cd my-intelligent-app
Откройте Visual Studio Code в этом каталоге:
Bash
code .
Откройте новый терминал в Visual Studio Code.
Выполните следующую команду AZD, чтобы перенести репозиторий GitHub на локальный компьютер.
Bash
azd init -t azure-search-openai-demo-java
Откройте палитру команд, найдите и выберите "Контейнеры разработки": откройте папку в контейнере, чтобы открыть проект в контейнере разработки. Дождитесь, пока контейнер разработки не откроется, прежде чем продолжить.
Войдите в Azure с помощью Интерфейса командной строки разработчика Azure.
Bash
azd auth login
Скопируйте код из терминала и вставьте его в браузер. Следуйте инструкциям по проверке подлинности с помощью учетной записи Azure.
Остальные упражнения в этом проекте происходят в контексте этого контейнера разработки.
Развертывание и запуск
Пример репозитория содержит все файлы кода и конфигурации, необходимые для развертывания приложения чата в Azure. Ниже приведены инструкции по развертыванию примера в Azure.
Развертывание приложения чата в Azure
Внимание
Ресурсы Azure, созданные в этом разделе, несут немедленные затраты, в первую очередь из ресурса поиска ИИ Azure. Эти ресурсы могут привести к расходам, даже если вы прерываете команду до её полного выполнения.
Подготовьте ресурсы Azure и разверните исходный код, выполнив следующую команду:
Bash
azd up
Если вам будет предложено ввести имя среды, сохраните его в коротком и нижнем регистре, например, myenv. Он используется в качестве части имени группы ресурсов.
При появлении запроса выберите подписку, чтобы создать ресурсы.
Когда появится запрос на выбор расположения в первый раз, выберите расположение рядом с вами. Это расположение используется для большинства ресурсов, включая размещение.
Если вам будет предложено указать расположение для модели OpenAI, выберите расположение, которое находится рядом с вами. Если то же расположение доступно в качестве первого расположения, выберите это.
Дождитесь развертывания приложения, которое может занять 5–10 минут.
После успешного развертывания приложения в терминале отображается URL-адрес.
Выберите этот URL-адрес, чтобы Deploying service web открыть приложение чата в браузере.
Использование приложения чата для получения ответов из PDF-файлов
Приложение чата предварительно загружено с информацией о преимуществах сотрудников из PDF-файлов. Вы можете использовать приложение чата, чтобы задать вопросы о преимуществах. В следующих шагах описан процесс использования приложения чата.
В браузере выберите или введите Что входит в план Northwind Health Plus, который не входит в стандартный план? в текстовом поле чата.
На правой панели используйте вкладки, чтобы понять, как был создан ответ.
Вкладка
Описание
Процесс мысли
Скрипт взаимодействия в чате.
Вспомогательное содержимое
Содержит сведения для ответа на ваш вопрос и исходный материал.
Источник
Отображает pdf-страницу, содержащую ссылку.
По завершении выберите выбранную вкладку, чтобы закрыть панель.
Использование параметров приложения чата для изменения поведения ответов
Модель OpenAI и параметры, используемые для взаимодействия с моделью, определяют аналитику приложения чата.
Снимок экрана: параметры разработчика чата.
Параметр
Описание
Переопределение шаблона запроса
Запрос, используемый для создания ответа.
Получение этого большого количества результатов поиска
Количество результатов поиска, используемых для создания ответа. Эти источники отображаются в процессе мысли и вкладках содержимого поддержки ссылки.
Исключить категорию
Категория документов, исключенных из результатов поиска.
Использование семантического ранга для извлечения
Функция поиска ИИ Azure , использующая машинное обучение для повышения релевантности результатов поиска.
Использование сводок в контекстном запросе вместо целых документов
Use semantic rankerUse query-contextual summaries При проверке в LLM используются заголовки, извлеченные из ключевых проходов, а не все проходы, в документах с наивысшим рейтингом.
Советы по дальнейшим вопросам
Предложите в приложении чата дальнейшие вопросы на основе ответа.
Режим извлечения
Vectors + Text означает, что результаты поиска основаны на тексте документов и внедрении документов. Векторы означает, что результаты поиска основаны на внедрениях документов. Текст означает, что результаты поиска основаны на тексте документов.
Ответы на завершение чата потоковой передачи
Поток ответа вместо ожидания, пока полный ответ не будет доступен для ответа.
Ниже описан процесс изменения параметров.
В браузере перейдите на вкладку "Параметры разработчика ".
Установите флажок Предложить дальнейшие вопросы и задайте один и тот же вопрос еще раз.
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?
На вкладке "Параметры" отмените выбор семантического рангера для извлечения.
Задайте тот же вопрос снова?
What is my deductible?
Что такое разница в ответах?
Например, ответ, который использовал семантический рангер, предоставил один ответ: 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
Очистка ресурсов
Очистка ресурсов Azure
Ресурсы Azure, созданные в этой статье, выставляются в подписку Azure. Если вы не ожидаете, что эти ресурсы потребуются в будущем, удалите их, чтобы избежать дополнительных расходов. Используйте следующую команду, чтобы удалить ресурсы Azure и удалить исходный код:
Удаление среды GitHub Codespaces гарантирует, что вы можете максимально увеличить объем бесплатных прав на базовые часы, которые вы получаете для вашей учетной записи.
Снимок экрана: все запущенные пространства Codespace, включая их состояние и шаблоны.
Откройте контекстное меню для пространства кода и нажмите кнопку "Удалить".
Снимок экрана: контекстное меню для одного пространства кода с выделенным параметром удаления.
Для очистки локальной среды не обязательно требуется, но вы можете остановить запущенный контейнер разработки и вернуться к запуску Visual Studio Code в контексте локальной рабочей области.
Откройте палитру команд, найдите команды "Контейнеры разработки", а затем выберите "Контейнеры разработки: открыть папку локально".
Снимок экрана: параметр палитры команд для повторного открытия текущей папки в локальной среде.
Совет
Visual Studio Code останавливает запущенный контейнер разработки, но контейнер по-прежнему существует в Docker в остановленном состоянии. Вы всегда можете удалить экземпляр контейнера, образ контейнера и тома из Docker, чтобы освободить больше места на локальном компьютере.
Как ответить на вопрос?
Приложение делится на два отдельных приложения.
Интерфейсное приложение JavaScript с помощью платформы React с инструментом сборки Vite.
Серверное приложение Java отвечает на вопрос.
Внутренний /chat API выполняет шаги по получению ответа:
Создание параметров RAG: создание ряда параметров, используемых для формирования ответа.
Создание подхода с помощью RAG: используйте сочетание моделей на основе извлечения и создания, чтобы создать подход для создания точного и естественного отклика.
Запустите подход с параметрами RAG и предыдущей беседой: используйте подход и параметры RAG для создания ответа на основе предыдущей беседы. Ответ содержит сведения о том, какие документы использовались для создания ответа.
Получить помощь
Этот пример репозитория предлагает сведения об устранении неполадок. Если ваша проблема не устранена, зарегистрируйте её в разделе Проблемырепозитория.
Узнайте, как добавить балансировку нагрузки в ваше Java-решение, чтобы расширить возможности приложения чата за пределы ограничений токена Azure OpenAI и квоты модели.
Начало работы с Python и поиск по собственным данным с помощью примера приложения чата, реализованного с помощью Службы Azure OpenAI и получения дополненного поколения (RAG) в поиске ИИ Azure. Простое развертывание с помощью Интерфейса командной строки разработчика Azure. В этой статье используется пример шаблона справочника по ИИ Azure.
Узнайте, как эффективно использовать бессерверные подключения для проверки подлинности и авторизации в Azure OpenAI с помощью стандартных блоков безопасности Azure OpenAI. Приступая к работе с простым примером приложения чата, реализованным с помощью службы Azure OpenAI, с помощью проверки подлинности без ключей с идентификатором Microsoft Entra. Простое развертывание с помощью Интерфейса командной строки разработчика Azure. В этой статье используется пример краткого руководства по чату шаблона ИИ Azure.
Узнайте, как использовать мощные модели Azure OpenAI, включая GPT-4o, GPT-4o mini, GPT-4, GPT-4 Turbo с Vision, GPT-3.5-Turbo, DALL-E 3 и серии внедренных моделей