menu sluiten
Contact

Antwerpen
Veldkant 33B, 2550 Kontich
België +32 (0)3 444 11 08

Breda
Rithmeesterpark 50-A1, 4838GZ Breda
Nederland +32 (0)3 444 11 08

info@jstack.eu

24 June 2024

Case study: Plan je ideale vlucht met behulp van artificiële intelligentie.

Planely App

Het vinden van de perfecte vlucht kan uitdagend zijn, vooral voor langere reizen. Dit resulteert vaak tot het niet vinden van de ideale vlucht, of het kost veel tijd en moeite. Met Planely hoef je niet verder te zoeken. Onze geavanceerde AI-technologie zoekt de ideale vlucht voor jou, rekening houdend met zowel je bestemming als je reisdata – maar ook met je specifieke voorkeuren.

Beschouw Planely als die vriend die altijd de beste vluchten vindt. Maar we gaan verder dan het vinden van vluchten alleen: je kan ook specifieke voorkeuren opgeven. Wil je bijvoorbeeld een rechtstreekse vlucht, maar ben je bereid concessies te doen bij een groot prijsverschil? Planely houdt er rekening mee!

Deze case study verkent hoe de applicatie Planely AI-technologieën toepast om je reisplanning te vereenvoudigen. De applicatie werd gebouwd als stageopdracht door 2 studenten van KdG. Hoewel de app zich nog in de experimentele fase bevindt, heeft het ons al waardevolle inzichten opgeleverd. Deze ervaringen delen we graag met jou!

 

De problemen met het vinden van je ideale vlucht

Planely pakt specifieke uitdagingen aan die traditionele vluchtzoekmachines niet kunnen oplossen. Veel vluchtzoekmachines bieden niet de flexibiliteit om rekening te houden met de vele variabelen die reizigers belangrijk vinden, zeker niet als er conditionele variabelen in het spel zijn. Dat zorgt er vaak voor dat het opzoeken van vluchten een tijdrovend proces wordt, met talloze zoekopdrachten en handmatige vergelijkingen. Planely maakt deze complexe zoekopdrachten een stuk eenvoudiger.

Met Planely kun je eenvoudig meerdere factoren in je zoekopdracht integreren. Denk hierbij aan het vergelijken van vluchten van nabijgelegen luchthavens, verschillende vertrek- en aankomstdatums, en voorkeuren zoals niet ‘s nachts aankomen, om er maar ééntje te noemen. Deze flexibiliteit zorgt ervoor dat je geen reeks van opeenvolgende zoekopdrachten meer hoeft te doen, die er bovendien vaak niet voor zorgen dat je de juiste vlucht vindt.

Deze uidagingen treden vooral op bij langere reizen, maar ook voor kortere vluchten kan Planely een grite meerwaarde bieden.

 

Hoe werkt Planely?

Om een volledig overzicht te bieden, beginnen we met het gebruikersperspectief en behandelen we daarna de technische details.

 

De functionele werking

Het gebruik van Planely is bijzonder eenvoudig. Als gebruiker kan je in de applicatie invoeren naar welke vlucht je op zoek bent. Je kan zo veel of zo weinig criteria meegeven als je wenst.

Bijvoorbeeld:

Ik wil morgen naar Madrid vliegen, liefst een rechtstreekse vlucht. Als het prijsverschil groot is, is 1 overstap ook oké.

De applicatie gaat vervolgens met deze informatie aan de slag om jou de meest relevante vluchten voor te stellen.

Maar de magie stopt hier niet. Wanneer je als gebruiker de voorgestelde vluchten te zien krijgt, bestaat de kans dat je je zoekopdracht verder wil verfijnen, of toch nog een alternatieve zoekopdracht wil uitproberen.

Door in gesprek te gaan met planely op een natuurlijk manier zal de applicatie je blijven helpen tot je je ideale vlucht gevonden hebt. Op basis van jouw input wordt de lijst met vluchten verfijnd.

Planely Flights

Zoals je in bovenstaande screenshot kan zien, heeft de gebruiker in dit geval een goedkopere vlucht kunnen vinden door een extra bericht te typen. De gebruiker had overigens ook de mogelijkheid om deze informatie al meteen in de initiële vraagstelling mee te geven.

 

De technische werking

Planely maakt gebruik van de OpenAI API om het AI deel af te handelen en de Tequila API om vlucht data op te halen.

Ook bij dit project proberen we de principes van Sailfish zo goed mogelijk te volgen en maken we gebruik van de bestaande API’s waar we kunnen. Om tot het uiteindelijke resultaat te komen, spreken we de openAI API zelfs twee keer aan.

