Partilhar via


Introdução ao bate-papo usando seu próprio exemplo de dados para .NET

Este artigo mostra como implantar e executar o exemplo de bate-papo com seus próprios dados para .NET. Este exemplo implementa um aplicativo de chat usando C#, Serviço OpenAI do Azure e Geração Aumentada de Recuperação (RAG) na Pesquisa de IA do Azure para obter respostas sobre os benefícios dos funcionários em uma empresa fictícia. O aplicativo de bate-papo de benefícios para funcionários é semeado com arquivos PDF, incluindo um manual do funcionário, um documento de benefícios e uma lista de funções e expectativas da empresa.

Seguindo as instruções neste artigo, você irá:

  • Implante um aplicativo de chat no Azure.
  • Obtenha respostas sobre os benefícios dos funcionários.
  • Altere as configurações para alterar o comportamento das respostas.

Depois de concluir este procedimento, você pode começar a modificar o novo projeto com seu código personalizado.

Este artigo faz parte de uma coleção de artigos que mostram como criar um aplicativo de chat usando o Serviço Azure Open AI e o Azure AI Search.

Outros artigos da coleção incluem:

Descrição geral da arquitetura

Neste aplicativo de exemplo, uma empresa fictícia chamada Contoso Electronics fornece a experiência do aplicativo de bate-papo a seus funcionários para fazer perguntas sobre os benefícios, políticas internas, bem como descrições de cargos e funções.

A arquitetura do aplicativo de bate-papo é mostrada no diagrama a seguir:

Diagrama mostrando a arquitetura do cliente para o aplicativo de back-end.

  • Interface do usuário - A interface de bate-papo do aplicativo é um aplicativo Blazor WebAssembly. Essa interface é o que aceita consultas do usuário, roteia a solicitação para o back-end do aplicativo e exibe as respostas geradas.
  • Back-end - O back-end do aplicativo é um ASP.NET Core Minimal API. O backend hospeda o aplicativo web estático Blazor e é o que orquestra as interações entre os diferentes serviços. Os serviços utilizados nesta aplicação incluem:
    • Azure Cognitive Search – indexa documentos dos dados armazenados em uma Conta de Armazenamento do Azure. Isso torna os documentos pesquisáveis usando recursos de pesquisa vetorial.
    • Azure OpenAI Service – Fornece os Modelos de Linguagem Grande (LLM) para gerar respostas. O Kernel Semântico é usado em conjunto com o Serviço OpenAI do Azure para orquestrar os fluxos de trabalho de IA mais complexos.

Custo

A maioria dos recursos nessa arquitetura usa um nível de preço básico ou de consumo. O preço de consumo é baseado no uso, o que significa que você paga apenas pelo que usa. Para completar este artigo, haverá uma cobrança, mas será mínima. Quando terminar o artigo, você pode excluir os recursos para parar de incorrer em cobranças.

Para obter mais informações, consulte Exemplos do Azure: custo no repositório de exemplo.

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 no GitHub Codespaces (em um navegador) ou localmente usando o Visual Studio Code.

Para acompanhar este artigo, você precisa dos seguintes pré-requisitos:

  • Uma assinatura do Azure - Crie uma gratuitamente
  • Permissões da conta do Azure - Sua Conta do Azure deve ter permissões Microsoft.Authorization/roleAssignments/write, como Administrador de Acesso de Usuário ou Proprietário.
  • Acesso concedido ao Azure OpenAI na subscrição pretendida do Azure. Atualmente, o acesso a este serviço é concedido apenas por pedido. Você pode solicitar acesso ao Azure OpenAI preenchendo o formulário em https://aka.ms/oai/access. Abra um problema neste repositório para entrar em contato conosco se tiver um problema.
  • Conta do GitHub

Ambiente de desenvolvimento aberto

Comece agora com um ambiente de desenvolvimento que tenha todas as dependências instaladas para concluir este artigo.

O GitHub Codespaces executa um contêiner de desenvolvimento gerenciado pelo GitHub com o Visual Studio Code for the Web como interface do usuário. Para o ambiente de desenvolvimento mais simples, use o GitHub Codespaces para que você tenha as ferramentas de desenvolvedor corretas e as dependências pré-instaladas para concluir este artigo.

