Начните работать с "Чат с использованием вашего собственного примера данных" для .NET

В этой статье показано, как развернуть и запустить Chat с собственным примером данных для .NET. В этом примере реализовано приложение чата, использующее C#, Служба Azure OpenAI и Retrieval Augmented Generation (RAG) в Поиск с использованием ИИ Azure, чтобы получить ответы про льготы для сотрудников в вымышленной компании. Приложение чата для сотрудников заполняется PDF-файлами, включая руководство сотрудника, документ о преимуществах и список ролей и ожиданий компании.

В этой статье вы:

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

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

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

Другие статьи в коллекции включают:

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

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

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

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

  • Пользовательский интерфейс — интерфейс чата приложения — это приложение Blazor WebAssembly . Этот интерфейс принимает пользовательские запросы, маршрутизирует запросы к серверной части приложения и отображает созданные ответы.
  • Backend — серверная часть приложения — это минимальный API ASP.NET Core. Серверная часть размещает статическое веб-приложение Blazor и управляет взаимодействием между различными службами. Службы, используемые в этом приложении, включают:

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

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

Дополнительные сведения см. в разделе Примеры Azure: стоимость в репозитории примеров.

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

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

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

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

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

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

Внимание

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

  1. Запустите процесс создания нового пространства кода GitHub в ветви main репозитория Azure-Samples/azure-search-openai-demo-csharp GitHub.

  2. Чтобы среда разработки и документация были доступны одновременно, щелкните правой кнопкой мыши следующую ссылку Open в GitHub Codespaces и выберите ссылку Open в новых окнах.

    Открыть в GitHub Codespaces кнопка.

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

    Снимок экрана подтверждения перед созданием нового пространства кода.

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

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

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

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

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

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

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

Внимание

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

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

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

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

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

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

  6. Дождитесь развертывания приложения. Развертывание может занять до 20 минут.

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

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

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

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

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

  1. В браузере перейдите на страницу чата с помощью левой навигации.

  2. Выберите или введите "Что входит в план Northwind Health Plus, который не является стандартным?" в текстовом поле чата. Ваш ответ аналогичен следующему изображению.

    Снимок экрана: первый ответ приложения чата.

  3. В ответе выберите ссылку. Откроется всплывающее окно, отображающее источник информации.

    Снимок экрана: первый ответ приложения чата с выделенной ссылкой в красном поле.

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

    Вкладка Описание
    Процесс мысли Это сценарий взаимодействия в чате. Вы можете просмотреть системный запрос (content) и вопрос пользователя (content).
    Вспомогательное содержимое Сюда входят сведения для ответа на ваш вопрос и исходный материал. Количество ссылок на исходные материалы отмечается в параметрах разработчика. Значение по умолчанию — 3.
    Источник Откроется исходная страница, содержащая ссылку.
  5. Когда вы закончите, вернитесь на вкладку ответов.

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

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

Снимок экрана: параметры разработчика чата.

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

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

  1. В браузере щелкните значок шестеренки в правом верхнем углу страницы.

  2. Если не выбрано, установите флажок "Предложить дальнейшие вопросы " и снова задайте тот же вопрос.

    What is included in my Northwind Health Plus plan that is not in standard?
    

    Чат может вернуться с предложениями по дальнейшим вопросам.

  3. На вкладке Параметры отмените выбор опции использования семантического ранжировщика для поиска.

  4. Задайте тот же вопрос еще раз.

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

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

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

Чтобы завершить работу, очистите используемые вами ресурсы Azure и GitHub CodeSpaces.

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

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

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

azd down --purge

Очистка GitHub пространства кода

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

Внимание

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

  1. Войдите на панель мониторинга GitHub Codespaces (https://github.com/codespaces).

  2. Найдите текущие пространства кода, полученные из репозитория Azure-Samples/azure-search-openai-demo-csharp GitHub.

    Снимок экрана: все выполняемые пространства кода, включая их состояние и шаблоны.

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

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

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

Этот пример репозитория предоставляет сведения по устранению неполадок.

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

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