Behöver ert företag hjälp med att implementera AI? Kontakta oss och få prisoffert här →
AI Skolan
januari 22, 2026

Langfuse + Google Sheets: spåra ai-kostnader tydligt

Rickard Andersson Partner, Nodenordic.se

Dina AI-kostnader ska inte kännas som en deckare. Men när kostnaderna gömmer sig i loggar, traces och utspridda dashboards slutar det med att du gissar vad som ändrades, varför det ändrades och vem som triggade det.

Det är här Langfuse cost tracking träffar som hårdast för tech leads som vill hålla körningarna stabila, och för produktchefer som behöver tydliga siffror till veckouppdateringar. Om du hanterar kundlaster känner du det också. Resultatet är enkelt: tydligare rapportering av användning per körning, latens och kostnad utan att jaga data mellan verktyg.

Det här arbetsflödet tar ett execution ID från en uppströms AI-körning, hämtar de färdiga mätvärdena och skickar strukturerad trace-data till Langfuse så att du kan rapportera med trygghet (och sluta missa toppar tills det är för sent).

Så fungerar den här automatiseringen

Hela n8n-arbetsflödet, från trigger till slutresultat:

n8n Workflow Template: Langfuse + Google Sheets: spåra ai-kostnader tydligt

Problemet: kostnader för AI-körningar är svåra att förklara (och lätta att missa)

De flesta team har inga problem att köra AI-funktioner. De har problem att förstå vad körningarna kostar, hur lång tid de tog och vilket modellsteg som skapade toppen. Du kanske ser att månadsfakturan går upp och lägger sedan en timme på att gräva i traces, modellkall och tokencounts för att återskapa vad som hände. Än värre: ofta gör du det först efter att skadan redan är skedd, eftersom “slutliga totalsummor” inte ens är tillgängliga direkt när en körning är klar. Det är stressande och gör helt ärligt att rapporteringen känns osäker.

Friktionen ökar snabbt. Så här faller det isär i verkligheten.

  • Du får ett execution ID, men de användbara totalsummorna (tokens, latens, användning per steg) dyker upp senare, så du väntar antingen manuellt eller hämtar ofullständig data.
  • En arbetsflödeskörning kan innehålla flera modellkall, och utan normalisering kan du inte jämföra körningar steg för steg.
  • Dubbel bearbetning händer oftare än man vill erkänna, särskilt när uppströms arbetsflöden gör omkörningar, vilket grumlar din kostnadsrapportering.
  • När ledningen frågar “vad ändrades den här veckan” slutar det med att du exporterar data manuellt till Sheets bara för att kunna göra ett diagram.

Lösningen: skicka färdiga körningsmätvärden till Langfuse (och rapportera sedan snyggt i Sheets)

Den här automatiseringen startar efter att en AI-körning är klar i ett annat arbetsflöde. Det uppströms arbetsflödet skickar vidare en enda input: execution_id. Därifrån väntar n8n tillräckligt länge för att körningens totalsummor och mätvärden per steg ska “sätta sig”, hämtar exekveringsdetaljerna och formar om datan till en konsekvent struktur (modell, tokens, latens, plus korta förhandsvisningar av input/output). Därefter loopar den igenom varje modellkörning och postar en batch-payload till Langfuse ingestion API, vilket skapar ett stabilt trace-ID kopplat till exekveringen. Om samma execution ID skickas två gånger kan arbetsflödet eliminera dubbletter så att du inte dubbelräknar något.

Arbetsflödet startar från en uppströms trigger, pausar kort så att mätvärdena blir kompletta, och hämtar samt transformerar exekveringsdata till observationer per modell. Till sist skickar det observationerna till Langfuse i batchar med en liten fördröjning för att hålla ingestion stabil.

Det du får: automatisering vs. resultat

Exempel: så här ser det ut

Säg att du kör ett AI-arbetsflöde ungefär 30 gånger per dag och att varje körning innehåller 3 modellkall. Manuell hantering gör det lätt att lägga 3–5 minuter per körning på att hämta totalsummor, kontrollera latens och klistra in siffror i ett Sheet för rapportering, vilket är ungefär 2 timmar per dag när teamet har mycket. Med det här arbetsflödet skickar den uppströms körningen execution ID direkt, n8n väntar cirka en minut på totalsummorna och postar sedan allt till Langfuse automatiskt. Din “rapporteringstid” blir en snabb avstämning, kanske 10 minuter, i stället för ett återkommande slukhål.

Det här behöver du

  • n8n-instans (prova n8n Cloud gratis)
  • Alternativ för self-hosting om du föredrar det (Hostinger fungerar bra)
  • Langfuse Cloud-projekt för att lagra traces och observationer.
  • Google Sheets för rapportering och dashboards som funkar för intressenter.
  • Langfuse API-nycklar (hämta dem i Langfuse-projektinställningarna).

Kunskapsnivå: Medel. Du klistrar in API-uppgifter, mappar några fält och testar med ett verkligt execution ID.