Importante

Todas as contas do GitHub podem usar o Codespaces por até 60 horas gratuitas por mês com 2 instâncias principais. Para obter mais informações, consulte GitHub Codespaces mensalmente incluído armazenamento e horas principais.

  1. Inicie o processo para criar um novo espaço de código GitHub na main ramificação do Azure-Samples/azure-search-openai-demo-csharp repositório GitHub.

  2. Clique com o botão direito do mouse no botão a seguir e selecione Abrir link em novas janelas para ter o ambiente de desenvolvimento e a documentação disponíveis ao mesmo tempo.

    Abra este projeto no GitHub Codespaces

  3. Na página Criar espaço de código, revise as definições de configuração do espaço de código e selecione Criar novo espaço de código:

    Captura de tela da tela de confirmação antes de criar um novo espaço de código.

  4. Aguarde até que o espaço de código inicie. Este processo de arranque pode demorar alguns minutos.

  5. No terminal na parte inferior da tela, entre no Azure com a CLI do Azure Developer.

    azd auth login
    
  6. Copie o código do terminal e cole-o em um navegador. Siga as instruções para autenticar com sua conta do Azure.

  7. As tarefas restantes neste artigo ocorrem no contexto desse contêiner de desenvolvimento.

Implantar e executar

O repositório de exemplo contém todos os arquivos de código e configuração necessários para implantar um aplicativo de chat no Azure. As etapas a seguir orientam você pelo processo de implantação do exemplo no Azure.

Implantar o aplicativo de chat no Azure

Importante

Os recursos do Azure criados nesta seção incorrem em custos imediatos, principalmente do recurso Azure AI Search. Esses recursos podem acumular custos mesmo se você interromper o comando antes que ele seja totalmente executado.

  1. Execute o seguinte comando da CLI do Desenvolvedor do Azure para provisionar os recursos do Azure e implantar o código-fonte:

    azd up
    
  2. Quando lhe for pedido para introduzir um nome de ambiente, mantenha-o curto e minúsculo. Por exemplo, myenv. É usado como parte do nome do grupo de recursos.

  3. Quando solicitado, selecione uma assinatura para criar os recursos.

  4. Quando lhe for pedido para selecionar uma localização pela primeira vez, selecione uma localização perto de si. Este local é usado para a maioria dos recursos, incluindo hospedagem.

  5. Se for solicitado um local para o modelo OpenAI, selecione um local próximo a você. Se o mesmo local estiver disponível como seu primeiro local, selecione isso.

  6. Aguarde até que o aplicativo seja implantado. Pode levar até 20 minutos para que a implantação seja concluída.

  7. Depois que o aplicativo for implantado com êxito, você verá uma URL exibida no terminal.

  8. Selecione esse URL rotulado Deploying service web para abrir o aplicativo de bate-papo em um navegador.

    Captura de tela do aplicativo de bate-papo no navegador mostrando várias sugestões para entrada de bate-papo e a caixa de texto do bate-papo para inserir uma pergunta.

Use o aplicativo de bate-papo para obter respostas de arquivos PDF

O aplicativo de bate-papo é pré-carregado com informações de benefícios de funcionários de arquivos PDF. Você pode usar o aplicativo de bate-papo para fazer perguntas sobre os benefícios. As etapas a seguir orientam você pelo processo de uso do aplicativo de bate-papo.

  1. No navegador, navegue até a página de bate-papo usando a navegação à esquerda.

  2. Selecione ou digite "O que está incluído no meu plano Northwind Health Plus que não está no padrão?" na caixa de texto do bate-papo. A sua resposta é semelhante à imagem seguinte.

    Captura de ecrã da primeira resposta da aplicação de chat.

  3. Na resposta, selecione uma citação. Será aberta uma janela pop-up exibindo a fonte das informações.

    Captura de tela da primeira resposta do aplicativo de bate-papo com sua citação destacada em uma caixa vermelha.

  4. Navegue entre as guias na parte superior da caixa de resposta para entender como a resposta foi gerada.

    Separador Description
    Processo de pensamento Este é um script das interações no chat. Você pode visualizar o prompt do sistema (content) e sua pergunta de usuário (content).
    Conteúdo de suporte Isso inclui as informações para responder à sua pergunta e o material de origem. O número de citações de material de origem é anotado nas configurações do desenvolvedor. O valor padrão é 3.
    Citação Isso exibe a página de origem que contém a citação.
  5. Quando terminar, navegue de volta para a guia de resposta.

