Delen via


Zelfstudie: Een AI-reisagent bouwen met Azure DocumentDB en LangChain

In deze zelfstudie leert u hoe u een autonome AI-agent bouwt waarmee reizigersvragen en boekingen voor een cruiselijn worden verwerkt. De AI-agent maakt gebruik van het LangChain Agent-framework voor planning, hulpprogrammagebruik en perceptie. De agent combineert deze functies vervolgens met de vectordatabase en documentopslagmogelijkheden van Azure DocumentDB voor een geïntegreerd geheugensysteem.

De voorbeeldagent werkt in een Python FastAPI-back-end en ondersteunt gebruikersinteracties via een React JavaScript-gebruikersinterface. Deze implementatie laat zien hoe AI-agents verder gaan dan eenvoudige chatbots om complexe taken uit te voeren op basis van natuurlijke taal waarvoor traditioneel gecodeerde logica is vereist.

In deze handleiding leer je hoe je:

  • Azure DocumentDB instellen met vectorzoekmogelijkheden
  • Reisdocumenten laden en vector-insluitingen maken
  • Een AI-agent bouwen met Behulp van Python FastAPI en LangChain
  • Agenthulpprogramma's implementeren voor vakantiezoekopdrachten, zoeken in reisschema's en boekingen
  • Een React-webinterface maken voor gebruikersinteracties
  • De volledige AI-agentoplossing testen

Vereiste voorwaarden

  • Een Azure-abonnement

  • Een bestaand Azure DocumentDB-cluster

  • Een account voor de OpenAI-API of Azure OpenAI-service.

  • Een geïntegreerde ontwikkelomgeving, zoals Visual Studio Code.

  • Python 3.11.4 of hoger geïnstalleerd in de ontwikkelomgeving.

  • Node.js geïnstalleerd voor de React-front-end.

Het voorbeeldproject downloaden

