ai-agents-for-beginners

AI-agenter i produktion: Observabilitet och utvärdering

AI-agenter i produktion

När AI-agenter går från experimentella prototyper till verkliga applikationer blir det viktigt att förstå deras beteende, övervaka deras prestanda och systematiskt utvärdera deras resultat.

Lärandemål

Efter att ha genomfört denna lektion kommer du att veta hur man/ha förståelse för:

Målet är att ge dig kunskap för att omvandla dina “svarta lådor” till transparenta, hanterbara och pålitliga system.

Obs: Det är viktigt att implementera AI-agenter som är säkra och pålitliga. Kolla in lektionen Bygga pålitliga AI-agenter också.

Traces och Spans

Observabilitetsverktyg som Langfuse eller Azure AI Foundry representerar vanligtvis agentkörningar som traces och spans.

Trace-träd i Langfuse

Utan observabilitet kan en AI-agent kännas som en “svart låda” – dess interna tillstånd och resonemang är otydliga, vilket gör det svårt att diagnostisera problem eller optimera prestanda. Med observabilitet blir agenter “glaslådor” och erbjuder transparens som är avgörande för att bygga förtroende och säkerställa att de fungerar som avsett.

Varför observabilitet är viktigt i produktionsmiljöer

Att överföra AI-agenter till produktionsmiljöer introducerar nya utmaningar och krav. Observabilitet är inte längre en “trevlig att ha”-funktion utan en kritisk förmåga:

Viktiga mätvärden att spåra

För att övervaka och förstå agentbeteende bör en rad mätvärden och signaler spåras. Även om de specifika mätvärdena kan variera beroende på agentens syfte, är vissa universellt viktiga.

Här är några av de vanligaste mätvärdena som observabilitetsverktyg övervakar:

Latens: Hur snabbt svarar agenten? Långa väntetider påverkar användarupplevelsen negativt. Du bör mäta latens för uppgifter och individuella steg genom att spåra agentkörningar. Till exempel kan en agent som tar 20 sekunder för alla modellanrop accelereras genom att använda en snabbare modell eller genom att köra modellanrop parallellt.

Kostnader: Vad är kostnaden per agentkörning? AI-agenter förlitar sig på LLM-anrop som debiteras per token eller externa API:er. Frekvent verktygsanvändning eller flera prompts kan snabbt öka kostnaderna. Till exempel, om en agent anropar en LLM fem gånger för marginell kvalitetsförbättring, måste du bedöma om kostnaden är motiverad eller om du kan minska antalet anrop eller använda en billigare modell. Realtidsövervakning kan också hjälpa till att identifiera oväntade toppar (t.ex. buggar som orsakar överdrivna API-loopar).

Begäransfel: Hur många begäranden misslyckades agenten med? Detta kan inkludera API-fel eller misslyckade verktygsanrop. För att göra din agent mer robust mot dessa i produktion kan du sedan ställa in fallback-lösningar eller omförsök. T.ex. om LLM-leverantör A är nere, kan du byta till LLM-leverantör B som backup.

Användarfeedback: Implementering av direkt användarutvärdering ger värdefulla insikter. Detta kan inkludera explicita betyg (👍tumme upp/👎ner, ⭐1-5 stjärnor) eller textkommentarer. Konsekvent negativ feedback bör varna dig eftersom det är ett tecken på att agenten inte fungerar som förväntat.

Implicit användarfeedback: Användarbeteenden ger indirekt feedback även utan explicita betyg. Detta kan inkludera omedelbar omformulering av frågor, upprepade frågor eller att klicka på en omförsöksknapp. T.ex. om du ser att användare upprepade gånger ställer samma fråga är detta ett tecken på att agenten inte fungerar som förväntat.

Noggrannhet: Hur ofta producerar agenten korrekta eller önskvärda resultat? Definitioner av noggrannhet varierar (t.ex. korrekthet i problemlösning, informationshämtningens noggrannhet, användarnöjdhet). Det första steget är att definiera vad framgång innebär för din agent. Du kan spåra noggrannhet via automatiska kontroller, utvärderingspoäng eller etiketter för uppgiftskomplettering. Till exempel, markera traces som “lyckades” eller “misslyckades”.

Automatiserade utvärderingsmätvärden: Du kan också ställa in automatiserade utvärderingar. Till exempel kan du använda en LLM för att betygsätta agentens output, t.ex. om den är hjälpsam, korrekt eller inte. Det finns också flera open source-bibliotek som hjälper dig att betygsätta olika aspekter av agenten. T.ex. RAGAS för RAG-agenter eller LLM Guard för att upptäcka skadligt språk eller promptinjektion.

I praktiken ger en kombination av dessa mätvärden den bästa täckningen av en AI-agents hälsa. I detta kapitels exempeldokument visar vi hur dessa mätvärden ser ut i verkliga exempel, men först ska vi lära oss hur ett typiskt utvärderingsarbetsflöde ser ut.

