Cloud Republic

Zo pas je Generative AI toe in jouw organisatie

Generative AI toepassen

Weet je nog waar je was op 30 november 2022? De dag dat ChatGPT werd aangekondigd. Ik niet, maar wat wel ik herinner is het moment op vrijdag 3 december 2022. We zaten met wat collega’s van Cloud Republic te werken op kantoor en we speelden voor het eerst met ChatGPT. Ik herinner me nog goed dat meerdere collega’s het moment ervaarden als: “Dit is iets groots. Dit gaat ons werk veranderen”. Maar hoe heeft het ons werk veranderd? Of nog interessanter, hoe gaat het organisaties veranderen? Dat vertel ik je graag in dit artikel.

AI-assistent experiment

Bij de Caesar Groep, het moederbedrijf van Cloud Republic, hebben we een experiment gedaan waarin we vijftien medewerkers betaalde accounts op ChatGPT en Github Copilot hebben gegeven. Na drie maanden hebben we de collega’s gevraagd om hun ervaringen te delen. Ze mochten antwoord geven op vragen als:

  • Hoe was het om met een AI-assistent te werken?
  • Wanneer hielp het je echt?
  • Wanneer zat de tool er volledig naast?

In de evaluatie werden leuke en interessante anekdotes gedeeld. Daarbij werden soms voorbeelden gegeven waarin de assistent de productiviteit aanzienlijk verhoogde. Soms hallucineerde de AI ook, of bleef het codevoorbeelden geven waarin niet bestaande API’s en properties werden gebruikt. Toch was de afdronk positief. De snelheid waarin de AI-assistenten verbeteren biedt veel hoop voor de toekomst. De algehele conclusie was dan ook: “Its here to stay”.

We sloten de evaluatiesessie af met een wat meer filosofische vraag. Hoe gaat Generative AI ons werk veranderen? En wat is de impact van Generative AI op onze klanten? Deze moeilijke vragen zijn niet zomaar te beantwoorden, want een AI-assistent gebruiken is iets anders dan de onderliggende techniek kunnen duiden en daar vervolgens de volgende stap voor ons en onze klanten in te formuleren.

Zo bepaal je de volgende stap

De kunst om de volgende stap voor jouw organisatie te bepalen zit hem in het begrijpen van de technologie. Vervolgens kun je bepalen hoe je AI op zo’n manier inzet, dat jouw organisatie er een voordeel uit kan halen. Google heeft met hun Generative AI value spectrum een mooi overzicht gemaakt van de gelaagdheid van de technologie en welke oplossingen daarmee gerealiseerd kunnen worden. Elke laag heeft zijn eigen toepassingen, en elke laag heeft zijn eigen learning curve en cloud compute vereisten. We vinden het als consumenten van Large Language Models (LLM), die diensten als ChatGPT en Google Bard aandrijven, moeilijk om in te zoomen en te analyseren welke laag wat voor ons kan betekenen. Dit model kan daarbij helpen.

Models

Laten we beginnen met models. Je kent misschien de termen, GPT3.5, GPT3.5-turbo, GPT4, LLAMA 2 wel. Maar wat kan je hier als organisatie nu mee, behalve weten dat deze versies over nog meer informatie beschikken en waarschijnlijk nog beter antwoord kunnen geven op je vraag.

Allereerst vraag je je misschien af of je ook een eigen model kunt trainen? Kort gezegd, nee dat gaat niet. Niet als je een soortgelijk LLM model als GPT4 of LLAMA 2 wilt trainen. Je hebt simpelweg de kennis en de cloud infrastructuur niet om competitieve modellen te maken. Het trainen van GPT4 kostte volgens de CEO van OpenAI, Sam Altman, meer dan 100 miljoen dollar.

Tuurlijk zijn de onderliggende Artificial Intelligence algoritmes wel in te zetten voor specifieke doeleinden. Kleinere Generative AI modellen kunnen oplossingen bieden voor specifieke niche toepassingen. Echter zullen veel organisaties niet de kennis hebben om hier een beter alternatief mee te produceren dan de general purpose modellen die eigenlijk een Logica as a Service functionaliteit bieden.

