Это решение создает внешний интерфейс, подобный ChatGPT, над вашими собственными документами с использованием RAG (Retrival Augmented Generation). Он использует службу Azure OpenAI для доступа к моделям GPT и поиск Azure AI для индексации и извлечения данных.
Серверная часть этого решения написана на Python. Существуют также примеры JavaScript , .NET и Java , основанные на этом примере. Узнайте больше о разработке приложений искусственного интеллекта с использованием служб Azure AI.
Посмотрите видеообзор приложения.
В этом примере демонстрируется несколько подходов к созданию возможностей, подобных ChatGPT, на основе ваших собственных данных с использованием шаблона извлечения дополненной генерации. Он использует службу Azure OpenAI для доступа к модели GPT (gpt-35-turbo) и поиск Azure AI для индексации и извлечения данных.
Репозиторий включает в себя образцы данных, поэтому его можно попробовать от начала до конца. В этом примере приложения мы используем вымышленную компанию Contoso Electronics, и этот опыт позволяет ее сотрудникам задавать вопросы о льготах, внутренней политике, а также должностных инструкциях и ролях.
ВАЖНО. Для развертывания и запуска этого примера вам потребуется:
Microsoft.Authorization/roleAssignments/write
, например «Администратор управления доступом на основе ролей», «Администратор доступа пользователей» или «Владелец». Если у вас нет разрешений на уровне подписки, вам необходимо предоставить RBAC для существующей группы ресурсов и выполнить развертывание в этой существующей группе.Microsoft.Resources/deployments/write
на уровне подписки.Цены варьируются в зависимости от региона и использования, поэтому невозможно предсказать точные затраты на ваше использование. Однако вы можете воспользоваться калькулятором цен Azure для ресурсов, указанных ниже.
Чтобы сократить расходы, вы можете перейти на бесплатные SKU для различных сервисов, но у этих SKU есть ограничения. Дополнительные сведения см. в этом руководстве по развертыванию с минимальными затратами.
azd down
.
У вас есть несколько вариантов настройки этого проекта. Самый простой способ начать — GitHub Codespaces, поскольку он настроит все инструменты за вас, но при желании вы также можете настроить его локально.
Вы можете запустить этот репозиторий виртуально, используя GitHub Codespaces, который откроет веб-код VS в вашем браузере:
Как только пространство кода откроется (это может занять несколько минут), откройте окно терминала.
Связанный вариант — VS Code Dev Containers, который откроет проект в вашем локальном VS Code с помощью расширения Dev Containers:
Запустите Docker Desktop (установите его, если он еще не установлен).
Откройте проект:
В открывшемся окне VS Code, как только появятся файлы проекта (это может занять несколько минут), откройте окно терминала.
Установите необходимые инструменты:
python --version
из консоли. В Ubuntu вам может потребоваться запустить sudo apt install python-is-python3
чтобы связать python
с python3
.pwsh.exe
из терминала PowerShell. Если это не помогло, вам, вероятно, потребуется обновить PowerShell.Создайте новую папку и переключитесь на нее в терминале.
Запустите эту команду, чтобы загрузить код проекта:
azd init -t azure-search-openai-demo
Обратите внимание, что эта команда инициализирует репозиторий git, поэтому вам не нужно клонировать этот репозиторий.
Следующие шаги позволят подготовить ресурсы Azure и развернуть код приложения в приложениях-контейнерах Azure. Вместо этого, чтобы выполнить развертывание в Службе приложений Azure, следуйте руководству по развертыванию службы приложений.
Войдите в свою учетную запись Azure:
azd auth login
Для пользователей GitHub Codespaces: если предыдущая команда не удалась, попробуйте:
azd auth login --use-device-code
Создайте новую среду azd:
azd env new
Введите имя, которое будет использоваться для группы ресурсов. Это создаст новую папку в папке .azure
и сделает ее активной средой для любых вызовов azd
в дальнейшем.
(Необязательно) На этом этапе вы можете настроить развертывание, задав переменные среды, чтобы использовать существующие ресурсы, включить дополнительные функции (такие как проверка подлинности или зрение) или развернуть на уровнях бесплатного пользования.
Запустите azd up
. При этом будут подготовлены ресурсы Azure и развернут этот образец на этих ресурсах, включая создание индекса поиска на основе файлов, найденных в папке ./data
.
azd down
или удалить ресурсы вручную, чтобы избежать ненужных расходов.После успешного развертывания приложения вы увидите URL-адрес, напечатанный на консоли. Щелкните этот URL-адрес, чтобы взаимодействовать с приложением в браузере. Это будет выглядеть следующим образом:
ПРИМЕЧАНИЕ. Полное развертывание приложения может занять 5–10 минут после появления сообщения «УСПЕХ». Если вы видите экран приветствия «Разработчик Python» или страницу с ошибкой, подождите немного и обновите страницу.
Если вы изменили только внутренний или внешний код в папке app
, вам не нужно повторно подготавливать ресурсы Azure. Вы можете просто запустить:
azd deploy
Если вы изменили файлы инфраструктуры (папку infra
или azure.yaml
), вам потребуется повторно подготовить ресурсы Azure. Вы можете сделать это, запустив:
azd up
Чтобы предоставить кому-либо доступ к полностью развернутой и существующей среде, вы или он можете выполнить следующие действия:
azd init -t azure-search-openai-demo
или клонируйте этот репозиторий.azd env refresh -e {environment name}
Для выполнения этой команды им потребуется имя среды azd, идентификатор подписки и местоположение. Эти значения можно найти в файле .azure/{env name}/.env
. Это заполнит файл .env
среды azd всеми настройками, необходимыми для локального запуска приложения.AZURE_PRINCIPAL_ID
либо в этом файле .env
, либо в активной оболочке их идентификатор Azure, который они могут получить с помощью az ad signed-in-user show
../scripts/roles.ps1
или .scripts/roles.sh
чтобы назначить пользователю все необходимые роли. Если у них нет необходимых разрешений на создание ролей в подписке, возможно, вам придется запустить для них этот скрипт. После запуска сценария они смогут запустить приложение локально. Вы можете запускать локально только после успешного запуска команды azd up
. Если вы еще этого не сделали, выполните описанные выше шаги по развертыванию.
azd auth login
app
./start.ps1
или ./start.sh
или запустите «Задача VS Code: запустить приложение», чтобы запустить проект локально.Дополнительные советы см. в руководстве по местному развитию.
В веб-приложении:
Чтобы очистить все ресурсы, созданные в этом примере:
azd down
y
y
Группа ресурсов и все ресурсы будут удалены.
Помимо приведенных ниже советов, вы можете найти обширную документацию в папке docs.
После успешного развертывания приложения вы можете начать настраивать его под свои нужды: изменять текст, настраивать подсказки и заменять данные. Более подробную информацию можно найти в руководстве по настройке приложения, а также в руководстве по приему данных.
По умолчанию развернутые приложения используют Application Insights для отслеживания каждого запроса, а также для регистрации ошибок.
Чтобы просмотреть данные о производительности, перейдите к ресурсу Application Insights в своей группе ресурсов, щелкните колонку «Исследование -> Производительность» и перейдите к любому HTTP-запросу, чтобы просмотреть данные о времени. Чтобы проверить производительность запросов чата, используйте кнопку «Детализация образцов», чтобы просмотреть сквозные трассировки всех вызовов API, выполненных для любого запроса чата:
Чтобы просмотреть любые исключения и ошибки сервера, перейдите к колонке «Исследование -> Сбои» и используйте инструменты фильтрации, чтобы найти конкретное исключение. Вы можете увидеть трассировки стека Python справа.
Вы также можете просмотреть сводные данные диаграммы на информационной панели, выполнив следующую команду:
azd monitor
Этот образец задуман как отправная точка для вашего собственного производственного приложения, но перед развертыванием в рабочей среде вам следует тщательно проверить безопасность и производительность. Прочтите наше руководство по производству для получения более подробной информации.
Вот наиболее распространенные сценарии сбоев и решения:
Подписка ( AZURE_SUBSCRIPTION_ID
) не имеет доступа к службе Azure OpenAI. Убедитесь, что AZURE_SUBSCRIPTION_ID
соответствует идентификатору, указанному в процессе запроса доступа OpenAI.
Вы пытаетесь создать ресурсы в регионах, где не поддерживается Azure OpenAI (например, «Восточная часть США 2» вместо «Восточная часть США») или где модель, которую вы пытаетесь использовать, не включена. См. эту матрицу доступности модели.
Вы превысили квоту, чаще всего количество ресурсов на регион. См. эту статью о квотах и лимитах.
Вы получаете конфликты «одно и то же имя ресурса не разрешено». Вероятно, это связано с тем, что вы запускали образец несколько раз и каждый раз удаляли ресурсы, которые создавали, но забываете их очистить. Azure хранит ресурсы в течение 48 часов, если вы не очистите их путем обратимого удаления. См. эту статью об очистке ресурсов.
Вы увидите CERTIFICATE_VERIFY_FAILED
при запуске сценария prepdocs.py
. Обычно это происходит из-за неправильной настройки SSL-сертификатов на вашем компьютере. Попробуйте предложения в этом ответе StackOverflow.
После запуска azd up
и посещения веб-сайта вы видите в браузере сообщение «404 не найдено». Подождите 10 минут и повторите попытку, возможно, он все еще запускается. Затем попробуйте запустить azd deploy
и подождите еще раз. Если вы по-прежнему сталкиваетесь с ошибками в развернутом приложении и выполняете его развертывание в Службе приложений, обратитесь к руководству по отладке развертываний Службы приложений. Сообщите о проблеме, если журналы не помогают устранить ошибку.
Это образец, созданный для демонстрации возможностей современных приложений генеративного ИИ и того, как их можно создавать в Azure. Если вам нужна помощь с развертыванием этого примера, опубликуйте сообщение в разделе «Проблемы» GitHub. Если вы сотрудник Microsoft, вы также можете публиковать сообщения на нашем канале Teams.
Этот репозиторий поддерживается разработчиками, а не службой поддержки Microsoft, поэтому воспользуйтесь описанными выше механизмами поддержки, и мы сделаем все возможное, чтобы вам помочь.
Примечание. PDF-документы, используемые в этой демонстрации, содержат информацию, созданную с использованием языковой модели (служба Azure OpenAI). Информация, содержащаяся в этих документах, предназначена только для демонстрационных целей и не отражает мнения или убеждения Microsoft. Microsoft не делает никаких заявлений и не дает никаких гарантий, явных или подразумеваемых, относительно полноты, точности, надежности, пригодности или доступности информации, содержащейся в этом документе. Все права принадлежат Microsoft.