LLM · embedding · VLMChiedi a Metnos con una richiesta come quella di questo esempio:
«Mostrami dove posso modificare il modello e il budget di ragionamento del
tier wise».
Metnos ti conduce alla pagina amministrativa della chat web:
Settings > Sistema > Modelli. Se poni la domanda da
Telegram, il Tutor può spiegarti il percorso, ma la pagina si apre nella chat
web. L'indirizzo interno è /admin/virt e richiede un accesso da
amministratore.
Il runtime non lega i propri componenti a un nome di modello. Ogni componente chiede un ruolo logico; la configurazione effettiva associa quel ruolo a un fornitore, a un modello, a un endpoint e ai relativi parametri. La pagina Modelli mostra questa associazione e permette di modificarla senza cambiare il codice dei componenti che la usano.
/admin/virt.La pagina si apre in modalità di consultazione. Il pulsante Rileggi configurazione carica di nuovo il file e aggiorna la visualizzazione; non salva modifiche e non riavvia i modelli. Le modifiche dalla pagina sono separate tra LLM e VLM; l’embedding resta consultabile e non viene riscritto dalla UI.
Questa configurazione appartiene all'istanza Metnos eseguita da quell'account di sistema. Non è una preferenza personale dell'utente della conversazione.
Un consumatore dichiara che cosa gli serve, non quale prodotto o modello
debba soddisfare la richiesta. La risoluzione passa da tre punti pubblici del
pacchetto runtime/virt:
| Famiglia | Ruoli | Interfaccia | Risultato |
|---|---|---|---|
| modello linguistico | fast.micro, fast.procedural, fast.fidelity, middle, wise, creative, frontier |
virt.get_llm(role, level=...) |
un fornitore linguistico risolto dal router dei tier |
| embedding | text, image |
virt.get_embedder(role) |
un fornitore che produce vettori per la modalità richiesta |
| modello visivo-linguistico | default |
virt.get_vlm(role) |
la specifica effettiva del VLM, non un modello già caricato |
I nomi dei tier LLM esprimono un'intenzione del chiamante. Non certificano
da soli la qualità del modello concreto: è l'amministratore a decidere quale
fornitore e quale modello soddisfano ciascun ruolo. Un file LLM parziale
sostituisce solo i ruoli che contiene; per fast, middle e wise
omessi restano validi i valori iniziali. I tre livelli di fast
ereditano il binding di fast e possono ricevere un override mirato
in [fast.level.micro], [fast.level.procedural] o
[fast.level.fidelity]. Se creative è assente,
il suo binding fisico viene associato a wise conservando la policy
creativa.
frontier è facoltativo e chi lo richiede deve gestirne
l'eventuale indisponibilità.
from virt import get_embedder, get_llm, get_vlm
text_encoder = get_embedder("text")
planner = get_llm("wise")
translator = get_llm("fast", level="fidelity")
vision_spec = get_vlm("default")
La virtualizzazione separa quindi due decisioni: il componente sceglie il ruolo; la configurazione dell'istanza sceglie il backend. Cambiare un collegamento tra fornitori già supportati non richiede di modificare gli executor o il pianificatore. Aggiungere un tipo di fornitore che il runtime non conosce, invece, richiede una sua implementazione.
Per ciascuna famiglia la pagina presenta:
think, temperature e
reasoning_budget quando presenti;I valori della politica di generazione sono i valori effettivi del tier, risolti dal file di configurazione e dai valori iniziali. Le operazioni scelgono un tier e non mantengono un secondo profilo di decodifica. Limiti di output, deadline, grammatiche e schemi dei tool restano vincoli strutturali della singola operazione.
Password, token, chiavi, credenziali e parti sensibili degli URL non vengono mostrati. Restano esclusi anche dai campi inviati dal modulo. I segreti già presenti nel documento vengono conservati durante il salvataggio, ma si gestiscono attraverso il flusso protetto delle credenziali o l'ambiente del servizio, non da questa pagina.
La lettura della pagina non inizializza fornitori e non carica modelli: costruisce una proiezione limitata e priva di segreti della configurazione risolta.
Per LLM e VLM, premendo Modifica, Metnos espone soltanto i valori scalari visibili che sa rappresentare senza cambiarne il tipo. I campi sensibili e i valori non modificabili restano in sola lettura. Al salvataggio il runtime:
0600;Una configurazione non valida non sostituisce il file precedente. Dopo un salvataggio valido non servono una reinstallazione, una ricompilazione o il riavvio del server: le chiamate successive risolvono i nuovi valori. Un turno già in esecuzione conclude invece il proprio lavoro con le risorse che aveva già acquisito.
Il pulsante Ripristina opera su LLM o VLM e richiede conferma. Riscrive i valori iniziali forniti dalla versione di Metnos installata. Non sceglie automaticamente una vecchia configurazione personale e non ricostruisce le scelte compiute durante un'installazione precedente.
Prima del ripristino Metnos conserva una copia privata del file corrente, se
il file esiste. Le copie create da salvataggi e ripristini si trovano sotto
$METNOS_USER_STATE/virt-config-history/<famiglia>/; con i
percorsi predefiniti, la radice è
~/.local/state/metnos/virt-config-history/. La pagina non offre un
selettore delle versioni storiche: il recupero di una copia specifica è
un'operazione amministrativa distinta.
La pagina mostra sempre il percorso effettivo, che è più affidabile di un percorso ricordato a memoria. In assenza di sostituzioni, i documenti appartengono all'account di sistema che esegue Metnos.
| Famiglia | Ordine di risoluzione del file |
|---|---|
| LLM | METNOS_LLM_TIERS_CONFIG; poi
$METNOS_USER_CONFIG/llm_tiers.toml se esiste; infine il percorso
di compatibilità <install_root>/workspace/.config/llm_tiers.toml |
| embedding | METNOS_EMBEDDING_TIERS_CONFIG; altrimenti
$METNOS_USER_CONFIG/embedding_tiers.toml |
| VLM | METNOS_VLM_TIERS_CONFIG; altrimenti
$METNOS_USER_CONFIG/vlm_tiers.toml |
$METNOS_USER_CONFIG vale normalmente
~/.config/metnos. Se un file non esiste, il runtime usa i valori
iniziali della versione installata e la pagina lo dichiara. Se il documento
non è leggibile o non supera la validazione, la pagina segnala lo stato non
valido e distingue gli eventuali valori di ripiego da una configurazione
valida.
| Famiglia | Confine operativo |
|---|---|
| LLM | Il router crea il fornitore dichiarato dal tier. Le associazioni supportate possono puntare a un endpoint locale o a un servizio remoto; credenziali e disponibilità del servizio restano requisiti separati. |
| embedding | I valori iniziali usano fornitori locali nello stesso processo. Il cambio di
backend è una migrazione amministrativa dedicata, non un comando della pagina;
gli executor
in sola lettura che dichiarano calcolo locale usano invece
get_local_embedder() e non acquisiscono autorità di rete per
effetto di quella scelta. |
| VLM | get_vlm() restituisce la specifica. L'avvio è separato e
pigro: ensure_vlm_up() controlla /health, può
tentare una volta per processo lo script VLM configurato e restituisce
false se il servizio non diventa disponibile. Il chiamante decide
il ripiego. |
La virtualizzazione centralizza la scelta del backend; non trasforma un endpoint remoto in una risorsa locale e non concede da sola rete, credenziali o capacità aggiuntive a un executor.
Ogni chiamata di produzione sceglie un workload logico. Il router lo risolve
in un tier e, per fast, nel relativo livello. Il componente può
definire requisiti propri della singola operazione, come max_tokens,
timeout o una grammatica di output; non sceglie provider, modello o endpoint e non
mantiene un secondo profilo di generazione. La configurazione dell'istanza è quindi
l'unica responsabile dei valori effettivi di ciascun tier.
| Area | Tier | Motivo del ruolo |
|---|---|---|
| Routing e estrazione intent | fast.micro | Classificazione breve e strutturata. |
| Proposte, pianificazione e sintesi | wise | Confronto fra alternative e generazione articolata. |
| Normalizzazione, verifiche e amministrazione procedurale | fast.procedural | Trasformazioni e giudizi strutturati. |
| Traduzione, composizione grounded e verifica semantica | fast.fidelity | Alta fedeltà su contesti estesi senza generazione divergente. |
| Pianificazione vincolata da grammatica | fast.fidelity | Output esatto su contesto esteso; la grammatica resta un vincolo dell'operazione. |
| Telos e redazione divergente | creative | Proposte creative e comparative. |
| Alignment | fast.procedural | Produce una stima strutturata di aderenza ai telos. |
| Escalation esterna esplicita | frontier | Massima capacità configurata, invocata intenzionalmente. |
Un tier può puntare a un servizio locale o remoto e può essere modificato dall'amministratore. Cambiarlo cambia le chiamate successive di tutte le righe che lo usano: per questo è chi configura i tier a valutarne capacità, costo, riservatezza e disponibilità.
runtime/virt/__init__.py — facciate e valori iniziali di
embedding e VLM;runtime/llm_router.py — tier LLM, associazioni, alias e
politica di inferenza;runtime/llm_workloads.py — registro dichiarativo che
associa ogni workload di produzione a un solo tier logico;runtime/virt/configuration.py — proiezione effettiva,
provenienza e oscuramento dei segreti;runtime/virt/config_editor.py — modifica validata,
scrittura atomica, copie di recupero e ripristino.Per la mappa completa della chat web consulta la guida alla navigazione dell'interfaccia. Per capire come i componenti eseguibili consumano questi ruoli, prosegui con la guida agli executor o torna alla Guida all'architettura.