Dela via


Kom igång med serverlös AI-chatt med RAG med hjälp av LangChain.js

Det kan vara komplicerat att skapa AI-appar. Med LangChain.js, Azure Functions och serverlösa tekniker kan du förenkla den här processen. De här verktygen hanterar infrastruktur och skalas automatiskt, så att du kan fokusera på chattrobotfunktioner. Chattroboten använder företagsdokument för att generera AI-svar.

Koden innehåller exempeldata för ett fiktivt företag, Contoso Real Estate. Kunder kan ställa supportfrågor om företagets produkter. Uppgifterna innehåller dokument om företagets användarvillkor, sekretesspolicy och supportguide.

Skärmbild av chattappen i webbläsaren som visar flera förslag på chattinmatning och chatttextrutan för att ange en fråga.

Kommentar

Den här artikeln använder en eller flera AI-appmallar som grund för exemplen och vägledningen i artikeln. Med AI-appmallar får du väl underhållna och enkla att distribuera referensimplementeringar som hjälper dig att säkerställa en högkvalitativ startpunkt för dina AI-appar.

Arkitekturöversikt

Chattappen

Användaren interagerar med programmet:

  • Med chattgränssnittet i klientwebbappen.
  • Klientwebbappen skickar användarens fråga till det serverlösa API:et via HTTP-anrop.
  • Det serverlösa API:et skapar en kedja för att samordna interaktioner mellan Azure AI och Azure AI Search för att generera ett svar.
  • Om det finns ett behov av att referera till dokumenten används Azure Blob Storage för att hämta PDF-dokumenten.
  • Det genererade svaret skickas sedan tillbaka till webbappen och visas för användaren.

En enkel arkitektur för chattappen visas i följande diagram:

Diagram som visar arkitektur från klient till serverdelsapp.

LangChainjs förenklar komplexiteten mellan tjänster

API-flödet är användbart för att förstå hur LangChainJS är användbart i det här scenariot genom att abstrahera interaktionerna. Den serverlösa API-slutpunkten:

  • Tar emot frågan från användaren.
  • Skapar klientobjekt:
    • Azure OpenAI för inbäddningar och chatt
    • Azure AI Search för vektorarkivet
  • Skapar en dokumentkedja med LLM-modellen, chattmeddelandet (system- och användarfrågor) och dokumentkällan.
  • Skapar en hämtningskedja från dokumentkedjan och vektorlagret.
  • Strömmar svaren från hämtningskedjan.

Utvecklarens arbete är att konfigurera beroendetjänsterna korrekt, till exempel Azure OpenAI och Azure AI Search och konstruera kedjorna korrekt. Den underliggande kedjelogik vet hur frågan ska lösas. På så sätt kan du skapa kedjor från många olika tjänster och konfigurationer så länge de fungerar med LangChain-kraven.

Var finns Azure i den här arkitekturen?

Det här programmet är tillverkat av flera komponenter:

  • En webbapp som skapats med en enda chattwebbkomponent som skapats med Lit och finns i Azure Static Web Apps. Koden finns i packages/webapp mappen.

  • Ett serverlöst API som skapats med Azure Functions och som använder LangChain.js för att mata in dokumenten och generera svar på användarchattfrågorna. Koden finns i packages/api mappen.

  • En Azure OpenAI-tjänst för att skapa inbäddningar och generera ett svar.

  • En databas där texten som extraheras från dokumenten och de vektorer som genereras av LangChain.js lagras med hjälp av Azure AI Search.

  • En fillagring för att lagra källdokumenten med hjälp av Azure Blob Storage.

Förutsättningar

En utvecklingscontainermiljö är tillgänglig med alla beroenden som krävs för att slutföra den här artikeln. Du kan köra utvecklingscontainern i GitHub Codespaces (i en webbläsare) eller lokalt med hjälp av Visual Studio Code.

Om du vill använda den här artikeln behöver du följande krav:

  • En Azure-prenumeration – Skapa en kostnadsfritt
  • Azure-kontobehörigheter – Ditt Azure-konto måste ha behörigheten Microsoft.Authorization/roleAssignments/write, till exempel administratör för användaråtkomst eller ägare.
  • Åtkomst beviljad till Azure OpenAI i den önskade Azure-prenumerationen. För närvarande måste man ansöka om att få åtkomst till den här tjänsten. Du kan ansöka om åtkomst till Azure OpenAI genom att fylla i formuläret på https://aka.ms/oai/access. Öppna ett problem på den här lagringsplatsen för att kontakta oss om du har ett problem.
  • GitHub-konto

Öppna utvecklingsmiljön

