Battle Azure OpenAI met ChatGPT

Met de opmars van ChatGPT in Azure OpenAI ontstond afgelopen jaar het idee binnen Riviq om hiermee voor onze Innovation day een leuke use case te bedenken.

Het idee werd al snel omgedoopt naar een Battle Azure OpenAI met ChatGPT. Een wedstrijd waarin 2 kleine teams in één dag een business toepassing maken obv hetzelfde uitdaging.

Challenge

De uitdaging voor beide teams is het volgende:

“Kun je, door inzet van AI, in een natuurlijke taal een vragen stellen aan een database?”
 “En het antwoord automatisch teruggeeft in een visualisatie”

Dat zou toch fantastisch zijn als dit kan?

Als business gebruiker niet meer ingewikkeld in een BI tool een rapport zoeken of zelf bij elkaar klikken. Maar gewoon via een prompt je vraag intiikken of inspreken en het benodigde inzicht als antwoord.

Beide teams hebben elk een eigen Azure Lab omgeving tot hun beschikking met o.a. Azure OpenAI met ChatGPT en een database met verkooptransacties van een fictief bedrijf.

Einde dag demonstreren beide teams hun oplossing aan de jury om vervolgens een winnaar te kiezen.
De jury kijkt o.a. werkt de oplossing? Is deze oplossing inzetbaar op andere (klant)omgevingen? Wat is wow factor voor bonuspunten?

Oplossing Team A

Tijdens de eerdere voorbereiding van de Battle had Team A een aantal uitgangspunten:

  • Via Azure OpenAI API antwoord geven op “business” vragen
  • Laagdrempelig gebruik door het stellen van “natuurlijke” tekst
  • Implementatie moet makkelijk door te voeren zijn over meerdere databases
  • Antwoord moet een antwoord geven in tekst en een visual
  • Resultaten moeten gelogd worden ter validatie
  • Resultaten moeten een eenduidig antwoord geven
  • De kosten moeten niet te hoog oplopen
  • Moet makkelijk in een Azure omgeving te deployen zijn

Qua architectuur is gebruik gemaakt van HTML forms (via django) voor invoer van de vraag, OpenAI met ChatGPT voor het schrijven van de query en output als prompt mee geven aan ChatGPT voor een visual om in HTML te presenteren.

Dit ziet er schematisch als volgt uit:

Architectuur Azure OpenAI

Resultaat Team A

Einde dag is het Team A gelukt om de oplossing werkend te krijgen en demo te geven.

Zie ook enkele screenshots van de oplossing:

Invoerscherm

Via een webpagina ‘ask me everything’ kan je in de natuurlijke taal je vraag stellen waarvan je een inzicht wil hebben. Als voorbeeld de vraag ‘laat de top 10 klanten zien waarbij het verkoopvolume het grootste is’.

Invoerscherm Azure OpenAI
Logging Azure OpenAI

Logging en kostenoverzicht

Alle vragen die worden gesteld aan OpenAI worden gelogd. Dit geldt ook voor de bijbehorende prompts, aantal gebruikte tokens en kosten per vraag. Zo maak je ook inzichtelijk wat kosten zijn, want ja ook Azure OpenAI is niet gratis.

Tevens kan zo een nieuwe vraag beoordelen of deze al eerder is gesteld, zodat je het beschikbare antwoord kan hergebruiken, zonder opnieuw te stellen en kosten te maken.

Output visualisatie

Het is tevens gelukt om het antwoord in een visualisatie aan de gebruiker te tonen. Hierbij heeft het team ook ChatGPT de vrijheid gegeven om zelf een passende grafiek vorm te geven.

Visualisatie Azure OpenAI

Meer van dit in je mailbox?

We sturen je circa 6x per jaar een email met handpicked cases, blogs en tips.

Oplossing Team B

Ook bij team B stonden een aantal onderzoeksvragen centraal:

  • Hoe kan een AI model zich inlezen op een database en datamodel?
  • Hoe wordt de vertaling gemaakt van Business vraag (in Nederlandse taal) naar database vraagstuk (SQL)?
  • Hoe wordt het query resultaat weer omgezet in “Nederlandse taal”?
  • Hoe wordt het query resultaat omgezet in een visualisatie met bijvoorbeeld een grafiek?

