Engineering
Wat er echt nodig is om AI-workflows in productie te draaien
Iedereen kan een prototype bouwen
De drempel om een LLM iets nuttigs te laten doen is nooit lager geweest. Een paar API-aanroepen, een prompt, en je hebt iets dat indruk maakt in een demo.
Productie is anders.
Zes dingen waar elk team tegenaan loopt
1. Kostenbeheer
LLM-aanroepen zijn goedkoop, tot ze het niet meer zijn. Een verkeerd geconfigureerde lus, een onverwacht lang stuk input, en je hebt je maandbudget op een namiddag opgebruikt. Je hebt harde budgetlimieten op workflowniveau nodig, niet alleen ratelimits op API-niveau.
2. Observeerbaarheid
Als er iets misgaat — en dat gebeurt — moet je weten welk knooppunt er is gefaald, welke input het ontving en welke output het produceerde. console.log(response) loggen schaalt niet.
3. Herhaalpogingen en idempotentie
LLM-API’s falen. Netwerk-timeouts gebeuren. Je workflow moet tijdelijke fouten op een nette manier afhandelen zonder knooppunten die al geslaagd zijn opnieuw uit te voeren.
4. Isolatie
Als een workflow bestanden schrijft, code uitvoert of een repository aanpast, heb je isolatie nodig. Draaien tegen je main branch in CI is een tijdbom.
5. Beheer van geheimen
Credentials mogen nooit in prompts, in logs of in workflowdefinities staan die in versiebeheer zijn ingecheckt. Ze moeten op runtime worden geïnjecteerd vanuit een secrets store.
6. Mens in de lus
Niet alles moet volledig geautomatiseerd zijn. Sommige workflows hebben een reviewstap nodig voordat ze een actie uitvoeren. Die reviewstap moet een volwaardig primitief zijn, geen noodoplossing die er achteraf bij is geplakt.
Hoe Skylence dit aanpakt
Harness Builder is ontworpen met al deze zes punten in gedachten. Budgetlimieten en outputstijlen zitten in het meta-blok. Observeerbaarheid is ingebouwd in de runtime. Worktree-isolatie is een configuratiewijziging van één regel. Geheimen worden geïnjecteerd, nooit geïnterpoleerd.
Wij zijn niet de enige manier om deze problemen op te lossen. Maar we denken dat het .sky-formaat de juiste dingen eenvoudig maakt en de gevaarlijke dingen expliciet.
⊕meta⊕
name = "safe-deploy"
description = "Run tests, get human approval, then deploy"
max_budget_usd = 2.0
⊕⊕
§test§
model = "sonnet"
isolation = "worktree"
§§
∆test∆
Run the test suite. If any tests fail, summarise which ones and why.
Output: pass | fail + summary
∆∆
§review§
model = "opus"
depends_on = ["test"]
human_review = true
§§
∆review∆
Test results: $test.output
Should we proceed with deployment? Summarise the risk.
∆∆
§deploy§
depends_on = ["review"]
requires_approval = true
§§
∆deploy∆
Deploy to production. Use the approved plan from review.
∆∆