Usar as configurações do aplicativo de bate-papo para alterar o comportamento das respostas

A inteligência do chat é determinada pelo modelo OpenAI e pelas configurações que são usadas para interagir com o modelo.

Captura de tela das configurações do desenvolvedor do bate-papo.

Definição Descrição
Substituir modelo de prompt Este é o prompt que é usado para gerar a resposta.
Recuperar esses muitos resultados de pesquisa Este é o número de resultados de pesquisa que são usados para gerar a resposta. Você pode ver essas fontes retornadas nas guias Processo de pensamento e Conteúdo de suporte da citação.
Excluir categoria Esta é a categoria de documentos excluídos dos resultados da pesquisa.
Usar classificador semântico para recuperação Este é um recurso do Azure AI Search que usa aprendizado de máquina para melhorar a relevância dos resultados da pesquisa.
Modo de recuperação Vetores + Texto significa que os resultados da pesquisa são baseados no texto dos documentos e nas incorporações dos documentos. Vetores significa que os resultados da pesquisa são baseados nas incorporações dos documentos. Texto significa que os resultados da pesquisa se baseiam no texto dos documentos.
Use resumos contextuais de consulta em vez de documentos inteiros Quando ambos Use semantic ranker são Use query-contextual summaries verificados, o LLM usa legendas extraídas de passagens chave, em vez de todas as passagens, nos documentos mais bem classificados.
Sugira perguntas de acompanhamento Peça ao aplicativo de bate-papo que sugira perguntas de acompanhamento com base na resposta.

As etapas a seguir orientam você pelo processo de alteração das configurações.

  1. No navegador, selecione o ícone de engrenagem no canto superior direito da página.

  2. Se não estiver selecionada, marque a caixa de seleção Sugerir perguntas de acompanhamento e faça a mesma pergunta novamente.

    What is included in my Northwind Health Plus plan that is not in standard?
    

    O bate-papo pode retornar com sugestões de perguntas de acompanhamento.

  3. Na guia Configurações, desmarque Usar classificador semântico para recuperação.

  4. Faça a mesma pergunta novamente.

    What is my deductible?
    
  5. Qual é a diferença nas respostas?

    A resposta que usou o ranker semântico forneceu uma única resposta. A resposta sem classificação semântica retornou uma resposta menos direta.

Clean up resources (Limpar recursos)

Limpar recursos do Azure

Os recursos do Azure criados neste artigo são cobrados na sua assinatura do Azure. Se você não espera precisar desses recursos no futuro, exclua-os para evitar incorrer em mais cobranças.

Execute o seguinte comando da CLI do Desenvolvedor do Azure para excluir os recursos do Azure e remover o código-fonte:

azd down --purge

Limpar espaços de código do GitHub

Excluir o ambiente do GitHub Codespaces garante que você possa maximizar a quantidade de direitos de horas gratuitas por núcleo que você obtém para sua conta.

Importante

Para obter mais informações sobre os direitos da sua conta do GitHub, consulte Codespaces do GitHub mensalmente incluídos armazenamento e horas principais.

  1. Entre no painel do GitHub Codespaces (https://github.com/codespaces).

  2. Localize seus espaços de código atualmente em execução provenientes do Azure-Samples/azure-search-openai-demo-csharp repositório GitHub.

    Captura de tela de todos os espaços de código em execução, incluindo seu status e modelos.

  3. Abra o menu de contexto do espaço de código e selecione Excluir.

    Captura de tela do menu de contexto para um único espaço de código com a opção de exclusão realçada.

Obter ajuda

Este repositório de exemplo oferece informações de solução de problemas.

Se o problema não for resolvido, registre-o nos Problemas do repositório.

Próximos passos