Partilhar via


Usar o aplicativo Web OpenAI do Azure

Junto com o portal do Azure AI Foundry, APIs e SDKs, você pode usar o aplicativo Web autônomo personalizável para interagir com modelos do Azure OpenAI usando uma interface gráfica do usuário. As principais funcionalidades incluem:

  • Conectividade com várias fontes de dados para dar suporte a consultas avançadas e geração aumentada de recuperação, incluindo Azure AI Search, Prompt Flow e muito mais.
  • Histórico de conversas e coleta de feedback do usuário através do Cosmos DB.
  • Autenticação com controle de acesso baseado em função via ID do Microsoft Entra.
  • Personalização da interface do usuário, fontes de dados e recursos usando variáveis de ambiente (no-code via portal do Azure).
  • Exemplo de código-fonte para o aplicativo Web está disponível no GitHub. O código-fonte é fornecido "no estado em que se encontra" e apenas como exemplo. Os clientes são responsáveis por toda a personalização e implementação das suas aplicações Web.

Você pode implantar o aplicativo por meio do portal do Azure AI Foundry, do portal do Azure ou da CLI do Desenvolvedor do Azure por meio de sua máquina local (instruções disponíveis no repositório aqui). Dependendo do seu canal de implantação, você pode pré-carregar uma fonte de dados para conversar por meio do aplicativo Web, mas isso pode ser alterado após a implantação.

Para iniciantes do Azure OpenAI que aspiram conversar com seus dados por meio do aplicativo Web, o portal do Azure AI Foundry é o meio recomendado para implantação inicial e configuração da fonte de dados.

Captura de tela que mostra a interface do aplicativo Web.

Considerações importantes

  • Esta aplicação Web e muitas das suas funcionalidades estão em pré-visualização, o que significa que podem ocorrer bugs e que nem todas as funcionalidades podem estar completas. Se você encontrar um bug ou precisar de assistência, levante um problema no repositório GitHub associado.
  • A publicação de um aplicativo Web cria uma instância do Serviço de Aplicativo do Azure em sua assinatura. Ele pode incorrer em custos dependendo do plano de preços selecionado. Quando terminar de utilizar a sua aplicação, pode eliminá-la e quaisquer recursos associados do portal do Azure.
  • Os modelos GPT-4 Turbo com Visão não são suportados atualmente.
  • Por padrão, o aplicativo é implantado com o provedor de identidade da Microsoft já configurado. O provedor de identidade restringe o acesso ao aplicativo aos membros do seu locatário do Azure. Para adicionar ou modificar a autenticação:
    1. Vá para o portal do Azure e procure o nome do aplicativo que você especificou durante a publicação. Selecione o aplicativo Web e, em seguida, selecione Autenticação no menu à esquerda. Em seguida, selecione Adicionar provedor de identidade.

      Captura de ecrã do painel de autenticação no portal do Azure.

    2. Selecione Microsoft como o provedor de identidade. As predefinições nesta página restringem a aplicação apenas ao seu inquilino, pelo que não precisa de alterar mais nada aqui. Selecione Adicionar.

Agora, os usuários serão solicitados a entrar com sua conta do Microsoft Entra para acessar seu aplicativo. Você pode seguir um processo semelhante para adicionar outro provedor de identidade, se preferir. O aplicativo não usa as informações de entrada do usuário de nenhuma outra forma além de verificar se o usuário é um membro do seu locatário. Para obter mais informações sobre como gerenciar a autenticação, veja este início rápido na autenticação para aplicativos Web no Serviço de Aplicativo do Azure.

Personalizando o aplicativo usando variáveis de ambiente

Você pode personalizar a lógica de front-end e back-end do aplicativo. O aplicativo fornece várias variáveis de ambiente para cenários comuns de personalização, como alterar o ícone no aplicativo.

Essas variáveis de ambiente podem ser modificadas por meio do portal do Azure após a implantação do aplicativo Web.

  1. No portal do Azure, procure e selecione a página Serviços de Aplicativo.
  2. Selecione o aplicativo Web que você acabou de implantar.
  3. No menu esquerdo do aplicativo, selecione Configurações > Variáveis de ambiente.
  4. Para modificar uma variável de ambiente existente, clique em seu nome.
  5. Para adicionar uma única nova variável de ambiente, clique em Adicionar na barra de menu superior do painel.
  6. Para usar o editor baseado em JSON para gerenciar variáveis de ambiente, clique em Edição avançada.

