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

Google Sheets + OpenRouter: repeterbara LLM-utvärderingar

Rickard Andersson Partner, Nodenordic.se

Ditt team enas äntligen om ”en bra prompt” … och två veckor senare kan ingen förklara varför modell A såg bättre ut än modell B. Testfallen har flyttats, källdokumenten har ändrats och resultaten ligger utspridda i skärmdumpar, Slack-trådar och halvfärdiga kalkylark.

Det här drabbar produktmarknadsförare som kör budskapstester, men ops-ansvariga och byråteam som validerar AI-leveranser känner av det också. Med den här automatiseringen för Sheets LLM-evals kan du köra om samma evalueringsuppsättning på flera modeller och logga resultat konsekvent, utan att bygga om processen varje gång.

Du får se vad workflowet gör, varför det är byggt för repeterbarhet och hur du använder det som en strukturerad baseline som du kan anpassa till dina egna dataset.

Så fungerar automatiseringen

Här är hela workflowet du kommer att sätta upp:

n8n Workflow Template: Google Sheets + OpenRouter: repeterbara LLM-utvärderingar

Varför det här spelar roll: LLM-testning blir snabbt rörig

LLM-”utvärdering” börjar ofta som ett snabbt experiment. Några prompts. Ett par modeller. Lite copy-paste in i ett dokument. Sedan växer det. Du lägger till fler testfall, någon föreslår en ny modell och plötsligt jonglerar du PDF:er i Drive, prompts i chatten och outputs på tre olika ställen. Ännu värre: nästa gång du kör är inputs inte identiska. Då går det inte att lita på jämförelsen. Det är då AI-arbetet går från spännande till dränerande, eftersom du lägger tiden på att jaga konsekvens i stället för att fatta beslut.

Det eskalerar snabbt. Här är var det brukar falla isär.

  • Testfallen ligger i ett kalkylark, men ”källdokumentet” för varje fall är sparat någon annanstans och öppnas manuellt vid varje körning.
  • Modellanrop sker ett i taget, så en full benchmarkkörning kan ta upp en hel eftermiddag.
  • Outputs dokumenteras inkonsekvent, vilket gör att ni till slut diskuterar formatering i stället för korrekthet.
  • När någon frågar ”kan vi köra om förra månadens evals?” inser du att du inte kan återskapa exakt samma körning med säkerhet.

Vad du bygger: en repeterbar benchmarkkörning från Google Sheets

Det här workflowet gör Google Sheets till en repeterbar evalueringsmotor för LLM:er. Du behåller dina testfall i ett ark, inklusive referenser till källfilerna i Google Drive. När du kör workflowet hämtar det raderna, kontrollerar vilken filtyp varje fall behöver, laddar ner dokumentet och konverterar det till text (inklusive PDF:er). Sedan paketerar det varje testfall och skickar det till en intern webhook som routar payloaden till en OpenRouter-baserad chatmodell. Workflowet fångar input och output på ett strukturerat sätt, slår ihop kontexten tillbaka till en och samma post och lägger till resultaten i ditt resultatark så att varje körning går att granska i efterhand. Byt modell, kör om i morgon, jämför på riktigt.

Loopen hämtar varje rad, behandlar det tillhörande Drive-dokumentet och kör en evalueringskedja som anropar OpenRouter via en chatmotor. Till sist skriver den tillbaka en strukturerad resultatrad till Google Sheets så att du kan filtrera, sortera och jämföra mellan 6 modeller eller 60.

Det här bygger du

Förväntat resultat

Låt oss använda workflowets exempelskala: 18 testfall över 6 LLM:er (108 modellanrop totalt). En manuell körning innebär vanligtvis att du öppnar Drive-dokumentet, extraherar text, klistrar in den i en prompt, kör den och sedan loggar output. Även om det bara tar cirka 5 minuter per fall och modell är det ungefär 9 timmar av administrativt pill. Med det här workflowet startar du en körning från Sheets, den processar parallellt (cirka 2 förfrågningar per sekund) och resultaten landar automatiskt tillbaka i kalkylarket. Du granskar fortfarande outputs, men du slutar göra det administrativa arbetet.

Innan du börjar

  • n8n-instans (testa n8n Cloud gratis)
  • Alternativ för self-hosting om du föredrar det (Hostinger fungerar bra)
  • Google Sheets för att lagra testfall och resultat
  • Google Drive för att lagra källfiler (PDF:er/dokument)
  • OpenRouter API-nyckel (hämta den i din OpenRouter-dashboard)

Nivå: Medel. Du kopplar konton, mappar några fält och testar en webhook end-to-end.

Vill du att någon bygger det här åt dig? Prata med en automationsexpert (gratis 15-minuters konsultation).

Steg för steg

En manuell körning hämtar dina senaste testfall. Starta workflowet så läser det evalueringsrader från Google Sheets (din ”cases”-tabell). Det arket blir sanningskällan för vad som testas.

