Partilhar via


Tutorial: Constrói um agente de viagens com IA com Azure DocumentDB e LangChain

Este tutorial mostra-lhe como construir um agente de IA autónomo que processa consultas e reservas de viajantes para uma companhia de cruzeiros. O agente de IA utiliza a estrutura LangChain Agent para planeamento, utilização de ferramentas e perceção. O agente combina então estas funcionalidades com as capacidades de base de dados vetoriais e armazenamento de documentos do Azure DocumentDB para um sistema de memória unificado.

O agente de exemplo opera dentro de um backend Python FastAPI e suporta interações com o utilizador através de uma interface de utilizador React JavaScript. Esta implementação demonstra como os agentes de IA avançam para além dos chatbots básicos para realizar tarefas complexas baseadas em linguagem natural que tradicionalmente requerem lógica codificada.

Neste tutorial, aprenderás como:

  • Configure o Azure DocumentDB com capacidades de pesquisa vetorial
  • Carregar documentos de viagem e criar embeddings vetoriais
  • Construa um agente de IA usando Python, FastAPI e LangChain
  • Implemente ferramentas de agentes para pesquisa de férias, pesquisa de itinerários e reservas
  • Crie uma interface web React para interações com o utilizador
  • Teste a solução completa do agente de IA

Pré-requisitos

  • Uma assinatura do Azure

    • Se você não tiver uma assinatura do Azure, crie uma conta gratuita
  • Um cluster do Azure DocumentDB existente

  • Uma conta para a API OpenAI ou o Serviço OpenAI do Azure.

  • Um ambiente de desenvolvimento integrado, como o Visual Studio Code.

  • Python 3.11.4 ou posterior instalado no ambiente de desenvolvimento.

  • Node.js instalado para o frontend React.

Faça o download do projeto de exemplo

