Usar o aplicativo Web de OpenAI do Azure

Juntamente com o IA do Azure Studio, o Azure OpenAI Studio, as APIs e os SDKs, você pode usar o aplicativo Web autônomo personalizável para interagir com os modelos do Azure OpenAI usando uma interface gráfica do usuário. Os principais recursos incluem:

  • Conectividade com diversas fontes de dados para dar suporte a consultas avançadas e geração aumentada de recuperação, incluindo IA do Azure Search, Prompt Flow e muito mais.
  • Histórico de conversas e coleta de comentários do usuário por meio do Cosmos DB.
  • Autenticação com controle de acesso baseado em função via Microsoft Entra ID.
  • Personalização da interface do usuário, fontes de dados e recursos usando variáveis ​​de ambiente (sem código via portal do Azure).
  • Suporte para modificar o código-fonte do aplicativo Web subjacente como um repositório de código aberto.

Você pode implantar o aplicativo usando IA do Azure Studio ou Azure OpenAI Studio, ou por meio de uma implantação manual por meio do portal do Azure ou do Azure Developer CLI 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 no Azure OpenAI que desejam conversar com seus dados por meio do aplicativo Web, o IA do Azure Studio é 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

  • Esse aplicativo da web e muitos de seus recursos estão em versão prévia, o que significa que podem ocorrer bugs e nem todos os recursos podem estar completos. 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 na sua assinatura. Isso pode acarretar custos, dependendo do plano de preços que você selecionar. Quando terminar de usar seu aplicativo, você poderá excluí-lo e quaisquer recursos associados do portal do Azure.
  • Os modelos GPT-4 Turbo com Vision 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. Acesse para o portal do Azure e pesquise o nome do aplicativo especificado durante a publicação. Selecione o aplicativo Web e selecione Autenticação no menu à esquerda. Selecione Adicionar provedor de identidade.

      Captura de tela da página de autenticação no portal do Azure.

    2. Selecione Microsoft como provedor de identidade. As configurações padrão nessa página restringem o aplicativo apenas ao seu locatário, portanto, não será necessário alterar mais nada aqui. Selecione Adicionar.

Agora, os usuários serão solicitados a entrar com sua conta do Microsoft Entra para poder 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 outra maneira além de verificar se ele é membro do seu locatário. Para obter mais informações sobre como gerenciar a autenticação, consulte esse guia de início rápido sobre autenticação para aplicativos Web no Serviço de Aplicativo do Azure.

Personalizando o aplicativo usando variáveis ​​de ambiente

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

Essas variáveis ​​ambientais podem ser modificadas através do portal do Azure após a implantação da aplicação web.

  1. No portal do Azure, procure e selecione a página Serviços de Aplicativos.
  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:

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

  • Atualizando as configurações de aplicativo para cada um dos aplicativos implantados para usar novas chaves de API depois de girar as chaves para o recurso do OpenAI do Azure ou da Pesquisa de IA do Azure.

O código-fonte de amostra do aplicativo Web está disponível no GitHub. O código-fonte é fornecido "como está" e apenas como uma amostra. Os clientes são responsáveis por toda a personalização e implementação de seus aplicativos Web.

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: Esse é o texto do parágrafo menor mostrado abaixo do UI_CHAT_TITLE no centro da página durante o carregamento.
    • Tipo de dados: texto
  • UI_CHAT_LOGO: Essa é a imagem grande mostrada no centro da página durante o carregamento.
    • Tipo de dados: URL para imagem
  • UI_CHAT_TITLE: Esse é o texto grande mostrado no centro da página durante o carregamento.
    • Tipo de dados: texto
  • UI_FAVICON: Esse é o favicon mostrado na janela/guia do navegador.
    • Tipo de dados: URL para imagem
  • UI_LOGO: Esse logotipo aparece no canto superior esquerdo da página e à esquerda do título.
    • Tipo de dados: URL para imagem
  • UI_TITLE: Esse é o título mostrado na janela/guia do navegador. Ele também aparece no canto superior esquerdo da página junto ao logotipo.
    • Tipo de dados: texto
  • UI_SHOW_SHARE_BUTTON: Esse botão aparece no canto superior direito da página e permite que os usuários compartilhem um URL com link para o aplicativo da 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: Isso 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 da 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
  },

