INNOVATIEARTIFICIAL INTELLIGENCECHATGPTDATA & AIDATA
20/10/2023 • Remco Goyvaerts

LangChain: Een Revolutie in Conversatie-AI

De wereld van chatbots en Large Language Models (LLMs) heeft onlangs een spectaculaire evolutie doorgemaakt. Met ChatGPT, ontwikkeld door OpenAI, als een van de meest opvallende voorbeelden, heeft de technologie in slechts vijf dagen meer dan 1.000.000 gebruikers weten te bereiken. Deze opkomst onderstreept de groeiende interesse in conversational AI en de ongekende mogelijkheden die LLMs bieden.

LLMs en ChatGPT: Een Korte Inleiding

Large Language Models (LLMs) en chatbots zijn begrippen die tegenwoordig niet meer weg te denken zijn uit de wereld van kunstmatige intelligentie. Ze vertegenwoordigen de toekomst van mens-computerinteractie, waarbij LLMs krachtige AI-modellen zijn die natuurlijke taal begrijpen en genereren, terwijl chatbots programma's zijn die menselijke gesprekken kunnen simuleren en taken kunnen uitvoeren op basis van tekstuele input. ChatGPT, een van de opvallende chatbots, heeft in korte tijd enorme populariteit verworven.

LangChain: De Brug naar LLM-gebaseerde Applicaties

LangChain is een van de frameworks die het mogelijk maakt om de kracht van LLMs te benutten voor het ontwikkelen en ondersteunen van applicaties. Deze open-source bibliotheek, gestart door Harrison Chase, biedt een generieke manier om verschillende LLMs aan te spreken en uit te breiden met nieuwe data en functionaliteiten. Momenteel is LangChain beschikbaar in Python en TypeScript/JavaScript, en het is ontworpen om gemakkelijk verbindingen te leggen tussen verschillende LLMs en data-omgevingen.

De Kernconcepten van LangChain

Om LangChain volledig te begrijpen, moeten we enkele kernconcepten verkennen:

  1. Chains: LangChain is gebouwd op het concept van een chain. Een chain is simpelweg een generieke sequentie van modulaire componenten. Deze chains kunnen worden samengesteld voor specifieke use cases door de juiste componenten te selecteren.

  2. LLMChain: Het meest voorkomende type chain binnen LangChain is de LLMChain. Deze bestaat uit een PromptTemplate, een Model (dat kan een LLM of een chatmodel zijn) en een optionele OutputParser.


    Een PromptTemplate is een sjabloon dat wordt gebruikt om een prompt te genereren voor het LLM. Hier is een voorbeeld:




    Met dit sjabloon kan de gebruiker een onderwerp invullen, waarna de ingevulde prompt als input naar het model wordt gestuurd.

    LangChain biedt ook kant-en-klare PromptTemplates, zoals Zero Shot, One Shot en Few Shot prompts.

  3. Model and OutputParser: Een model is de implementatie van een LLM-model zelf. LangChain heeft verschillende implementaties voor LLM-modellen, waaronder OpenAI, GPT4All, en HuggingFace.

    Het is ook mogelijk om een OutputParser toe te voegen om de uitvoer van het LLM-model te verwerken. Zo is er bijvoorbeeld een ListOutputParser beschikbaar om de output van het LLM-model om te zetten naar een lijst in de huidige programmeertaal.

Data Connectiviteit in LangChain

Om de LLM Chain toegang te geven tot specifieke data, zoals interne gegevens of klantinformatie, maakt LangChain gebruik van verschillende concepten:

  1. Document Loaders
    Document Loaders stellen LangChain in staat om gegevens uit verschillende bronnen op te halen, zoals CSV-bestanden en URL's.

  2. Text Splitter
    Deze tool splitst documenten op in kleinere stukken om ze gemakkelijker door LLM-modellen te laten verwerken, rekening houdend met beperkingen zoals tokenlimieten.

  3. Embeddings
    LangChain biedt verschillende integraties voor het omzetten van tekstuele data naar numerieke data, waardoor het gemakkelijker wordt om deze te vergelijken en verwerken. De populaire OpenAIEmbeddings is een voorbeeld hiervan.

  4. VectorStores
    Hier worden de geëmbedde tekstuele gegevens opgeslagen. Dit kunnen bijvoorbeeld gegevensvectorstores zijn, waarbij de vectoren de geëmbedde tekstuele data voorstellen. FAISS (van Meta) en ChromaDB zijn enkele populairdere voorbeelden.

  5. Retrievers

    Retrievers leggen de verbinding tussen het LLM-model en de data in VectorStores. Ze halen relevante data op en breiden de prompt uit met de nodige context, waardoor contextbewuste vragen en opdrachten mogelijk zijn.

    Een voorbeeld van zo'n context bewuste prompt ziet er als volgt uit:



