Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo mostra como implantar e executar o Chat com seu próprio exemplo de dadosusando o código de exemplo para Python. Este aplicativo de chat de exemplo é criado com Python, Serviço OpenAI do Azure e RAG (Geração Aumentada de Recuperação) por meio do Azure AI Search.
O aplicativo fornece respostas para perguntas do usuário sobre os benefícios dos funcionários em uma empresa fictícia. Ele usa o RAG (geração de Retrieval-Augmented) para fazer referência ao conteúdo de arquivos PDF fornecidos, o que pode incluir:
- Um manual de funcionário
- Um documento de visão geral de benefícios
- Uma lista de funções e expectativas da empresa
Analisando esses documentos, o aplicativo pode responder a consultas de linguagem natural com respostas precisas e contextualmente relevantes. Essa abordagem demonstra como você pode usar seus próprios dados para alimentar experiências de chat inteligentes e específicas do domínio com o Azure OpenAI e o Azure AI Search.
Você também aprenderá a definir as configurações do aplicativo para modificar seu comportamento de resposta.
Depois de concluir as etapas neste artigo, você pode começar a personalizar o projeto com seu próprio código. Este artigo faz parte de uma série que orienta você na criação de um aplicativo de chat com o Serviço OpenAI do Azure e o Azure AI Search. Outros artigos da série incluem:
Observação
Este artigo é baseado em um ou mais modelos de aplicativo de IA, que servem como implementações de referência bem mantidas. Esses modelos foram projetados para serem fáceis de implantar e fornecer um ponto de partida confiável e de alta qualidade para criar seus próprios aplicativos de IA.
Arquitetura de aplicativo de exemplo
O diagrama a seguir mostra uma arquitetura simples do aplicativo de chat.
Os principais componentes da arquitetura incluem:
- Um aplicativo Web que hospeda a interface de chat interativa (geralmente criada com o Python Flask ou JavaScript/React) e envia perguntas do usuário para o back-end para processamento.
- Um recurso do Azure AI Search que executa uma pesquisa inteligente em documentos indexados (PDFs, arquivos do Word etc.) e retorna trechos de documento relevantes (partes) para uso em respostas.
- Uma instância do Serviço OpenAI do Azure que:
- Converte documentos e perguntas do usuário em representações de vetor para pesquisa de similaridade semântica.
- Extrai palavras-chave importantes para refinar consultas do Azure AI Search.
- Sintetiza as respostas finais usando os dados recuperados e a consulta do usuário.
O fluxo típico do aplicativo de chat é o seguinte:
- O usuário envia uma pergunta: um usuário insere uma pergunta de linguagem natural por meio da interface do aplicativo Web.
- O Azure OpenAI processa a pergunta: o back-end usa o Azure OpenAI para:
- Gere uma inserção da pergunta usando o modelo text-embedding-ada-002.
- Opcionalmente, extraia palavras-chave para refinar a relevância da pesquisa
- A Pesquisa de IA do Azure recupera dados relevantes: a incorporação ou palavras-chave são usadas para executar uma pesquisa semântica sobre conteúdo indexado (como PDFs) no Azure AI Search.
- Combine os resultados com a pergunta: os trechos de documento mais relevantes (partes) são combinados com a pergunta original do usuário.
- O Azure OpenAI gera uma resposta: a entrada combinada é passada para um modelo GPT (como gpt-35-turbo ou gpt-4), que gera uma resposta com reconhecimento de contexto.
- A resposta é retornada ao usuário: a resposta gerada é exibida na interface de chat.
Pré-requisitos
Um ambiente de contêiner de desenvolvimento está disponível com todas as dependências necessárias para concluir este artigo. Você pode executar o contêiner de desenvolvimento em Codespaces do GitHub (em um navegador) ou localmente usando o Visual Studio Code.
Para usar este artigo, você precisa dos seguintes pré-requisitos:
Uma assinatura do Azure. Criar uma conta gratuita antes de começar.
Permissões de conta do Azure. Sua Conta do Azure deve ter permissões Microsoft.Authorization/roleAssignments/write. Funções como Administrador de Acesso do Usuário ou Proprietário atendem a esse requisito.
Acesso concedido ao Azure OpenAI em sua assinatura do Azure. Na maioria dos casos, você pode criar filtros de conteúdo personalizados e gerenciar níveis de severidade com acesso geral aos modelos do Azure OpenAI. O registro para acesso baseado em aprovação não é necessário para acesso geral. Para obter mais informações, consulte os recursos de Acesso Limitado para serviços de IA do Azure.
Filtro de conteúdo ou modificações de abuso (opcional). Para criar filtros de conteúdo personalizados, alterar os níveis de severidade ou dar suporte ao monitoramento de abuso, você precisa de aprovação formal de acesso. Você pode solicitar acesso concluindo os formulários de registro necessários. Para obter mais informações, consulte Registro para filtros de conteúdo modificados e/ou monitoramento de abuso.
Suporte e solução de problemas de acesso. Para obter acesso à solução de problemas, abra um problema de suporte no repositório GitHub.
Uma conta do GitHub. Necessário para bifurcar o repositório e usar os Codespaces do GitHub ou cloná-lo localmente.
Custo de uso para exemplos de recursos
A maioria dos recursos usados nessa arquitetura se enquadra nos tipos de preços básicos ou baseados em consumo. Isso significa que você paga apenas pelo que usa e os encargos normalmente são mínimos durante o desenvolvimento ou teste.
Para concluir este exemplo, pode haver um pequeno custo incorrido com o uso de serviços como Azure OpenAI, AI Search e armazenamento. Quando terminar de avaliar ou implantar o aplicativo, você poderá excluir todos os recursos provisionados para evitar encargos contínuos.
Para obter uma análise detalhada dos custos esperados, consulte a estimativa de custo no repositório GitHub para o exemplo.
Abrir o ambiente de desenvolvimento
Comece configurando um ambiente de desenvolvimento que tenha todas as dependências instaladas para concluir este artigo.
- Uma assinatura do Azure. Crie um gratuitamente.
- Permissões de conta do Azure. Sua Conta do Azure deve ter permissões Microsoft.Authorization/roleAssignments/write. Funções como Administrador de Acesso do Usuário ou Proprietário atendem a esse requisito.
- Uma conta do GitHub. Necessário para bifurcar o repositório e usar os Codespaces do GitHub ou cloná-lo localmente.
Abrir um ambiente de desenvolvimento
Use as instruções a seguir para implantar um ambiente de desenvolvimento pré-configurado contendo todas as dependências necessárias para concluir este artigo.
Para a configuração mais simples e direta, use Codespaces do GitHub. O GitHub Codespaces executa um contêiner de desenvolvimento gerenciado pelo GitHub e fornece o Visual Studio Code para a Web como interface do usuário (interface do usuário). Esse ambiente inclui todas as ferramentas necessárias, SDKs, extensões e dependências pré-instaladas, para que você possa começar a desenvolver imediatamente sem configuração manual.
O uso de codespaces garante:
- As ferramentas e versões corretas do desenvolvedor já estão instaladas.
- Não é necessário instalar o Docker, o VS Code ou as extensões localmente.
- Adoção rápida e configuração de ambiente reproduzível.
Importante
Todas as contas do GitHub podem usar os Codespaces do GitHub por até 60 horas gratuitas por mês com duas instâncias principais. Se você exceder a cota gratuita ou usar opções de computação maiores, as taxas de cobrança padrão dos Codespaces do GitHub serão aplicadas. Para obter mais informações, consulte GitHub Codespaces - armazenamento incluído e horas de núcleo mensais.
Para começar a trabalhar com o projeto de exemplo, crie um novo codespace do GitHub no
mainbranch do repositório doAzure-Samples/azure-search-openai-demoGitHub.Clique com o botão direito do mouse nos Codespaces do GitHub – Abra a opção na parte superior da página do repositório e selecione Abrir link em uma nova janela. Isso garante que o contêiner de desenvolvimento seja iniciado em uma guia de navegador dedicada em tela inteira, fornecendo acesso ao código-fonte e à documentação embutida.
Na página Criar um novo codespace , examine as configurações do codespace e selecione Criar codespace:
Aguarde o início do codespace do GitHub. O processo de inicialização pode levar alguns minutos.
Após abrir o codespace do GitHub, faça login no Azure usando a Azure Developer CLI inserindo o seguinte comando no painel Terminal do codespace:
azd auth loginO GitHub exibe um código de segurança no painel Terminal.
Copie o código de segurança no painel Terminal e selecione Enter. Uma janela do navegador é aberta.
No prompt, cole o código de segurança no campo do navegador.
Siga as instruções para autenticar com sua conta do Azure.
Você concluirá as tarefas restantes do GitHub Codespaces neste artigo no contexto desse contêiner de desenvolvimento.
Implantar aplicativo de chat no Azure
O repositório de exemplo inclui tudo o que você precisa para implantar um Chat com seu próprio aplicativo de dados no Azure, incluindo:
- Código-fonte do aplicativo (Python)
- Arquivos de infraestrutura como código (Bicep)
- Configuração para integração do GitHub e CI/CD (opcional)
Use as etapas a seguir para implantar o aplicativo com a CLI do Desenvolvedor do Azure (azd).
Importante
Os recursos do Azure criados nesta seção, especialmente o Azure AI Search, podem começar a acumular encargos imediatamente após o provisionamento, mesmo que a implantação seja interrompida antes da conclusão. Para evitar encargos inesperados, monitore o uso do Azure e exclua recursos não utilizados imediatamente após o teste.
No painel Terminal do Visual Studio Code, crie os recursos do Azure e implante o código-fonte executando o seguinte
azdcomando:azd upO processo solicita uma ou mais das seguintes configurações com base em sua configuração:
Nome do ambiente: esse valor é usado como parte do nome do grupo de recursos. Insira um nome curto com letras minúsculas e traços (
-), como myenv. Não há suporte para letras maiúsculas, números e caracteres especiais.Assinatura: selecione uma assinatura para criar os recursos. Se você não vir a assinatura desejada, use as teclas de direção para rolar a lista completa de assinaturas disponíveis.
Local: esse local de região é usado para a maioria dos recursos, incluindo hospedagem. Selecione um local de região próximo a você geograficamente.
Local para o modelo openai ou recurso do Document Intelligence: selecione o local mais próximo geograficamente. Se a região selecionada para sua Localização estiver disponível para essa configuração, selecione a mesma região.
Pode levar algum tempo para que o aplicativo seja implantado. Aguarde a implantação ser concluída antes de continuar.
Depois que o aplicativo é implantado com êxito, o painel Terminal exibe uma URL de endpoint:
Selecione a URL do endpoint para abrir o aplicativo de chat em um browser.
Usar o aplicativo de chat para obter respostas de arquivos PDF
O aplicativo de chat é pré-carregado com informações de benefícios dos funcionários de arquivos PDF. Você pode usar o aplicativo de chat para fazer perguntas sobre os benefícios. As etapas a seguir explicam o processo de uso do aplicativo de chat. Suas respostas podem variar conforme os modelos subjacentes são atualizados.
No aplicativo de chat, selecione a opção O que acontece em uma revisão de desempenho? Ou insira o mesmo texto na caixa de texto do chat. O aplicativo retorna a resposta inicial:
Na caixa de resposta, selecione uma citação:
Os Codespaces do GitHub abre o painel Citação à direita com três regiões com guias e o foco está na guia Citação:
O GitHub Codespaces fornece três guias de informações para ajudá-lo a entender como o aplicativo de chat gerou a resposta:
Guia Descrição Processo de Pensamento Exibe um script das interações de pergunta/resposta no chat. Você pode exibir o conteúdo fornecido pelo aplicativo systemde chat, as perguntas inseridas pelo sistema e osuseresclarecimentos feitos pelo sistemaassistant.Suporte ao conteúdo Lista as informações usadas para responder à sua pergunta e ao material de origem. O número de citações de material de origem é especificado pelas configurações do Desenvolvedor. O número padrão de citações é 3. Citação Mostra a origem original contida para a citação selecionada. Quando terminar, selecione a guia atualmente selecionada no painel direito. O painel direito se fecha.
Usar configurações para alterar o comportamento da resposta
O modelo openai específico determina a inteligência do chat e as configurações usadas para interagir com o modelo. A opção Configurações do Desenvolvedor abre o painel Configurar geração de respostas em que você pode alterar as configurações do aplicativo de chat:
| Configuração | Descrição |
|---|---|
| Substituir modelo de prompt | Substitui o prompt usado para gerar a resposta com base na pergunta e nos resultados da pesquisa. |
| Temperatura | Define a temperatura da solicitação para o LLM (modelo de linguagem grande) que gera a resposta. Temperaturas mais altas resultam em respostas mais criativas, mas podem ser menos fundamentadas. |
| Semente | Define uma semente para aprimorar a reprodutibilidade das respostas do modelo. A semente pode ser qualquer número inteiro. |
| Pontuação mínima da pesquisa | Define uma pontuação mínima para os resultados da pesquisa retornados do Azure AI Search. O intervalo de pontuação depende se você usa híbrido (padrão), somente vetores ou texto apenas para a configuração de modo de recuperação . |
| Pontuação mínima do reclassificador | Define uma pontuação mínima para os resultados da pesquisa retornados do reclassificador semântico. A pontuação sempre varia entre 0 e 4. Quanto maior a pontuação, mais semanticamente relevante é o resultado da pergunta. |
| Recuperar muitos resultados da pesquisa | Define o número de resultados da pesquisa a serem recuperados do Azure AI Search. Mais resultados podem aumentar a probabilidade de encontrar a resposta correta, mas podem levar o modelo a ficar "perdido no meio". Você pode ver as fontes retornadas nas guias Processo de Pensamento e Conteúdo de Suporte do painel Citação . |
| Incluir categoria | Especifica as categorias a serem incluídas ao gerar os resultados da pesquisa. Utilize a lista suspensa para fazer sua seleção. A ação padrão é incluir Todas as categorias. |
| Excluir categoria | Especifica todas as categorias a serem excluídas dos resultados da pesquisa. Não há categorias usadas no conjunto de dados padrão. |
| Usar o classificador semântico para recuperação | Habilita o classificador semântico do Azure AI Search, um modelo que reclassificado os resultados da pesquisa com base na similaridade semântica com a consulta do usuário. |
| Usar legendas semânticas | Envia legendas semânticas para o LLM em vez do resultado completo da pesquisa. Uma legenda semântica é extraída de um resultado de pesquisa durante o processo de classificação semântica. |
| Sugerir perguntas de acompanhamento | Pede ao LLM que sugira perguntas de acompanhamento com base na consulta do usuário. |
| Modo de recuperação | Define o modo de recuperação para a consulta da Pesquisa de IA do Azure. A ação padrão é Vectors + Text (Híbrido), que usa uma combinação de pesquisa de vetor e pesquisa de texto completo. A opção Vectors usa apenas a pesquisa de vetor. A opção Texto usa apenas a pesquisa de texto completo. A abordagem híbrida é ideal. |
| Transmitir respostas de conclusão do chat | Transmite continuamente a resposta para a interface do usuário do chat à medida que o conteúdo é gerado. |
As etapas a seguir explicam o processo de alteração das configurações.
No navegador, selecione a opção Configurações do Desenvolvedor .
Selecione a caixa de seleção Sugerir perguntas de acompanhamento para habilitar a opção e selecione Fechar para aplicar a alteração de configuração.
No aplicativo de chat, reassente a pergunta, desta vez inserindo o texto na caixa de perguntas:
What happens in a performance review?A resposta do aplicativo de chat agora inclui perguntas de acompanhamento sugeridas:
Selecione novamente a opção Configurações do Desenvolvedor e desmarque a opção Usar classificador semântico para recuperação. Feche as configurações.
Faça a mesma pergunta novamente e observe a diferença na resposta do aplicativo de chat.
Com o classificador semântico: "Durante uma revisão de desempenho na Contoso Electronics, seu supervisor discutirá seu desempenho no último ano e fornecerá comentários sobre áreas de melhoria. Você também terá a oportunidade de discutir suas metas e objetivos para o próximo ano. A revisão é um diálogo bidirecional entre gerentes e funcionários, e é incentivada para que os funcionários sejam honestos e abertos durante o processo (1). Os comentários fornecidos durante a revisão devem ser positivos e construtivos, visando ajudar os funcionários a desenvolver e crescer em suas funções. Os funcionários receberão um resumo escrito de sua revisão de desempenho, que incluirá uma classificação de desempenho, comentários e metas e objetivos para o próximo ano (1)."
Sem o classificador semântico: "Durante uma revisão de desempenho na Contoso Electronics, seu supervisor discutirá seu desempenho no último ano e fornecerá comentários sobre áreas de melhoria. É um diálogo bidirecional onde você é encorajado a ser honesto e aberto (1). Os comentários fornecidos durante a revisão devem ser positivos e construtivos, visando ajudá-lo a desenvolver e crescer em sua função. Você receberá um resumo escrito da revisão, incluindo uma classificação de desempenho, comentários e metas para o próximo ano (1)."
Limpar recursos
Depois de concluir o exercício, é uma prática recomendada remover todos os recursos que não são mais necessários.
Limpar recursos do Azure
Os recursos do Azure criados neste artigo são cobrados para sua assinatura do Azure. Se você não espera precisar desses recursos no futuro, exclua-os para evitar incorrer em mais encargos.
Exclua os recursos do Azure e remova o código-fonte executando o seguinte azd comando:
azd down --purge --force
As opções de comando incluem:
-
purge: os recursos excluídos são limpos imediatamente. Essa opção permite reutilizar a métrica de TPM (tokens do Azure OpenAI por minuto). -
force: a exclusão ocorre silenciosamente, sem exigir o consentimento do usuário.
Limpar GitHub Codespaces
A exclusão do ambiente GitHub Codespaces garante que você possa maximizar a quantidade de horas gratuitas por núcleo que você tem direito na sua conta.
Importante
Para obter mais informações sobre os direitos da sua conta do GitHub, consulte GitHub Codespaces – armazenamento e horas principais incluídas mensalmente.
Entre no painel do GitHub Codespaces.
No painel, localize seus codespaces em execução atualmente originados do
Azure-Samples/azure-search-openai-demorepositório do GitHub:Abra o menu de contexto do codespace e selecione Excluir:
Obter ajuda
Este repositório de exemplo oferece informações de solução de problemas.
Se o problema não for resolvido, inclua seu problema na página da Web Problemas do repositório.
Conteúdo relacionado
- Obter o código-fonte da amostra usada neste artigo
- Criar um aplicativo de chat com a arquitetura de solução de práticas recomendadas do OpenAI do Azure
- Controle de acesso em aplicativos da IA Generativa com a Pesquisa de IA do Azure
- Criar uma solução OpenAI pronta para empresas com o Gerenciamento de API do Azure
- Superar a busca em vetores com recursos de recuperação e classificação híbridas