Instrumentera din agent

För att samla in tracing-data måste du instrumentera din kod. Målet är att instrumentera agentkoden för att generera traces och mätvärden som kan fångas, bearbetas och visualiseras av en observabilitetsplattform.

OpenTelemetry (OTel): OpenTelemetry har blivit en industristandard för LLM-observabilitet. Det tillhandahåller en uppsättning API:er, SDK:er och verktyg för att generera, samla in och exportera telemetridata.

Det finns många instrumenteringsbibliotek som omsluter befintliga agentramverk och gör det enkelt att exportera OpenTelemetry-spans till ett observabilitetsverktyg. Nedan är ett exempel på att instrumentera en AutoGen-agent med OpenLit-instrumenteringsbiblioteket:

import openlit

openlit.init(tracer = langfuse._otel_tracer, disable_batch = True)

Exempeldokumentet i detta kapitel kommer att demonstrera hur du instrumenterar din AutoGen-agent.

Manuell skapande av spans: Även om instrumenteringsbibliotek ger en bra grund finns det ofta fall där mer detaljerad eller anpassad information behövs. Du kan manuellt skapa spans för att lägga till anpassad applikationslogik. Ännu viktigare är att de kan berika automatiskt eller manuellt skapade spans med anpassade attribut (även kända som taggar eller metadata). Dessa attribut kan inkludera affärsspecifik data, mellanliggande beräkningar eller någon kontext som kan vara användbar för felsökning eller analys, såsom user_id, session_id eller model_version.

Exempel på att skapa traces och spans manuellt med Langfuse Python SDK:

from langfuse import get_client
 
langfuse = get_client()
 
span = langfuse.start_span(name="my-span")
 
span.end()

Agentutvärdering

Observabilitet ger oss mätvärden, men utvärdering är processen att analysera dessa data (och utföra tester) för att avgöra hur väl en AI-agent presterar och hur den kan förbättras. Med andra ord, när du har dessa traces och mätvärden, hur använder du dem för att bedöma agenten och fatta beslut?

Regelbunden utvärdering är viktig eftersom AI-agenter ofta är icke-deterministiska och kan utvecklas (genom uppdateringar eller förändrat modellbeteende) – utan utvärdering skulle du inte veta om din “smarta agent” faktiskt gör sitt jobb bra eller om den har försämrats.

Det finns två kategorier av utvärderingar för AI-agenter: onlineutvärdering och offlineutvärdering. Båda är värdefulla och kompletterar varandra. Vi börjar vanligtvis med offlineutvärdering, eftersom detta är det minsta nödvändiga steget innan någon agent implementeras.

Offlineutvärdering

Datasetobjekt i Langfuse

Detta innebär att utvärdera agenten i en kontrollerad miljö, vanligtvis med testdatamängder, inte live-användarfrågor. Du använder kuraterade datamängder där du vet vad det förväntade resultatet eller korrekta beteendet är och kör sedan din agent på dessa.

Till exempel, om du byggde en agent för matematiska ordproblem, kan du ha en testdatamängd med 100 problem med kända svar. Offlineutvärdering görs ofta under utveckling (och kan vara en del av CI/CD-pipelines) för att kontrollera förbättringar eller skydda mot försämringar. Fördelen är att det är upprepbart och du kan få tydliga noggrannhetsmätvärden eftersom du har facit. Du kan också simulera användarfrågor och mäta agentens svar mot ideala svar eller använda automatiska mätvärden som beskrivs ovan.

Den största utmaningen med offlineutvärdering är att säkerställa att din testdatamängd är omfattande och förblir relevant – agenten kan prestera bra på en fast testmängd men stöta på helt andra frågor i produktion. Därför bör du hålla testmängder uppdaterade med nya edge cases och exempel som speglar verkliga scenarier​. En blandning av små “röktest”-fall och större utvärderingsmängder är användbar: små mängder för snabba kontroller och större för bredare prestandamätningar​.

Onlineutvärdering

Översikt över observabilitetsmätvärden

Detta avser att utvärdera agenten i en live, verklig miljö, dvs. under faktisk användning i produktion. Onlineutvärdering innebär att övervaka agentens prestanda på verkliga användarinteraktioner och kontinuerligt analysera resultat.

Till exempel kan du spåra framgångsfrekvenser, användarnöjdhetspoäng eller andra mätvärden på live-trafik. Fördelen med onlineutvärdering är att det fångar saker du kanske inte förväntar dig i en labbmiljö – du kan observera modellförändringar över tid (om agentens effektivitet försämras när inmatningsmönster förändras) och fånga oväntade frågor eller situationer som inte fanns i din testdata​. Det ger en sann bild av hur agenten beter sig i verkligheten.

Onlineutvärdering innebär ofta att samla in implicit och explicit användarfeedback, som diskuterats, och eventuellt köra skuggtester eller A/B-tester (där en ny version av agenten körs parallellt för att jämföras med den gamla). Utmaningen är att det kan vara svårt att få tillförlitliga etiketter eller poäng för live-interaktioner – du kan förlita dig på användarfeedback eller nedströmsmätvärden (som om användaren klickade på resultatet).

