Sdílet prostřednictvím


Kurz: Vytvoření cestovního agenta AI pomocí Azure DocumentDB a LangChain

V tomto kurzu se dozvíte, jak vytvořit autonomního agenta AI, který zpracovává dotazy cestovatelů a rezervace pro výletní linku. Agent AI používá architekturu agenta LangChain k plánování, využití nástrojů a vnímání. Agent pak tyto funkce zkombinuje s funkcemi vektorové databáze Azure DocumentDB a úložiště dokumentů pro jednotný systém paměti.

Ukázkový agent pracuje v back-endu Python FastAPI a podporuje interakce uživatelů prostřednictvím uživatelského rozhraní React JavaScriptu. Tato implementace ukazuje, jak agenti AI přejdou nad rámec základních chatovacích robotů k provádění složitých úloh na základě přirozeného jazyka, který tradičně vyžaduje kódovanou logiku.

V tomto návodu se naučíte, jak:

  • Nastavení Azure DocumentDB s možnostmi vektorového vyhledávání
  • Načtení cestovních dokumentů a vytváření vektorových reprezentací
  • Vytvoření agenta AI pomocí Python FastAPI a LangChain
  • Implementace nástrojů agenta pro vyhledávání dovolené, vyhledávání itinerářů a rezervace
  • Vytvoření webového rozhraní React pro interakce uživatelů
  • Testování kompletního řešení agenta AI

Požadavky

  • Předplatné Azure

  • Existující cluster Azure DocumentDB

  • Účet pro rozhraní OPENAI API nebo službu Azure OpenAI.

  • Integrované vývojové prostředí, jako je Visual Studio Code.

  • Python 3.11.4 nebo novější nainstalovaný ve vývojovém prostředí

  • Node.js nainstalovanou pro front-end Reactu.

Stažení ukázkového projektu