Vill du inte sätta upp detta själv? Prata med en automationsexpert (gratis 15-minuters konsultation).

Så fungerar det

En uppströms AI-körning triggar arbetsflödet. Ett annat arbetsflöde slutför en AI-exekvering och skickar över execution ID, som är nyckeln som låser upp körningens fulla mätvärden.

Arbetsflödet förhindrar dubbelräkning. En kontroll för dubblettborttagning (valfri, men smart) hjälper dig att säkerställa att du bara processar varje execution ID en gång, även om uppströms omkörningar sker.

Det väntar och hämtar sedan kompletta exekveringsdetaljer. n8n pausar i cirka en minut så att totalsummor och tidsmätningar per steg finns tillgängliga, och hämtar sedan exekveringsmetadata och användning. Det här är skillnaden mellan “lite data” och “datan du faktiskt kan rapportera”.

Mätvärden formas om och skickas till Langfuse. Arbetsflödet konverterar exekveringen till en array med körningar per modell, loopar igenom dem i batchar, bygger en Langfuse ingestion-payload (trace-create plus generation-create) och postar den via HTTP. En kort fördröjning mellan postningar håller ingestion stabil.

Du kan enkelt ändra sessionsstrategin (per arbetsflöde, per användare, per kund) så att den matchar hur du rapporterar i Google Sheets. Se hela implementationsguiden nedan för anpassningsalternativ.

Steg-för-steg-guide för implementering

Steg 1: Konfigurera triggern för uppströmsarbetsflöde

Konfigurera arbetsflödet så att det tar emot körnings-ID:n från ett överordnat arbetsflöde och startar spårningspipelinen.

  1. Lägg till noden Upstream Workflow Trigger som trigger.
  2. I Workflow Inputs lägger ni till ett värde med namnet execution_id för att matcha inkommande payload.
  3. Koppla Upstream Workflow Trigger till Eliminate Duplicate Runs för att påbörja körningsspårningsflödet.

Steg 2: Anslut hämtning av n8n-körningar

Hämta fullständiga körningsdata så att nedströmsnoder kan extrahera LLM-körningar och mätvärden.

  1. Öppna Retrieve Execution Details och ställ in Resourceexecution och Operationget.
  2. Ställ in Execution ID={{ $('Upstream Workflow Trigger').item.json.execution_id }}.
  3. Inloggningsuppgifter krävs: Anslut era n8nApi-inloggningsuppgifter.
  4. Säkerställ att Eliminate Duplicate Runs är kopplad till Pause for Execution Info, och sedan till Retrieve Execution Details enligt flödet.

Tips: Noden Pause for Execution Info väntar 80 sekunder. Denna fördröjning hjälper till att säkerställa att körningen har avslutats innan data hämtas.

Steg 3: Sätt upp bearbetning av körningsmätvärden

Transformera rå körningsdata till mätvärden per modell och per körning som är redo för batchning.

  1. Öppna Transform Execution Metrics och behåll den angivna JavaScript Code oförändrad för att beräkna tokenanvändning, latens samt förhandsvisningar av prompt/svar.
  2. Koppla Retrieve Execution DetailsTransform Execution MetricsExpand Model Runs för att följa körningsflödet.
  3. I Expand Model Runs ställer ni in Field to Split OutperModelRuns.
  4. Ställ in Fields to IncludeworkflowId, , workflowName, executionId, startedAt, stoppedAt, executionMs, executionSec, totals_promptTokens, totals_completionTokens, totals_totalTokens.

⚠️ Vanlig fallgrop: Om uppströmsarbetsflödet inte inkluderar LLM-körningar i sina körningsdata kommer Transform Execution Metrics att skapa tomma perModelRuns, vilket innebär att inga Langfuse-händelser skickas.

Steg 4: Konfigurera batchbearbetning och sammanställning av payload

Batcha varje modellkörning och bygg Langfuse-ingestion-payload per objekt.

  1. Koppla Expand Model RunsIterate Run Batches för att dela upp objekt i batchar.
  2. Från den andra utgången på Iterate Run Batches kopplar ni till Build Langfuse Payload.
  3. Behåll JavaScript Code i Build Langfuse Payload och uppdatera bas-URL:en för promptlänken vid behov: https://cloud.langfuse.com/project/[YOUR_ID]/prompts/.
  4. Koppla Build Langfuse PayloadBrief Delay Step för att hastighetsbegränsa utgående anrop.

Tips: Brief Delay Step använder 3 sekunder för att undvika att överbelasta Langfuse-ingestion-endpointen när batchstorlekarna är stora.

Steg 5: Konfigurera Langfuse-ingestion