Kombinera de två

Online- och offlineutvärderingar utesluter inte varandra; de kompletterar varandra starkt. Insikter från onlineövervakning (t.ex. nya typer av användarfrågor där agenten presterar dåligt) kan användas för att förstärka och förbättra offline-testdatamängder. Omvänt kan agenter som presterar bra i offline-tester sedan implementeras med större självförtroende och övervakas online.

Faktum är att många team antar en loop:

utvärdera offline -> implementera -> övervaka online -> samla in nya felaktiga fall -> lägg till i offline-datamängd -> förfina agent -> upprepa.

Vanliga problem

När du implementerar AI-agenter i produktion kan du stöta på olika utmaningar. Här är några vanliga problem och deras möjliga lösningar:

Problem Möjlig lösning
AI-agenten utför inte uppgifter konsekvent - Förfina prompten som ges till AI-agenten; var tydlig med målen.
- Identifiera om uppdelning av uppgifterna i deluppgifter och hantering av dem av flera agenter kan hjälpa.
AI-agenten hamnar i kontinuerliga loopar - Se till att du har tydliga avslutningsvillkor så att agenten vet när processen ska avslutas.

Vanliga Problem och Lösningar

Här är några vanliga problem som kan uppstå när man arbetar med AI-agenter i produktion, tillsammans med förslag på lösningar:

Problem Lösning
Agenten misslyckas med att slutföra uppgifter - Granska och förbättra prompten för att säkerställa att den är tydlig och specifik.
- Använd en större modell för komplexa uppgifter som kräver resonemang.
Verktygskopplingar för AI-agent fungerar dåligt - Testa och validera verktygets output utanför agentsystemet.
- Förfina de definierade parametrarna, promptarna och namngivningen av verktygen.
Multi-agent-system fungerar inte konsekvent - Förfina promptarna för varje agent för att säkerställa att de är specifika och distinkta från varandra.
- Bygg ett hierarkiskt system med en “router” eller styrande agent som avgör vilken agent som är rätt för uppgiften.

Många av dessa problem kan identifieras mer effektivt om man har observabilitet på plats. De spår och mätvärden vi diskuterade tidigare hjälper till att exakt identifiera var i agentens arbetsflöde problemen uppstår, vilket gör felsökning och optimering mycket mer effektiv.

Hantering av Kostnader

Här är några strategier för att hantera kostnaderna för att distribuera AI-agenter i produktion:

Använda Mindre Modeller: Små språkmodeller (SLMs) kan prestera bra för vissa agentiska användningsfall och minska kostnaderna avsevärt. Som nämnts tidigare är det bästa sättet att förstå hur väl en SLM fungerar för ditt användningsfall att bygga ett utvärderingssystem för att jämföra prestanda med större modeller. Överväg att använda SLMs för enklare uppgifter som intentklassificering eller parameterutvinning, och reservera större modeller för komplexa resonemangsuppgifter.

Använda en Routermodell: En liknande strategi är att använda en mångfald av modeller i olika storlekar. Du kan använda en LLM/SLM eller serverlös funktion för att dirigera förfrågningar baserat på komplexitet till de mest lämpliga modellerna. Detta hjälper till att minska kostnaderna samtidigt som prestanda säkerställs för rätt uppgifter. Till exempel kan enkla frågor dirigeras till mindre, snabbare modeller, medan dyra stora modeller endast används för komplexa resonemangsuppgifter.

Cacha Svar: Att identifiera vanliga förfrågningar och uppgifter och tillhandahålla svaren innan de går igenom ditt agentiska system är ett bra sätt att minska volymen av liknande förfrågningar. Du kan till och med implementera ett flöde för att identifiera hur lik en förfrågan är med dina cachade förfrågningar med hjälp av enklare AI-modeller. Denna strategi kan avsevärt minska kostnaderna för vanliga frågor eller arbetsflöden.

Låt oss se hur detta fungerar i praktiken

I exempeldagboken för detta avsnitt kommer vi att se exempel på hur vi kan använda observabilitetsverktyg för att övervaka och utvärdera våra agenter.

Har du fler frågor om AI-agenter i produktion?

Gå med i Azure AI Foundry Discord för att träffa andra som lär sig, delta i öppet hus och få svar på dina frågor om AI-agenter.

Föregående Lektion

Metakognitiv Designmönster

Nästa Lektion

Agentiska Protokoll


Ansvarsfriskrivning:
Detta dokument har översatts med hjälp av AI-översättningstjänsten Co-op Translator. Även om vi strävar efter noggrannhet, vänligen notera att automatiska översättningar kan innehålla fel eller felaktigheter. Det ursprungliga dokumentet på dess originalspråk bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för eventuella missförstånd eller feltolkningar som uppstår vid användning av denna översättning.