Использование веб-приложения OpenAI Azure (классическое)

Применяется только к:Портал Foundry (классический). Эта статья недоступна для нового портала Foundry. Дополнительные сведения о новом портале.

Замечание

Ссылки в этой статье могут открывать содержимое в новой документации Microsoft Foundry вместо классической документации Foundry, которую вы просматриваете в данный момент.

Замечание

Веб-приложение и его код source предоставляются только как есть и в качестве примера. Клиенты отвечают за все настройки и реализацию своих web apps. Дополнительные сведения см. в разделе поддержки веб-приложения GitHub.

Наряду с порталом Microsoft Foundry, API-интерфейсами и пакетами SDK можно использовать настраиваемое автономное веб-приложение для взаимодействия с моделями Azure OpenAI с помощью графического пользовательского интерфейса. К ключевым функциям относятся:

  • Подключение к нескольким источникам данных для поддержки расширенного создания запросов и дополненного извлечением на основе генерации, включая Поиск с использованием ИИ Azure, Prompt Flow и многое другое.
  • Журнал бесед и сбор отзывов пользователей через Cosmos DB.
  • Идентификация с контролем доступа на основе ролей через Microsoft Entra ID.
  • Настройка пользовательского интерфейса, источников данных и функций с помощью переменных среды (без кода с помощью портала Azure).

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

Для начинающих пользователей Azure OpenAI, желающих взаимодействовать с данными через веб-приложение, портал Foundry является рекомендуемой средой для начального развертывания и настройки источников данных.

Снимок экрана: интерфейс веб-приложения.

Важные замечания

  • Это веб-приложение и многие из его функций находятся в предварительной версии, что означает, что ошибки могут возникать и что не все функции могут быть завершены. Если вы найдете ошибку или требуется помощь, вызовите проблему в связанном репозитории GitHub.
  • Публикация веб-приложения создает экземпляр Служба приложений Azure в подписке. Это может привести к затратам в зависимости от выбранного плана ценки. Когда вы закончите работу с приложением, его можно удалить и все связанные ресурсы на портале Azure.
  • GPT-4 Turbo с моделями обработки изображений в настоящее время не поддерживается.
  • По умолчанию приложение развертывается с помощью уже настроенного поставщика удостоверений Microsoft. Поставщик удостоверений ограничивает доступ к приложению членам вашего клиента Azure. Чтобы добавить или изменить проверку подлинности, выполните приведенные действия.
    1. Перейдите на портал Azure и найдите имя приложения, указанное во время публикации. Выберите веб-приложение и выберите проверку подлинности в меню слева. Затем выберите "Добавить поставщика удостоверений".

      Screenshot панели проверки подлинности на портале Azure.

    2. Выберите Microsoft в качестве поставщика удостоверений. Параметры по умолчанию на этой странице ограничивают приложение только вашим клиентом, поэтому вам не нужно ничего другого здесь изменить. Нажмите кнопку "Добавить".

Теперь пользователям будет предложено войти с помощью учетной записи Microsoft Entra для доступа к приложению. Вы можете использовать аналогичный процесс, чтобы добавить другого поставщика удостоверений по вашему желанию. Приложение не использует данные для входа пользователя иначе, кроме как для подтверждения того, что пользователь является членом вашего арендатора. Для получения дополнительной информации об управлении проверкой подлинности см. это руководство "быстрый старт" для веб-приложений с проверкой подлинности внутри Служба приложений Azure.

Настройка приложения с помощью переменных среды

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

Эти переменные среды можно изменить с помощью портала Azure после развертывания веб-приложения.

  1. На портале Azure найдите и выберите страницу "Службы приложений".
  2. Выберите только что развернутое веб-приложение.
  3. В левом меню приложения выберите Настройки > Переменные среды.
  4. Чтобы изменить существующую переменную среды, щелкните его имя.
  5. Чтобы добавить одну новую переменную среды, нажмите кнопку "Добавить" в верхней строке меню панели.
  6. Чтобы использовать редактор на основе JSON для управления переменными среды, нажмите кнопку "Дополнительно изменить".

При настройке приложения рекомендуется:

  • Четкое представление о том, как каждый параметр, который вы реализуете, влияет на взаимодействие с пользователем.

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

Изменение пользовательского интерфейса приложения