Skicka batch-payloads till Langfuse med HTTP Basic-autentisering.

  1. Öppna Langfuse API Post och ställ in URLhttps://cloud.langfuse.com/api/public/ingestion.
  2. Ställ in MethodPOST och Specify Bodyjson.
  3. Ställ in JSON Body={{ { batch: $json.batch } }}.
  4. Aktivera Send Headers och inkludera Content-Type med värdet application/json.
  5. Inloggningsuppgifter krävs: Anslut era httpBasicAuth-inloggningsuppgifter.
  6. Säkerställ att Brief Delay Step är kopplad till Langfuse API Post, och att Langfuse API Post kopplas tillbaka till Iterate Run Batches för kontinuerlig batchning.

Steg 6: Testa och aktivera ert arbetsflöde

Validera att körningsspårningar matas in korrekt i Langfuse och aktivera därefter arbetsflödet.

  1. Kör arbetsflödet manuellt genom att trigga det överordnade arbetsflödet med ett giltigt execution_id.
  2. Bekräfta att Retrieve Execution Details returnerar en giltig körnings-payload och att Transform Execution Metrics skriver ut perModelRuns.
  3. Verifiera att Langfuse API Post returnerar ett lyckat svar och att händelser visas i ert Langfuse-projekt.
  4. När allt fungerar, slå på arbetsflödet till Active för användning i produktion.
🔒

Lås upp fullständig steg-för-steg-guide

Få den kompletta implementeringsguiden + nedladdningsbar mall

Vanliga fallgropar

  • Langfuse-uppgifter kan löpa ut eller kräva specifika behörigheter. Om något slutar fungera, kontrollera först API-nyckelinställningarna i ditt Langfuse-projekt och credential-posten i n8n.
  • Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om nedströms noder fallerar på tomma svar.
  • Standardprompter i AI-noder är generiska. Lägg in er tonalitet tidigt, annars kommer du redigera outputs för alltid.

Vanliga frågor

Hur lång tid tar det att sätta upp den här automatiseringen för Langfuse cost tracking?

Cirka 30 minuter om du redan har Langfuse-nycklar och ett execution ID att testa med.

Behöver jag kunna koda för att automatisera Langfuse cost tracking?

Nej. Du kopplar mest credentials och testar datamappningen. De inbyggda Code-noderna är redan klara åt dig i mallen.

Är n8n gratis att använda för det här arbetsflödet för Langfuse cost tracking?

Ja. n8n har ett gratis self-hosted-alternativ och en gratis provperiod på n8n Cloud. Cloud-planer startar på 20 $/månad för högre volymer. Du behöver också räkna in Langfuse Cloud-kostnader (beroende på din plan) samt eventuella modell-/API-kostnader från det uppströms AI-arbetsflödet.

Var kan jag hosta n8n för att köra den här automatiseringen?

Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller self-hosting på en VPS. För self-hosting är Hostinger VPS prisvärd och hanterar n8n bra. Self-hosting ger dig obegränsat antal exekveringar men kräver grundläggande serverhantering.

Kan jag anpassa det här arbetsflödet för Langfuse cost tracking till en session per kund i stället för per arbetsflöde?

Ja, men då vill du ändra sessionId-strategin i steget som bygger payloaden så att sessioner grupperas efter kundidentifierare i stället för arbetsflödes-ID. De flesta team anpassar också trace-metadata för att inkludera miljö (prod vs staging), team och funktionsnamn. Om du senare lägger till span-create och sätter parentObservationId på generations kan du nästla steg snyggt för djupare felsökning.

Varför misslyckas min Langfuse-anslutning i det här arbetsflödet?

Oftast beror det på att Basic Auth-paret är fel eller inaktuellt. Langfuse ingestion API förväntar sig din public key som användarnamn och din secret key som lösenord, så dubbelkolla att du inte bytt plats på dem. Om det fortfarande misslyckas, bekräfta att du använder rätt endpoint (cloud vs self-hosted), och titta på HTTP-nodens response body i n8n eftersom den ofta talar om exakt vad Langfuse avvisade.

Hur många exekveringar kan den här automatiseringen för Langfuse cost tracking hantera?

Väldigt många.

Är den här automatiseringen för Langfuse cost tracking bättre än att använda Zapier eller Make?

Ofta, ja. Det här arbetsflödet bygger på att vänta in slutgiltiga exekveringsmätvärden, strukturera om arrayer med steg per modell, batcha HTTP-payloads och hantera dubbletter, och de detaljerna blir krångliga (och dyra) i enklare automationsverktyg. n8n är också enklare att self-hosta när volymen växer, vilket spelar roll om du ingest:ar traces hela dagen. Zapier eller Make kan fortfarande fungera om du bara behöver en lätt “skicka en event”-integration, men du kommer sannolikt slå i taket när du börjar loopa och batcha. Om du är osäker, prata med en automationsexpert och beskriv din körvolym och dina rapporteringsbehov.

När det här väl rullar slutar kostnads- och latensrapportering att vara en skattjakt. Arbetsflödet tar hand om den repetitiva uppföljningen så att du kan fokusera på att bygga (och förbättra) produkten.

Kontakta oss

Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.

×

Använd mall

Få direkt tillgång till denna n8n-arbetsflödes JSON-fil

Launch login modal Launch register modal