page_type | языки | продукция | урлфрагмент | имя | описание | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
образец |
|
| Azure-Search-Openai-Demo-Csharp | CHATGPT + Enterprise Data (CSHARP) | Пример CSHARP, который общается с вашими данными, используя поиск OpenAI и AI. |
Этот образец демонстрирует несколько подходов к созданию CATGPT-подобного опыта по сравнению с вашими собственными данными, используя шаблон получения дополнительной генерации поиска. Он использует Azure Openai Service для доступа к модели CHATGPT ( gpt-4o-mini
) и Azure AI Search для индексации и поиска данных.
Репо включает примеры данных, поэтому он готов попробовать сквозные. В этом примере мы используем фиктивную компанию под названием Contoso Electronics, и этот опыт позволяет ее сотрудникам задавать вопросы о преимуществах, внутренних политиках, а также о должностных инструкциях и ролях.
Для получения более подробной информации о том, как было построено это приложение, посмотрите:
Мы хотим услышать от вас! Вы заинтересованы в создании или в настоящее время создание интеллектуальных приложений? Потратьте несколько минут, чтобы завершить этот опрос.
Возьмите опрос
Чтобы развернуть и запустить этот пример, вам понадобится
Microsoft.Authorization/roleAssignments/write
, такие как администратор или владелец пользователя. Предупреждение
По умолчанию этот пример создаст приложение Azure Container и ресурс поиска Azure AI, который имеет ежемесячную стоимость, а также ресурс интеллектуальных документов Azure AI, который имеет стоимость на страницу документа. Вы можете переключить их на бесплатные версии каждого из них, если вы хотите избежать этой стоимости, изменив файл параметров в папке Infra (хотя есть некоторые ограничения, которые следует учитывать; например, вы можете иметь до 1 бесплатного ресурса поиска Azure AI, а ресурс Free Azure AI Document Antelligence Anlights использует только первые 2 -страницы каждого документа).
Цены варьируются в зависимости от региона и использования, поэтому невозможно предсказать точные затраты на ваше использование. Тем не менее, вы можете попробовать калькулятор ценообразования Azure для приведенных ниже ресурсов:
Чтобы снизить затраты, вы можете переключиться на бесплатный SKU для различных услуг, но у этих SKU есть ограничения. Смотрите это руководство по развертыванию с минимальными затратами для получения более подробной информации.
azd down
.
У вас есть несколько вариантов настройки этого проекта. Самый простой способ начать работу - это GitHub Codespaces, так как он настроит все инструменты для вас, но вы также можете настроить его локально, если это необходимо.
Вы можете запустить это репо практически, используя GitHub Codespaces, который откроет веб-код VS в вашем браузере:
Связанный вариант - это контейнеры с удаленными контейнерами VS, который откроет проект в вашем коде локального VS, используя расширение контейнеров DEV:
Установите следующие предпосылки:
Разработчик Azure CLI
.NET 8
Git
PowerShell 7+ (PWSH) - только для пользователей Windows.
Важно : убедитесь, что вы можете запустить
pwsh.exe
от команды PowerShell. Если это не удается, вам, вероятно, нужно обновить PowerShell.
Докер
ВАЖНО : Убедитесь, что Docker работает перед запуском любых команд обеспечения / развертывания
azd
.
Затем запустите следующие команды, чтобы получить проект в вашей местной среде:
azd auth login
azd init -t azure-search-openai-demo-csharp
azd env new azure-search-openai-demo-csharp
Live Stream: развертывание с нуля в CodeSpaces Live Stream: развертывание с нуля в Windows 11
ВАЖНО : Убедитесь, что Docker работает перед запуском любых команд обеспечения / развертывания
azd
.
Выполните следующую команду, если у вас нет ранее существовавших служб Azure и вы хотите начать с нового развертывания.
Запустите azd up
- это предоставит Azure Resources и развернете этот образец для этих ресурсов, включая создание индекса поиска на основе файлов, найденных в папке ./data
.
Примечание . В этом приложении используется модель
gpt-4o-mini
. При выборе того, в какой регион использовать, убедитесь, что они доступны в этом регионе (т.е. Eastus). Для получения дополнительной информации см. Документацию Azure Openai.
После того, как приложение было успешно развернуто, вы увидите URL -адрес, напечатанный на консоли. Нажмите на этот URL, чтобы взаимодействовать с приложением в вашем браузере.
Это будет выглядеть следующим образом:
[! Примечание]: Для полного развертывания приложения может потребоваться несколько минут. После того, как приложение будет развернуто, также потребуется несколько минут для обработки документов, которые будут добавлены в векторную базу данных.
Если у вас есть существующие ресурсы в Azure, которые вы хотите использовать, вы можете настроить azd
для использования, установив следующие переменные среды azd
:
azd env set AZURE_OPENAI_SERVICE {Name of existing OpenAI service}
azd env set AZURE_OPENAI_RESOURCE_GROUP {Name of existing resource group that OpenAI service is provisioned to}
azd env set AZURE_OPENAI_CHATGPT_DEPLOYMENT {Name of existing ChatGPT deployment}
. Требуется только в том случае, если ваше развертывание CHATGPT не является чатом по умолчанию.azd env set AZURE_OPENAI_EMBEDDING_DEPLOYMENT {Name of existing embedding model deployment}
. Требуется только в том случае, если ваша модель встраивания не является embedding
по умолчанию.azd up
Примечание
Вы также можете использовать существующие учетные записи поиска и хранения. azd env set
./infra/main.parameters.json
Важный
Убедитесь, что Docker запускается перед запуском любых команд обеспечения / развертывания azd
.
azd up
Примечание
Убедитесь, что в вашем репозитории есть поддержанные файлы BICEP AZD и добавьте исходный файл рабочего процесса GitHub, который можно запустить вручную (для первоначального развертывания) или при изменении кода (автоматически повторно развертываться с последними изменениями), чтобы ваш репозиторий совместимым с приложениями, вам необходимо внести изменения в свой основной и основной файл, позволяющие в соответствии с Antiping Antiping Respars.
"resourceGroupName" : {
"value" : " ${AZURE_RESOURCE_GROUP} "
}
"tags" : {
"value" : " ${AZURE_TAGS} "
}
param resourceGroupName string = ''
param tags string = ''
var baseTags = { 'azd-env-name' : environmentName }
var updatedTags = union ( empty ( tags ) ? {} : base64ToJson ( tags ), baseTags )
Make sure to use " updatedTags " when assigning " tags " to resource group created in your bicep file and update the other resources to use " baseTags " instead of " tags ". For example -
``` json
resource rg 'Microsoft.Resources/resourceGroups@2021-04-01' = {
name : ! empty ( resourceGroupName ) ? resourceGroupName : '${ abbrs . resourcesResourceGroups }${ environmentName }'
location : location
tags : updatedTags
}
Важный
Убедитесь, что Docker запускается перед запуском любых команд обеспечения / развертывания azd
.
Запустите azd auth login
После развертывания приложения установите переменную среды AZURE_KEY_VAULT_ENDPOINT
. Вы можете найти значение в файле .azure/your-environment-name/.env или на портале Azure.
Запустите следующую команду .NET CLI, чтобы запустить минимальный сервер API API Core ASP.NET (хост клиента):
dotnet run --project ./app/backend/MinimalApi.csproj --urls=http://localhost:7181/
Перейдите к http: // localhost: 7181 и протестируйте приложение.
Этот пример включает в себя клиент .NET MAUI, упаковывающий опыт в качестве приложения, которое может работать на рабочем столе Windows/MacOS или на устройствах Android и iOS. Клиент Maui здесь реализован с использованием Blazor Hybrid, позволяя ему поделиться большинством кодов с фронтом веб -сайтов.
Откройте App/App-maui.sln, чтобы открыть решение, которое включает клиент Maui
Редактировать App/maui-blazor/mauiprogram.cs , обновление client.BaseAddress
с URL-адресом для бэкэнда.
Если он работает в Azure, используйте URL -адрес для бэкэнда обслуживания из шагов выше. Если вы работаете локально, используйте http: // localhost: 7181.
Установите Mauiblazor в качестве проекта запуска и запустите приложение
Запустите следующее, если вы хотите дать кому -то еще доступ к развернутой и существующей среде.
azd init -t azure-search-openai-demo-csharp
azd env refresh -e {environment name}
- Обратите внимание, что им понадобится имя среды AZD, идентификатор подписки и местоположение, чтобы запустить эту команду - вы можете найти эти значения в вашем файле ./azure/{env name}/.env
. Это заполнит их файл AZD Environment Environment со всеми настройками, необходимыми для запуска приложения локально.pwsh ./scripts/roles.ps1
- это назначит все необходимые роли пользователю, чтобы они могли запускать приложение локально. Если у них нет необходимого разрешения для создания ролей в подписке, вам может потребоваться запустить этот скрипт для них. Обязательно установите переменную среды AZURE_PRINCIPAL_ID
в файле AZD .ENV или в активной оболочке на их идентификатор Azure, который они могут получить с помощью az account show
. Запустить azd down
azd
. URL -адрес распечатан, когда azd
завершается (как «конечная точка»), или вы можете найти его на портале Azure.Однажды в веб -приложении:
Чтобы включить понимание приложений и отслеживание каждого запроса, наряду с журналом ошибок, установите переменную AZURE_USE_APPLICATION_INSIGHTS
для TRUE, прежде чем запустить azd up
azd env set AZURE_USE_APPLICATION_INSIGHTS true
azd up
Чтобы увидеть данные о производительности, перейдите в ресурс Application Insights в вашей группе ресурсов, нажмите на лезвие «Исследование -> производительность» и перейдите к любому HTTP -запросу, чтобы увидеть данные о времени. Чтобы осмотреть производительность запросов в чате, используйте кнопку «Проверка в образцы», чтобы увидеть сквозные следы всех вызовов API, сделанных для любого запроса в чате:
Чтобы увидеть любые исключения и ошибки сервера, перейдите к лезвию «Расследовать -> сбои» и используйте инструменты фильтрации, чтобы найти конкретное исключение. Вы можете увидеть трассировки стека Python с правой стороны.
По умолчанию приложение для развернутого контейнера Azure не будет включено ограничения аутентификации или доступа, что означает, что любой, у кого есть маршрутизируемый сетевой доступ к приложению контейнера, может общаться с вашими индексированными данными. Вы можете потребовать аутентификации в вашем Azure Active Directory, следуя учебному пособию Add Container App Appultication и установив его на приложение развернутого контейнера.
Чтобы затем ограничить доступ к конкретному набору пользователей или групп, вы можете выполнить шаги от ограничения вашего приложения Azure Ad набором пользователей путем изменения «требуемого назначения?» Опция в приложении Enterprise, а затем назначает доступ пользователям/группам. Пользователи, не предоставленные явным доступом, получат сообщение об ошибке -AADSTS50105: Ваш администратор настроил приложение <pplic_name> блокировать пользователей, если они не будут предоставлены («назначены») доступа к приложению .--
Благодаря GPT-4o-mini
можно поддерживать обогащенное повторное разведения, предоставляя как текст, так и изображение в качестве исходного контента. Чтобы включить поддержку зрения, вам необходимо включить USE_VISION
и использовать модель GPT-4o
или GPT-4o-mini
при обеспечении.
Примечание
Вам нужно будет повторно индексировать вспомогательный материал и повторно развернуть приложение после обеспечения поддержки GPT-4O, если вы уже развернули приложение ранее. Это связано с тем, что для поддержки GPT-4O требуется добавление новых полей в индекс поиска.
Чтобы включить поддержку GPT-4V с помощью Azure OpenAI Service, запустите следующие команды:
azd env set USE_VISION true
azd env set USE_AOAI true
azd env set AZURE_OPENAI_CHATGPT_MODEL_NAME gpt-4o-mini
azd env set AZURE_OPENAI_RESOURCE_LOCATION eastus # Please check the gpt model availability for more details.
azd up
Чтобы включить Vision Support с OpenAI, запустите следующие команды:
azd env set USE_VISION true
azd env set USE_AOAI false
azd env set OPENAI_CHATGPT_DEPLOYMENT gpt-4o
azd up
Чтобы очистить ранее развернутые ресурсы, запустите следующую команду:
azd down --purge
azd env set AZD_PREPDOCS_RAN false # This is to ensure that the documents are re-indexed with the new fields.
Помимо приведенных ниже советов, вы можете найти обширную документацию в папке Docs.
Этот образец предназначен для того, чтобы стать отправной точкой для вашего собственного производственного приложения, но вы должны провести тщательный обзор безопасности и производительности перед тем, как развернуть до производства. Вот некоторые вещи, которые следует учитывать:
Емкость Openai : TPM по умолчанию (токены в минуту) установлен на 30 тысяч. Это эквивалентно приблизительно 30 разговорам в минуту (при условии 1K на пользовательское сообщение/ответ). Вы можете увеличить емкость, изменяя параметры chatGptDeploymentCapacity
и параметры embeddingDeploymentCapacity
в infra/main.bicep
до максимальной емкости вашей учетной записи. Вы также можете просмотреть вкладку квотов в Azure Openai Studio, чтобы понять, сколько у вас есть возможностей.
Хранение Azure : учетная запись хранения по умолчанию использует SKU Standard_LRS
. Чтобы повысить вашу устойчивость, мы рекомендуем использовать Standard_ZRS
для развертывания производства, которые вы можете указать, используя свойство sku
в модуле storage
в infra/main.bicep
.
Поиск Azure AI : если вы видите ошибки в отношении превышения способности поисковой службы, вам может быть полезным увеличить количество реплик, изменяя replicaCount
в infra/core/search/search-services.bicep
или вручную масштабировать его с портала Azure.
Приложения Azure Container : по умолчанию это приложение развертывает контейнеры с 0,5 ядрами ЦП и 1 ГБ памяти. Минимальные реплики составляют 1 и максимум 10. Для этого приложения вы можете установить значения, такие как containerCpuCoreCount
, containerMaxReplicas
, containerMemory
, containerMinReplicas
в файле infra/core/host/container-app.bicep
чтобы соответствовать вашим потребностям. Вы можете использовать правила автоматического масштаба или правила запланированного масштабирования и увеличить максимальный/минимальный на основе нагрузки.
Аутентификация : По умолчанию развернутое приложение общедоступно. Мы рекомендуем ограничить доступ к аутентифицированным пользователям. См. Включение аутентификации выше для того, чтобы включить аутентификацию.
Сеть : мы рекомендуем развернуть внутри виртуальной сети. Если приложение предназначено только для внутреннего предприятия, используйте частную зону DNS. Также рассмотрите возможность использования Azure API Management (APIM) для брандмауэров и других форм защиты. Для получения более подробной информации прочитайте справочную архитектуру зоны зоны Azure Openai.
Загрузка .
Azure.AI.OpenAI
Nuget PackageПримечание
Документы PDF, используемые в этой демонстрации, содержат информацию, созданную с использованием языковой модели (Azure OpenAI Service). Информация, содержащаяся в этих документах, предназначена только для демонстрационных целей и не отражает мнения или убеждения Microsoft. Microsoft не делает никаких представлений или гарантий любого рода, явного или подразумеваемого, о полноте, точности, надежности, пригодности или доступности в отношении информации, содержащейся в этом документе. Все права защищены на Microsoft.
Вопрос : Почему нам нужно разбить PDF -файлы на куски, когда поиск Azure AI поддерживает поиск больших документов?
Ответ : Chunking позволяет нам ограничить количество информации, которую мы отправляем в OpenAI из -за пределов токенов. Разбивая контент, он позволяет нам легко найти потенциальные куски текста, которые мы можем ввести в OpenAI. Метод подсчета мы используем раздвижное окно текста, такое, что предложения, которые заканчивают один кусок, начнут следующее. Это позволяет нам уменьшить вероятность потерять контекст текста.