Comece a usar o bate-papo usando sua própria amostra de dados para Java

Este artigo mostra como implementar e executar o exemplo de Chat com dados para Java. Este exemplo implementa uma aplicação de chat usando Java, Azure OpenAI Models no Microsoft Foundry e Retrieval Augmented Generation (RAG) no Pesquisa de IA do Azure para obter respostas sobre benefícios para funcionários numa empresa fictícia. O aplicativo é semeado com arquivos PDF, incluindo o manual do funcionário, um documento de benefícios e uma lista de funções e expectativas da empresa.

Neste artigo, você realiza as seguintes tarefas:

  • 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 artigo, 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 lhe mostram como construir uma aplicação de chat usando Azure OpenAI Models no Microsoft Foundry e Pesquisa de IA do Azure. Outros artigos da coleção incluem:

  • .NET
  • JavaScript
  • Python

Nota

Este artigo usa um ou mais modelos de aplicação de IA como base para os exemplos e diretrizes no artigo. Os modelos de aplicativos de IA fornecem implementações de referência bem mantidas e fáceis de implantar que ajudam a garantir um ponto de partida de alta qualidade para seus aplicativos de IA.

Descrição geral da arquitetura

O diagrama seguinte mostra uma arquitetura simples para a aplicação de chat:

Diagram showing architecture from client to backend app.Diagrama mostrando a arquitetura desde o cliente até a aplicação de back-end.

Os principais componentes da arquitetura incluem:

  • Uma aplicação web que aloja a experiência de chat interativo.
  • Um recurso do Pesquisa de IA do Azure que obtém respostas a partir dos seus próprios dados.
  • Um Azure OpenAI Service que fornece:
    • Palavras-chave para melhorar a pesquisa sobre os seus próprios dados.
    • Respostas do modelo OpenAI.
    • Incorporações do modelo ada.

Custo

A maioria dos recursos usados nessa arquitetura se enquadra em níveis de preços básicos ou baseados no consumo. Este modelo de preços significa que só paga pelo que utiliza, e as cobranças são normalmente mínimas durante o desenvolvimento ou testes.

Para completar este exemplo, poderá incorrer num pequeno custo ao utilizar serviços como Azure OpenAI, AI Search e armazenamento. Quando terminares de avaliar ou implementar a aplicação, elimina todos os recursos provisionados para evitar cobranças contínuas.

Saiba mais sobre o custo no repositório de exemplo.

Pré-requisitos

Precisa de um ambiente de contentor de desenvolvimento 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 usar este artigo, você precisa dos seguintes pré-requisitos:

  • Uma assinatura do Azure - Crie uma gratuitamente.
  • Permissões da conta do Azure - a sua conta do Azure deve ter permissões de Microsoft.Authorization/roleAssignments/write, como Administrador de Acesso de Usuário ou Proprietário .
  • Uma conta do GitHub.

Ambiente de desenvolvimento aberto

Configure um ambiente de desenvolvimento que tenha todas as dependências instaladas para completar este artigo.

  • Codespaces do GitHub (recomendado)
  • Visual Studio Code

O GitHub Codespaces executa um contentor de desenvolvimento gerido pelo GitHub com o Visual Studio Code for the Web como interface do utilizador. 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 Codespaces por até 60 horas gratuitas por mês com duas instâncias principais. Para obter mais informações, consulte armazenamento incluído e horas de core mensais do GitHub Codespaces.

  1. Clique com o botão direito no botão seguinte e selecione Abrir link numa nova janela para que tenha tanto o ambiente de desenvolvimento como a documentação disponíveis ao mesmo tempo.

    Open in GitHub CodespacesAbrir no GitHub Codespaces

  2. Em Criar espaço de código, reveja as definições de configuração do espaço de código e depois selecione Criar espaço de código.

    Screenshot of the confirmation screen before creating a new codespace.Captura de tela da tela de confirmação antes de criar um novo espaço de código.

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

  4. No terminal na parte inferior do ecrã, inicie sessão no Azure usando a CLI do Azure Developer.

    azd auth login --use-device-code
    
  5. Copie o código do terminal e cole-o em um navegador. Siga as instruções para autenticar usando a sua conta Azure.

  6. 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 secção – especialmente o Pesquisa de IA do Azure – podem começar a incorrer em encargos assim que são provisionados, mesmo que a implementação seja interrompida antes da conclusão. Para evitar cobranças inesperadas, monitore seu uso do Azure e exclua recursos não utilizados imediatamente após o teste.

  1. Execute o seguinte comando para provisionar os recursos do Azure e implementar o código-fonte:

    azd up
    
  2. Se você for solicitado a inserir um nome de ambiente, mantenha-o curto e minúsculo, por exemplo, myenv. O nome do ambiente é usado como parte do nome do grupo de recursos.

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

  4. Quando for solicitado a selecionar um local pela primeira vez, selecione um local perto de si. Este local é utilizado para a maioria dos recursos, incluindo alojamento.

  5. Se for solicitado a indicar uma localização para o modelo OpenAI, selecione um local que esteja perto de si. Se a mesma localização estiver disponível que a sua primeira localização, selecione essa localização.

  6. Espere até a aplicação ser lançada, o que pode demorar 5-10 minutos a completar.

  7. Depois de a aplicação ser implementada com sucesso, vê um URL exibido no terminal.

  8. Selecione o 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, bem como a caixa de bate-papo onde você insere uma pergunta.

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