Habilitando o histórico de chat usando o Cosmos DB

Você pode habilitar o histórico de chat para seus usuários do aplicativo Web. Quando você ativa o recurso, os usuários têm acesso a suas consultas e respostas individuais anteriores.

Para ativar o histórico de chat, implante ou reimplante seu modelo como um aplicativo Web usando Azure OpenAI Studio ou IA do Azure Studio e selecione Habilitar histórico de chat e comentários do usuário no aplicativo Web.

Captura de tela da caixa de seleção para habilitar o histórico de chat no Azure OpenAI ou no IA do Azure Studio.

Importante

Ativar o histórico de chat cria uma instância do Azure Cosmos DB ​​no seu grupo de recursos e incorre em custos adicionais pelo armazenamento que você usa além de quaisquer níveis gratuitos.

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

Observação

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 Leste dos EUA 2, ou tente novamente a implantação até obter sucesso. Caso a implantação do Cosmos DB falhe, a sua aplicação estará disponível no URL especificado, mas o histórico de chat não estará disponível. Habilitar o histórico de conversas também habilitará o botão visualizar histórico de conversas no canto superior direito.

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

  • AZURE_COSMOSDB_ACCOUNT: Esse é o nome da conta do Cosmos DB implantada junto com seu aplicativo Web.
    • Tipo de dados: texto
  • AZURE_COSMOSDB_ACCOUNT_KEY: Essa é uma variável de ambiente alternativa que é usada somente quando as permissões não são concedidas por meio do Microsoft Entra ID e, em vez disso, é usada a autenticação baseada em chave.
    • Tipo de dados: texto. Normalmente não está presente ou preenchido.
  • AZURE_COSMOSDB_DATABASE: Esse é 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: Esse é o nome do objeto 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: Esse é o nome da conta do Cosmos DB implantada junto com seu aplicativo Web.
    • Tipo de dados: texto

Captura de tela do histórico do chat no aplicativo Web.

Coletando feedback do usuário

Para coletar feedback do usuário, você pode habilitar 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 ocorrem erros usando uma janela modal “fornecer feedback negativo”.

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

  • AZURE_COSMOSDB_ENABLE_FEEDBACK: Esse é o nome da conta do Cosmos DB 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 para colar no editor JSON de edição avançada é:

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

Conectando-se ao IA do Azure Search e arquivos carregados como fonte de dados

Usar o Estúdio de IA do Azure

Siga esse tutorial sobre como integrar o IA do Azure I Search ao AI Studio e reimplante seu aplicativo.

Usando o Azure OpenAI Studio

Siga esse tutorial sobre a integração do IA do Azure Search com o OpenAI Studio e reimplante seu aplicativo.

Usando variáveis de ambiente

Para ligar-se ao IA do Azure Search sem reimplantar a sua aplicação, pode modificar as seguintes variáveis ​​ambientais obrigatórias utilizando qualquer uma das opções de edição descritas 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 IA do Azure Search)
  • AZURE_SEARCH_SERVICE: Esse é o nome da sua instância do IA do Azure Search.
    • Tipo de dados: texto
  • AZURE_SEARCH_INDEX: Esse é o nome do índice da sua instância do IA do Azure Search.
    • Tipo de dados: texto
  • AZURE_SEARCH_KEY: Essa é a chave de autenticação da sua instância do IA do Azure Search. Opcional se estiver usando o Microsoft Entra ID para autenticação.
    • Tipo de dados: texto

