Bortom vibe testing

Ska du utveckla en så kallad AI Agent?

Då har jag några tips till dig. Det absolut viktigaste, enligt mig – och det här vill jag verkligen banka in – är att börja tidigt med att sätta upp dina kriterier för att kunna utvärdera om tjänsten är dålig, bra eller perfekt. Att sätta måttstocken först innebär betydligt mycket mer än att bara "chatta fritt" och uppleva att den är bra. Vi kallar det internt för "vibe testing", till ära av "vibe coding".

Underskatta inte vibe testing, för det har också ett syfte. I slutändan handlar allt om själva upplevelsen, oavsett om svaret är korrekt eller ej. Även om ett korrekt svar oftast leder till en bättre upplevelse, kan en tjänst med rätt svar ändå innebära en dålig upplevelse.

Men när det gäller tester bortom "vibe testing", så rekommenderar jag att tidigt definiera vad agenten ska kunna göra. Att säga att den ska kunna "svara på allt" är inte tillräckligt specifikt. Du måste exakt ange vilka domäner den ska hantera, vilka som är gråzoner och vilka som är out of scope. För att agenten ska lyckas är det avgörande att du förstår domänens komplexitet och hur fragmenterad datan är.

Hitta de hundra vanligaste frågorna

Det mest konkreta sättet du kan börja med detta är att sätta upp de hundra vanligaste frågor som den här agenten kommer att få.

Om du inte har hundra frågor att hämta från tidigare data, kan du börja med att hitta på dina egna utifrån det scopet och de kriterier du anser att den ska klara. När du har satt dessa hundra frågor, då börjar du djupdyka i vartenda en av dem och definierar exakt vad det innebär att svara på den frågan.

Och då menar jag till exempel: behöver du samla information från olika platser? Behöver du berika den här informationen i olika steg med specifik kontext? Eller kan du bara hämta ett direkt utdrag och svara baserat på detta?

Baserat på vad du kommer fram till här, kommer du börja kunna kartlägga olika typer av komplexitet i frågorna. Och du kommer här börja märka hur pass komplex den här lösningen faktiskt kommer att vara.

Vad du gör i grund och botten är att kartlägga exakt vad det innebär att kunna svara på en fråga eller inte. Men du måste ha satt upp dina kriterier och dina frågor, inklusive rätt svar.

Automatisering och utvärdering

När du har fått dessa frågor måste du också kunna använda dem för att snabbt kunna testa igenom hur agenten svarar enligt facit som du har satt upp. Allra helst ser du till att alltid återanvända denna data för att kunna utvärdera framsteg.

Låt oss säga att du först klarar 50 av 100 frågor. Då kan du analysera var den brister och vad du behöver jobba på för att nå upp till fler lyckade frågor.

Du når sedan kanske upp till 60, 70 eller 80 rätt. För varje justering du gör vinner du enormt mycket tid på att kunna automatisera de här testerna. Du behöver egentligen inte ens rätta själv, utan du kan köra igenom frågorna automatiserat mot agenten och därefter rätta automatiserat. På så sätt kan du spara så mycket tid som möjligt och istället lägga den på utveckling.

Det finns många bra verktyg för detta som Langfuse, Braintrust och Langsmith som alla har olika typer av liknande funktionalitet att erbjuda i sin tjänst. Använd dessa! De sparar mycket tid. Ännu bättre är att ta fram egna verktyg som är specifikt anpassade. För detta kan du använda Loveable, Firebase Studio eller Bolt. Du kan också skapa egna notebooks för att snabbt bygga ihop ett testverktyg.

Vidareutveckling och komplexitet

Vad mer kan du göra då? Jo, du har dina initiala tester eller standardutvärderingar nu. Men du måste också börja sätta vart den ska nå. Det vill säga, kunna sätta ännu svårare frågor som du vet att du inte klarar idag, men som du ska kunna klara. När du börjar djupdyka i dem behöver du också förstå vilka olika teknologier du kanske behöver utforska för att klara detta bättre.

Det kan vara allt från avancerade RAG-metoder till att kunna i realtid utvärdera eller faktagranska dina svar. Du kanske behöver mer autonomi i din tjänst. Allt det här förstår du bättre när du ser vad den klarar av och inte klarar av. Du borde egentligen sätta igång med detta snarare än att välja ramverk och kanske även modeller.

Jag är helt övertygad om att ett tidigt och strukturerat arbete med tester, och lärdomarna från dessa, är avgörande för att ta sig från prototypstadiet till produktion. Först när du vet var gränsen går för modellernas och systemets förmåga kan du planera nästa steg. Det är tidskrävande, javisst, men det är väl värt det snarare än att arbeta i blindo.

Min övertygelse grundar sig i egna erfarenheter som produktägare, där jag har lett utvecklingen av LLM-drivna tjänster och agenter. Vi har upprepade gånger uppskattat värdet av en ordentlig testmetod.

Då känns språkmodellerna plötsligt inte lika oförutsägbara längre.