Todo o código e os conjuntos de dados de exemplo estão disponíveis no repositório GitHub do Travel AI Agent.

  1. Clone ou descarregue o repositório (https://github.com/jonathanscholtes/Travel-AI-Agent-React-FastAPI-and-Cosmos-DB-Vector-Store) para o seu ambiente de desenvolvimento local.

  2. Navegue até ao diretório do projeto e explore a estrutura:

    • /loader: Contém código Python para carregamento de documentos de exemplo e embeddings vetoriais no Azure DocumentDB

    • /api: Contém o projeto Python FastAPI para alojar o agente de viagens de IA

    • /web: Contém código para a interface web do React

Carregar documentos de viagem no Azure DocumentDB

O /loader diretório contém um projeto Python para carregar documentos de viagem de exemplo no Azure DocumentDB e criar as incorporações vetoriais necessárias.

  1. Navegue até ao /loader diretório no seu terminal.

  2. Crie um ambiente virtual em Python:

    python -m venv venv
    
  3. Ative o ambiente virtual:

    # On Windows
    venv\Scripts\activate
    
    # On macOS/Linux
    source venv/bin/activate
    
  4. Instale as dependências necessárias:

    python -m pip install -r requirements.txt
    
  5. Crie um .env ficheiro no /loader diretório com os detalhes da sua ligação:

    OPENAI_API_KEY="<your OpenAI key>"
    MONGO_CONNECTION_STRING="mongodb+srv:<your connection string from Azure DocumentDB>"
    
  6. O main.py ficheiro serve como ponto de entrada central para o carregamento dos dados. Processa dados de viagem de exemplo, incluindo informações de navio e destino, e depois gera pacotes de itinerários de viagem.

  7. Executa o script de carregamento de dados a partir do /loader diretório. O script executa as seguintes operações:

    • Lê dados de navio e destino a partir de ficheiros JSON

    • Cria cinco pacotes de itinerário usando o ItineraryBuilder

    • Guarda pacotes de itinerário na colecção itinerary

    • Guarda destinações na destinations coleção

    • Cria embeddings vetoriais para navios na ships coleção

    • Adiciona um índice de pesquisa de texto aos nomes das naves

    python main.py
    
  8. Verifique se a saída mostra conclusão bem-sucedida:

    --build itinerary--
    --load itinerary--
    --load destinations--
    --load vectors ships--
    

Construa a API de agentes de viagens com IA

O agente de viagens de IA é alojado através de um backend FastAPI em Python que se integra com a interface frontend e processa pedidos do agente ao fundamentar os prompts do grande modelo de linguagem (LLM) contra os dados do Azure DocumentDB.

  1. Navegue até ao /api diretório no seu terminal.

  2. Crie e ative um ambiente virtual em Python:

    python -m venv venv
    
    # On Windows
    venv\Scripts\activate
    
    # On macOS/Linux
    source venv/bin/activate
    
  3. Instale as dependências necessárias:

    python -m pip install -r requirements.txt
    
  4. Crie um .env ficheiro no /api diretório:

    OPENAI_API_KEY="<your OpenAI key>"
    MONGO_CONNECTION_STRING="mongodb+srv:<your connection string from Azure DocumentDB>"
    
  5. Execute a aplicação FastAPI a partir do /api diretório:

    python app.py
    
  6. O servidor inicia-se em http://127.0.0.1:8000 por predefinição.

  7. Explore os endpoints da API acedendo à documentação interativa do Swagger em http://127.0.0.1:8000/docs.

Teste a funcionalidade do agente de IA

Teste se o agente de IA funciona como esperado.

  1. Na interface Swagger, teste o endpoint da sessão:

    • Navegue até /session/ e selecione Experimentar.

    • Execute o pedido para obter um ID de sessão para rastrear o histórico de conversas

  2. Teste a funcionalidade do chat do agente:

    • Navegue até /agent/agent_chat e selecione Experimentar.

    • Use este exemplo de entrada para testar o agente:

    {
      "input": "I want to take a relaxing vacation.",
      "session_id": "your-session-id-from-step-1"
    }
    
  3. O agente deve responder com recomendações de cruzeiro baseadas na pesquisa por similaridade vetorial, demonstrando a integração entre o LLM e o Azure DocumentDB.

Criar a interface web do React

A interface web oferece uma forma fácil de interagir com o agente de viagens com IA através de uma interface conversacional.

Configurar o ambiente React

  1. Vai ao /web diretório no teu terminal.

  2. Instale as dependências do projeto:

    npm ci
    
  3. Crie um .env ficheiro no /web diretório:

    REACT_APP_API_HOST=http://127.0.0.1:8000
    

Iniciar a aplicação web

  1. Inicie o servidor de desenvolvimento React:

    npm start
    
  2. A aplicação abre automaticamente no seu navegador predefinido, normalmente em http://localhost:3000.

  3. A interface mostra um site de viagens com imagens de navios de cruzeiro e destinos.

Testar a solução completa

  1. Na página principal, selecione Planear facilmente a sua viagem para abrir a interface de chat do assistente de viagem.

  2. A interface do chat abre num diálogo com uma mensagem pré-preenchida: "Quero tirar umas férias relaxantes."

  3. Selecione Enviar para enviar a mensagem ao agente de IA.

  4. O agente responde com recomendações de cruzeiro com base na sua contribuição, demonstrando:

    • Processamento de linguagem natural

    • Pesquisa por similaridade vetorial contra o Azure DocumentDB

    • Memória conversacional ao longo da sessão

    • Respostas em formato HTML na interface de chat

  5. Veja toda a gama de capacidades dos agentes continuando a conversa. Pergunte sobre navios específicos, itinerários ou como fazer reservas.

Compreenda a arquitetura dos agentes de IA

A implementação do agente de IA segue uma arquitetura em camadas que separa as preocupações e permite a manutenção.

Componentes da Camada de Serviço

A camada de serviço contém a lógica de negócio central e a implementação do Agente LangChain:

  • Inicialização do Agente: O init.py módulo configura o modelo ChatOpenAI, as ferramentas do agente e o histórico de conversas.

  • Ferramentas para Agentes: Três ferramentas principais tratam da pesquisa de férias, pesquisa de itinerários e reserva de cruzeiros.

  • Gestão de Memória: O histórico das conversas é armazenado no Azure DocumentDB usando identificadores de sessão.

Funcionalidade dos Ferramentas do Agente

O agente de IA utiliza três ferramentas especializadas.

  1. vacation_lookup: Realiza pesquisa vetorial no Azure DocumentDB para encontrar informações de viagem relevantes.

  2. itinerary_lookup: Recolhe detalhes e horários de pacotes de cruzeiro para navios específicos.

  3. book_cruise: Trata de reservas de pacotes de cruzeiro com validação de informações para passageiros.

Integração da Camada de Dados

A camada de dados gere todas as interações com o Azure DocumentDB.

  • Pesquisa vetorial: Pesquisa por similaridade com pontuação para recomendações de viagem.

  • Armazenamento de Documentos: Dados estruturados para navios, destinos e itinerários.

  • Histórico de Conversas: Armazenamento de mensagens de chat baseado em sessões.

Limpeza de recursos

Se já não precisar dos recursos criados neste tutorial, pode eliminá-los para evitar custos contínuos.

  1. No portal Azure, navegue até à sua conta Azure DocumentDB.

  2. Se criaste um grupo de recursos dedicado para este tutorial, elimina todo o grupo de recursos.

  3. Caso contrário, elimine as coleções específicas criadas:

    • travel.itinerary

    • travel.destinations

    • travel.ships

    • travel.history

Próximo passo