A aplicação de chat é pré-carregada com informações sobre benefícios de empregados a partir de ficheiros 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, 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 chat.

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

  2. Na resposta, selecione uma das citações.

    Captura de ecrã da primeira resposta da app de chat com a sua citação destacada numa caixa vermelha.Captura de ecrã da primeira resposta da app de chat com a sua citação destacada numa caixa vermelha.

  3. No painel direito, use os separadores para perceber como a resposta foi gerada.

    Separador Descrição
    Processo de pensamento Roteiro das interações no chat.
    Conteúdo de suporte Inclui as informações para responder à sua pergunta e o material de origem.
    Citação Exibe a página PDF que contém a citação.
  4. Quando terminar, selecione a guia selecionada novamente para fechar o painel.

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

O modelo OpenAI e as definições que utiliza para interagir com o modelo determinam a inteligência da aplicação de chat.

Screenshot of chat developer settings.Captura de tela das configurações do desenvolvedor do bate-papo.

Configuração Descrição
Substituir modelo de prompt Um prompt que é usado para gerar a resposta.
Recuperar esses muitos resultados de pesquisa Número de resultados de pesquisa que são usados para gerar a resposta. Pode visualizar essas fontes apresentadas nas guias Processo de pensamento e Conteúdo de suporte da referência.
Excluir categoria Categoria de documentos excluídos dos resultados da pesquisa.
Usar classificador semântico para recuperação Recurso do Pesquisa de IA do Azure que usa aprendizagem automática para melhorar a relevância dos resultados de pesquisa.
Use resumos contextuais de consulta em vez de documentos inteiros Quando ambos Use semantic ranker e Use query-contextual summaries são 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.
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.
Transmitir respostas de conclusão do chat Transmissão contínua da resposta em vez de esperar até que a resposta completa esteja disponível.

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

  1. No navegador, selecione a guia Configurações do desenvolvedor .

  2. Marque a caixa de seleção Sugerir perguntas de acompanhamento e faça a mesma pergunta novamente.

    What is my deductible?
    

    O chat retorna perguntas de acompanhamento sugeridas, como estas:

    1. What is the cost sharing for out-of-network services?
    2. Are preventive care services subject to the deductible?
    3. How does the prescription drug deductible work?
    
  3. Na guia Configurações, desmarque Usar classificador semântico para recuperação.

  4. Fazer a mesma pergunta novamente?

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

    Por exemplo, a resposta que usou o ranker semântico forneceu uma única resposta: The deductible for the Northwind Health Plus plan is $2,000 per year.

    A resposta sem classificação semântica retornou um resultado, o que exigiu mais esforço para se obter a resposta esperada: Based on the information provided, it is unclear what your specific deductible is. The Northwind Health Plus plan has different deductible amounts for in-network and out-of-network services, and there is also a separate prescription drug deductible. I would recommend checking with your provider or referring to the specific benefits details for your plan to determine your deductible amount.

Limpar recursos

Depois de concluir o exercício, retire quaisquer recursos de que já não precise.

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. Use o seguinte comando 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 possa obter o máximo possível das horas gratuitas por núcleo a que tem direito na sua conta.

Importante

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

  1. Inicie sessão no painel de GitHub Codespaces.

  2. Localize os seus Codespaces atualmente em execução provenientes do repositório Azure-Samples/azure-search-openai-demo-java no GitHub.

    Screenshot of all the running Codespaces including their status and templates.Captura de tela de todos os Codespaces 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 ecrã do menu de contexto para um único codespace com a opção de eliminação destacada.

Como é respondida a pergunta?

A aplicação está dividida em duas aplicações:

  • Uma aplicação JavaScript front-end que utiliza o framework React com a ferramenta de compilação Vite.
  • Uma aplicação Java de back-end que responde à questão.

A API backend /chat percorre o processo de obtenção da resposta:

  • Opções de compilação RAG: crie um conjunto de opções usadas para gerar uma resposta.
  • Criar abordagem utilizando opções RAG: utilize uma combinação de modelos baseados em recuperação e em geração para desenvolver uma abordagem que gere uma resposta precisa e natural.
  • Execute a abordagem com as opções RAG e a conversa anterior: Utilize as opções de abordagem e RAG para gerar uma resposta com base na conversa anterior. A resposta inclui informações sobre quais documentos foram usados para gerar a resposta.

Obter ajuda

Este repositório de exemplo oferece informações de solução de problemas. Se o seu problema não for resolvido, registre-o nos Problemas do repositório.

Próximos passos

  • Obtenha o código-fonte do exemplo utilizado neste artigo.
  • Crie um aplicativo de chat com a arquitetura de solução de boas práticas do Azure OpenAI
  • Controle de acesso em aplicações de IA generativa com a Pesquisa de IA do Azure
  • Crie uma solução OpenAI pronta para o mercado empresarial com o API Management do Azure.
  • Superar a pesquisa vetorial com capacidades híbridas de recuperação e classificação
  • Mais modelos de ponta a ponta da IA do Azure