Outros cenários de personalização usando variáveis ​​de ambiente

  • AZURE_SEARCH_USE_SEMANTIC_SEARCH: Indica se deve ser usada a pesquisa semântica no IA do Azure Search.
    • 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 procura semântica a ser usada se a procura semântica estiver habilitada.
    • Tipo de dados: texto, o padrão é azureml-default.
  • AZURE_SEARCH_INDEX_TOP_K: Define o número de documentos principais a serem recuperados do IA do Azure 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 no índice do IA do Azure Search que contém o conteúdo de texto dos seus documentos, usados ​​ao formular uma resposta de bot.
    • Tipo de dados: texto, o padrão é content se implantado no IA do Azure Studio ou no Azure OpenAI Studio,
  • AZURE_SEARCH_FILENAME_COLUMN: Especifica o campo do índice do IA do Azure Search que fornece um identificador exclusivo dos dados de origem a serem exibidos na UI.
    • Tipo de dados: texto, o padrão é filepath se implantado no IA do Azure Studio ou no Azure OpenAI Studio,
  • AZURE_SEARCH_TITLE_COLUMN: Especifica o campo do índice do IA do Azure Search que fornece um título ou cabeçalho relevante para o conteúdo dos seus dados exibir na UI.
    • Tipo de dados: texto, o padrão é title se implantado no IA do Azure Studio ou no Azure OpenAI Studio,
  • AZURE_SEARCH_URL_COLUMN: Especifica o campo do índice do IA do Azure Search que contém uma URL para o documento.
    • Tipo de dados: texto, o padrão é url se implantado no IA do Azure Studio ou no Azure OpenAI Studio,
  • AZURE_SEARCH_VECTOR_COLUMNS: Especifica a lista de campos no índice do IA do Azure Search que contém incorporações vetoriais dos seus documentos, usados ​​ao formular uma resposta de bot.
    • Tipo de dados: texto, o padrão é contentVector se implantado no IA do Azure Studio ou no Azure OpenAI Studio,
  • 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_SEARCH.
    • Tipo de dados: texto, recomendamos testar com vectorSemanticHybrid.
  • AZURE_SEARCH_PERMITTED_GROUPS_COLUMN: Especifica o campo do índice do IA do Azure Search que contém IDs de grupo 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 do 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 busca em vetores.
    • Tipo de dados: texto

O JSON para colar 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 Prompt flows permitem definir RAG altamente personalizáveis ​​e lógica de processamento nas consultas de um usuário.

Criando e implantando seu prompt flow no IA do Azure Studio

Siga esse tutorial para criar, testar e implantar um ponto de extremidade de inferência para seu prompt flow no IA do Azure Studio.

Habilite citações subjacentes em seu prompt flow

