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.
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:
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.
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.
- No portal do Azure, procure e selecione a página Serviços de Aplicativo.
- Selecione o aplicativo Web que você acabou de implantar.
- No menu esquerdo do aplicativo, selecione Configurações > Variáveis de ambiente.
- Para modificar uma variável de ambiente existente, clique em seu nome.
- Para adicionar uma única nova variável de ambiente, clique em Adicionar na barra de menu superior do painel.
- 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 abaixoUI_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.
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
- Tipo de dados: texto, deve ser
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
- Tipo de dados: texto, deve ser
AZURE_COSMOSDB_ACCOUNT
: Este é o nome da conta do Cosmos DB que é implantada junto com seu aplicativo Web.- Tipo de dados: texto
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)
- Tipo de dados: texto. Deve ser definido como
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.
- Tipo de dados: booleano, deve ser definido como
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
.
- Tipo de dados: texto, padrão para
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
.
- Tipo de dados: inteiro, deve ser definido como
AZURE_SEARCH_ENABLE_IN_DOMAIN
: Limita as respostas a consultas relacionadas apenas aos seus dados.- Tipo de dados: booleano, deve ser definido como
True
.
- Tipo de dados: booleano, deve ser definido como
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,
- Tipo de dados: texto, padrão para
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,
- Tipo de dados: texto, padrão para
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,
- Tipo de dados: texto, padrão para
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,
- Tipo de dados: texto, padrão para
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,
- Tipo de dados: texto, padrão para
AZURE_SEARCH_QUERY_TYPE
: Especifica o tipo de consulta a ser usado:simple
,semantic
,vector
,vectorSimpleHybrid
, ouvectorSemanticHybrid
. Essa configuração tem precedência sobreAZURE_SEARCH_USE_SEMANTIC_SEARCH
o .- Tipo de dados: texto, recomendamos testar com
vectorSemanticHybrid
.
- Tipo de dados: texto, recomendamos testar com
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
e5
, sendo3
recomendado.
- Tipo de dados: inteiro, deve ser definido entre
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).
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 preenchidodocuments
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"
}
reply
consiste em uma cadeia de caracteres retornada que representa a linguagem natural final para uma determinada consulta de usuário. Devereply
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 ordenadosdocuments
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 paraFalse
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
- Tipo de dados: booleano, definido como
USE_PROMPTFLOW
: Indica se um ponto de extremidade implantado de fluxo de prompt existente deve ser usado. Se definido comoTrue
, ambosPROMPTFLOW_ENDPOINT
ePROMPTFLOW_API_KEY
deve ser definido.- Tipo de dados: booleano, deve ser definido como
False
se não estiver usando o fluxo de prompt.
- Tipo de dados: booleano, deve ser definido como
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
- Tipo de dados: texto, por exemplo
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
.
- Tipo de dados: inteiro, deve ser definido como
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 apromptflow_request
função.- Tipo de dados: texto, deve ser definido como
query
.
- Tipo de dados: texto, deve ser definido como
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
.
- Tipo de dados: texto, deve ser definido como
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
.
- Tipo de dados: texto, deve ser definido como
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:
Aceda à sua aplicação Web no portal do Azure.
No menu à esquerda, em Implantação, selecione Centro de Implantação.
Selecione Sincronizar na parte superior do painel e confirme se o aplicativo será reimplantado.
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.
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_KEY
de 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.