Het hosten van een Large Language Model is voor veel organisaties wel binnen handbereik. Meta’s LLAMA v2 is bijvoorbeeld prima te hosten in de cloud of op eigen hardware met een highend GPU. De keuze is echter beperkter, we zien weinig tech giganten anders dan Meta die hun modellen open sourcen. 

API’s

Laten we nu overgaan naar de volgende stap in het Generative AI-spectrum: API’s. Dit is waarschijnlijk de meest toegankelijke optie voor veel organisaties om gehoste Language Model Libraries (LLM’s) van grote technologiegiganten te benutten. Je hebt de mogelijkheid om direct een API van OpenAI af te nemen, of je kunt ervoor kiezen om API’s van Microsoft Azure of concurrenten zoals Google Cloud te gebruiken. Het voordeel van de keuze voor de grote cloud providers is, dat je er waarschijnlijk toch al klant bent. Bovendien is de integratie die je moet maken gemakkelijker omdat de API’s in hetzelfde ecosysteem zitten.

De cloud API’s bieden een “models as a service” aan. Met deze service kun je de modellen die de drijvende kracht zijn achter ChatGPT gebruiken in je eigen software. Een minder bekende mogelijkheid is het finetunen van deze modellen. Het finetunen stelt je in staat om een specifiek domein binnen het model te verfijnen, waardoor je bijvoorbeeld GPT4 kunt laten begrijpen en reageren op informatie binnen jouw eigen expertisegebied. Je kunt het model specifieke vaktaal en termen aanleren, en het voeden met gegevens uit documenten, maar dit vereist wel wat data engineering.

Het is belangrijk op te merken dat de gegevens in een vraag-en-antwoordformaat moeten worden aangeboden. Het is dus niet zo eenvoudig als simpelweg koppelen met je Office365-documenten. Houd er rekening mee dat je contextuele informatie aan het model geeft en geen momentopnames, zoals individuele klant omzet of gemiddelde klanttevredenheidscijfers. Als je deze specifieke gegevens wilt gebruiken, is het beter om deze in real-time aan het model door te geven, indien van toepassing. Hieronder vind je een voorbeeld van een chatgesprek waarmee je het model kunt finetunen.

{
    "messages": [
        {
            "role": "system",
            "content": "The Caesar chatbot is a bot that helps with finding information."
        },
        {
            "role": "user",
            "content": "Who is the CTO of Caesar Groep?"
        },
        {
            "role": "assistant",
            "content": "Dibran Mulder is the CTO of the Caesar Groep since April 2022."
        }
    ]
}

Logica as a Service

Het toepassen van LLM’s als “Logica as a service” vormt de volgende stap in een wijdere adoptie van Large Language Models. De uitdaging hierbij is dat de interface voor communicatie met het model niet overeenkomt met de traditionele benadering van softwareontwikkeling. Large Language Models verwachten namelijk natuurlijke taal als invoer, terwijl in softwareontwikkeling programmeertalen worden gebruikt om instructies aan CPU’s te geven. Deze twee werelden zijn moeilijk te verenigen.

Hoe ga je een interface leggen tussen LLM’s en bijvoorbeeld je eigen gemaakte API’s?

De community werkt intensief aan het verbeteren van deze verbinding, en er zijn verschillende mogelijkheden beschikbaar. Alle benaderingen zijn echter gebaseerd op prompt-engineering, een techniek waarbij we de LLM zeer gedetailleerde instructies geven. Deze instructies zijn zo gedetailleerd dat je het model ook het bestaan van bepaalde functies leert. Dit zijn letterlijk de functies die je zelf geprogrammeerd hebt. Belangrijk daarbij is dat je in natuurlijke taal vermeld waarvoor de functie bedoeld is en wat voor parameters de functie verwacht. Het LLM kan dan zelf besluiten om deze functie te gebruiken om tot het antwoord op je vraag te komen.

Hieronder zie je een voorbeeld van de OpenAI Python SDK waarin we een get_current_weather functie beschikbaar stellen aan het LLM-model om realtime weer informatie te gebruiken. Dit voorbeeld illustreert het gebruik van weerdata in het model, maar je kunt ook gegevens uit je eigen databases of services integreren. Stel je bijvoorbeeld eens voor welke mogelijkheden er ontstaan als je toegang hebt tot je ERP-systeem. Dan kan de chatbot plotseling antwoorden geven op vragen zoals: “Hoeveel uren zijn er geboekt voor dit project?” of “Wat was de omzet van afgelopen week?”