Ao configurar seu prompt flow para exibir citações quando integrado a esse aplicativo da web, ele deve retornar duas saídas principais: uma chamada documents (suas citações) e outra chamada reply (sua resposta em 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 documents deve ser gerado e preenchido 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 do usuário. Seu reply deve conter referências a cada um dos documentos (fontes) no seguinte formato: [doc1], [doc2], etc. O aplicativo da web analisará reply e processará as referências, substituindo todas as instâncias de [doc1] por pequenos indicadores numéricos sobrescritos vinculados diretamente ao documents ordenado que é retornado. Portanto, você deve solicitar ao seu LLM que gera a linguagem natural final para incluir essas referências, que também devem ser passadas em sua chamada de LLM para garantir que elas estejam alinhadas 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 prompt flow

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

  • AZURE_OPENAI_STREAM: Isso determina se a resposta será carregada em formato de streaming (carga incremental). Isso não é suportado para prompt flow e, portanto, deve ser definido como False para usar esse recurso.
    • Tipo de dados: booleano, definido como True se não estiver usando o prompt flow, False se estiver usando o prompt flow
  • USE_PROMPTFLOW: Indica se deve ser usado um ponto de extremidade implementado de Prompt flow existente. Se definido como True PROMPTFLOW_ENDPOINT e PROMPTFLOW_API_KEY deverão ser definidos.
    • Tipo de dados: booleano, deve ser definido como False se não estiver usando o prompt flow.
  • PROMPTFLOW_ENDPOINT: Especifica a URL do ponto de prompt flow implementado.
    • 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 do Prompt flow implementado. Nota: apenas a autenticação baseada em chave é suportada.
    • Tipo de dados: texto
  • PROMPTFLOW_RESPONSE_TIMEOUT: Define o valor do tempo limite em segundos para que o ponto de extremidade do prompt flow 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 do Prompt. Observação: 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 na função promptflow_request.
    • 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 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 Prompt.
    • Tipo de dados: texto, deve ser definido como documents.

Como conectar-se a outras fontes de dados

Outras fontes de dados são suportadas, incluindo:

  • Azure Cosmos DB
  • Elasticsearch
  • Azure SQL Server
  • Pinecone
  • Índice de aprendizado de máquina do Azure

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

Atualizando o aplicativo da web para incluir as alterações mais recentes

Observação

Após 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 da página Configuração do Serviço de Aplicativo.

Recomendamos efetuar pull de alterações do branch main para o código-fonte do aplicativo Web com frequência para garantir que você tenha as correções de bug, versão de API e aprimoramentos mais recentes. Além disso, será necessário sincronizar o aplicativo Web sempre que a versão da API usada for desativada. Clique nos botões de Inspeção ou de Estrela no repositório GitHub do aplicativo Web para ser notificado sobre as alterações e atualizações no código-fonte.

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

  1. No portal do Azure, vá para seu aplicativo web.

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

  3. Selecione Sincronizar na parte superior da tela e confirme se o aplicativo será reimplantado.

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

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

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

Excluindo sua instância do Cosmos DB

Excluir seu aplicativo Web não exclui sua instância do Cosmos DB automaticamente. Para excluir a sua instância do Cosmos DB, juntamente com todos os chats armazenados, é necessário navegar até ao recurso relacionado no portal do Azure e exclui-lo. Caso exclua o recurso do Cosmos DB, mas manter a opção de histórico de chat selecionada nas atualizações subsequentes do Estúdio OpenAI do Azure, o aplicativo notificará o usuário de um erro de conexão. No entanto, o usuário pode continuar a usar o aplicativo Web sem acesso ao histórico de chat.

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

Para habilitar o Microsoft Entra ID para autenticação entre serviços para seu aplicativo Web, siga estas etapas.

Habilitar a identidade gerenciada no recurso do OpenAI do Azure e no Serviço de Aplicativo do Azure

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

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

Observação

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

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

Caso esteja usando On Your Data com o Azure Search, siga esta etapa.

Para habilitar o recurso do OpenAI do Azure para acessar o recurso do Azure Search, habilite o controle de acesso baseado em função no recurso do Azure Search. Saiba mais sobre como habilitar funções do RBAC para seus recursos.

Atribuir funções do RBAC para habilitar a comunicação entre serviços

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

Função Atribuição Recurso
Search Index Data Reader OpenAI do Azure (Inferência) Azure AI Search
Search Service Contributor OpenAI do Azure (Inferência) Azure AI Search
Cognitive Services OpenAI User Aplicativo Web OpenAI do Azure (Inferência)
Cognitive Services OpenAI User OpenAI do Azure (Inferência) OpenAI do Azure (Inserçõ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 de ambiente AZURE_OPENAI_KEY, pois ela não é mais necessária.
  • Caso esteja usando On Your Data com o Azure Search e esteja usando a autenticação do Microsoft Entra ID entre o OpenAI do Azure e o Azure Search, você também deverá excluir as variáveis de ambiente AZURE_SEARCH_KEY para as chaves de acesso da fonte de dados.

Caso esteja usando um modelo de inserção implantado no mesmo recurso que o modelo usado para inferência, não haverá nenhuma outra alteração de configuração necessária.

No entanto, caso esteja usando um modelo de inserção implantado em um recurso diferente, faça as seguintes alterações extras nas variáveis de ambiente do aplicativo:

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

Após concluir todas as alterações da variável de ambiente, reinicie o aplicativo Web para começar a usar a autenticação do Microsoft Entra ID entre os serviços no aplicativo Web. Levará alguns minutos após a reinicialização para que as alterações de configuração entrem em vigor.