Orkiestracja rozmowy: state machine i guardrails
Tradycyjny, solidny sposób na przewidywalność rozmów z LLM: maszyna stanów, deterministyczne bramki oraz zaplanowany fallback. Szczególnie istotne, gdy asystent korzysta z narzędzi.
Operacyjny skrót
Ten rozdział należy do rodziny Projektowanie interakcji i ma formę Wzorzec. Poniższe dopowiedzenie ma jeden cel: przełożyć treść na działania, które da się wdrożyć, zmierzyć i utrzymać.
Checklista
- Ustal cel i kryteria poprawności (co znaczy „dobry wynik”).
- Zamknij format wyjścia (JSON / tabela / sekcje) i przygotuj walidację.
- Ogranicz przestrzeń odpowiedzi: instrukcje, słownik terminów, limity.
- Dodaj kontrolę jakości: self-check, sanity-checks, fallback, „no-answer”.
- Zapisz jako szablon (prompt_template) i wersjonuj jak kod.
- Wprowadź testy regresyjne (golden set) i przeglądy po zmianach.
Najczęstsze pułapki
- Mieszanie instrukcji z danymi wejściowymi (brak separacji „co” vs „na czym”).
- Format wynikowy „opisowy” bez kontraktu – brak automatycznej kontroli.
- Zbyt ogólne polecenia („napisz mądrze”) bez parametrów i ograniczeń.
- Brak strategii na niepewność: model zaczyna „zgadywać” zamiast eskalować.
Artefakty w Luage
Standard działa dopiero wtedy, gdy ma właściciela, wersję, ślad (trace) oraz test regresyjny.
Minimalny szablon promptu (do biblioteki)
prompt_template: support.reply@v3
intent: support.reply
inputs:
- user_message
- locale
constraints:
- "Jeśli brak źródła → powiedz, że nie wiesz i poproś o doprecyzowanie"
output:
format: markdown
sections: ["Odpowiedź", "Co dalej"]
Traktuj szablon jak kod: owner, wersja, testy i przegląd. Wtedy to działa powtarzalnie.
- rozmowa jako proces i stany
- deterministyczne bramki w Engine
- fallback: no‑answer / HITL / retry