Ce este de fapt aici un flux de lucru
Majoritatea uneltelor numite „de flux" în domeniul inteligenței artificiale sunt lanțuri de cereri cu un strat subțire deasupra. Constructorul ToRun este un graf orientat aciclic (DAG) de pași tipizați: legi apeluri de modele, apeluri de unelte, ramificări condiționale, bucle și subfluxuri într-un graf, iar motorul le execută în ordinea dependențelor, în paralel acolo unde graful permite.
Fiecare pas este o entitate de sine stătătoare cu propria configurare: tipul pasului (apel LLM, căutare web, executarea codului, generare de imagine, regăsire, transformare și așa mai departe), schema de intrare, politica de eroare (eșec rapid, reîncercare cu așteptare, trecere la alternativă), plafon de buget de execuție pe pas și limită de timp.
Direcționarea modelului în fiecare pas LLM trece prin același lanț de capabilități ca tot restul în ToRun. Declari ce îți trebuie — ieșire structurată, vedere, folosirea uneltelor, raționament, o fereastră de context de cel puțin N jetoane — iar executantul rezolvă modelul care se potrivește cel mai bine dintre furnizorii disponibili atunci. Dacă furnizorul tău preferat întoarce un 5xx, lanțul de rezervă preia automat.
Executanți cu prioritate pe calitate și ce schimbă asta în practică
Când rulezi un flux, executantul alege intenționat modele de nivel calitativ în locul variantei celei mai ieftine. Două motive: automatizările produc artefacte (rapoarte, conținut generat, cod) pe care nimeni nu le revizuiește imediat, deci scăpările de calitate se adună în tăcere; iar la volum moderat diferența de cost este mai mică decât prețul unei ieșiri proaste care impune o nouă rulare sau corectură manuală.
În practică asta înseamnă că un flux „rezumă cercetarea și scrie un raport" va prefera un model solid de raționament pentru rezumat și un model de text de bună calitate pentru scriere, în loc să alerge spre pragul de preț. Poți trece peste asta la un pas anume dacă știi că acolo ajunge un model ușor.
Facturarea urmează restul ToRun: fiecare apel de model din interiorul unui flux scrie exact o înregistrare cu un instantaneu de tarif înghețat. O rulare care cheamă trei modele diferite în cinci pași dă cinci înregistrări. Poți verifica costul exact al fiecărei rulări, defalcat pe pași, și ulterior — chiar și luni mai târziu, când prețurile furnizorilor s-au mișcat deja.
Analiza unei rulări
Fiecare rulare de flux produce o urmă structurată. Urma arată graful cu fiecare nod adnotat: ora de început, ora de sfârșit, modelul rezolvat, numărul de jetoane de intrare și ieșire, apelurile de unelte făcute și eventuala eroare. La pașii LLM poți desfășura cererea trimisă exact și răspunsul brut primit.
Dacă un pas eșuează, urma îți spune dacă eroarea a venit din apelul modelului (eroare de furnizor, depășire de context, refuz de politică de conținut), dintr-o unealtă mai departe (expirare de rețea, eșec de validare a schemei) sau din propria ta logică condițională. Nu trebuie să adaugi jurnalizare: se captează la nivel de infrastructură la fiecare rulare.
Orice rulare se poate repeta cu aceeași intrare, ceea ce face directă reproducerea unui defect.
Un exemplu mic: flux săptămânal de urmărire a concurenței
Imaginează-ți un flux pe care îl pornești în fiecare luni dimineața:
- Pas de căutare web — caută apariții recente pentru un set de cuvinte-cheie ale concurenței și întoarce o listă de adrese și fragmente.
- Pas de regăsire — scoate ultimele patru rapoarte dintr-o bază de cunoștințe ca să fixeze contextul de pornire.
- Pas de rezumat (LLM) — distilează rezultatele căutării în constatări structurate: funcții noi, schimbări de preț, anunțuri însemnate.
- Pas de scriere (LLM) — scrie o notă internă concisă într-un stil de casă unitar, întemeiată pe constatările rezumate.
- Pas de livrare — publică nota la un punct webhook configurat.
Graful are o dependență firească: pasul 3 depinde de 1 și 2 (care pot rula în paralel), pasul 4 de 3, pasul 5 de 4. Executantul face asta fără nicio setare explicită de paralelism: citește muchiile.