Ao personalizar o aplicativo, recomendamos:

  • Comunicar claramente como cada configuração implementada afeta a experiência do usuário.

  • Atualizar as configurações do aplicativo para cada um dos seus aplicativos implantados para usar novas chaves de API depois de girar chaves para seu recurso Azure OpenAI ou Azure AI Search.

Modificando a interface do usuário do aplicativo

As variáveis de ambiente relevantes para a personalização da interface do usuário são:

  • UI_CHAT_DESCRIPTION: Este é o texto de parágrafo menor mostrado abaixo UI_CHAT_TITLE do no centro da página ao carregar.
    • Tipo de dados: texto
  • UI_CHAT_LOGO: Esta é a imagem grande mostrada no centro da página após o carregamento.
    • Tipo de dados: URL para imagem
  • UI_CHAT_TITLE: Este é o texto grande mostrado no centro da página após o carregamento.
    • Tipo de dados: texto
  • UI_FAVICON: Este é o favicon mostrado na janela/guia do navegador.
    • Tipo de dados: URL para imagem
  • UI_LOGO: Este é o logotipo aparece no canto superior esquerdo da página e à esquerda do título.
    • Tipo de dados: URL para imagem
  • UI_TITLE: Este é o título mostrado na janela/guia do navegador. Ele também aparece no canto superior esquerdo da página pelo logotipo.
    • Tipo de dados: texto
  • UI_SHOW_SHARE_BUTTON: Este botão aparece no canto superior direito da página e permite que os usuários compartilhem um URL vinculado ao aplicativo Web.
    • Tipo de dados: Booleano, deve inserir True ou False, o padrão é True se deixado em branco ou não especificado.
  • UI_SHOW_CHAT_HISTORY_BUTTON: Aparece no canto superior direito da página e à esquerda do UI_SHOW_SHARE_BUTTON.
    • Tipo de dados: Booleano, deve inserir True ou False, o padrão é True se deixado em branco ou não especificado.