Börja nu med en utvecklingsmiljö som har alla beroenden installerade för att slutföra den här artikeln.

GitHub Codespaces kör en utvecklingscontainer som hanteras av GitHub med Visual Studio Code för webben som användargränssnitt. För den enklaste utvecklingsmiljön använder du GitHub Codespaces så att du har rätt utvecklarverktyg och beroenden förinstallerade för att slutföra den här artikeln.

Viktigt!

Alla GitHub-konton kan använda Codespaces i upp till 60 timmar kostnadsfritt varje månad med 2 kärninstanser. Mer information finns i GitHub Codespaces månadsvis inkluderade lagrings- och kärntimmar.

  1. Öppna i Codespace.

    Öppna i GitHub Codespaces

  2. Vänta tills kodområdet har startats. Den här startprocessen kan ta några minuter.

  3. Logga in på Azure med Azure Developer CLI i terminalen längst ned på skärmen.

    azd auth login
    

    Slutför autentiseringsprocessen.

  4. De återstående uppgifterna i den här artikeln sker i samband med den här utvecklingscontainern.

Distribuera och köra

Exempellagringsplatsen innehåller alla kod- och konfigurationsfiler som du behöver för att distribuera den serverlösa chattappen till Azure. Följande steg beskriver hur du distribuerar exemplet till Azure.

Distribuera chattapp till Azure

Viktigt!

Azure-resurser som skapas i det här avsnittet medför omedelbara kostnader, främst från Azure AI Search-resursen. Dessa resurser kan medföra kostnader även om du avbryter kommandot innan det körs fullständigt.

  1. Kör följande Azure Developer CLI-kommando för att etablera Azure-resurserna och distribuera källkoden:

    azd up
    
  2. Använd följande tabell för att besvara anvisningarna:

    Prompt Svar
    Miljönamn Håll den kort och gemen. Lägg till ditt namn eller alias. Exempel: john-chat Den används som en del av resursgruppens namn.
    Prenumeration Välj den prenumeration som resurserna ska skapas i.
    Plats (för värd) Välj en plats nära dig i listan.
    Plats för OpenAI-modellen Välj en plats nära dig i listan. Om samma plats är tillgänglig som din första plats väljer du det.
  3. Vänta tills appen har distribuerats. Det kan ta 5–10 minuter för distributionen att slutföras.

  4. När programmet har distribuerats visas två URL:er i terminalen.

  5. Välj den URL:en som är märkt Deploying service webapp för att öppna chattprogrammet i en webbläsare.

Använda chattappen för att få svar från PDF-filer

Chattappen är förinstallerad med uthyrningsinformation från en PDF-filkatalog. Du kan använda chattappen för att ställa frågor om uthyrningsprocessen. Följande steg beskriver hur du använder chattappen.

  1. I webbläsaren väljer eller anger du Vad är återbetalningsprincipen.

    Skärmbild av chattappens första fråga och svar.

  2. Välj en uppföljningsfråga.

    Skärmbild av chattappens föreslagna uppföljningsprompt och svar.

  3. I svaret väljer du citatet för att se det dokument som används för att generera svaret. Detta levererar dokumentet från Azure Storage till klienten. När du är klar med den nya webbläsarfliken stänger du den för att återgå till den serverlösa chattappen.

    Skärmbild av det ursprungliga dokumentet som innehåller citat.

Rensa resurser

Rensa Azure-resurser

De Azure-resurser som skapas i den här artikeln faktureras till din Azure-prenumeration. Om du inte förväntar dig att behöva dessa resurser i framtiden tar du bort dem för att undvika att debiteras mer.

Kör följande Azure Developer CLI-kommando för att ta bort Azure-resurserna och ta bort källkoden:

azd down --purge

Rensa GitHub Codespaces

Om du tar bort GitHub Codespaces-miljön kan du maximera mängden kostnadsfria timmar per kärna som du får för ditt konto.

Viktigt!

Mer information om ditt GitHub-kontos rättigheter finns i GitHub Codespaces månadsvis inkluderade lagrings- och kärntimmar.

  1. Logga in på GitHub Codespaces-instrumentpanelen (https://github.com/codespaces).

  2. Leta upp de codespaces som körs från Azure-Samples/serverless-chat-langchainjs GitHub-lagringsplatsen.

    Skärmbild av alla kodområden som körs, inklusive deras status och mallar.

  3. Öppna snabbmenyn , ...för kodområdet och välj sedan Ta bort.

Få hjälp

Den här exempellagringsplatsen innehåller felsökningsinformation.

Om problemet inte åtgärdas loggar du problemet till lagringsplatsens problem.