De precieze stappen zijn als volgt:

  1. Prompt omzetten naar query parameters
  2. Vluchten ophalen
  3. Analyse uitvoeren op de vluchten
  4. Tonen van de resultaten

 

1. Prompt omzetten naar query parameters

De eerste stap van het proces is om de user prompt te analyseren en hier de nodige query parameters uit te halen. Daarvoor maken we gebruik van OpenAI. De verkregen query parameters sturen we dan door naar de Tequila API om de vluchten op te halen.

Een voorbeeldje:

Ik ga een rondreis maken in Zuid-Afrika starten in Johannesburg, vertrekken in Kaapstad, van 16/08 tot 28/08, ik woon in Sint-Niklaas. Stel me de goedkoopste vluchten voor, ik wil 2u rijden naar de luchthaven.

OpenAI zal uit deze prompt de vertrekdatum, de terugkomstdatum en de bestemming halen. Daarnaast wordt er ook naar de locatie van de gebruiker gekeken om het vertrekpunt vast te stellen.

 

2. Vluchten ophalen

Als de query parameters uit de opdracht van de gebruiker zijn gehaald, is de volgende stap eerder makkelijk. Het ophalen van de vluchten omvat niet meer dan het invullen van de parameters en het uitvoeren van de query.

 

3. Analyse uitvoeren op de vluchten

Het consistent krijgen van de resultaten uit de analyse op de vluchten is de grootste uitdaging gebleken.

De analyse is het onderdeel waar de “echte magie” gebeurt. Bepaalde zaken – zoals conditionele statements –  kunnen we niet rechtstreeks aan de Tequila API vragen.

Bijvoorbeeld: “Ik vlieg liefst zonder tussenstops, maar als het prijsverschil groot is, is een tussenstop acceptabel“. In dit geval geven we aan Tequila geen parameter mee over de tussenstops. We vragen alle vluchten op, en voeren nadien een analyse uit op de resultaten.

Het moeilijke hierbij is dat naarmate we meer vluchten meegeven, we meer OpenAI tokens gebruiken, en de requests naar OpenAI duurder worden.

De gebruiker kan alle soorten factoren meegeven in zijn zoekopdracht. Dat maakt het complex, waardoor openAI niet altijd consistent de correcte resultaten toont.

Hier hebben we testen uitgevoerd met GPT 3.5 turbo en GPT-4o met interessante resultaten. Meer daarover lees je later in dit artikel.

 

4. Tonen van de resultaten

Als alle voorgaande stappen zijn uitgevoerd, rest ons enkel nog om de vluchten te tonen.

Wanneer de gebruiker beslist om een volgend bericht in te voeren om de lijst van vluchten te verfijnen of aan te passen, dan zal de cyclus opnieuw starten. In dit geval worden de vorige gebruikersberichten ook meegegeven, zodat OpenAI rekening kan houden met de volledige context van het gesprek. Dat zorgt er ook voor dat er meer tokens nodig zijn wanneer een gesprek meer berichten bevat.

 

GPT-3.5-turbo vs GPT-4o

GPT 3.5 Turbo Vs GPT 4o

Met het oog op de kosten (we gebruiken redelijk veel tokens voor deze toepassing) hebben we geprobeerd om enkel GPT-3.5 Turbo te gebruiken. Dat verloopt redelijk succesvol voor de eerste stap in het proces (de prompt omzetten naar query parameters), maar is minder geschikt voor het uitvoeren van de analyse op de vluchten.

Wanneer we overschakelen naar GPT-4o, zijn de resultaten een stuk beter. Meestal krijgen we correcte vluchten door, maar dat hangt af van de complexiteit van de prompt van de gebruiker. We merken ook dat OpenAI hier niet super consistent in is. De ene dag werkt de applicatie relatief goed met een bepaalde query, de volgende dag kan het dan weer volledig mislopen met een gelijkaardige query.

Voor het omzetten van de prompt naar query parameters gebruiken we function calls. Voor de analyse liepen we hier tegen een aantal problemen aan, waardoor we het uiteindelijk zonder function calls hebben doorgevoerd. Dat zorgt uiteindelijk ook voor minder consistente resultaten.

 

Interesse in Planely?

Momenteel zetten we de applicatie bewust nog niet open voor het wijde publiek. Heeft deze post je zin gegeven om er zelf eens mee aan de slag te gaan? Neem dan gerust contact op! We kunnen je toegang geven zodat je zelf kan ondervinden wat wel en wat niet werkt.

Ter info: in de huidige versie maken we gebruik van GTP-3.5, waardoor er veel fouten zullen optreden wanneer je conditionele logica probeert toe te passen.

Heb je nog vragen? Aarzel in dat geval ook niet om contact met ons op te nemen!

Meer weten?

Geef gerust een seintje!