Case study · Bęben 03 / 03

Pipeline’y LLM: od transkrypcji do sprawdzonego dokumentu

Dla brytyjskiego fintechu AI. Wzorce stojące za pipeline’ami LLM, które zamieniają transkrypcje w dokumenty sprawdzane przez człowieka.

Klient
brytyjski fintech AI
Rola
Senior engineer, kontrakt B2B
Stack
Node.js · TypeScript · AWS · LLMs

Kontekst

Brytyjski fintech AI, kontrakt B2B objęty NDA. Ta strona opisuje wzorce, których używam, a nie system klienta: bez opisu ich produktu, bez architektury, bez liczb.

Ogólny problem: długie, nieuporządkowane wejście, na przykład transkrypcja, ma się stać wynikiem, na którym człowiek może polegać. Część to proza, którą człowiek czyta i edytuje, część to dane strukturalne, które pobiera inny system, a każdy klient chce swojego wyniku trochę inaczej.

Problem

Wywołania modelu są wolne, kosztują, czasem zawodzą i nie dają dwa razy tej samej odpowiedzi. A wynikowi wciąż trzeba móc zaufać, zanim ktokolwiek na jego podstawie zadziała.

Wzorzec

Wzorzec · poglądowo

01 · Wejście

Wszystko, co dotyczy jednego wejścia, to jedno zadanie, więc udaje się albo zawodzi w całości.

  1. 01 · Wejście Wszystko, co dotyczy jednego wejścia, to jedno zadanie, więc udaje się albo zawodzi w całości.
  2. 02 · Kroki Definicja wyniku klienta staje się grafem kroków. Niezależne kroki działają równolegle, wspólna praca wykonuje się raz, a odpowiedzi modelu przychodzą z cache, gdy zapytanie jest takie samo.
  3. 03 · Szkice Proza dla ludzi, ścisłe schematy tylko tam, gdzie wynik czyta maszyna.
  4. 04 · Człowiek Nic nie opuszcza systemu, dopóki człowiek tego nie poprawi albo nie zaakceptuje.

Decyzje i kompromisy

  1. Jeden graf na wejście, a nie kolejka na krok

    Jedno wejście to jedno zadanie. W jego obrębie kroki działają jako graf w procesie: niezależne kroki równolegle, wspólna praca tylko raz.

    KOMPROMIS Nie ma retry na poziomie kroku: gdy zadanie zawiedzie, całe zadanie uruchamia się ponownie. Retry działa za to na poziomie wywołania modelu, bo tam jest niemal każda awaria.

  2. Cache całych odpowiedzi modelu

    Każda odpowiedź modelu jest zapisywana pod hashem zapytania. Zadanie uruchomione ponownie albo przetworzone jeszcze raz odpowiada na kroki, które już się wykonały, z cache i płaci tylko za resztę.

    KOMPROMIS Cache trafia tylko przy identycznych zapytaniach: zmień jedno słowo w prompcie albo model i każdy krok chybia. Trzyma też wrażliwe treści, więc wpisy wygasają, co ogranicza, jak długo ponowne uruchomienia są tanie.

  3. Typowany wynik tylko tam, gdzie czyta go maszyna

    Wynik, który pobiera inny system, używa ścisłych schematów. Wynik, który ludzie czytają i edytują, zostaje prozą.

    KOMPROMIS Proza wymaga kodu, który ją parsuje i sprawdza, zamiast gwarancji schematu, a wszystko, co później ma się stać polem, najpierw przechodzi do części typowanej.

  4. Człowiek w pętli domyślnie

    Wszystko, co pisze model, jest szkicem, dopóki człowiek tego nie poprawi albo nie zaakceptuje.

    KOMPROMIS Ceną jest czas człowieka przy każdym wyniku. To ustawienie domyślne, a nie reguła: klient, który ufa swoim wynikom, może je wyłączyć i bierze na siebie odpowiedzialność.

  5. Wynik, który zdefiniują nie-inżynierowie

    To, co produkuje pipeline, to dane, a nie kod: klienci definiują własne sekcje w edytorze, z wersjami i możliwością powrotu do poprzedniej.

    KOMPROMIS Definicja to uporządkowana lista sekcji, a nie dowolny graf, więc nikt nie zbuduje zepsutego pipeline’u, ale nowy rodzaj kroku wciąż wymaga inżyniera.

    Case study: edytor szablonów no-code

Wyniki

Na produkcji i w codziennym użyciu. System klienta, jego wolumeny i wyniki pomijam ze względu na NDA.

Stack

  • Node.js
  • TypeScript
  • AWS
  • LLMs

Kontakt

Mierzysz się z czymś podobnym?

Umów rozmowę Napisz na hello@paxcode.it