Questo tutorial porta una cartuccia attraverso il ciclo di sviluppo locale: creazione dello scheletro,
build quando serve, installazione, esecuzione, modifica e reinstallazione. Il
sentiment-tagger generato possiede una piccola capacità di dominio e delega la
classificazione vera e propria alla capacità pubblicata classify-en.
Prerequisiti
Ti servono:
- la CLI
capdagnelPATH; - la toolchain del linguaggio che scegli;
- una cartuccia di modello installata localmente che fornisca
classify-en; e - l’accesso alla rete alla prima esecuzione del modello, se quella cartuccia deve scaricare il proprio modello.
Per Python, installa Python 3.11 o successivo e il runtime della cartuccia:
python3 -m pip install capdag
Il punto di ingresso Python generato usa #!/usr/bin/env python3. Il python3 trovato
nel PATH deve quindi essere in grado di importare capdag.
1. Crea il progetto {#1-create-the-project}
capdag new sentiment-tagger --python
cd sentiment-tagger
--rust, --go e --swift producono progetti equivalenti per i runtime di cartuccia
di quei linguaggi. Il README generato riporta il comando di build specifico del linguaggio.
Il progetto Python contiene:
sentiment-tagger/
cartridge.py
README.md
.gitignore
Il punto di ingresso generato:
- Definisce i media URN di input e di output specifici del progetto.
- Costruisce un cap URN personalizzato e lo annuncia insieme alla cap di identità obbligatoria.
- Registra un handler
TagOpper la stringa canonica del cap URN. - Chiama
classify-encon il testo di input e l’insieme chiuso di etichettepositive,neutral,negative. - Inoltra l’avanzamento del peer ed emette l’etichetta restituita.
I media URN generati includono il nome del progetto, così una cap di sviluppo non pubblicata non riutilizza per errore un tipo pubblicato:
media:enc=utf-8;sentiment-tagger-input
media:enc=utf-8;sentiment-tagger-tag
La capacità personalizzata ha la forma canonica:
cap:in="media:enc=utf-8;sentiment-tagger-input";out="media:enc=utf-8;sentiment-tagger-tag";sentiment-tagger
Tratta i tagged URN come valori opachi. Lo scheletro costruisce il cap URN con
CapUrnBuilder e riutilizza la sua stringa canonica per la registrazione; non
ricostruire quella stringa nel codice dell’handler.
Esamina il manifest prima dell’installazione:
./cartridge.py manifest | python3 -m json.tool
Per un linguaggio compilato, esegui prima il suo comando di build ed esamina invece il
sottocomando manifest dell’eseguibile generato.
2. Installa la cartuccia di sviluppo {#2-install-the-development-cartridge}
capdag dev-install .
Per Rust, Go e Swift, compila l’eseguibile generato prima di questo comando.
dev-install legge il manifest, confronta i suoi alias con il fabric e
colloca il progetto in:
~/.capdag/cartridges/dev/v{registry-version}/nightly/sentiment-tagger/0.1.0/
Lo slug dev è riservato ai manifest il cui registry_url è null.
Reinstallare la stessa versione sostituisce quell’installazione di sviluppo.
Una cap di sviluppo può introdurre un alias assente dal fabric. Non può rivendicare un alias che il fabric associa già a una capacità diversa. Rinomina un alias in conflitto prima di continuare.
3. Esegui la capacità {#3-run-the-capability}
echo "I love this" | capdag sentiment-tagger
Esegui il punto di ingresso attraverso l’host capdag. Invocarlo direttamente non può soddisfare la sua
chiamata peer e fallisce con Peer invocation not supported in this context.
In caso di successo, lo stdout contiene una delle tre etichette. L’avanzamento del download del modello e
dell’inferenza compare attraverso il normale canale dell’avanzamento. Se nessuna cartuccia
installata fornisce classify-en, la chiamata peer fallisce; lo scheletro non ha alcun
classificatore di ripiego.
4. Modificala e reinstallala {#4-change-and-reinstall-it}
Apri il sorgente generato e cambia l’insieme delle etichette, i metadati della capacità o la capacità peer. Poi ricompila se necessario e reinstalla:
capdag dev-install .
echo "I love this" | capdag sentiment-tagger
Questo è il ciclo di sviluppo: modifica, build quando richiesta, dev-install ed
esecuzione. Incrementa la versione del manifest per installare una nuova versione accanto a quella vecchia;
altrimenti dev-install aggiorna la directory della versione corrente.
Aggiungere un’altra capacità
Ogni capacità aggiuntiva richiede:
- una
Capnel manifest, con tag di media e di operazione distinti; - un’implementazione di
Op; e - una registrazione che usi esattamente la stringa canonica del cap URN annunciata dal manifest.
Il runtime crea l’handler registrato per ogni richiesta ed esegue il dispatch in base al cap URN della richiesta.
Pubblicare la cartuccia
Le definizioni locali diventano definizioni del registro quando la capacità è pronta per
altri utenti. Proponi i nuovi cap URN e media URN a capfab, e proponi la
cartuccia a cartridge-shelf. Un manifest pubblicato usa l’URL del proprio registro e
viene installato sotto lo slug di quel registro invece che sotto dev.
Risolvere i problemi del ciclo di sviluppo
- Conflitto di alias: rinomina un alias che il fabric assegna già a un cap URN diverso.
- Nessun fornitore locale: esegui di nuovo
capdag dev-install .e verifica che l’alias corrisponda al manifest. - Il comando manifest fallisce: rendi eseguibile il punto di ingresso e assicurati che le sue dipendenze di runtime siano disponibili all’interprete o all’eseguibile.
NoHandlerError: costruisci il cap URN una sola volta e usa la stessa stringa canonica sia nel manifest sia nella registrazione dell’handler.- L’invocazione peer fallisce: installa una cartuccia di modello compatibile che fornisca
classify-en, poi esegui la cap di sviluppo attraverso l’host anziché direttamente dal suo punto di ingresso.
Vedi il riferimento della CLI di CapDAG per i dettagli sui comandi e sulle opzioni.