Demo Applicatie

Om de kracht van LangChain te illustreren, kunnen we een demo-applicatie maken die de volgende stappen volgt:

  1. Data ophalen op basis van een URL.
  2. De data opsplitsen in behapbare blokken.
  3. De data opslaan in een vectordatabase.
  4. Toegang verlenen aan een LLM tot de vectordatabase.
  5. Een Streamlit-applicatie maken die gebruikers toegang geeft tot de LLM.

Hieronder laten we zien hoe deze stappen in code kunnen worden uitgevoerd:

1. Data Ophalen

Het ophalen van gegevens van een website met LangChain vereist gelukkig geen handmatig werk. Hier is hoe we het doen:

2. Data Opsplitsen

Het resulterende dataveld hierboven bevat nu een verzameling pagina's van de website. Deze pagina's bevatten veel informatie, soms zelfs te veel voor het LLM om mee te werken, omdat veel LLM's werken met een beperkt aantal tokens. Daarom moeten we de documenten opsplitsen:

3. Data Opslaan

Nu de gegevens zijn opgedeeld in kleinere contextuele fragmenten, om efficiënte toegang tot deze gegevens te bieden aan het LLM, slaan we ze op in een vector database. In dit voorbeeld gebruiken we Chroma:

4. Toegang verlenen

Nu de gegevens zijn opgeslagen, kunnen we een "Chain" in LangChain samenstellen. Een chain is eenvoudigweg een reeks LLM-uitvoeringen om het gewenste resultaat te bereiken. Voor dit voorbeeld maken we gebruik van de bestaande RetrievalQA chain die LangChain aanbiedt. Deze chain haalt relevante contextuele fragmenten op uit de zojuist opgebouwde database, verwerkt deze samen met de vraag in een LLM en levert het gewenste antwoord:

5. Stream-li Applicaties maken

Nu we het LLM toegang hebben gegeven tot de gegevens, moeten we een manier bieden aan de gebruiker om het LLM te raadplegen. Om dit efficiënt te doen, maken we gebruik van Streamlit:

Agents en Tools

Naast de standaard chains biedt LangChain ook de mogelijkheid om Agents te creëren voor meer geavanceerde toepassingen. Agents hebben toegang tot verschillende tools die specifieke functionaliteiten uitvoeren. Deze tools kunnen van alles zijn, van een "Google Search" tool tot Wolfram Alpha, een tool om complexe wiskundige problemen op te lossen. Hierdoor kunnen Agents meer geavanceerde redeneringstoepassingen bieden, waarbij ze zelf beslissen welke tool ze moeten gebruiken om een vraag te beantwoorden.

Alternativen voor LangChain

Hoewel LangChain een krachtig framework is voor het bouwen van LLM-gedreven applicaties, zijn er ook andere alternatieven beschikbaar. Een populaire tool is bijvoorbeeld LlamaIndex (voorheen bekend als GPT Index), dat zich richt op het verbinden van LLMs met externe data. LangChain, daarentegen, biedt een completer framework voor het bouwen van applicaties met LLMs, inclusief tools en plugins.

Conclusie

LangChain is een opwindend framework dat de deuren opent naar een nieuwe wereld van conversational AI en applicatieontwikkeling met Large Language Models. Met de mogelijkheid om LLMs te verbinden met verschillende databronnen en de flexibiliteit om complexe toepassingen te bouwen, belooft LangChain een essentieel instrument te worden voor ontwikkelaars en bedrijven die willen profiteren van de kracht van LLMs. De toekomst van conversational AI is helder, en LangChain speelt een cruciale rol in deze evolutie.

Heb je vragen over LangChain?