Hopp til hovedinnhold

Prompt engineering kan være vanskelig. Noen ganger føles det som om språkmodellen forstår deg perfekt, mens andre ganger virker det som om den ikke har peiling på hva det eha du er du egentlig vil frem til. Her kommer verktøyet LangSmith inn, et verktøy som hjelper deg å se hva som faktisk skjer “under panseret” når du bygger løsninger med LLM-er. Med bedre innsikt, testing og feilsøking blir det både enklere, og litt mindre mystisk, å lage smarte AI-applikasjoner som faktisk fungerer.

Hva er LangSmith, og hvorfor bry seg?

LangSmith er en verktøykasse utviklet av LangChain med målet om å gjøre det enklere å utvikle, debugge og rulle ut LLM applikasjoner. Hovedproblemet for de fleste som lager AI applikasjoner er hvordan man får språkmodellen til å generere det man faktisk vil ha. Når man skal lage en LLM applikasjon ville nok mange rotet rundt i verktøy som ChatGPT, Claude eller Google AI Studio, forsøke å skrive en god prompt, for deretter å hardkode denne inn i applikasjonen sin og håpe at den funker som den skal. LangSmith, derimot, gir deg en egen plattform hvor du kan teste ut prompts på forskjellige modeller, holde styr på forskjellige versjoner av prompts og evaluere kvaliteten på det modellene produserer slik at de genererer det brukerne faktisk vil ha. Med andre ord, LangSmith tilbyr rammer og struktur rundt det som ellers er en rotete, uoversiktlig og vanskelig arbeidsflyt.

En typisk arbeidsflyt i LangSmith vil se noe slik ut:

  1. Du bygger en applikasjonen lokalt med prompts testet ut i LangSmith
  2. Applikasjonen rulles ut slik at brukere kan teste den
  3. Data samles inn og visualiseres i LangSmith etter hvert som applikasjonen brukes
  4. Resultatene evalueres på metrikker som korrekthet og relevans
  5. Innsikten brukes for å lage en ny prompt som forhåpentligvis 🤞 gir bedre resultat enn i forrige iterasjon
En typisk arbeidsflyt i LangSmith
LangSmith Arbeidsflyt | Kilde: https://docs.langchain.com/langsmith/home

Hva er prompt engineering – og hvorfor trenger det en “smith”?

En prompt er instruksene du gir til LLM-en, for å definere hvordan den faktisk skal oppføre seg uten å endre noe om dens underliggende funksjonalitet. Det er litt som å gi en slags oppskrift til en kokk, hvor prompten er oppskriften og LLM-en er kokken. En god prompt er nøkkelen for å sikre det outputet du ønsker, og optimalisering av prompts (prompt-engineering) har de siste årene etablert seg som et eget fagfelt i bransjen. Små endringer i prompten kan føre til store endringer i output. Manuell validering av ulike prompts kan være lite forutsigbart og tidkrevende, og det er her verktøy som LangSmith kan hjelpe deg med å gjøre livet ditt litt lettere.

Kjernefunksjoner

Prompt engineering

I LangSmith er det enkelt å ha struktur over dine diverse prompts når man driver med prompt-engineering. I grensesnittet kan man legge til ulike "prompt-templates", som er maler for oppsettet av en prompt. I stedet for å skrive hele prompten manuelt hver gang, kan man bruke variabler og struktur, for eksempel:

Gi meg forslag til en julegave til en som har vært {snillhetsgrad} i år, og som har {hobby} som hobby.

Hvor snillhetsgrad og hobby er variabler du kan sende inn for å få et mer spesialisert output. F.eks. med variablene {snillhetsgrad}=super snill og {hobby}=fotball kan man kanskje få et forslag som "billetter til VM finalen i 2026".

En av de mest verdifulle funksjonene til LangSmith er versjonering, eller commits, av prompt-templatene dine. Dette lagrer historikken til prompt-templatet ditt, og hvis du synes den nye versjonen din presterte dårligere enn den forrige, ja da er det bare å rulle tilbake! Man kan også sette Tags på ulike prompt-versjoner, f.eks. miljø-tags som production og staging for å velge hvilken versjon av prompt-templatet du vil bruke i hvilket miljø.

