Esta solução cria uma experiência de front-end semelhante ao ChatGPT em seus próprios documentos usando RAG (Retrieval Augmented Generation). Ele usa o Azure OpenAI Service para acessar modelos GPT e o Azure AI Search para indexação e recuperação de dados.
O backend desta solução é escrito em Python. Existem também exemplos de JavaScript , .NET e Java baseados neste. Saiba mais sobre o desenvolvimento de aplicações de IA utilizando os Serviços de IA do Azure.
Assista a uma visão geral em vídeo do aplicativo.
Este exemplo demonstra algumas abordagens para criar experiências semelhantes ao ChatGPT sobre seus próprios dados usando o padrão Retrieval Augmented Generation. Ele usa o serviço Azure OpenAI para acessar um modelo GPT (gpt-35-turbo) e o Azure AI Search para indexação e recuperação de dados.
O repositório inclui dados de amostra para que esteja pronto para ser testado de ponta a ponta. Neste aplicativo de exemplo, usamos uma empresa fictícia chamada Contoso Electronics, e a experiência permite que seus funcionários façam perguntas sobre benefícios, políticas internas, bem como descrições de cargos e funções.
IMPORTANTE: Para implantar e executar este exemplo, você precisará de:
Microsoft.Authorization/roleAssignments/write
, como Administrador de Controle de Acesso Baseado em Função, Administrador de Acesso de Usuário ou Proprietário. Se não tiver permissões de nível de assinatura, você deverá receber o RBAC para um grupo de recursos existente e implantar nesse grupo existente.Microsoft.Resources/deployments/write
no nível da assinatura.Os preços variam de acordo com a região e o uso, por isso não é possível prever os custos exatos do seu uso. No entanto, você pode experimentar a calculadora de preços do Azure para os recursos abaixo.
Para reduzir custos, você pode mudar para SKUs gratuitos para vários serviços, mas esses SKUs têm limitações. Consulte este guia sobre implantação com custos mínimos para obter mais detalhes.
azd down
.
Você tem algumas opções para configurar este projeto. A maneira mais fácil de começar é GitHub Codespaces, pois ele configurará todas as ferramentas para você, mas você também pode configurá-lo localmente, se desejar.
Você pode executar este repositório virtualmente usando GitHub Codespaces, que abrirá um VS Code baseado na web em seu navegador:
Assim que o codespace abrir (isso pode levar vários minutos), abra uma janela do terminal.
Uma opção relacionada é o VS Code Dev Containers, que abrirá o projeto em seu VS Code local usando a extensão Dev Containers:
Inicie o Docker Desktop (instale-o se ainda não estiver instalado)
Abra o projeto:
Na janela do VS Code que é aberta, assim que os arquivos do projeto aparecerem (isso pode levar vários minutos), abra uma janela de terminal.
Instale as ferramentas necessárias:
python --version
no console. No Ubuntu, pode ser necessário executar sudo apt install python-is-python3
para vincular python
a python3
.pwsh.exe
em um terminal do PowerShell. Se isso falhar, você provavelmente precisará atualizar o PowerShell.Crie uma nova pasta e mude para ela no terminal.
Execute este comando para baixar o código do projeto:
azd init -t azure-search-openai-demo
Observe que este comando inicializará um repositório git, portanto você não precisa clonar este repositório.
As etapas abaixo provisionarão recursos do Azure e implantarão o código do aplicativo nos Aplicativos de Contêiner do Azure. Em vez disso, para implantar no Serviço de Aplicativo do Azure, siga o guia de implantação do serviço de aplicativo.
Faça login em sua conta do Azure:
azd auth login
Para usuários do GitHub Codespaces, se o comando anterior falhar, tente:
azd auth login --use-device-code
Crie um novo ambiente azd:
azd env new
Insira um nome que será usado para o grupo de recursos. Isso criará uma nova pasta na pasta .azure
e a definirá como o ambiente ativo para quaisquer chamadas para azd
daqui para frente.
(Opcional) Este é o ponto onde você pode personalizar a implantação definindo variáveis de ambiente, para usar recursos existentes, habilitar recursos opcionais (como autenticação ou visão) ou implantar em níveis gratuitos.
Execute azd up
- Isso provisionará recursos do Azure e implantará esse exemplo nesses recursos, incluindo a construção do índice de pesquisa com base nos arquivos encontrados na pasta ./data
.
azd down
ou excluir os recursos manualmente para evitar gastos desnecessários.Após a implantação bem-sucedida do aplicativo, você verá uma URL impressa no console. Clique nesse URL para interagir com o aplicativo em seu navegador. Será parecido com o seguinte:
NOTA: Pode levar de 5 a 10 minutos depois de ver 'SUCESSO' para que o aplicativo seja totalmente implantado. Se você vir uma tela de boas-vindas do "Desenvolvedor Python" ou uma página de erro, espere um pouco e atualize a página.
Se apenas alterou o código backend/frontend na pasta app
, não precisa de reprovisionar os recursos do Azure. Você pode simplesmente executar:
azd deploy
Se você alterou os arquivos de infraestrutura ( infra
pasta ou azure.yaml
), precisará reprovisionar os recursos do Azure. Você pode fazer isso executando:
azd up
Para conceder a outra pessoa acesso a um ambiente existente e completamente implantado, você ou essa pessoa podem seguir estas etapas:
azd init -t azure-search-openai-demo
ou clone este repositório.azd env refresh -e {environment name}
Eles precisarão do nome do ambiente azd, do ID da assinatura e do local para executar este comando. Você pode encontrar esses valores no arquivo .azure/{env name}/.env
. Isso preencherá o arquivo .env
do ambiente azd com todas as configurações necessárias para executar o aplicativo localmente.AZURE_PRINCIPAL_ID
nesse arquivo .env
ou no shell ativo para seu ID do Azure, que eles podem obter com az ad signed-in-user show
../scripts/roles.ps1
ou .scripts/roles.sh
para atribuir todas as funções necessárias ao usuário. Se eles não tiverem a permissão necessária para criar funções na assinatura, talvez seja necessário executar este script para eles. Depois que o script for executado, eles poderão executar o aplicativo localmente. Você só pode executar localmente depois de executar com êxito o comando azd up
. Se ainda não o fez, siga as etapas de implantação acima.
azd auth login
app
./start.ps1
ou ./start.sh
ou execute "Tarefa do VS Code: Iniciar aplicativo" para iniciar o projeto localmente.Veja mais dicas no guia de desenvolvimento local.
Uma vez no aplicativo da web:
Para limpar todos os recursos criados por este exemplo:
azd down
y
y
O grupo de recursos e todos os recursos serão excluídos.
Além das dicas abaixo, você encontra extensa documentação na pasta docs.
Depois de implantar o aplicativo com sucesso, você pode começar a personalizá-lo de acordo com suas necessidades: alterando o texto, ajustando os prompts e substituindo os dados. Consulte o guia de personalização do aplicativo, bem como o guia de ingestão de dados para obter mais detalhes.
Por padrão, os aplicativos implantados usam o Application Insights para o rastreamento de cada solicitação, juntamente com o log de erros.
Para ver os dados de desempenho, vá ao recurso Application Insights no seu grupo de recursos, clique na folha "Investigar -> Desempenho" e navegue até qualquer pedido HTTP para ver os dados de tempo. Para inspecionar o desempenho das solicitações de chat, use o botão "Drill into Samples" para ver rastreamentos completos de todas as chamadas de API feitas para qualquer solicitação de chat:
Para ver quaisquer exceções e erros de servidor, navegue até a folha "Investigar -> Falhas" e use as ferramentas de filtragem para localizar uma exceção específica. Você pode ver os rastreamentos de pilha do Python no lado direito.
Você também pode ver resumos de gráficos em um painel executando o seguinte comando:
azd monitor
Este exemplo foi projetado para ser um ponto de partida para seu próprio aplicativo de produção, mas você deve fazer uma revisão completa da segurança e do desempenho antes de implantar na produção. Leia nosso guia de produção para obter mais detalhes.
Aqui estão os cenários e soluções de falha mais comuns:
A assinatura ( AZURE_SUBSCRIPTION_ID
) não tem acesso ao serviço Azure OpenAI. Certifique-se de que AZURE_SUBSCRIPTION_ID
corresponda ao ID especificado no processo de solicitação de acesso OpenAI.
Você está tentando criar recursos em regiões não habilitadas para Azure OpenAI (por exemplo, Leste dos EUA 2 em vez de Leste dos EUA) ou onde o modelo que você está tentando usar não está habilitado. Veja esta matriz de disponibilidade do modelo.
Você excedeu uma cota, geralmente o número de recursos por região. Consulte este artigo sobre cotas e limites.
Você está recebendo conflitos de "mesmo nome de recurso não permitido". Provavelmente, isso ocorre porque você executou o exemplo várias vezes e excluiu os recursos que estava criando a cada vez, mas está se esquecendo de eliminá-los. O Azure mantém os recursos por 48 horas, a menos que você limpe da exclusão reversível. Consulte este artigo sobre como limpar recursos.
Você vê CERTIFICATE_VERIFY_FAILED
quando o script prepdocs.py
é executado. Isso normalmente ocorre devido à configuração incorreta de certificados SSL em sua máquina. Experimente as sugestões nesta resposta do StackOverflow.
Depois de executar azd up
e visitar o site, você verá a mensagem '404 Not Found' no navegador. Aguarde 10 minutos e tente novamente, pois ele ainda pode estar inicializando. Em seguida, tente executar azd deploy
e aguarde novamente. Se ainda encontrar erros com a aplicação implementada e estiver a implementar no Serviço de Aplicações, consulte o guia sobre depuração de implementações do Serviço de Aplicações. Registre um problema se os logs não ajudarem a resolver o erro.
Este é um exemplo criado para demonstrar as capacidades dos aplicativos modernos de IA generativa e como eles podem ser criados no Azure. Para obter ajuda com a implantação deste exemplo, poste em GitHub Issues. Se você é funcionário da Microsoft, também pode postar em nosso canal Teams.
Este repositório é suportado pelos mantenedores, não pelo Suporte da Microsoft, portanto, use os mecanismos de suporte descritos acima e faremos o possível para ajudá-lo.
Observação: os documentos PDF usados nesta demonstração contêm informações geradas usando um modelo de linguagem (Azure OpenAI Service). As informações contidas nestes documentos são apenas para fins de demonstração e não refletem as opiniões ou crenças da Microsoft. A Microsoft não faz representações ou garantias de qualquer tipo, expressas ou implícitas, sobre a integridade, precisão, confiabilidade, adequação ou disponibilidade com relação às informações contidas neste documento. Todos os direitos reservados à Microsoft.