Para modificar a interface do usuário do aplicativo, siga as instruções na etapa anterior para abrir a página de variáveis de ambiente do seu aplicativo Web. Em seguida, use a edição avançada para abrir o editor baseado em JSON. Na parte superior do JSON (após o [ caractere), cole o bloco de código abaixo e personalize os valores de acordo:

  {
    "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
  },

Ativando o histórico de bate-papo usando o Cosmos DB

Você pode ativar o histórico de bate-papo para seus usuários do aplicativo Web. Quando você ativa o recurso, os usuários têm acesso às suas consultas e respostas anteriores individuais.

Para ativar o histórico de chat, implante ou reimplante seu modelo como um aplicativo Web usando o portal do Azure AI Foundry e selecione Habilitar histórico de bate-papo e comentários do usuário no aplicativo Web.

Captura de ecrã da caixa de verificação para ativar o histórico de chat no Azure OpenAI ou no Azure AI Foundry.

Importante

Ativar o histórico de bate-papo cria uma instância do Azure Cosmos DB em seu grupo de recursos e incorre em cobranças adicionais pelo armazenamento que você usa além de quaisquer camadas gratuitas.

Depois de ativar o histórico de bate-papo, os usuários podem mostrá-lo e ocultá-lo no canto superior direito do aplicativo. Quando os usuários mostram o histórico de bate-papo, eles podem renomear ou excluir conversas. Você pode modificar se os usuários podem acessar essa função usando a variável UI_SHOW_CHAT_HISTORY_BUTTON de ambiente, conforme especificado na seção anterior. Como os usuários estão conectados ao aplicativo, as conversas são ordenadas automaticamente do mais recente para o mais antigo. As conversas são nomeadas com base na primeira consulta da conversa.

Nota

Regiões populares do Azure, como o Leste dos EUA, podem passar por períodos de alta demanda em que talvez não seja possível implantar uma nova instância do Cosmos DB. Nesse caso, opte por implantar em uma região alternativa, como East US 2, ou tente novamente sua implantação até que ela seja bem-sucedida. Se a implantação do Cosmos DB falhar, seu aplicativo estará disponível em sua URL especificada, mas o histórico de bate-papo não estará disponível. Ativar o histórico de conversas também habilitará o botão Exibir histórico de conversas no canto superior direito.

A implantação com a opção de histórico de bate-papo selecionada preencherá automaticamente as seguintes variáveis de ambiente, portanto, não há necessidade de modificá-las, a menos que você deseje alternar instâncias do Cosmos DB. Eles são:

  • AZURE_COSMOSDB_ACCOUNT: Este é o nome da conta do Cosmos DB que é implantada junto com seu aplicativo Web.
    • Tipo de dados: texto
  • AZURE_COSMOSDB_ACCOUNT_KEY: Esta é uma variável de ambiente alternativa que é usada somente quando as permissões não são concedidas via ID do Microsoft Entra e a autenticação baseada em chave é usada.
    • Tipo de dados: texto. Normalmente não está presente ou preenchido.
  • AZURE_COSMOSDB_DATABASE: Este é o nome do objeto de banco de dados no Cosmos DB que é implantado junto com seu aplicativo Web.
    • Tipo de dados: texto, deve ser db_conversation_history
  • AZURE_COSMOSDB_CONTAINER: Este é o nome do objeto de contêiner de banco de dados no Cosmos DB que é implantado junto com seu aplicativo Web.
    • Tipo de dados: texto, deve ser conversations
  • AZURE_COSMOSDB_ACCOUNT: Este é o nome da conta do Cosmos DB que é implantada junto com seu aplicativo Web.
    • Tipo de dados: texto

Captura de ecrã do histórico de chat na aplicação Web.

Recolha de comentários dos utilizadores

Para coletar comentários dos usuários, você pode ativar um conjunto de ícones de "polegar para cima" e "polegar para baixo" que aparecem em cada uma das respostas do chatbot. Isso permitirá que os usuários avaliem a qualidade de uma resposta e indiquem onde os erros ocorrem usando uma janela modal de "fornecer feedback negativo".

Para habilitar esse recurso, defina a seguinte variável de ambiente como True:

  • AZURE_COSMOSDB_ENABLE_FEEDBACK: Este é o nome da conta do Cosmos DB que é implantada junto com seu aplicativo Web.
    • Tipo de dados: Tipo de dados: Booleano, deve inserir True ou False

Isso pode ser feito usando as opções de edição avançada ou edição simples, conforme explicado anteriormente. O JSON a ser colado no editor JSON de edição avançada é:

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

Conectando-se ao Azure AI Search e carregando arquivos como uma fonte de dados

Usando o portal do Azure AI Foundry

Siga este tutorial sobre a integração do Azure AI Search com o Azure AI Foundry ou início rápido e reimplante seu aplicativo.

Usando variáveis de ambiente

Para se conectar ao Azure AI Search sem reimplantar seu aplicativo, você pode modificar as seguintes variáveis de ambiente obrigatórias usando qualquer uma das opções de edição, conforme descrito anteriormente.

  • DATASOURCE_TYPE: Isso determina qual fonte de dados usar ao responder às consultas de um usuário.
    • Tipo de dados: texto. Deve ser definido como AzureCognitiveSearch (antigo nome do Azure AI Search)
  • AZURE_SEARCH_SERVICE: Este é o nome da sua instância do Azure AI Search.
    • Tipo de dados: texto
  • AZURE_SEARCH_INDEX: Este é o nome do nome de índice da sua instância do Azure AI Search.
    • Tipo de dados: texto
  • AZURE_SEARCH_KEY: Esta é a chave de autenticação da sua instância do Azure AI Search. Opcional se estiver usando a ID recomendada do Microsoft Entra para autenticação.
    • Tipo de dados: texto

Cenários de personalização adicionais usando variáveis de ambiente

  • AZURE_SEARCH_USE_SEMANTIC_SEARCH: Indica se a pesquisa semântica deve ser usada na Pesquisa de IA do Azure.
    • Tipo de dados: booleano, deve ser definido como False se não estiver usando pesquisa semântica.
  • AZURE_SEARCH_SEMANTIC_SEARCH_CONFIG: Especifica o nome da configuração de pesquisa semântica a ser usada se a pesquisa semântica estiver habilitada.
    • Tipo de dados: texto, padrão para azureml-default.
  • AZURE_SEARCH_INDEX_TOP_K: Define o número de documentos principais a serem recuperados do Azure AI Search.
    • Tipo de dados: inteiro, deve ser definido como 5.
  • AZURE_SEARCH_ENABLE_IN_DOMAIN: Limita as respostas a consultas relacionadas apenas aos seus dados.
    • Tipo de dados: booleano, deve ser definido como True.
  • AZURE_SEARCH_CONTENT_COLUMNS: Especifica a lista de campos em seu índice do Azure AI Search que contêm o conteúdo de texto de seus documentos, usados ao formular uma resposta de bot.
    • Tipo de dados: texto, padrão para content se implantado a partir do portal do Azure AI Foundry,
  • AZURE_SEARCH_FILENAME_COLUMN: Especifica o campo do seu índice do Azure AI Search que fornece um identificador exclusivo dos dados de origem a serem exibidos na interface do usuário.
    • Tipo de dados: texto, padrão para filepath se implantado a partir do portal do Azure AI Foundry,
  • AZURE_SEARCH_TITLE_COLUMN: especifica o campo do seu índice do Azure AI Search que fornece um título ou cabeçalho relevante para o conteúdo de dados a ser exibido na interface do usuário.
    • Tipo de dados: texto, padrão para title se implantado a partir do portal do Azure AI Foundry,
  • AZURE_SEARCH_URL_COLUMN: Especifica o campo do seu índice do Azure AI Search que contém uma URL para o documento.
    • Tipo de dados: texto, padrão para url se implantado a partir do portal do Azure AI Foundry,
  • AZURE_SEARCH_VECTOR_COLUMNS: especifica a lista de campos em seu índice do Azure AI Search que contêm incorporações vetoriais de seus documentos, usadas ao formular uma resposta de bot.
    • Tipo de dados: texto, padrão para contentVector se implantado a partir do portal do Azure AI Foundry,
  • AZURE_SEARCH_QUERY_TYPE: Especifica o tipo de consulta a ser usado: simple, semantic, vector, vectorSimpleHybrid, ou vectorSemanticHybrid. Essa configuração tem precedência sobre AZURE_SEARCH_USE_SEMANTIC_SEARCHo .
    • Tipo de dados: texto, recomendamos testar com vectorSemanticHybrid.
  • AZURE_SEARCH_PERMITTED_GROUPS_COLUMN: especifica o campo do seu índice do Azure AI Search que contém IDs de grupo do Microsoft Entra, determinando o controle de acesso no nível do documento.
    • Tipo de dados: texto
  • AZURE_SEARCH_STRICTNESS: Especifica o nível de rigor para o modelo que limita as respostas aos seus dados.
    • Tipo de dados: inteiro, deve ser definido entre 1 e 5, sendo 3 recomendado.
  • AZURE_OPENAI_EMBEDDING_NAME: Especifica o nome da implantação do modelo de incorporação se estiver usando a pesquisa vetorial.
    • Tipo de dados: texto

O JSON a ser colado no editor JSON de edição avançada é:

{
    "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
  },

Conectando-se ao Prompt Flow como fonte de dados

Os fluxos de prompt permitem que você defina RAG e lógica de processamento altamente personalizáveis nas consultas de um usuário.

Criando e implantando seu fluxo de prompt no portal do Azure AI Foundry

Siga este tutorial para criar, testar e implantar um ponto de extremidade de inferência para seu fluxo de prompt no portal do Azure AI Foundry.

Habilite citações subjacentes a partir do seu fluxo de prompt

Ao configurar seu fluxo de prompt para exibir citações quando integrado a este aplicativo da Web, ele deve retornar duas saídas principais: uma chamada documents (suas citações) e outra chamada (sua resposta em reply linguagem natural).

  1. documents é um objeto JSON, que deve conter os seguintes elementos. citations é uma lista que pode conter vários itens seguindo o mesmo esquema. o objeto deve ser gerado e preenchido documents com base no padrão RAG selecionado.
{
    "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 consiste em uma cadeia de caracteres retornada que representa a linguagem natural final para uma determinada consulta de usuário. Deve reply conter referências a cada um dos documentos (fontes) no seguinte formato: [doc1], [doc2], etc. O aplicativo Web analisará reply e processará as referências, substituindo todas as instâncias de [doc1] por pequenos indicadores numéricos sobrescritos que se vinculam diretamente aos ordenados documents que são retornados. Portanto, você deve solicitar que seu LLM que gera a linguagem natural final inclua essas referências, que também devem ser passadas em sua chamada LLM para garantir que elas se alinhem corretamente. Por exemplo:
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}}
  