I playgrounden kan man enkelt teste ulike prompt versjoner mot hverandre, og sammenligne outputs for å se hvilken som best passer din applikasjon, slik som kan sees på bildet under. Man kan endre på hvilken llm-modell man bruker, output-skjemaet, selve prompt-templaten, og ulike inputs, for å sammenligne ytelse.

Testing av prompts i LangSmith
Testing av ulike prompter | Kilde: https://docs.langchain.com/langsmith/prompt-engineering-concepts

Observability/tracing

Språkmodeller i seg selv er ikke-deterministiske, som vil si at samme input kan gi helt forskjellige svar. Dette betyr at det kan være svært vanskelig å debugge hvorfor noe funker eller ikke. LangSmith løser dette ved å registrere hvert steg i arbeidsflyten som en trace (en steg-for-steg oversikt over alt som skjer når én operasjon kjører), inkludert input, output og tool-calling. LangSmith visualiserer denne flyten for deg gjennom grafer og dashboards som gjør det enklere å forstå hvorfor modellen oppfører seg som den gjør, og som gjør det enklere å se hvor eventuelle feil oppstår.

Monitorering av prompter i LangSmith
Monitorering av prompter | Kilde: https://docs.langchain.com/langsmith/dashboards

Evaluation/evals

Evals lar deg teste modeller mot datasett med forventede svar og bruke innebygde eller egendefinerte evalueringsfunksjoner for å vurdere generert output. Målet er dermed å se hvilke versjoner av appen som fungerer best ved å kjøre flere tester og sammenligne resultatene på parametre som kvalitet, relevans og korrekthet. LangSmith tilbyr evaluering på flere forskjellige måter, blant annet basert på menneskelig vurdering (innebygd støtte for bruker-feedback), automatiske evalueringsfunksjoner på predefinerte datasett, eller til og med evaluering ved hjelp av en annen LLM (LLM-as-a-judge). Målet er å gi en så konkret oversikt som mulig over hva som fungerer bra og hva som kan forbedres i promptene.

Evaluering av prompter i LangSmith
Evaluering av prompter | Kilde: https://docs.langchain.com/langsmith/evaluate-llm-application

Pros and cons

LangSmith kan være et supert verktøy om man bruker det riktig, men det er ikke bare gull og grønne juletrær heller.

Det som er bra

LangSmith gir deg kort oppsumert:

  • God struktur og oversikt over prompt-templates
  • Testing og evalueringsverktøy for å sikre god prompt-kvalitet
  • Muligheter for å enkelt integrere deg med resten av LangChain-universet

I tillegg er en av de største fordelene med LangSmith at det tilbyr et brukervennlig UI, som kan benyttes av andre enn kun medlemmer med teknisk kompetanse i teamet. Dette gjør at andre enn kun utviklere kan hjelpe til med å optimalisere LLM-appliksjonen, som kan være svært nyttig i tilfeller hvor man trenger å få inn noen med spesifikk kompetanse innen et domene for å evaluere output.

Det som er mindre bra

LangSmith har blitt et ganske komplisert produkt, med mye funksjonalitet. Dette innebærer dermed en læringskurve om man ikke er kjent med systemet, og man må derfor sette av ekstra tid for å bli kjent med verktøyet før man vil få full nytteverdi.

En annen ting å være obs på er at man potensielt i lengden kan låse seg litt til LangChain universet. LangSmith kan brukes selvstendig, men du vil få best utbytte om du allerede bygger med LangChain.

Gode produkter er heller ikke gratis, og dersom prosjektet ditt etterhvert vokser til en betraktelig størrelse, vil kostnadene også påløpe relativt greit etterhvert.

Oppsummering

LangSmith er et godt verktøy om man skal bygge LLM-applikasjoner av kvalitet. Her får du god oversikt og enkle evalueringsverktøy, som kan gjøre prompt-engineering til en litt mindre "black-box" operasjon.

Relevante lenker anbefalt av forfatteren

Liker du innlegget?

Del gjerne med kollegaer og venner