Varje fall berikas med rätt dokumentkontext. För varje rad kontrollerar workflowet om källan är en PDF, laddar ner filen från Google Drive och extraherar sedan text så att prompten alltid får konsekvent input.

Evalueringskedjan anropar modellen via OpenRouter. En webhook tar emot payloaden, slår ihop originalmetadata och kör en LLM-evalueringskedja med en OpenRouter-chatmotor (vilket gör det enkelt att byta modell). Parallell bearbetning används så att du inte väntar på en förfrågan i taget.

Resultaten läggs till tillbaka i Google Sheets. Workflowet fångar input/output-paret och skriver en korrekt formaterad post i ditt resultatark, vilket gör att du kan jämföra modeller, köra om nästa vecka och behålla en revisionsspårning.

Du kan enkelt ändra vilka modeller du testar för att matcha din budget eller dina krav på träffsäkerhet. Se den fullständiga implementeringsguiden nedan för anpassningsalternativ.

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

Steg 1: konfigurera triggertypen

Konfigurera båda ingångarna så att ni kan köra tester manuellt eller ta emot externa utvärderingspayloads via webhook.

  1. Lägg till Manual Execution Start som den manuella triggern för testkörningar.
  2. Konfigurera Incoming Webhook Trigger med HTTP Method satt till POST.
  3. Ställ in Path till 1cbce320-d28e-4e97-8663-bf2c6a36a358.
  4. Ställ in Response Data till allEntries och Response Mode till lastNode.
  5. Bekräfta den parallella splitten: Incoming Webhook Trigger skickar output till både Store Original Payload och Capture Input Output parallellt.

Steg 2: anslut Google Sheets för indata och resultat

Dessa noder hämtar testrader och lägger tillbaka utvärderingsresultat i ert kalkylark.

  1. Öppna Retrieve Test Rows och välj kalkylarket Info Extraction Tasks (LLM Judge) och bladet Tests.
  2. Autentiseringsuppgifter krävs: Anslut era googleSheetsOAuth2Api-uppgifter i Retrieve Test Rows.
  3. Öppna Append Results Sheet och bekräfta att Operation är appendOrUpdate.
  4. Mappa kolumnerna i Append Results Sheet med de angivna uttrycken, till exempel {{$json['ID']}}, {{$json.output.decision}} och {{$json.output.reasoning}}.
  5. Autentiseringsuppgifter krävs: Anslut era googleSheetsOAuth2Api-uppgifter i Append Results Sheet.

Steg 3: konfigurera dataförberedelse, routning och sammanslagning av payloads

Dessa noder förbereder utvärderingsdata och styr vilka rader som går vidare i arbetsflödet.

  1. I PDF File Check, säkerställ att första villkoret kontrollerar efter en PDF: {{$json['Relevant Source Reference']}} contains .pdf.
  2. Ställ in det andra villkoret i PDF File Check för att verifiera att raden finns: {{$json.row_number}} greater than 0.
  3. Konfigurera Sample Limit Gate med Max Items satt till 3 för att strypa testkörningar.
  4. I både Capture Input Output och Store Original Payload, ställ in JSON Output till {{$json.body}}.
  5. I Combine Payloads, ställ in Mode till combine och Combine By till combineByPosition.

Tips: Sample Limit Gate är för närvarande inaktiverad i arbetsflödet. Aktivera den om ni vill begränsa antalet testobjekt som bearbetas vid manuella körningar.

Steg 4: ladda ner och extrahera källtext från PDF

I det här steget hämtas källdokumentet från Drive och texten extraheras för utvärdering.

  1. Öppna Download Drive File och ställ in Operation till download.
  2. Ställ in File ID till uttrycket {{$json["URL"].match(/[-\w]{25,}/)[0]}} för att tolka ut Drive-ID:t från URL:en.
  3. Autentiseringsuppgifter krävs: Anslut era googleDriveOAuth2Api-uppgifter i Download Drive File.
  4. I Extract PDF Text, ställ in Operation till pdf.

Steg 5: sätt upp kedjan för LLM-utvärdering

Konfigurera LLM-utvärderingsprompten, JSON-tolkningen och modellens autentiseringsuppgifter.

  1. Öppna LLM Evaluation Chain och ställ in Text till exakt den här mallen: =INPUT: { "task": {{ $('Capture Input Output').item.json['Input '] }}, "source": {{ $json.text }}, "output": {{ $('Capture Input Output').item.json['Output '] }} } OUTPUT:
  2. Säkerställ att Has Output Parser är aktiverad i LLM Evaluation Chain.
  3. I Structured JSON Parser, behåll exempelschemat som returnerar reasoning och decision.
  4. Konfigurera OpenRouter Chat Engine med Model satt till openai/gpt-4.1.
  5. Autentiseringsuppgifter krävs: Anslut era openRouterApi-uppgifter i OpenRouter Chat Engine.

⚠️ Vanlig fallgrop: Structured JSON Parser är en AI-undernod. Lägg till autentiseringsuppgifter på OpenRouter Chat Engine (den överordnade LLM:en), inte på parsern i sig.

