Perché creare un intero linguaggio di programmazione per l'orchestrazione di reti neurali
Quando si tenta di costruire un sistema complesso basato su LLM usando Python o TypeScript, il codice viene rapidamente sepolto sotto il boilerplate dell'infrastruttura. È necessario configurare manualmente le code di messaggi, scrivere la logica di retry, persistere lo stato intermedio in un database e trovare workaround per attendere le risposte degli utenti. I linguaggi general-purpose non sanno nulla delle specifiche per chiamare i modelli linguistici o della necessità di mettere in pausa un processo per un paio di giorni.
Gli sviluppatori di WeaveMind hanno deciso di affrontare il problema in modo radicale. Invece di un'altra libreria, stanno costruendo Weft — un linguaggio di programmazione completo in cui LLM, API esterne, database e coinvolgimento umano sono elementi di prima classe del linguaggio.
Perché è necessario un nuovo linguaggio
L'idea fondamentale dietro Weft è liberare gli ingegneri dalla scrittura dello scaffolding dei servizi. Le connessioni tra modelli, database e logica vengono validate dal compilatore prima ancora che il programma venga eseguito.
Il progetto è attualmente in fase di riscrittura attiva per allinearsi con il concetto MVP, e il rilascio ufficiale è previsto per agosto 2026. Tuttavia, il codice sorgente è aperto e puoi esplorare l'approccio proposto fin da ora.
Principali funzionalità dell'architettura
Human in the loop senza servizi extra
Se la logica di business richiede l'approvazione di un manager o l'inserimento di dati da parte di un operatore, il processo si ferma all'istruzione rilevante. Non c'è bisogno di avviare un database per gli stati, configurare webhook o interrogare le API con un timer. Un programma che attende un click dell'utente per tre secondi viene scritto esattamente nello stesso modo di uno scenario con un'attesa di tre giorni.
Due forme di rappresentazione
Il codice Weft è simultaneamente uno scenario testuale e un grafo visivo. Non si tratta di un'interfaccia grafica sopra un file di configurazione. Modificare un nodo nel diagramma modifica il testo sorgente, e viceversa. Gli ingegneri possono lavorare con il testo mentre gli analisti visualizzano un diagramma chiaro del processo.
Esecuzione affidabile tramite Restate
Sotto il cofano, viene utilizzato il motore Restate. Se il server genera un errore, si riavvia o perde la connettività di rete durante una chiamata LLM, l'esecuzione riprende dal punto di errore senza perdere il contesto accumulato.
Typing end-to-end
Il compilatore verifica i tipi di dati lungo l'intera catena. Se un nodo emette un oggetto con una struttura specifica e il successivo si aspetta una stringa semplice, il builder segnala immediatamente l'errore. Questo aiuta a catturare gli errori di battitura nei campi JSON durante la fase di scrittura del codice.
Come appare uno scenario Weft
La sintassi del linguaggio è dichiarativa e focalizzata sul collegamento di blocchi:
topic = Text {
label: "Topic"
value: "the silence between stars"
}
llm_config = LlmConfig {
label: "Config"
model: "anthropic/claude-sonnet-4.6"
systemPrompt: "Write a short, beautiful poem (4-6 lines) about the given topic."
temperature: "0.8"
}
poet = LlmInference -> (response: String) {
label: "Poet"
}
poet.prompt = topic.value
poet.config = llm_config.config
output = Debug { label: "Poem" }
output.data = poet.response
In questo piccolo esempio, vengono dichiarati quattro nodi: testo, configurazione del modello, l'inferenza LLM stessa e l'output di debug. Le connessioni tra di essi vengono stabilite passando esplicitamente i campi.
Cosa c'è sotto il cofano
Il core del compilatore, l'orchestrator e l'executor sono scritti in Rust. L'interfaccia web della dashboard è costruita con SvelteKit (Svelte 5).
Tutti i blocchi disponibili risiedono nella directory catalog/. Ogni nuovo blocco è descritto da due file in una cartella separata:
backend.rsdefinisce la logica lato server in Rustfrontend.tsspecifica il rendering del nodo, le porte e i campi di configurazione nell'interfaccia utente
Uno script speciale li collega automaticamente alla dashboard e al runtime. Aggiungere nodi personalizzati risulta essere piuttosto semplice.
La directory corrente include già blocchi per lavorare con LLM, eseguire codice Python, inviare messaggi a Telegram, Discord, Slack e WhatsApp, lavorare con Postgres e la ricerca web.
Stato attuale e licenza
Il progetto è in una fase iniziale di sviluppo. Gli autori dichiarano apertamente nel README che l'architettura è ancora in fase di formazione, quindi sono possibili modifiche che rompono la compatibilità.
Weft è distribuito sotto la licenza O'Saasy (una versione modificata di MIT). Consente l'uso gratuito, la modifica e l'auto-hosting, ma vieta l'esecuzione di un servizio commerciale a pagamento basato su questo codice che competi con gli autori.
Chi dovrebbe seguire il progetto
Weft è interessante come tentativo di ripensare l'approccio all'orchestrazione di agenti di reti neurali. Se sei stanco di combattere con grafi di chiamate complessi nei linguaggi general-purpose e stai cercando uno strumento con tolleranza ai guasti integrata, il repository merita sicuramente di essere salvato nei segnalibri.
Progetti correlati