Configurando variáveis de ambiente para integrar o fluxo de prompt

As variáveis de ambiente a serem modificadas são:

  • AZURE_OPENAI_STREAM: Isso determina se a resposta é carregada em um formato de streaming (carga incremental). Isso não é suportado para fluxo de prompt e, portanto, deve ser configurado para False usar esse recurso.
    • Tipo de dados: booleano, definido como True se não estiver usando fluxo de prompt, False se estiver usando fluxo de prompt
  • USE_PROMPTFLOW: Indica se um ponto de extremidade implantado de fluxo de prompt existente deve ser usado. Se definido como True, ambos PROMPTFLOW_ENDPOINT e PROMPTFLOW_API_KEY deve ser definido.
    • Tipo de dados: booleano, deve ser definido como False se não estiver usando o fluxo de prompt.
  • PROMPTFLOW_ENDPOINT: Especifica a URL do ponto de extremidade de fluxo de Prompt implantado.
    • Tipo de dados: texto, por exemplo https://pf-deployment-name.region.inference.ml.azure.com/score
  • PROMPTFLOW_API_KEY: A chave de autenticação para o ponto de extremidade de fluxo de Prompt implantado. Nota: apenas a autenticação baseada em chave é suportada.
    • Tipo de dados: texto
  • PROMPTFLOW_RESPONSE_TIMEOUT: Define o valor de tempo limite em segundos para que o ponto de extremidade de fluxo de prompt responda.
    • Tipo de dados: inteiro, deve ser definido como 120.
  • PROMPTFLOW_REQUEST_FIELD_NAME: O nome do campo padrão para construir a solicitação de fluxo de prompt. Nota: chat_history é construído automaticamente com base na interação. Se sua API espera outros campos obrigatórios, você precisará alterar os parâmetros de solicitação sob a promptflow_request função.
    • Tipo de dados: texto, deve ser definido como query.
  • PROMPTFLOW_RESPONSE_FIELD_NAME: O nome do campo padrão para processar a resposta da solicitação de fluxo de Prompt.
    • Tipo de dados: texto, deve ser definido como reply.
  • PROMPTFLOW_CITATIONS_FIELD_NAME: O nome do campo padrão para processar a saída de citações da solicitação de fluxo de prompt.
    • Tipo de dados: texto, deve ser definido como documents.