Переменные среды, относящиеся к настройке пользовательского интерфейса:

  • UI_CHAT_DESCRIPTION: это текст меньшего абзаца, показанный ниже UI_CHAT_TITLE в центре страницы при загрузке.
    • Тип данных: текст
  • UI_CHAT_LOGO: это большой образ, показанный в центре страницы при загрузке.
    • Тип данных: URL-адрес изображения
  • UI_CHAT_TITLE: это большой текст, отображаемый в центре страницы при загрузке.
    • Тип данных: текст
  • UI_FAVICON: это favicon, показанный в окне браузера или вкладке.
    • Тип данных: URL-адрес изображения
  • UI_LOGO: логотип отображается в левом верхнем углу страницы и слева от заголовка.
    • Тип данных: URL-адрес изображения
  • UI_TITLE: это заголовок, отображаемый в окне браузера или вкладке. Он также отображается в левом верхнем углу страницы логотипом.
    • Тип данных: текст
  • UI_SHOW_SHARE_BUTTON: эта кнопка отображается в правом верхнем углу страницы и позволяет пользователям совместно использовать URL-адрес, связанный с веб-приложением.
    • Тип данных: boolean, должен ввести значение True или False, по умолчанию — True, если осталось пустым или не указано.
  • UI_SHOW_CHAT_HISTORY_BUTTON: отображается в правом верхнем углу страницы и слева от UI_SHOW_SHARE_BUTTON.
    • Тип данных: boolean, должен ввести значение True или False, по умолчанию — True, если осталось пустым или не указано.