Steg 6: konfigurera API-anropet till delprocessen och slutlig återrapportering

Det här sista segmentet skickar bearbetade poster till en extern endpoint innan resultaten läggs till.

  1. I Invoke Subprocess API, ställ in URL till https://webhook-processor-production-48f8.up.railway.app/webhook/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.
  2. Ställ in Method till POST och JSON Body till {{$json}}.
  3. Bekräfta flödesordningen: Sample Limit GateInvoke Subprocess APIAppend Results Sheet.

Steg 7: testa och aktivera ert arbetsflöde

Validera båda trigger-vägarna och bekräfta att resultaten sparas i ert ark.

  1. Klicka på Execute WorkflowManual Execution Start för att köra ett test från Google Sheets.
  2. Skicka en testpayload till Incoming Webhook Trigger via POST-URL:en för att verifiera beteendet i den parallella grenen.
  3. Verifiera att Extract PDF Text ger text som output och att LLM Evaluation Chain returnerar ett strukturerat output-objekt.
  4. Bekräfta att nya rader visas i målbladet för Append Results Sheet med ifyllda fält för Decision och Reasoning.
  5. Växla arbetsflödet till Active när testningen är lyckad.
🔒

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

Få den kompletta implementeringsguiden + nedladdningsbar mall

Felsökningstips

  • Google Sheets-autentisering kan löpa ut eller kräva specifika behörigheter. Om det slutar fungera, kontrollera listan Credentials i n8n och bekräfta att det kopplade Google-kontot fortfarande har åtkomst till arket.
  • Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om nedströmsnoder fallerar på tomma svar.
  • Standardprompter i AI-noder är generiska. Lägg in din varumärkesröst tidigt, annars kommer du att redigera outputs i all oändlighet.

Snabba svar

Hur lång tid tar det att sätta upp den här automatiseringen för Sheets LLM-evals?

Räkna med cirka en timme om ditt Sheet, din Drive-mapp och din OpenRouter-nyckel är redo.

Krävs det kodning för den här automatiseringen för LLM-evals?

Nej, ingen kodning krävs. Du kopplar främst in credentials och mappar arkkolumner till workflowets inputfält.

Är n8n gratis att använda för det här workflowet för Sheets LLM-evals?

Ja. n8n har ett gratis self-hosted-alternativ och en gratis provperiod på n8n Cloud. Cloud-planer startar på 20 USD/månad för högre volym. Du behöver också räkna in modellkostnaderna i OpenRouter, som varierar beroende på leverantör och modell.

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 klarar n8n bra. Self-hosting ger dig obegränsade körningar men kräver grundläggande serverhantering.

Kan jag anpassa det här workflowet för Sheets LLM-evals för andra use case?

Ja, och det bör du. Du kan byta modell i OpenRouter-chatmotorn, justera Google Sheets-mappningen i ”Retrieve Test Rows” så att den matchar dina egna kolumner och ersätta PDF-extraheringsflödet om du använder ren text eller HTML i stället. Vanliga justeringar är att lägga till en poängrubrik i evalueringskedjan, skriva resultat till ett andra ”sammanfattnings”-ark och tagga varje körning med ett versionsnamn så att jämförelserna håller sig prydliga.

Varför misslyckas min Google Sheets-anslutning i det här workflowet?

Oftast beror det på utgången Google-auth eller att arket flyttats till en Drive-plats som det kopplade kontot inte kommer åt. Återanslut Google Sheets-credential i n8n och öppna sedan arklänken i samma Google-konto för att bekräfta att det fortfarande har behörighet. Kontrollera också att noden ”Update/Append Results” pekar på ditt kopierade kalkylark, inte originalexemplet.

Vilken volym kan det här workflowet för Sheets LLM-evals hantera?

Det är byggt för att skala bortom en-och-en-körningar eftersom det kan skicka cirka 2 förfrågningar per sekund. På n8n Cloud är din gräns främst antal körningar per månad i din plan, medan self-hosting begränsas av din server och de rate limits du träffar i OpenRouter.

Är den här automatiseringen för Sheets LLM-evals bättre än att använda Zapier eller Make?

Ofta, ja. n8n hanterar ”riktiga workflow”-delarna bättre: loopa igenom rader, slå ihop payloads, villkorsstyrd PDF-hantering och strukturerad loggning utan att bli en spaghetti-zap. Du kan också self-hosta, vilket spelar roll när du kör många evals och inte vill ha prissättning per uppgift. Zapier eller Make kan fortfarande fungera om du kör en pytteliten testuppsättning och inte behöver dokumenttolkning. Ärligt talat: så fort du lägger till PDF:er och repeterbar benchmarking blir n8n det lugnare valet. Prata med en automationsexpert om du vill ha hjälp att välja.

När det här är på plats slutar ni bråka om ”vad som hände förra körningen” och börjar fatta tydliga modellbeslut baserat på felfri data. Sätt upp det en gång och kör om när som helst.

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