Ligar a outras origens de dados

Outras fontes de dados são suportadas, incluindo:

  • Azure Cosmos DB
  • Elasticsearch
  • Azure SQL Server
  • Pinecone
  • Índice do Azure Machine Learning

Para obter mais instruções sobre como habilitar essas fontes de dados, consulte o repositório GitHub.

Atualizar a aplicação Web para incluir as alterações mais recentes

Nota

A partir de 1º de fevereiro de 2024, o aplicativo Web exige que o comando de inicialização do aplicativo seja definido como python3 -m gunicorn app:app. Ao atualizar um aplicativo publicado antes de 1º de fevereiro de 2024, você precisa adicionar manualmente o comando de inicialização na página Configuração do Serviço de Aplicativo.

Recomendamos extrair as alterações da ramificação para o código-fonte do aplicativo Web com frequência para garantir que você tenha as correções de bugs mais recentes, a versão da main API e as melhorias. Além disso, o aplicativo Web deve ser sincronizado sempre que a versão da API que você está usando for desativada. Considere selecionar o botão Watch ou Star no repositório GitHub do aplicativo Web para ser notificado sobre alterações e atualizações no código-fonte.

Se você não personalizou o aplicativo Web, pode usar estas etapas para sincronizá-lo:

  1. Aceda à sua aplicação Web no portal do Azure.

  2. No menu à esquerda, em Implantação, selecione Centro de Implantação.

  3. Selecione Sincronizar na parte superior do painel e confirme se o aplicativo será reimplantado.

    Uma captura de tela do botão de sincronização do aplicativo Web no portal do Azure.

Se você personalizou ou alterou o código-fonte do aplicativo, precisará atualizar o código-fonte do aplicativo manualmente e reimplantá-lo:

  • Se seu aplicativo estiver hospedado no GitHub, envie as alterações de código para o repositório e use as etapas de sincronização anteriores.
  • Se você estiver reimplantando o aplicativo manualmente (por exemplo, usando a CLI do Azure), siga as etapas para sua estratégia de implantação.