Alle code- en voorbeeldgegevenssets zijn beschikbaar in de GitHub-opslagplaats travel AI Agent.

  1. Kloon of download de opslagplaats (https://github.com/jonathanscholtes/Travel-AI-Agent-React-FastAPI-and-Cosmos-DB-Vector-Store) naar uw lokale ontwikkelomgeving.

  2. Navigeer naar de projectmap en verken de structuur:

    • /loader: Bevat Python-code voor het laden van voorbeelddocumenten en vector-insluitingen in Azure DocumentDB

    • /api: Bevat het Python FastAPI-project voor het hosten van de AI-reisagent

    • /web: Bevat code voor de React-webinterface

Reisdocumenten laden in Azure DocumentDB

De /loader map bevat een Python-project voor het laden van voorbeelddocumenten in Azure DocumentDB en het maken van de benodigde vector insluitingen.

  1. Navigeer naar de /loader map in je terminal.

  2. Een virtuele Python-omgeving maken:

    python -m venv venv
    
  3. De virtuele omgeving activeren:

    # On Windows
    venv\Scripts\activate
    
    # On macOS/Linux
    source venv/bin/activate
    
  4. Installeer de vereiste afhankelijkheden:

    python -m pip install -r requirements.txt
    
  5. Maak een .env bestand in de /loader map met de verbindingsgegevens:

    OPENAI_API_KEY="<your OpenAI key>"
    MONGO_CONNECTION_STRING="mongodb+srv:<your connection string from Azure DocumentDB>"
    
  6. Het main.py bestand fungeert als het centrale toegangspunt voor het laden van gegevens. Het verwerkt voorbeeld van reisgegevens, waaronder verzend- en bestemmingsgegevens, en genereert vervolgens reisschemapakketten.

  7. Voer het script voor het laden van gegevens uit vanuit de /loader map. Het script voert deze bewerkingen uit:

    • Leest verzend- en doelgegevens uit JSON-bestanden

    • Hiermee maakt u vijf reisschemapakketten met behulp van de ItineraryBuilder

    • Routepakketten opslaan in de itinerary verzameling

    • Bestemmingen opslaan in de destinations verzameling

    • Maakt vectorrepresentaties voor schepen in de ships collectie

    • Hiermee voegt u een zoekindex voor tekst toe aan verzendnamen

    python main.py
    
  8. Controleer of de uitvoer is voltooid:

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

De API van de AI-reisagent bouwen

De AI-reisagent wordt gehost via een Python FastAPI-back-end die integreert met de front-endinterface en agentaanvragen verwerkt door LLM-prompts (Large Language Model) af te stemmen op Azure DocumentDB-gegevens.

  1. Navigeer naar de /api directory in uw terminal.

  2. Een virtuele Python-omgeving maken en activeren:

    python -m venv venv
    
    # On Windows
    venv\Scripts\activate
    
    # On macOS/Linux
    source venv/bin/activate
    
  3. Installeer de vereiste afhankelijkheden:

    python -m pip install -r requirements.txt
    
  4. Maak een .env bestand in de /api map:

    OPENAI_API_KEY="<your OpenAI key>"
    MONGO_CONNECTION_STRING="mongodb+srv:<your connection string from Azure DocumentDB>"
    
  5. Voer de FastAPI-toepassing uit vanuit de /api map.

    python app.py
    
  6. De server start standaard op http://127.0.0.1:8000.

  7. Verken de API-eindpunten door toegang te krijgen tot de interactieve Swagger-documentatie op http://127.0.0.1:8000/docs.

De functionaliteit van de AI-agent testen

Test of de AI-agent werkt zoals verwacht.

  1. Test het sessie-eindpunt in de Swagger-interface:

    • Navigeer naar /session/ en selecteer Uitproberen

    • Voer de aanvraag uit om een sessie-id op te halen voor het bijhouden van de gespreksgeschiedenis

  2. Test de chatfunctionaliteit van de agent:

    • Navigeer naar /agent/agent_chat en selecteer Uitproberen

    • Gebruik deze voorbeeldinvoer om de agent te testen:

    {
      "input": "I want to take a relaxing vacation.",
      "session_id": "your-session-id-from-step-1"
    }
    
  3. De agent moet reageren met cruiserecommendaties op basis van vectorvergelijking zoeken, waarmee de integratie tussen de LLM en Azure DocumentDB wordt gedemonstreerd.

De React-webinterface maken

De webinterface biedt een gebruiksvriendelijke manier om te communiceren met de AI-reisagent via een gespreksinterface.

De React-omgeving instellen

  1. Ga naar de /web map in uw terminal.

  2. Installeer de projectafhankelijkheden:

    npm ci
    
  3. Maak een .env bestand in de /web map:

    REACT_APP_API_HOST=http://127.0.0.1:8000
    

De webtoepassing starten

  1. Start de React-ontwikkelserver:

    npm start
    
  2. De toepassing wordt automatisch geopend in uw standaardbrowser, meestal op http://localhost:3000.

  3. De interface toont een reiswebsite met cruiseschip- en bestemmingsafbeeldingen.

De volledige oplossing testen

  1. Selecteer op de hoofdpagina moeiteloos uw reis plannen om de chatinterface van de reisassistent te openen.

  2. De chatinterface wordt geopend in een dialoogvenster met een vooraf ingevuld bericht: 'Ik wil een ontspannen vakantie nemen'.

  3. Selecteer Verzenden om het bericht naar de AI-agent te verzenden.

  4. De assistent reageert met cruise-aanbevelingen op basis van uw invoer, en demonstreert daarbij het volgende:

    • Natuurlijke taalverwerking

    • Vector overeenkomsten zoeken op Azure DocumentDB

    • Gespreksgeheugen tijdens de sessie

    • MET HTML opgemaakte antwoorden in de chatinterface

  5. Bekijk het volledige scala aan agentmogelijkheden door het gesprek voort te zetten. Vraag naar specifieke schepen, routes of boekingen.

Inzicht in de architectuur van de AI-agent

De implementatie van de AI-agent volgt een gelaagde architectuur die zorgen scheidt en onderhoudbaarheid mogelijk maakt.

Onderdelen van servicelaag

De servicelaag bevat de belangrijkste bedrijfslogica en de implementatie van de LangChain-agent:

  • Initialisatie van agent: de init.py module stelt het ChatOpenAI-model, agenthulpprogramma's en gespreksgeschiedenis in.

  • Agent Tools: Drie belangrijkste hulpprogramma's verwerken het opzoeken van vakanties, het zoeken van reisschema's en cruiseboekingen.

  • Geheugenbeheer: gespreksgeschiedenis wordt opgeslagen in Azure DocumentDB met behulp van sessie-id's.

Functionaliteit van agenthulpprogramma's

De AI-agent maakt gebruik van drie gespecialiseerde hulpprogramma's.

  1. vacation_lookup: voert vectorzoekopdrachten uit op Azure DocumentDB om relevante reisinformatie te vinden.

  2. itinerary_lookup: haalt details en planningen van cruisepakketten op voor specifieke schepen.

  3. book_cruise: verwerkt cruisepakketten met validatie van passagiersgegevens.

Gegevenslaagintegratie

De gegevenslaag verwerkt alle interacties met Azure DocumentDB.

  • Vector Search: Similariteit zoeken met scoren voor reiswaanbevelingen.

  • Documentopslag: gestructureerde gegevens voor schepen, bestemmingen en itineraries.

  • Gespreksgeschiedenis: opslag van chatberichten op basis van sessies.

De hulpbronnen opschonen

Als u de resources die in deze zelfstudie zijn gemaakt niet meer nodig hebt, kunt u ze opschonen om doorlopende kosten te voorkomen:

  1. Navigeer in Azure Portal naar uw Azure DocumentDB-account.

  2. Als u voor deze zelfstudie een toegewezen resourcegroep hebt gemaakt, verwijdert u de hele resourcegroep.

  3. Verwijder anders de specifieke verzamelingen die zijn gemaakt:

    • travel.itinerary

    • travel.destinations

    • travel.ships

    • travel.history

Volgende stap