Aan de slag met Serverloze AI Chat met RAG met behulp van LangChain.js
Het maken van AI-apps kan complex zijn. Met LangChain.js-, Azure Functions- en serverloze technologieën kunt u dit proces vereenvoudigen. Deze hulpprogramma's beheren infrastructuur en schaal automatisch, zodat u zich kunt richten op chatbotfunctionaliteit. De chatbot maakt gebruik van ondernemingsdocumenten om AI-antwoorden te genereren.
De code bevat voorbeeldgegevens voor een fictief bedrijf, Contoso Real Estate. Klanten kunnen ondersteuningsvragen stellen over de producten van het bedrijf. De gegevens bevatten documenten over de servicevoorwaarden, het privacybeleid en de ondersteuningshandleiding van het bedrijf.
Notitie
In dit artikel worden een of meer AI-app-sjablonen gebruikt als basis voor de voorbeelden en richtlijnen in het artikel. AI-app-sjablonen bieden u een goed onderhouden, eenvoudig te implementeren referentie-implementaties die u helpen een startpunt van hoge kwaliteit voor uw AI-apps te garanderen.
Architectuuroverzicht
De chat-app
De gebruiker communiceert met de toepassing:
- Met de chatinterface in de clientweb-app.
- De clientweb-app verzendt de query van de gebruiker naar de serverloze API via HTTP-aanroepen.
- De serverloze API maakt een keten voor het coördineren van interacties tussen Azure AI en Azure AI Search om een antwoord te genereren.
- Als er naar de documenten moet worden verwezen, wordt Azure Blob Storage gebruikt om de PDF-documenten op te halen.
- Het gegenereerde antwoord wordt vervolgens teruggestuurd naar de web-app en weergegeven aan de gebruiker.
In het volgende diagram ziet u een eenvoudige architectuur van de chat-app:
LangChainjs vereenvoudigt de complexiteit tussen services
De API-stroom is handig om te begrijpen hoe LangChainJS nuttig is in dit scenario door de interacties te abstraheren. Het serverloze API-eindpunt:
- Ontvangt de vraag van de gebruiker.
- Hiermee maakt u clientobjecten:
- Azure OpenAI voor insluiten en chatten
- Azure AI Search voor het vectorarchief
- Hiermee maakt u een documentketen met het LLM-model, het chatbericht (systeem- en gebruikersprompts) en de documentbron.
- Hiermee maakt u een ophaalketen van de documentketen en het vectorarchief.
- Hiermee worden de antwoorden van de ophaalketen gestreamd.
Het werk van de ontwikkelaar is het correct configureren van de afhankelijkhedenservices, zoals Azure OpenAI en Azure AI Search, en het correct samenstellen van de ketens. De onderliggende ketenlogica weet hoe de query moet worden omgezet. Hiermee kunt u ketens maken van veel verschillende services en configuraties zolang ze werken met de LangChain-vereisten.
Waar bevindt Azure zich in deze architectuur?
Deze toepassing is gemaakt van meerdere onderdelen:
Een web-app die is gemaakt met één webonderdeel voor chatten dat is gebouwd met Lit en wordt gehost in Azure Static Web Apps. De code bevindt zich in de
packages/webapp
map.Een serverloze API die is gebouwd met Azure Functions en LangChain.js gebruikt om de documenten op te nemen en antwoorden te genereren op de gebruikerschatquery's. De code bevindt zich in de
packages/api
map.Een Azure OpenAI-service voor het maken van insluitingen en het genereren van een antwoord.
Een database voor het opslaan van de tekst die is geëxtraheerd uit de documenten en de vectoren die zijn gegenereerd door LangChain.js, met behulp van Azure AI Search.
Een bestandsopslag voor het opslaan van de brondocumenten met behulp van Azure Blob Storage.
Vereisten
Er is een ontwikkelcontaineromgeving beschikbaar met alle afhankelijkheden die nodig zijn om dit artikel te voltooien. U kunt de ontwikkelcontainer uitvoeren in GitHub Codespaces (in een browser) of lokaal met behulp van Visual Studio Code.
Als u dit artikel wilt gebruiken, hebt u de volgende vereisten nodig:
- Een Azure-abonnement - Een gratis abonnement maken
- Azure-accountmachtigingen: uw Azure-account moet beschikken over Microsoft.Authorization/roleAssignments/write-machtigingen, zoals Administrator voor gebruikerstoegang of Eigenaar.
- Toegang verleend tot Azure OpenAI in het gewenste Azure abonnement. Op dit moment wordt alleen toegang tot deze service verleend door een aanvraag te doen. U kunt toegang tot Azure OpenAI aanvragen door het formulier in te vullen op https://aka.ms/oai/access. Open een probleem op deze opslagplaats om contact met ons op te stellen als u een probleem hebt.
- GitHub-account
Open ontwikkelomgeving
Begin nu met een ontwikkelomgeving waarop alle afhankelijkheden zijn geïnstalleerd om dit artikel te voltooien.
GitHub Codespaces voert een ontwikkelcontainer uit die wordt beheerd door GitHub met Visual Studio Code voor het web als de gebruikersinterface. Voor de eenvoudigste ontwikkelomgeving gebruikt u GitHub Codespaces zodat u de juiste ontwikkelhulpprogramma's en afhankelijkheden vooraf hebt geïnstalleerd om dit artikel te voltooien.
Belangrijk
Alle GitHub-accounts kunnen Codespaces elke maand maximaal 60 uur gratis gebruiken met 2 kernexemplaren. Zie GitHub Codespaces maandelijks inbegrepen opslag- en kernuren voor meer informatie.
Open in Codespace.
Wacht tot de coderuimte is gestart. Dit opstartproces kan enkele minuten duren.
Meld u in de terminal onderaan het scherm aan bij Azure met de Azure Developer CLI.
azd auth login
Voltooi het verificatieproces.
De resterende taken in dit artikel vinden plaats in de context van deze ontwikkelingscontainer.
Implementeren en uitvoeren
De voorbeeldopslagplaats bevat alle code- en configuratiebestanden die u nodig hebt om de serverloze chat-app in Azure te implementeren. Met de volgende stappen doorloopt u het proces voor het implementeren van het voorbeeld in Azure.
Chat-app implementeren in Azure
Belangrijk
Voor Azure-resources die in deze sectie zijn gemaakt, worden directe kosten in rekening gebracht, voornamelijk op basis van de Azure AI Search-resource. Deze resources kunnen kosten genereren, zelfs als u de opdracht onderbreekt voordat deze volledig wordt uitgevoerd.
Voer de volgende Azure Developer CLI-opdracht uit om de Azure-resources in te richten en de broncode te implementeren:
azd up
Gebruik de volgende tabel om de prompts te beantwoorden:
Prompt Antwoord Omgevingsnaam Houd het kort en kleine letters. Voeg uw naam of alias toe. Bijvoorbeeld: john-chat
. Deze wordt gebruikt als onderdeel van de naam van de resourcegroep.Abonnement Selecteer het abonnement waarin u de resources wilt maken. Locatie (voor hosting) Selecteer een locatie bij u in de buurt in de lijst. Locatie voor het OpenAI-model Selecteer een locatie bij u in de buurt in de lijst. Als dezelfde locatie beschikbaar is als uw eerste locatie, selecteert u die. Wacht totdat de app is geïmplementeerd. Het kan 5-10 minuten duren voordat de implementatie is voltooid.
Nadat de toepassing is geïmplementeerd, ziet u twee URL's die worden weergegeven in de terminal.
Selecteer die URL die is gelabeld
Deploying service webapp
om de chattoepassing in een browser te openen.
Chat-app gebruiken om antwoorden te krijgen uit PDF-bestanden
De chat-app wordt vooraf geladen met huurgegevens uit een PDF-bestandscatalogus. U kunt de chat-app gebruiken om vragen te stellen over het verhuurproces. Met de volgende stappen doorloopt u het proces voor het gebruik van de chat-app.
Selecteer of voer in de browser in wat het restitutiebeleid is.
Selecteer een vervolgvraag.
Selecteer in het antwoord de bronvermelding om het document te zien dat is gebruikt om het antwoord te genereren. Hiermee wordt het document van Azure Storage aan de client geleverd. Wanneer u klaar bent met het nieuwe browsertabblad, sluit u het om terug te keren naar de serverloze chat-app.
Resources opschonen
Azure-resources opschonen
De Azure-resources die in dit artikel zijn gemaakt, worden gefactureerd voor uw Azure-abonnement. Als u deze resources in de toekomst niet meer nodig hebt, verwijdert u deze om te voorkomen dat er meer kosten in rekening worden gebracht.
Voer de volgende Azure Developer CLI-opdracht uit om de Azure-resources te verwijderen en de broncode te verwijderen:
azd down --purge
GitHub Codespaces opschonen
Als u de GitHub Codespaces-omgeving verwijdert, zorgt u ervoor dat u de hoeveelheid gratis rechten per kernuren kunt maximaliseren die u voor uw account krijgt.
Belangrijk
Zie GitHub Codespaces maandelijks inbegrepen opslag- en kernuren voor meer informatie over de rechten van uw GitHub-account.
Meld u aan bij het GitHub Codespaces-dashboard (https://github.com/codespaces).
Zoek uw momenteel uitgevoerde Codespaces die afkomstig zijn uit de
Azure-Samples/serverless-chat-langchainjs
GitHub-opslagplaats.Open het contextmenu,
...
voor de coderuimte en selecteer Vervolgens Verwijderen.
Hulp vragen
Deze voorbeeldopslagplaats biedt informatie over probleemoplossing.
Als uw probleem niet is opgelost, meldt u het probleem aan bij de problemen van de opslagplaats.