Excluindo sua instância do Cosmos DB

A exclusão do aplicativo Web não exclui automaticamente a instância do Cosmos DB. Para excluir sua instância do Cosmos DB junto com todos os chats armazenados, você precisa ir para o recurso associado no portal do Azure e excluí-lo. Se você excluir o recurso do Cosmos DB, mas mantiver a opção de histórico de bate-papo selecionada em atualizações subsequentes do portal do Azure AI Foundry, o aplicativo notificará o usuário sobre um erro de conexão. No entanto, o usuário pode continuar a usar o aplicativo Web sem acesso ao histórico de bate-papo.

Habilitando a autenticação do Microsoft Entra ID entre serviços

Para habilitar a ID do Microsoft Entra para autenticação dentro do serviço para seu aplicativo Web, siga estas etapas.

Habilite a identidade gerenciada em seu recurso do Azure OpenAI e no Serviço de Aplicativo do Azure

Você pode habilitar a identidade gerenciada para o recurso OpenAI do Azure e o Serviço de Aplicativo do Azure navegando até "Identidade" e ativando a identidade gerenciada atribuída ao sistema no portal do Azure para cada recurso.

Captura de tela que mostra a configuração de identidade do aplicativo no portal do Azure.

Nota

Se você estiver usando um modelo de incorporação implantado no mesmo recurso usado para inferência, só precisará habilitar a identidade gerenciada em um recurso do Azure OpenAI. Se estiver usando um modelo de incorporação implantado em um recurso diferente daquele usado para inferência, você também precisará habilitar a identidade gerenciada no recurso OpenAI do Azure usado para implantar seu modelo de incorporação.

Habilitar o controle de acesso baseado em função (RBAC) em seu recurso de Pesquisa do Azure (opcional)

Se estiver usando On Your Data with Azure Search, siga esta etapa.

Para habilitar seu recurso do Azure OpenAI para acessar seu recurso de Pesquisa do Azure, você precisa habilitar o controle de acesso baseado em função em seu recurso de Pesquisa do Azure. Saiba mais sobre como habilitar funções RBAC para seus recursos.

Atribuir funções RBAC para habilitar a comunicação intra-serviço

A tabela a seguir resume as atribuições de função RBAC necessárias para todos os recursos do Azure associados ao seu aplicativo.

Role Cessionário Recurso
Search Index Data Reader Azure OpenAI (Inferência) Pesquisa de IA do Azure
Search Service Contributor Azure OpenAI (Inferência) Pesquisa de IA do Azure
Cognitive Services OpenAI User Aplicação Web Azure OpenAI (Inferência)
Cognitive Services OpenAI User Azure OpenAI (Inferência) Azure OpenAI (Incorporações)

Para atribuir essas funções, siga estas instruções para criar as atribuições de função necessárias.

Alterações nas configurações do aplicativo

Nas configurações do aplicativo webapp, navegue até "Variáveis de ambiente" e faça as seguintes alterações:

  • Remova a variável AZURE_OPENAI_KEYde ambiente , pois ela não é mais necessária.
  • Se estiver usando On Your Data with Azure Search e estiver usando a autenticação do Microsoft Entra ID entre o Azure OpenAI e o Azure Search, você também deverá excluir as variáveis de AZURE_SEARCH_KEY ambiente para as chaves de acesso da fonte de dados.

Se estiver usando um modelo de incorporação implantado no mesmo recurso que o modelo usado para inferência, não serão necessárias outras alterações de configurações.

No entanto, se você estiver usando um modelo de incorporação implantado em um recurso diferente, faça as seguintes alterações adicionais nas variáveis de ambiente do seu aplicativo:

  • Defina AZURE_OPENAI_EMBEDDING_ENDPOINT a variável como o caminho completo da API de incorporação para o recurso que você está usando para incorporações, por exemplo, https://<your Azure OpenAI Service resource name>.openai.azure.com/openai/deployments/<your embedding deployment name>/embeddings
  • Exclua a variável para usar a AZURE_OPENAI_EMBEDDING_KEY autenticação do Microsoft Entra ID.

Quando todas as alterações de variáveis de ambiente forem concluídas, reinicie o webapp para começar a usar a autenticação do Microsoft Entra ID entre serviços no webapp. Levará alguns minutos após a reinicialização para que quaisquer alterações de configurações entrem em vigor.