def get_current_weather(location, unit=" celsius"):
    """Get the current weather in a given location"""
    weather_info = {
        "location": location,
        "temperature": "72",
        "unit": unit,
        "forecast": ["sunny", "windy"],
    }
    return json.dumps(weather_info)

def run_conversation():
    messages = [{"role": "user", "content": "What's the weather like in Boston?"}]
    functions = [
        {
            "name": "get_current_weather",
            "description": "Get the current weather in a given location",
            "parameters": {
                "type": "object",
                "properties": {
                    "location": {
                        "type": "string",
                        "description": "The city and state, e.g. San Francisco, CA",
                    },
                    "unit": {"type": "string", "enum": ["celsius", "fahrenheit"]},
                },
                "required": ["location"],
            },
        }
    ]
    response = openai.ChatCompletion.create(
            model="gpt-3.5-turbo-0613",
            messages=messages,
            functions=functions,
            function_call="auto",
        )
    response_message = response["choices"][0]["message"]

Naast de OpenAI functies zijn er in de community ook toolkits ontwikkeld om beter te interfacen met LLM’s. De meest bekende is LangChain. Dit is een open source Python library die allerlei functies ter beschikking stelt en SDK’s levert om eigen functies te ontwikkelen. Hiermee kun je bijvoorbeeld permanente of tijdelijke geheugenfunctionaliteit voor een LLM implementeren, denkprocessen met Chains opzetten, en toegang bieden tot informatie in documenten en meer. Microsoft heeft hier een C# open source naast gezet, genaamd Semantic Kernel. In feite is dit een soortgelijk product, maar heeft het meer functies die integreren met het Microsoft ecosysteem.

De mogelijkheden die de verschillende API’s, libraries en toolkits bieden breiden zich op een enorm tempo uit. Als organisatie is het verstandig om deze in de gaten te houden en te experimenteren of je ze kan gebruiken om je toepassingen nog efficiënter, productiever en gebruiksvriendelijker kan maken.

Applications, Solutions en Assistants

Het Google GenerativeAI spectrum maakt ook nog onderscheid in applicatons, solutions en assistants. Wat mij betreft vallen deze allemaal onder toepassingen. Google heeft uiteraard verschillende producten die ondersteunen bij het realiseren van verschillende type toepassingen maar voor veel organisaties zal een applicatie of een solution de daadwerkelijk toepassing zijn van de techniek.

Conclusie

Het is belangrijk voor organisaties om te gaan prototypen met de mogelijkheden die er zijn. We weten van het bestaan van hele goede assistenten zoals ChatGPT of Google Bard, maar als je naar de onderliggende API’s en modellen kijkt moet je jezelf de vragen stellen: Wat zou onze organisatie daar nu mee kunnen? Wat voor oplossingen, applicaties of assistenten kunnen wij ontwikkelen die het verschil gaan maken in onze markt?

Begin klein, begin met experimenten en prototypes. Ontdek de mogelijkheden en werk vanuit daar verder. Heb je daar hulp bij nodig? Ik ga graag met je in gesprek om onze ervaringen uit te wisselen!
Stuur me gerust een bericht via LinkedIn of e-mail me op d.mulder@cloudrepublic.nl

Meer tips & nieuws van onze developers

Cloud Solutions Architect
Aan het woord

Cloud Developer aan het woord: Daan

Cloud Solution Architect Daan startte twee jaar geleden bij Cloud Republic. Hoewel hij niet per se op zoek was naar een nieuwe uitdaging, is hij

Altijd de laatste .NET trends en development nieuws in je inbox?

Schrijf je in voor Dev News, onze nieuwsbrief. Zo weet je zeker dat altijd op de hoogte blijft van de laatste trends & ontwikkeling die voor jou relevant zijn.

Cloud Republic

Janssoniuslaan 80

3528 AJ Utrecht

 

info@cloudrepublic.nl