Чтобы изменить пользовательский интерфейс приложения, следуйте инструкциям на предыдущем шаге, чтобы открыть страницу переменных среды для веб-приложения. Затем используйте дополнительное редактирование, чтобы открыть редактор на основе JSON. В верхней части JSON (после символа [ ) вставьте приведенный ниже блок кода и настройте значения соответствующим образом:

  {
    "name": "UI_CHAT_DESCRIPTION",
    "value": "This is an example of a UI Chat Description. Chatbots can make mistakes. Check important info and sensitive info.",
    "slotSetting": false
  },
  {
    "name": "UI_CHAT_LOGO",
    "value": "https://learn-bot.azurewebsites.net/assets/Contoso-ff70ad88.svg",
    "slotSetting": false
  },
  {
    "name": "UI_CHAT_TITLE",
    "value": "This is an example of a UI Chat Title. Start chatting",
    "slotSetting": false
  },
  {
    "name": "UI_FAVICON",
    "value": "https://learn-bot.azurewebsites.net/assets/Contoso-ff70ad88.svg",
    "slotSetting": false
  },
  {
    "name": "UI_LOGO",
    "value": "https://learn-bot.azurewebsites.net/assets/Contoso-ff70ad88.svg",
    "slotSetting": false
  },
  {
    "name": "UI_TITLE",
    "value": "This is an example of a UI Title",
    "slotSetting": false
  },

Включение журнала чатов с помощью Cosmos DB

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

Чтобы включить журнал чата, разверните или повторно разверните модель в качестве веб-приложения с помощью портала Foundry и выберите Журнал чатов и отзывы пользователей в веб-приложении.

Скриншот чекбокса для включения журнала чата в Azure OpenAI или Foundry.

Это важно

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

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

Замечание

Популярные Azure регионы, такие как Восточная часть США, могут испытывать периоды высокого спроса, где может быть невозможно развернуть новый экземпляр Cosmos DB. В этом случае выберите вариант развертывания в альтернативном регионе, например восточная часть США 2 или повторите развертывание до тех пор, пока оно не будет успешно выполнено. Если развертывание Cosmos DB завершится ошибкой, приложение будет доступно по указанному URL-адресу, но журнал чата не будет доступен. Включение журнала бесед также включает кнопку "Просмотр журнала бесед" в правом верхнем углу.

При развертывании с выбранным параметром журнала чата автоматически заполняются следующие переменные среды, поэтому не требуется изменять их, если вы не хотите переключить экземпляры Cosmos DB. В их число входят:

  • AZURE_COSMOSDB_ACCOUNT: это имя учетной записи Cosmos DB, развернутой вместе с вашим веб-приложением.
    • Тип данных: текст
  • AZURE_COSMOSDB_ACCOUNT_KEY: это альтернативная переменная среды, которая используется только в том случае, если разрешения не предоставляются с помощью Microsoft Entra ID и проверки подлинности на основе ключей используются вместо этого.
    • Тип данных: текст. Обычно отсутствует или не заполнено.
  • AZURE_COSMOSDB_DATABASE: это имя объекта базы данных в Cosmos DB, развернутого вместе с веб-приложением.
    • Тип данных: текст должен быть db_conversation_history
  • AZURE_COSMOSDB_CONTAINER: это имя объекта контейнера базы данных в Cosmos DB, развернутого вместе с веб-приложением.
    • Тип данных: текст должен быть conversations
  • AZURE_COSMOSDB_ACCOUNT: это имя учетной записи Cosmos DB, развернутой вместе с вашим веб-приложением.
    • Тип данных: текст

Снимок экрана: журнал чата в веб-приложении.

Сбор отзывов пользователей

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

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

  • AZURE_COSMOSDB_ENABLE_FEEDBACK: это имя учетной записи Cosmos DB, развернутой вместе с вашим веб-приложением.
    • Тип данных: тип данных: логический, должен ввести значение True или False.

Это можно сделать с помощью дополнительных параметров редактирования или простых параметров редактирования, как описано ранее. Json для вставки в редактор JSON расширенного редактирования:

  {
    "name": "AZURE_COSMOSDB_ENABLE_FEEDBACK",
    "value": "True",
    "slotSetting": false
  },

Подключение к Поиск с использованием ИИ Azure и отправке файлов в качестве источника данных

Использование портала Foundry

Следуйте этому руководству по интеграции Поиск с использованием ИИ Azure с Foundry или начните с быстрого старта и повторно разверните приложение.

Использование переменных среды

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

  • DATASOURCE_TYPE: определяет, какой источник данных следует использовать при ответе на запросы пользователя.
    • Тип данных: текст. Должно быть задано значение AzureCognitiveSearch (прежнее имя для Поиск с использованием ИИ Azure)
  • AZURE_SEARCH_SERVICE: Это название вашего экземпляра Поиск с использованием ИИ Azure.
    • Тип данных: текст
  • AZURE_SEARCH_INDEX: это имя индекса в экземпляре Поиск с использованием ИИ Azure.
    • Тип данных: текст
  • AZURE_SEARCH_KEY: Это ключ аутентификации вашего экземпляра Поиск с использованием ИИ Azure. Необязательно, если для проверки подлинности используется рекомендуемая Microsoft Entra ID.
    • Тип данных: текст

Дальнейшие сценарии настройки с помощью переменных среды

  • AZURE_SEARCH_USE_SEMANTIC_SEARCH: указывает, следует ли использовать семантический поиск в Поиск с использованием ИИ Azure.
    • Тип данных: логическое значение, должно быть задано False , если не используется семантический поиск.
  • AZURE_SEARCH_SEMANTIC_SEARCH_CONFIG: указывает имя конфигурации семантического поиска, используемой, если включен семантический поиск.
    • Тип данных: текст, по умолчанию azureml-default.
  • AZURE_SEARCH_INDEX_TOP_K: определяет количество лучших документов, извлекаемых из Поиск с использованием ИИ Azure.
    • Тип данных: целое число, должно иметь значение 5.
  • AZURE_SEARCH_ENABLE_IN_DOMAIN: ограничивает ответы на запросы, связанные только с данными.
    • Тип данных: логический, должен иметь значение True.
  • AZURE_SEARCH_CONTENT_COLUMNS. Указывает список полей в индексе Поиск с использованием ИИ Azure, который содержит текстовое содержимое документов, используемый при создании ответа бота.
    • Тип данных: текст, по умолчанию content при развертывании с портала Foundry
  • AZURE_SEARCH_FILENAME_COLUMN. Указывает поле из индекса Поиск с использованием ИИ Azure, который предоставляет уникальный идентификатор исходных данных для отображения в пользовательском интерфейсе.
    • Тип данных: текст, по умолчанию filepath при развертывании с портала Foundry
  • AZURE_SEARCH_TITLE_COLUMN: Указывает поле из индекса Поиск с использованием ИИ Azure, предоставляющее соответствующий заголовок для данных, отображаемых в пользовательском интерфейсе.
    • Тип данных: текст, по умолчанию title при развертывании с портала Foundry
  • AZURE_SEARCH_URL_COLUMN: указывает поле из индекса Поиск с использованием ИИ Azure, содержащего URL-адрес документа.
    • Тип данных: текст, по умолчанию url при развертывании с портала Foundry
  • AZURE_SEARCH_VECTOR_COLUMNS. Указывает список полей в вашем индексе Поиск с использованием ИИ Azure, которые содержат векторные представления документов, используемые при разработке ответа бота.
    • Тип данных: текст, по умолчанию contentVector при развертывании с портала Foundry
  • AZURE_SEARCH_QUERY_TYPE: указывает тип запроса, используемый: simple, , semantic, vectorvectorSimpleHybridили vectorSemanticHybrid. Этот параметр имеет приоритет над AZURE_SEARCH_USE_SEMANTIC_SEARCH.
    • Тип данных: текст, мы рекомендуем тестировать с помощью vectorSemanticHybrid.
  • AZURE_SEARCH_PERMITTED_GROUPS_COLUMN. Указывает поле из индекса Поиск с использованием ИИ Azure, содержащего идентификаторы групп Microsoft Entra, определяя управление доступом на уровне документа.
    • Тип данных: текст
  • AZURE_SEARCH_STRICTNESS: указывает уровень строгости для модели, ограничивающей ответы на данные.
    • Тип данных: целое число, должно быть задано между 1 и 5, при этом рекомендуется использовать 3.
  • AZURE_OPENAI_EMBEDDING_NAME: указывает имя развертывания внедренной модели при использовании векторного поиска.
    • Тип данных: текст

Json для вставки в редактор JSON расширенного редактирования:

{
    "name": "AZURE_SEARCH_CONTENT_COLUMNS",
    "value": "",
    "slotSetting": false
  },
  {
    "name": "AZURE_SEARCH_ENABLE_IN_DOMAIN",
    "value": "true",
    "slotSetting": false
  },
  {
    "name": "AZURE_SEARCH_FILENAME_COLUMN",
    "value": "",
    "slotSetting": false
  },
  {
    "name": "AZURE_SEARCH_INDEX",
    "value": "",
    "slotSetting": false
  },
  {
    "name": "AZURE_SEARCH_KEY",
    "value": "",
    "slotSetting": false
  },
  {
    "name": "AZURE_SEARCH_PERMITTED_GROUPS_COLUMN",
    "value": "",
    "slotSetting": false
  },
  {
    "name": "AZURE_SEARCH_QUERY_TYPE",
    "value": "vectorSemanticHybrid",
    "slotSetting": false
  },
  {
    "name": "AZURE_SEARCH_SEMANTIC_SEARCH_CONFIG",
    "value": "azureml-default",
    "slotSetting": false
  },
  {
    "name": "AZURE_SEARCH_SERVICE",
    "value": "",
    "slotSetting": false
  },
  {
    "name": "AZURE_SEARCH_STRICTNESS",
    "value": "3",
    "slotSetting": false
  },
  {
    "name": "AZURE_SEARCH_TITLE_COLUMN",
    "value": "",
    "slotSetting": false
  },
  {
    "name": "AZURE_SEARCH_TOP_K",
    "value": "5",
    "slotSetting": false
  },
  {
    "name": "AZURE_SEARCH_URL_COLUMN",
    "value": "",
    "slotSetting": false
  },
  {
    "name": "AZURE_SEARCH_USE_SEMANTIC_SEARCH",
    "value": "true",
    "slotSetting": false
  },
  {
    "name": "AZURE_SEARCH_VECTOR_COLUMNS",
    "value": "contentVector",
    "slotSetting": false
  },

Подключение к Prompt Flow в качестве источника данных

Потоки запросов позволяют определить высоко настраиваемую логику RAG и логику обработки запросов пользователя.

Создание и развертывание потока запроса на портале Foundry

Следуйте этому руководству для создания, тестирования и развертывания конечной точки вывода вашего потока подсказок в портале Foundry.

Активация базовых ссылок из потока подсказок

При настройке потока запроса для отображения ссылок при интеграции этого веб-приложения он должен возвращать два ключевых выходных данных: один под названием documents (ваши ссылки) и другой под названием reply (естественный языковой ответ).

  1. documents — это объект JSON, который должен содержать следующие элементы. citations — это список, который может содержать несколько элементов, соответствующих одной и той же схеме. documents Объект должен быть создан и заполнен на основе выбранного шаблона RAG.
{
    "citations": [
        {
                "content": "string",
                "id": 12345,
                "title": "string",
                "filepath": "string",
                "url": "string",
                "metadata": "string",
                "chunk_id": None,
                "reindex_id": None,
                "part_index": None
        }
    ],
    "intent": "Your_string_here"
}
  1. reply состоит из возвращаемой строки, представляющей окончательный естественный язык для заданного пользовательского запроса. Ваш reply должен содержать ссылки на каждую из документов (источников) в следующем формате: [doc1], [doc2], и т. д. Веб-приложение анализирует reply и обрабатывает ссылки, заменяя все экземпляры [doc1] небольшими числовыми индикаторами, которые связываются непосредственно с упорядоченными возвращаемыми документами documents. Следовательно, вы должны настроить LLM так, чтобы он для создания окончательного естественного языка включал эти ссылки, которые также должны быть переданы в вызов LLM, чтобы обеспечить правильность их выравнивания. Рассмотрим пример.
system:
You are a helpful chat assistant that answers a user's question based on the information retrieved from a data source. 

YOU MUST ALWAYS USE CITATIONS FOR ALL FACTUAL RESPONSES. YOU MUST INCLUDE CITATIONS IN YOUR ANSWER IN THE FORMAT [doc1], [doc2], ... AND SO FORTH WHEN YOU ARE USING INFORMATION RELATING TO SAID SOURCE. THIS MUST BE RETURNED IN YOUR ANSWER.

Provide sort and concise answers with details directly related to the query. 

## Conversation history for context
{% for item in chat_history %}
user:
{{item.inputs.query}}

assistant:
{{item.outputs.reply}}
{% endfor %}

## Current question
user:
### HERE ARE SOME CITED SOURCE INFORMATION FROM A MOCKED API TO ASSIST WITH ANSWERING THE QUESTION BELOW. ANSWER ONLY BASED ON THE TRUTHS PRESENTED HERE.
{{your_input_name_for_documents}}
FOR EACH OF THE CITATIONS ABOVE, YOU MUST INCLUDE IN YOUR ANSWER [doc1], [doc2], ... AND SO FORTH WHEN YOU ARE USING INFORMATION RELATING TO SAID SOURCE. THIS MUST BE RETURNED IN YOUR ANSWER.
### HERE IS THE QUESTION TO ANSWER.
{{question}}
  

Настройка переменных среды для интеграции потока запросов

Изменяемые переменные среды:

  • AZURE_OPENAI_STREAM: определяет, загружается ли ответ в формате потоковой загрузки (инкрементной загрузки). Это не поддерживается для потока запроса, поэтому его необходимо задать для False использования этой функции.
    • Тип данных: булевый, установите в True, если поток запроса не используется, False, если используется поток запроса
  • USE_PROMPTFLOW: указывает, следует ли использовать существующую конечную точку развертывания Prompt flow. Если задано значение True, оба PROMPTFLOW_ENDPOINT и PROMPTFLOW_API_KEY должны быть заданы.
    • Тип данных: логическое значение должно быть задано False, если не используется Prompt Flow.
  • PROMPTFLOW_ENDPOINT: указывает URL-адрес развернутой конечной точки потока запроса.
    • Тип данных: текст, например https://pf-deployment-name.region.inference.ml.azure.com/score
  • PROMPTFLOW_API_KEY: Ключ аутентификации для развернутой конечной точки потока Prompt. Примечание. Поддерживается только проверка подлинности на основе ключей.
    • Тип данных: текст
  • PROMPTFLOW_RESPONSE_TIMEOUT: определяет значение времени ожидания в секундах для конечной точки потока запроса для ответа.
    • Тип данных: целое число, должно иметь значение 120.
  • PROMPTFLOW_REQUEST_FIELD_NAME: имя поля по умолчанию для создания запроса потока Prompt. Примечание. chat_history Автоматически создается на основе взаимодействия. Если API ожидает другие обязательные поля, необходимо изменить параметры запроса в promptflow_request функции.
    • Тип данных: текст должен иметь значение query.
  • PROMPTFLOW_RESPONSE_FIELD_NAME: имя поля по умолчанию для обработки ответа на запрос потока.
    • Тип данных: текст должен иметь значение reply.
  • PROMPTFLOW_CITATIONS_FIELD_NAME: Имя поля по умолчанию для обработки вывода ссылок из запроса потока Prompt.
    • Тип данных: текст должен иметь значение documents.

Подключение к другим источникам данных

Поддерживаются другие источники данных, в том числе:

  • Azure Cosmos DB
  • Elasticsearch
  • Azure SQL Server
  • Сосновая шишка
  • индекс Машинное обучение Azure

Дополнительные инструкции по включению этих источников данных см. в репозитории GitHub.

Обновление веб-приложения для включения последних изменений

Замечание

По состоянию на 1 февраля 2024 г. веб-приложение требует, чтобы команда запуска приложения была задана python3 -m gunicorn app:app. При обновлении приложения, опубликованного до 1 февраля 2024 г., необходимо вручную добавить команду запуска из страницы App Service Configuration.

Мы рекомендуем часто извлекать изменения из main ветви для исходного кода веб-приложения, чтобы обеспечить наличие последних исправлений ошибок, версий API и улучшений. Кроме того, веб-приложение должно быть синхронизировано каждый раз, когда используемая версия API снята с эксплуатации. Рассмотрите возможность выбора кнопки Watch или Star в репозитории GitHub, чтобы получать уведомления об изменениях и обновлениях исходного кода.

Если вы не настроили веб-приложение, выполните следующие действия, чтобы синхронизировать его:

  1. Перейдите к веб-приложению на портале Azure.

  2. В меню слева в разделе "Развертывание" выберите Центр развертывания.

  3. Выберите "Синхронизировать " в верхней части области и убедитесь, что приложение будет повторно развернуто.

    Снимок экрана кнопки синхронизации веб-приложения на портале Azure.

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

  • Если приложение размещено в GitHub, отправьте изменения кода в репозиторий, а затем выполните предыдущие шаги синхронизации.
  • Если вы повторно развертываете приложение вручную (например, с помощью Azure CLI), выполните действия по стратегии развертывания.

Удаление экземпляра Cosmos DB

Удаление веб-приложения не удаляет экземпляр Cosmos DB автоматически. Чтобы удалить экземпляр Cosmos DB вместе со всеми сохраненными чатами, необходимо перейти к связанному ресурсу на портале Azure и удалить его. Если удалить ресурс Cosmos DB, но оставить в дальнейшем включенной опцию ведения журнала чата на портале Foundry, приложение уведомляет пользователя об ошибке подключения. Однако пользователь может продолжать использовать веб-приложение без доступа к истории чата.

Включение аутентификации Microsoft Entra ID между службами

Чтобы включить Microsoft Entra ID для проверки подлинности внутри службы для веб-приложения, выполните следующие действия.

Включите управляемое удостоверение для вашего ресурса OpenAI в Azure и Служба приложений Azure.

Вы можете включить управляемую идентичность для ресурса Azure OpenAI и Служба приложений Azure, перейдя в раздел "Identity" и активировав системно назначенную управляемую идентичность в портале Azure для каждого ресурса.

Скриншот, показывающий конфигурацию удостоверения данного приложения на портале Azure.

Замечание

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

Включение управления доступом на основе ролей (RBAC) в ресурсе поиска Azure (необязательно)

Если вы используете режим "На ваших данных" с Azure Search, выполните этот шаг.

Чтобы разрешить ресурсу Azure OpenAI доступ к ресурсу Azure Search, необходимо включить управление доступом на основе ролей для ресурса Azure Search. Дополнительные сведения об активации ролей RBAC для ваших ресурсов.

Назначение ролей RBAC для обеспечения внутрислужебного взаимодействия

В следующей таблице перечислены назначения ролей RBAC, необходимые для всех Azure ресурсов, связанных с приложением.

Role Назначенное лицо Resource
Search Index Data Reader Azure OpenAI (вывод) Поиск с использованием ИИ Azure
Search Service Contributor Azure OpenAI (вывод) Поиск с использованием ИИ Azure
Cognitive Services OpenAI User Веб-приложение Azure OpenAI (вывод)
Cognitive Services OpenAI User Azure OpenAI (вывод) Azure OpenAI (Внедрение)

Чтобы назначить эти роли, следуйте этим инструкциям, чтобы создать необходимые назначения ролей.

Изменения параметров приложения

В параметрах приложения веб-приложения перейдите в раздел "Переменные среды" и внесите следующие изменения:

  • Удалите переменную AZURE_OPENAI_KEYсреды, так как она больше не нужна.
  • Если вы используете данные с Azure поиском и используют проверку подлинности Microsoft Entra ID между Azure OpenAI и Azure Search, то также следует удалить переменные среды AZURE_SEARCH_KEY для ключей доступа к источнику данных.

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

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

  • Задайте для переменной AZURE_OPENAI_EMBEDDING_ENDPOINT полный путь API внедрения для ресурса, используемого для внедрения, например https://<your Azure OpenAI in Foundry Models resource name>.openai.azure.com/openai/deployments/<your embedding deployment name>/embeddings
  • Удалите переменную AZURE_OPENAI_EMBEDDING_KEY для использования проверки подлинности Microsoft Entra ID.

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