Hop til hovedindhold

Logik-byggeklodser

Logik-byggeklodserne styrer selve forløbet i dit flow: hvilke grene der køres, hvordan lister gennemløbes element for element, og hvordan du kører din egen kode, når de færdige byggeklodser ikke rækker. Brug dem til at gøre et flow betinget, gentaget eller dynamisk — i stedet for en lige linje fra input til output.

De to forgrenings-byggeklodser (Hvis / ellers og Forgrening) vælger vej ud fra en værdi: Hvis / ellers træffer en binær beslutning med typebevidste operatorer og kan bære en anden værdi videre end den, der sammenlignes på; Forgrening matcher en tekstværdi mod op til fire faste tilfælde. De fire løkke-byggeklodser (Løkke Start, Løkke Slut, Løkke Afbryd, Løkke Spring Over) gennemløber lister element for element — de er markører, som AgentBase's flow-motor håndterer, ikke byggeklodser med egen logik. Og Python Kode giver dig fuld fleksibilitet, når intet af det ovenstående rækker.

Fælles for forgrening og løkkekontrol: en gren, der ikke vælges, markeres som sprunget over, og alt, der kun kan nås derfra, kører ikke. Det er den mekanisme, resten af siden bygger på.

Hvis / ellers

Byggeklods-id: if-else

Evaluerer én eller flere betingelser ("Hvis A operator B") på værdier fra forbundne byggeklodser og sender en valgt værdi videre ad præcis én af to grene: Hvis sand eller Hvis falsk. Den anden gren markeres som sprunget over, så alt der kun kan nås derfra ikke kører.

Inputs

FeltTypeBeskrivelse
InputsdictForbindelsesliste. Træk forbindelser hertil fra alle de byggeklodser hvis værdier skal indgå i betingelsen eller sendes videre. Værdierne beholder deres oprindelige type (tekst, tal, JSON, fil).
BetingelsedictÅbner betingelsesbyggeren. Her vælges venstre- og højreside (en forbundet værdi eller en fast, indtastet værdi), operator, OG/ELLER-kobling mellem flere betingelser, samt hvilken forbundet værdi (eller fast tekst) der skal sendes ud på hver gren. Valgfri: uden betingelser er resultatet altid sand.

Operatorerne vælges pr. betingelse og fortolker værdierne forskelligt:

  • Tekst: er lig med, er ikke lig med, indeholder, indeholder ikke, er tom, er ikke tom, starter med, slutter med, er større end, er mindre end (de to sidste er alfabetisk sammenligning).
  • Tal: er lig med (tal), er ikke lig med (tal), er større end (tal), er mindre end (tal), er større end eller lig (tal), er mindre end eller lig (tal). Begge sider konverteres til tal.
  • Boolean: er sand, er falsk. Tekst som true, ja, 1 regnes som sand.
  • JSON: indeholder nøgle, indeholder ikke nøgle, er tom objekt, er ikke tom objekt, værdi er lig med, værdi indeholder. De to sidste bruger formatet nøgle=værdi på højresiden.

Faktisk adfærd, som er værd at kende:

  • Flere betingelser kombineres fra venstre mod højre uden prioritering: "A OG B ELLER C" læses som "(A OG B) ELLER C".
  • En forbundet værdi der ikke findes (fx fordi kilden blev sprunget over) læses som tom tekst ""; en manglende operator falder tilbage til er lig med.
  • Kan en værdi ikke konverteres (fx tekst i en (tal)-operator eller ugyldig JSON), bliver den enkelte betingelse falsk — flowet fejler ikke, men det logges som en advarsel. En ukendt operator er derimod en konfigurationsfejl og stopper kørslen.
  • Er der ikke valgt noget output på en gren, sendes tom tekst "" ud på den.

Outputs

  • Hvis sand (output_1, any) — den valgte værdi, når betingelsen er opfyldt; ellers sprunget over.
  • Hvis falsk (output_2, any) — den valgte værdi, når betingelsen ikke er opfyldt; ellers sprunget over.

Kun én af de to grene bærer en værdi i en given kørsel. Udgangen behøver ikke være den værdi der sammenlignes på: forbind fx både en klassifikation og selve dokumentet til Inputs, sammenlign på klassifikationen, og send dokumentet videre ("gate-and-carry").