Všechny kódy a ukázkové datové sady jsou k dispozici v úložišti GitHubu cestovního agenta AI.

  1. Naklonujte nebo stáhněte úložiště (https://github.com/jonathanscholtes/Travel-AI-Agent-React-FastAPI-and-Cosmos-DB-Vector-Store) do místního vývojového prostředí.

  2. Přejděte do adresáře projektu a prozkoumejte strukturu:

    • /loader: Obsahuje kód Pythonu pro načítání ukázkových dokumentů a vektorových vkládání do Azure DocumentDB.

    • /api: Obsahuje projekt FastAPI Pythonu pro hostování cestovního agenta AI.

    • /web: Obsahuje kód pro webové rozhraní React.

Načtení cestovních dokumentů do Azure DocumentDB

Tento /loader adresář obsahuje projekt Pythonu pro načítání ukázkových cestovních dokumentů do Azure DocumentDB a vytváření nezbytných vektorových vkládání.

  1. Přejděte do /loader adresáře v terminálu.

  2. Vytvoření virtuálního prostředí Pythonu:

    python -m venv venv
    
  3. Aktivujte virtuální prostředí:

    # On Windows
    venv\Scripts\activate
    
    # On macOS/Linux
    source venv/bin/activate
    
  4. Nainstalujte požadované závislosti:

    python -m pip install -r requirements.txt
    
  5. Vytvořte soubor .env v adresáři /loader s podrobnostmi o připojení:

    OPENAI_API_KEY="<your OpenAI key>"
    MONGO_CONNECTION_STRING="mongodb+srv:<your connection string from Azure DocumentDB>"
    
  6. Soubor main.py slouží jako centrální vstupní bod pro načítání dat. Zpracovává ukázková cestovní data, včetně informací o expedicích a cílech, a pak generuje balíčky cestovních itinerářů.

  7. Spusťte skript pro načítání dat z /loader adresáře. Skript provádí tyto operace:

    • Čte data o lodích a destinacích ze souborů JSON

    • Vytvoří pět balíčků pro itinerář pomocí ItineraryBuilder

    • Ukládá balíčky itinerářů do kolekce itinerary.

    • Uloží cíle do destinations kolekce.

    • Vytvoří vektorová zapouzdření pro lodě v kolekci ships.

    • Přidá index vyhledávání textu k názvům lodí.

    python main.py
    
  8. Ověřte, že výstup ukazuje úspěšné dokončení:

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

Sestavení rozhraní API cestovního agenta AI

AI cestovní agent je hostovaný prostřednictvím zázemí Python FastAPI, které se integruje s uživatelským rozhraním a zpracovává požadavky agentů ukotvením výzev velkých jazykových modelů v datech Azure DocumentDB.

  1. Přejděte do /api adresáře v terminálu.

  2. Vytvoření a aktivace virtuálního prostředí Pythonu:

    python -m venv venv
    
    # On Windows
    venv\Scripts\activate
    
    # On macOS/Linux
    source venv/bin/activate
    
  3. Nainstalujte požadované závislosti:

    python -m pip install -r requirements.txt
    
  4. Vytvořte .env soubor v /api adresáři:

    OPENAI_API_KEY="<your OpenAI key>"
    MONGO_CONNECTION_STRING="mongodb+srv:<your connection string from Azure DocumentDB>"
    
  5. Spusťte aplikaci FastAPI z /api adresáře:

    python app.py
    
  6. Server se ve výchozím nastavení spustí na http://127.0.0.1:8000.

  7. Prozkoumejte koncové body rozhraní API v interaktivní dokumentaci Swaggeru na adrese http://127.0.0.1:8000/docs.

Testování funkčnosti agenta AI

Otestujte, že agent AI funguje podle očekávání.

  1. V rozhraní Swagger otestujte koncový bod session:

    • Přejděte na /session/ a vyberte Vyzkoušet

    • Provedením požadavku získejte ID relace pro sledování historie konverzací.

  2. Otestujte funkčnost chatu agenta:

    • Přejděte na /agent/agent_chat a vyberte Vyzkoušejte

    • K otestování agenta použijte tento ukázkový vstup:

    {
      "input": "I want to take a relaxing vacation.",
      "session_id": "your-session-id-from-step-1"
    }
    
  3. Agent by měl reagovat doporučeními pro výlety na základě vyhledávání vektorové podobnosti, což demonstruje integraci mezi LLM a Azure DocumentDB.

Vytvoření webového rozhraní Reactu

Webové rozhraní poskytuje uživatelsky přívětivý způsob interakce s cestovním agentem AI prostřednictvím konverzačního rozhraní.

Nastavení prostředí React

  1. Přejděte do /web adresáře v terminálu.

  2. Nainstalujte závislosti projektu:

    npm ci
    
  3. Vytvořte .env soubor v /web adresáři:

    REACT_APP_API_HOST=http://127.0.0.1:8000
    

Spuštění webové aplikace

  1. Spusťte vývojový server React:

    npm start
    
  2. Aplikace se automaticky otevře ve výchozím prohlížeči, obvykle na adrese http://localhost:3000.

  3. Rozhraní ukazuje cestovní web s výletní lodí a cílovými obrázky.

Otestování kompletního řešení

  1. Na hlavní stránce vyberte Snadné plánování cesty a otevřete chatovací rozhraní cestovního asistenta.

  2. V dialogovém okně se otevře rozhraní chatu s předem vyplněnou zprávou: "Chci si odpočinout na dovolenou".

  3. Výběrem možnosti Odeslat odešlete zprávu agentu AI.

  4. Agent reaguje doporučeními pro výlety na základě vašeho vstupu a demonstruje:

    • Zpracování přirozeného jazyka

    • Hledání vektorové podobnosti v Azure DocumentDB

    • Konverzační paměť v rámci relace

    • Odpovědi ve formátu HTML v rozhraní chatu

  5. Pokračujte v konverzaci a prohlédněte si celou řadu funkcí agentů. Zeptejte se konkrétních lodí, itinerářů nebo rezervace.

Vysvětlení architektury agenta AI

Implementace agenta AI se řídí vrstvenou architekturou, která odděluje obavy a umožňuje udržovatelnost.

Komponenty vrstvy služeb

Vrstva služby obsahuje základní obchodní logiku a implementaci agenta LangChain:

  • Inicializace agenta: Modul init.py nastaví model ChatOpenAI, nástroje agenta a historii konverzací.

  • Nástroje agenta: Tři hlavní nástroje zpracovávají vyhledávání dovolené, itinerář hledání a výletní rezervace.

  • Správa paměti: Historie konverzací je uložená v Azure DocumentDB pomocí identifikátorů relací.

Funkce nástrojů agenta

Agent AI používá tři specializované nástroje.

  1. vacation_lookup: Provede vektorové vyhledávání ve službě Azure DocumentDB a vyhledá relevantní cestovní informace.

  2. itinerary_lookup: Načte podrobnosti o výletních balíčcích a plány pro konkrétní lodě.

  3. book_cruise: Zpracovává rezervace výletních zásilek s ověřením informací o cestujících.

Integrace datové vrstvy

Datová vrstva zpracovává všechny interakce s Azure DocumentDB.

  • Vektorové vyhledávání: Hledání podobnosti s bodováním doporučení pro cestování.

  • Úložiště dokumentů: Strukturovaná data pro lodě, cíle a itineráře.

  • Historie konverzací: Úložiště zpráv chatu založené na relacích

Vyčistěte zdroje

Pokud už prostředky vytvořené v tomto kurzu nepotřebujete, můžete je vyčistit, abyste se vyhnuli průběžným poplatkům:

  1. Na webu Azure Portal přejděte ke svému účtu Azure DocumentDB.

  2. Pokud jste pro účely tohoto kurzu vytvořili vyhrazenou skupinu prostředků, odstraňte celou skupinu prostředků.

  3. Jinak odstraňte vytvořené konkrétní kolekce:

    • travel.itinerary

    • travel.destinations

    • travel.ships

    • travel.history

Další krok