Team B heeft voor een andere oplossing gekozen, namelijk Databricks en OpenAI voor processing en Power BI/GUI voor vraagstelling + visualisatie.

Hun stappenplan was als volgt:
1. Creëren View bovenop stermodel in SQL database, zodat Power BI visualisatie werkend blijft:
   a. Data Sterren analyse
   b. Creëren View
2. View definitie + heldere opdrachtgeving definiëren als input voor OpenAI
3. Natuurlijke vraag stellen aan OpenAI via python notebook in Databricks. Antwoord moet een Alter view statement zijn.
4. Het antwoord dat terugkomt uit OpenAI, “Alter Statement”, runnen op de database/Databricks
5. Power BI refresh
6. Power BI GUi

Resultaat Team B

Eerste pogingen met GPT3.5 komen een eind, maar lijken te stoppen met het resultaat omdat het antwoord te veel tokens bevat. Oplossing hiervoor was om GPT4 in te zetten voor complexe vragen met meer tokens.

Tijdens uitvoering van de Power BI refresh gaf dit een Authentication error. Dit op te lossen met aanvullende autorisatie settings in Power BI.

Het is team B ook gelukt om een resultaatset, gegenereerd dmv ChatGPT, terug te krijgen. Maar helaas niet om dit ook via Power BI automatisch te laten visualiseren. Tijdens uitvoering van de Power BI refresh gaf dit een Authentication error. En was ook de tijd te beperkt om een goede Power BI GUI te bouwen.

Learnings van de dag

Na een dag inensief aan de slag met Azure OpenAI heeft het naast veel energie ook de nodige learnings opgeleverd:

  • Door ChatGPT gegenereerde queries zijn niet altijd correct (syntax errors) bij het doorgeven van de information schema. Veel gaat goed, model is verder te “leren” door gevalideerde vragen mee te nemen maar wel een groot risico
  • Output kan verschillen, ChatGPT interpreteert dezelfde vraag soms op verschillende manieren
  • Kosten GPT4 kunnen flink oplopen afhankelijk van complexiteit van de vraag
  • Gebruik GPT3.5 waar mogelijk (factor 20 goedkoper dan GPT4) en zet GPT4 in voor grote of complexe vragen (meer tokens)
  • Kosten per vraag van $0.80 (begin test) naar $0.02 na optimalisatie

Business toepassing ChatGPT

Een geslaagde dag waarin beide teams in één dag een oplossing hebben gebouwd met Azure OpenAI en ChatGPT. Veel energie, learnings en nieuwe kennis opgedaan om generatieve AI of Large language Models (LLM) in te zetten voor business toepassingen.

Is de oplossing hiermee al direct inzetbaar voor business gebruik? Vooral het eenduidig en consistent teruggeven van het antwoord op dezelfde vraag liet af en toe wat te wensen over.
Daar is dus nog wel meer voor nodig, maar de ontwikkeling van LLM gaat hard.

Het antwoord op de challenge van de Battle: ‘Kan je door inzet van AI of ChatGPT in een natuurlijke taal een vraag stellen aan een database en het antwoord geautomatiseerd teruggeven in een visual?

“Ja, dat kan!’

En met Azure OpenAI icm ChatGPT heb je de ingrediënten om hier waardevolle toepassingen mee te ontwikkelen.

Ga hiermee vooral experimenteren in kleine teams met business analisten en data engineers. En vooral een goede use case of (business)probleem als vertrekpunt.

Zou je hier ook zelf mee aan de slag willen binnen je organisatie en/of jouw use case willen bespreken?

Laat het ons weten!

Marc Ducardus

Meer weten? Neem vrijblijvend contact op met

Op de hoogte blijven van de laatste ontwikkelingen en webinars?

Schrijf je dan in voor de nieuwsbrief en ontvang circa 6x per jaar een selectie van blogs, cases, webinars en nieuws in je mailbox.

Meer over dit onderwerp