Typiske brugsscenarier

  • Sende et dokument til fakturabehandling kun når en Sprogmodel har klassificeret det som faktura — og ellers til en anden behandling.
  • Springe et dyrt trin over, når en udtrukket tekst er tom eller et beløb er mindre end (tal) en grænse.
  • Vælge gren ud fra et JSON-svar fra Struktureret output, fx "værdi er lig med status=godkendt".
  • Kombinere flere krav med OG/ELLER, fx "sprog er lig med da OG antal sider er større end (tal) 2".

Brug når / Undlad når

  • Brug når du har en binær beslutning (ja/nej) og gerne vil sende en anden værdi videre end den du sammenligner på.
  • Brug når sammenligningen kræver tal-, boolean- eller JSON-forståelse frem for ren tekstlighed.
  • Undlad når du skal vælge mellem mange faste værdier — brug Forgrening (op til 4 tilfælde + standard).
  • Undlad når betingelsen kræver regex eller prioritering mellem OG/ELLER — brug Python Kode.

Relaterede byggeklodser: Forgrening og de øvrige logik-byggeklodser, Sprogmodel og Struktureret output, Python Kode og databehandling, byggeklods-oversigten.

Forgrening

Byggeklods-id: switch

Sammenligner en tekstværdi med op til fire faste tilfælde og sender værdien videre ad præcis én gren: det første tilfælde der matcher, ellers Standard. Alle andre grene markeres som sprunget over, så byggeklodser der kun kan nås derfra ikke kører.

Inputs

FeltTypeBeskrivelse
VærdistrTeksten der skal matches. Typisk forbundet fra en anden byggeklods (fx en klassifikation fra Sprogmodel).
Tilfælde 1strFørste match-værdi. Tomt felt ignoreres.
Tilfælde 2strAnden match-værdi. Tomt felt ignoreres.
Tilfælde 3strTredje match-værdi. Tomt felt ignoreres.
Tilfælde 4strFjerde match-værdi. Tomt felt ignoreres.

Matchet er en eksakt tekstsammenligning: der skelnes mellem store og små bogstaver, og mellemrum og linjeskift trimmes ikke. Tilfældene evalueres i rækkefølge 1→4, og det første match vinder. En tom Værdi kan aldrig matche et tilfælde og ender altid i Standard.

Outputs

Fem udgange af typen str, hvoraf præcis én får en værdi pr. kørsel:

  • Tilfælde 1–4 (output_1output_4): den indkommende Værdi, hvis det tilsvarende tilfælde matchede.
  • Standard (output_5): den indkommende Værdi, hvis intet tilfælde matchede.

De fire øvrige udgange er sprunget over. Bemærk at grenen kun bærer selve match-strengen (fx faktura) videre — ikke det dokument eller data du forgrener på vegne af. Skal grenen også bruge en nyttelast, så forbind den direkte ind i gren-byggeklodsen ud over gren-udgangen (den springes stadig over, hvis grenen ikke matchede), eller brug Hvis / ellers, som kan bære en valgt værdi videre i én forbindelse.

Typiske brugsscenarier

  • Route et dokument efter en klassifikation fra Sprogmodel eller Struktureret output (faktura / kontrakt / kvittering) til hver sin behandlingsgren.
  • Vælge skabelon eller svartekst ud fra en statuskode eller sagstype fra en webhook eller et formularfelt.
  • Sende en henvendelse til forskellige HTTP-kald afhængigt af en afdelingsværdi (salg, support, bogholderi).
  • Kæde to Forgrening-byggeklodser (Standard fra den første ind i Værdi på den næste), når der er brug for mere end fire grene.

Brug når / Undlad når

  • Brug når: du har 3–5 faste tekstværdier, der hver skal udløse sin egen gren, og værdien er et rent, forudsigeligt udtræk (enum-agtigt).
  • Brug når: du bygger via API/MCP og vil have simpel værdi-routing uden betingelses-konfiguration.
  • Undlad når: du kun har to grene eller skal sammenligne tal, booleans eller JSON — brug Hvis / ellers, som har typebevidste operatorer og kan bære en anden værdi end den sammenlignede videre.
  • Undlad når: du har brug for regex, "indeholder"-match, ufølsomhed over for store/små bogstaver eller mere end fire grene uden kædning — brug Python Kode.

Relaterede byggeklodser: Logik (Hvis / ellers, Python Kode), AI (Sprogmodel og Struktureret output som kilde til værdien), Relationer mellem byggeklodser

Løkke Start

Byggeklods-id: for_each_start · parres med Løkke Slut

Starter en løkke, der kører byggeklodserne mellem Løkke Start og Løkke Slut én gang per element i en liste fra JSON-data. Selve gentagelsen styres af AgentBase's flow-motor: Løkke Start udleverer det aktuelle element, dets indeks og listens samlede længde til hver iteration.

Inputs

FeltTypeBeskrivelse
JSON DatastrJSON-tekst, liste eller objekt fra en anden byggeklods. En JSON-streng parses automatisk; en liste bruges direkte. En almindelig tekst, der ikke er JSON, behandles som ét enkelt element, mens tekst der ligner JSON (starter med [ eller {) men ikke kan parses, giver en fejl. Tomt input (ingen værdi) giver nul iterationer.
Sti til elementerstrSti i punktnotation til listen inde i dataene, fx items eller data.results; understøtter også indeks som items[0]. Tom = brug roden. Findes stien ikke, fejler løkken. Standard: tom.
FejlhåndteringstrStop ved fejl (standard): første fejlede iteration stopper hele løkken og flowet. Fortsæt ved fejl: fejlede iterationer springes over, resultatet for dem bliver None i Løkke Slut, og fejlene samles.
Parallelle gentagelserintHvor mange iterationer der kører samtidig. 0 (standard) = platformens indstilling (typisk 5), 1 = ét element ad gangen. Maks 50. Resultaterne i Løkke Slut ligger altid i elementernes rækkefølge uanset værdien.

Outputs

  • Nuværende Element (any): elementet i den aktuelle iteration.
  • Indeks (int): nul-baseret nummer på iterationen.
  • Total (int): antal elementer i listen.

Efter løkken er afsluttet viser byggeklodsen selv det sidste elements værdier (sidste element, sidste indeks og total); de samlede resultater hentes fra Løkke Slut.

Typiske brugsscenarier

  • Køre samme Sprogmodel-prompt på hvert dokument i en liste fra fx Dokumentfilter eller et API-svar.
  • Slå hver adresse eller hvert CVR-nummer i en liste op i et eksternt register og samle svarene med Løkke Slut.
  • Behandle rækker fra et parset regneark én ad gangen, hvor hvert element skal igennem flere byggeklodser.
  • Sende en besked eller foretage et HTTP-kald per element, uden at samle resultater (Løkke Slut kan da udelades).

Brug når / Undlad når

  • Brug når inputtet er en liste, og hvert element skal igennem de samme byggeklodser.
  • Brug Sti til elementer, når listen ligger under en nøgle i et objekt (fx data.results); lad feltet stå tomt, når inputtet allerede er listen.
  • Vælg Fortsæt ved fejl, når delvise resultater er bedre end ingen; behold Stop ved fejl, når ét fejlet element skal stoppe hele kørslen.
  • Undlad når du kun har én enkelt værdi (forbind den direkte), eller når hele listen kan transformeres på én gang i Python Kode.
  • Undlad når dataene ikke er JSON, fx CSV eller fritekst — parse dem til en liste først.

Resultatet caches ikke: byggeklodsen er en markør, som flow-motoren håndterer, og den skal altid parres med en Løkke Slut. Byggeklodser inde i løkken gemmer kun sidste iterations output som deres egen værdi; de samlede resultater ligger på Løkke Slut. Løkke Afbryd og Løkke Spring Over kan bruges inde i løkken til at stoppe den helt eller springe et element over.

Relaterede byggeklodser: Logik-byggeklodser (Løkke Slut, Løkke Afbryd, Løkke Spring Over, Hvis), Data-byggeklodser (Python Kode, Kombiner), Oversigt over byggeklodser, Relationer mellem byggeklodser

Løkke Slut

Byggeklods-id: for_each_end · parres med Løkke Start

Afslutter en løkke startet af Løkke Start og samler værdien fra hver gentagelse i én liste. Byggeklodsen udfører ingen egen logik — AgentBase's flow-motor opfanger den, kører byggeklodserne mellem Start og Slut én gang pr. element og lægger resultaterne sammen i elementernes rækkefølge.

Inputs

FeltTypeBeskrivelse
ResultatanyVærdien der samles fra hver gentagelse. Forbind output fra den sidste byggeklods inde i løkken hertil.

Outputs

  • Resultater (any, i praksis en liste): én post pr. element i den liste Løkke Start itererede over, altid i elementernes rækkefølge — også når gentagelserne kører parallelt. Gentagelser der blev sprunget over med Løkke Spring Over, eller som fejlede under "Fortsæt ved fejl", giver null på deres plads. Afbrydes løkken med Løkke Afbryd, indeholder listen kun de gentagelser der nåede at blive samlet før afbrydelsen. Hvis alle elementer er tomme eller inputtet er tomt, er listen tom.

Bemærk: Hvis "Resultat"-inputtet kun fødes af byggeklodser på en inaktiv Hvis-gren, bliver gentagelsens værdi null. Byggeklodsen parres automatisk med den nærmeste Løkke Start opstrøms; du behøver kun én Løkke Slut pr. løkke. Resultatet caches ikke.

Typiske brugsscenarier

  • Køre en Sprogmodel på hvert dokument i en liste og samle alle svar i én liste til en efterfølgende Skabelon eller Python Kode.
  • Hente data via HTTP-forespørgsel for hver række i et JSON-udtræk og aflevere den samlede liste til Tekst til dokument.
  • Klassificere hvert element med Struktureret output og bruge resultatlisten som appens samlede output.
  • Bruge listen som input til en ydre løkke, når løkker er indlejrede (den indre Løkke Slut fungerer som ét element i den ydre gentagelse).

Brug når / Undlad når

  • Brug når: du skal bruge ét resultat pr. element efter løkken — fx til rapport, Excel-ark eller videre behandling.
  • Brug når: du har brug for at vide hvilke gentagelser der fejlede eller blev sprunget over (pladsen holdes med null, så indekset matcher Løkke Starts "Indeks").
  • Undlad når: du ikke har en Løkke Start — Løkke Slut kan ikke stå alene og fejler ved validering.
  • Undlad når: du vil bygge din egen datastruktur af resultaterne — saml dem med Løkke Slut og transformer derefter listen i Python Kode.

Relaterede byggeklodser: Løkke Start, Løkke Afbryd, Løkke Spring Over og Hvis i Logik · Python Kode og Kombiner i Data · Oversigt over alle byggeklodser · Sådan hænger byggeklodser sammen

Løkke Afbryd

Byggeklods-id: loop_break

Stopper den løkke, byggeklodsen står i, i det øjeblik Betingelse er sand — ingen flere elementer behandles, og de resultater, der allerede er samlet op på Løkke Slut, bevares. Er betingelsen falsk, sendes Værdi uændret videre, og gentagelsen fortsætter som normalt. Svarer til break i Python.

Inputs

FeltTypeBeskrivelse
BetingelseboolPåkrævet. Når sand afbrydes løkken. Tekstværdier tolkes: true/1/yes/ja/sand er sand, false/0/no/nej/falsk og tom tekst er falsk; enhver anden ikke-tom tekst regnes som sand — så en værdi routet fra en Hvis-gren udløser afbrydelsen. Mangler input (f.eks. fordi den forrige byggeklods blev sprunget over), regnes betingelsen som falsk.
VærdianyValgfri. Værdien der passerer igennem, når betingelsen er falsk.

Outputs

  • Værdi (any) — den gennemgående værdi. Gives kun når betingelsen er falsk; når løkken afbrydes, giver byggeklodsen intet output, og den afbrudte gentagelses resultat tilføjes ikke til Løkke Slut.

Typiske brugsscenarier

  • Find det første dokument, der opfylder et kriterium, og stop søgningen der i stedet for at behandle resten af bunken.
  • Sæt et loft over antallet af behandlede elementer (afbryd når Løkke Starts indeks når en grænse) for at spare LLM-kald.
  • Stop en kæde af API-opslag, så snart et svar viser, at videre opslag er meningsløse (f.eks. sagen er lukket).
  • Afbryd en gennemgang, når en samlet sum eller tæller passerer en tærskel.

Brug når / Undlad når

  • Brug når hele løkken skal stoppe, så snart én tilstand er opfyldt.
  • Undlad når du blot vil springe enkelte elementer over og fortsætte til det næste — brug Løkke Spring Over.
  • Undlad når du vil sende elementer ad forskellige veje uden at stoppe løkken — brug Hvis alene.

Byggeklodsen er en markør, som selve løkkemotoren håndterer: den skal stå mellem en Løkke Start og en Løkke Slut, ellers afvises flowet ved validering. I indlejrede løkker afbrydes kun den inderste løkke. Kører løkken med flere parallelle gentagelser, afgøres resultatet i elementrækkefølge — gentagelser med lavere indeks end afbrydelsen bevares, gentagelser der er i gang med højere indeks kasseres, og der startes ikke nye. Resultatet caches ikke.

Relaterede byggeklodser: Løkke Start, Løkke Slut, Løkke Spring Over og Hvis under Logik; se også oversigten over byggeklodser og sammenhænge mellem byggeklodser.

Løkke Spring Over

Byggeklods-id: loop_continue

Springer den aktuelle iteration i en løkke over, når Betingelse er sand: resten af iterationens byggeklodser køres ikke, løkken går videre til næste element, og der registreres None som iterationens resultat på Løkke Slut. Er betingelsen falsk, sender byggeklodsen blot Værdi uændret videre. Svarer til continue i Python.

Inputs

FeltTypeBeskrivelse
Betingelsebool (påkrævet)Når sand, springes iterationen over. Tekststrenge tolkes: true/1/yes/ja/sand er sand, false/0/no/nej/falsk og tom streng er falsk. Enhver anden ikke-tom streng (fx den værdi en Hvis-byggeklods sender ud af sin gren) tolkes som sand. Mangler input, regnes betingelsen som falsk.
VærdianyGennemløbsværdi. Sendes uændret videre på outputtet, når betingelsen er falsk.

Outputs

  • Værdi (any) — den uændrede Værdi, når betingelsen er falsk. Når betingelsen er sand, får byggeklodsen (og alle efterfølgende byggeklodser i iterationen) intet output; iterationens plads i Løkke Sluts resultatliste er None.

Typiske brugsscenarier

  • Filtrere elementer under gennemløb: spring dokumenter over, hvis en tidligere klassificering i iterationen har markeret dem som irrelevante.
  • Behandle kun elementer, der opfylder et krav: spring rækker over, hvor et påkrævet felt er tomt, i stedet for at lade et dyrt AI-kald fejle på dem.
  • Undgå dobbeltarbejde: spring elementer over, som et opslag i iterationen viser allerede er behandlet i et eksternt system.
  • Skille "spring over" fra "stop helt": kombineres med Løkke Afbryd i samme løkke, når nogle elementer skal ignoreres og andre skal standse hele gennemløbet.

Brug når / Undlad når

  • Brug når: du vil ignorere enkelte elementer, men lade løkken fortsætte gennem resten.
  • Brug når: en betingelse først kan afgøres inde i iterationen (afhænger af et tidligere trin i løkken).
  • Undlad når: du vil stoppe hele løkken ved første match — brug Løkke Afbryd.
  • Undlad når: listen kan filtreres før løkken — fx med Python Kode foran Løkke Start; det sparer iterationer og giver en resultatliste uden None-huller.
  • Undlad når: du blot vil sende værdien ad to forskellige veje — brug Hvis.

Byggeklodsen er en markør, som løkkemotoren håndterer direkte. Den skal stå mellem en Løkke Start og en Løkke Slut; ellers afvises flowet ved validering med fejlen "'Løkke Afbryd' eller 'Løkke Spring Over' byggeklodser blev fundet uden for en løkke". I indlejrede løkker påvirkes kun den inderste løkke, byggeklodsen står i. Resultatet caches ikke.

Relaterede byggeklodser: Løkke Start, Løkke Slut, Løkke Afbryd og Hvis · Python Kode · Sådan hænger løkker sammen

Python Kode

Byggeklods-id: python-code

Kører et stykke brugerskrevet Python-kode i et isoleret sandbox-miljø (RestrictedPython i en separat proces). Du definerer nodens inputs og outputs visuelt i en signatur; AgentBase pakker din kode ind i en def run(...)-funktion med de definerede inputs som parametre og returnerer de variabler, du har tildelt som outputs.

Inputs

FeltTypeBeskrivelse
Inputs & OutputsstrJSON-signatur, der definerer nodens inputs (navn, type, påkrævet, standardværdi) og outputs (navn, type). Hvert defineret input bliver et handle på noden; hvert output bliver en output-variabel din kode skal tildele. Standard: ét input text (str) og ét output result (str).
KodestrSelve transformationslogikken. Skriv kun funktionskroppen — ingen def, ingen return. Brug input-variablerne direkte og tildel output-variablerne. Standard: result = text.upper().

Noden tager desuden dynamiske inputs: hvert input, der er defineret i signaturen, bliver et selvstændigt handle, som kan forbindes med kanter eller udfyldes statisk. Påkrævede inputs uden værdi fejler; valgfrie inputs uden værdi får deres standardværdi (eller en tom værdi svarende til typen: "", 0, False, [], {}).

Outputs

  • Resultat (any) — funktionens returværdi. Med ét output i signaturen er det variablens værdi direkte. Med flere outputs er det en dict {navn: værdi}, og hvert navn eksponeres også som sit eget handle på lærredet. Med nul outputs returneres None.

Typiske brugsscenarier

  • Rense og omforme data mellem to byggeklodser, fx normalisere CVR-numre, datoer eller beløb før en sammenligning.
  • Beregninger på strukturerede data fra en Sprogmodel eller Struktureret output: summer, procenter, differencer med tolerance (within_tol, pct).
  • Matche poster fra to kilder (fx fakturalinjer mod en kontoplan) med de indbyggede fuzzy_score/find_best_match.
  • Filtrere eller omstrukturere en liste af records (as_records) til den form, en efterfølgende byggeklods forventer.

Brug når / Undlad når

  • Brug når: transformationen er deterministisk og kan udtrykkes i ren Python med standardbiblioteket (json, re, datetime, math, collections m.fl. er tilgængelige uden import).
  • Brug når: en Skabelon eller Hvis/ellers ikke rækker, men opgaven stadig er "data ind, data ud" på under 5 sekunder.
  • Undlad når: koden skal læse filer, kalde netværk eller bruge tredjepartspakker — sandboxen tillader ingen af delene (brug fx HTTP-forespørgsel-byggeklodsen i stedet).
  • Undlad når: opgaven kræver sproglig forståelse eller skøn — brug en Sprogmodel.

Kørslen er begrænset til 5 sekunder (konfigurerbart af platformen); overskrides grænsen, afbrydes processen og noden fejler. Sandboxen afviser bl.a. variabelnavne med foranstillet underscore, æ/ø/å i navne, str.format(), type(), klasser, import, open og eval/exec — fejlmeddelelsen indeholder et dansk tip om, hvad du skal skrive i stedet. Resultatet caches ikke, da noden er markeret som ikke-cachebar; koden køres igen ved hver kørsel.

Relaterede byggeklodser: Logik-byggeklodser (Hvis/ellers, Skabelon, Løkker), Data-byggeklodser (JSON-udtræk, Opdel/Kombinér felter), AI-byggeklodser (Sprogmodel, Struktureret output), Sådan hænger byggeklodserne sammen.

Typiske kæder

Logik-byggeklodserne kombineres oftest sådan:

  • Betinget behandling: en Sprogmodel klassificerer et input → Hvis / ellers eller Forgrening sender resultatet ned ad den rigtige gren. Skal dokumentet selv med videre, er Hvis / ellers den enkleste vej (sammenlign på klassifikationen, send dokumentet ud).
  • Behandl en liste: datakilde → Løkke Start → behandling pr. element (fx Sprogmodel) → Løkke Slut samler resultaterne i elementernes rækkefølge.
  • Filtrér eller stop undervejs: inde i en løkke danner Hvis / ellers en betingelse, som Løkke Spring Over (drop elementet) eller Løkke Afbryd (stop løkken) reagerer på.
  • Egen logik: Python Kode forbereder eller efterbehandler data — fx filtrerer en liste før Løkke Start (så resultatlisten ikke får None-huller) eller beregner et flag, som en Forgrening forgrener på.

Relaterede sider