Vedi Pwas al lavoro: 30 minuti guidati su un'applicazione già funzionante. Prenota la demo →
Confronta i prodotti Pwas nel tuo settore Prenota una demo
Pwas-One
ERPShopCRMDoc ManagerAI Agent
Pwas.FrameworkPwas.ClientPwas.OrchestratorPwas.Microservice
Pwas CLIAssessmefyDynamic Registry Builder
Soluzioni Settori Documentazione Partner Richiedi una demo Inizia ora
Italiano English
pwas.it — powered by pooel.it

Non un servizio.
La base per estendere Pwas.

libreria Python (FastAPI) per tool AI componibili

La libreria su cui si costruisce ogni tool che affianca Pwas.Framework — vostro o nostro: autenticazione, coda asincrona, webhook e modelli intercambiabili, già pronti. Voi scrivete solo la logica che vi serve davvero.

overview

Pwas è estendibile per progetto.
Questa è la base ufficiale per farlo.

Pwas.Microservice (pwas-microservice-base) è distribuito come libreria — pip install — non come servizio a sé stante. Ogni tool concreto la estende: registra le proprie azioni, la base gli fornisce gratis contratto HTTP, autenticazione, coda asincrona, webhook e un driver LLM multi-provider. Il primo tool costruito su questa base è Pwas.MicroService.DocsResolver.

AAAWgmp1bWIAAAAeanVtZGMycGEAEQAQgAAAqgA4m3EDYzJwYQAAABZcanVtYgAAAEdqdW1kYzJtYQARABCAAACqADibcQN1cm46YzJwYToxMzFhYTVmZS01NWYwLTQwNWUtYjFiYS1hMGU0NDA3ZGZmMjYAAAADl2p1bWIAAAApanVtZGMyYXMAEQAQgAAAqgA4m3EDYzJwYS5hc3NlcnRpb25zAAAAALxqdW1iAAAARGp1bWRjYm9yABEAEIAAAKoAOJtxE2MycGEuaW5ncmVkaWVudC52MwAAAAAYYzJzaBwVBLzxCXhbyXxZ/UqJkXUAAABwY2JvcqNpZGM6Zm9ybWF0bWltYWdlL3N2Zyt4bWxqaW5zdGFuY2VJRHgseG1wOmlpZDpiOTIzMjc2Yy0zNjQ1LTQ3OGQtODZhMy0yZjA0MTJhNzY0YTlscmVsYXRpb25zaGlwaHBhcmVudE9mAAAB4mp1bWIAAABBanVtZGNib3IAEQAQgAAAqgA4m3ETYzJwYS5hY3Rpb25zLnYyAAAAABhjMnNopTxOCDWPVGGq9Eb9bmqliQAAAZljYm9yomdhY3Rpb25zgqJmYWN0aW9ua2MycGEub3BlbmVkanBhcmFtZXRlcnOha2luZ3JlZGllbnRzgaJjdXJseC1zZWxmI2p1bWJmPWMycGEuYXNzZXJ0aW9ucy9jMnBhLmluZ3JlZGllbnQudjNkaGFzaFggsn06tN590wbf9o6Z0OQ6NlrezE6PhUg5Y1sTvqEs7NekZmFjdGlvbngdY29tLmFudGhyb3BpYy5jbGF1ZGUucHJvdmlkZWRqcGFyYW1ldGVyc6F4H2NvbS5hbnRocm9waWMub3JpZ2luLWNvbmZpZGVuY2VndW5rbm93bmtkZXNjcmlwdGlvbnhmQ2xhdWRlIHByb3ZpZGVkIHRoaXMgZmlsZSBhdCB0aGUgcmVxdWVzdCBvZiBhIHVzZXIgYW5kIG1heSBoYXZlIGNyZWF0ZWQgb3IgbW9kaWZpZWQgdGhlIGZpbGUgY29udGVudHMubXNvZnR3YXJlQWdlbnShZG5hbWVmQ2xhdWRlcmFsbEFjdGlvbnNJbmNsdWRlZPUAAADIanVtYgAAAEBqdW1kY2JvcgARABCAAACqADibcRNjMnBhLmhhc2guZGF0YQAAAAAYYzJzaBBaM6Mlwm5M9GI7G1tWmzcAAACAY2JvcqVjYWxnZnNoYTI1NmNwYWRNAAAAAAAAAAAAAAAAAGRoYXNoWCC0EmSBLGM5bniCT+P2vh2tai8qYWzbrLy/x/DRhM5K32RuYW1lbmp1bWJmIG1hbmlmZXN0amV4Y2x1c2lvbnOBomVzdGFydBjpZmxlbmd0aBkeBAAAAj5qdW1iAAAAJ2p1bWRjMmNsABEAEIAAAKoAOJtxA2MycGEuY2xhaW0udjIAAAACD2Nib3KlY2FsZ2ZzaGEyNTZpc2lnbmF0dXJleE1zZWxmI2p1bWJmPS9jMnBhL3VybjpjMnBhOjEzMWFhNWZlLTU1ZjAtNDA1ZS1iMWJhLWEwZTQ0MDdkZmYyNi9jMnBhLnNpZ25hdHVyZWppbnN0YW5jZUlEeCx4bXA6aWlkOmQwNTgwN2MwLTkzNzItNDQ5Mi1iNzgwLWM2MzI1MzYyZDZjYXJjcmVhdGVkX2Fzc2VydGlvbnODomN1cmx4LXNlbGYjanVtYmY9YzJwYS5hc3NlcnRpb25zL2MycGEuaW5ncmVkaWVudC52M2RoYXNoWCCyfTq03n3TBt/2jpnQ5Do2Wt7MTo+FSDljWxO+oSzs16JjdXJseCpzZWxmI2p1bWJmPWMycGEuYXNzZXJ0aW9ucy9jMnBhLmFjdGlvbnMudjJkaGFzaFgg5mKZaw5XdnrkLp+w2ZRc2rn62cqcyspddT25Mv9KJ4miY3VybHgpc2VsZiNqdW1iZj1jMnBhLmFzc2VydGlvbnMvYzJwYS5oYXNoLmRhdGFkaGFzaFggdWLOxFgfxnWYBwyXMB6mKQaV8ZJ7V8pajLOPjwM9tDh0Y2xhaW1fZ2VuZXJhdG9yX2luZm+jZG5hbWVvQW50aHJvcGljIEZpbGVzZ3ZlcnNpb25lMS4wLjBrc3BlY1ZlcnNpb25lMi40LjAAABA4anVtYgAAAChqdW1kYzJjcwARABCAAACqADibcQNjMnBhLnNpZ25hdHVyZQAAABAIY2JvctKEWQISogEmGCFZAgowggIGMIIBjaADAgECAhRA5aAK7sI50L64g/oGQgU9Z1UTADAKBggqhkjOPQQDAzBJMRcwFQYDVQQKEw5BbnRocm9waWMsIFBCQzEuMCwGA1UEAxMlQW50aHJvcGljIENvbnRlbnQgQ3JlZGVudGlhbHMgUm9vdCBDQTAeFw0yNjA4MDcxODQzNTZaFw0yODA4MDYxOTQzNTZaMEQxFzAVBgNVBAoTDkFudGhyb3BpYywgUEJDMSkwJwYDVQQDEyBBbnRocm9waWMgQ2xhdWRlIENvbnRlbnQgU2lnbmluZzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJh6CmvLUBgFFNU0vUKlOVtE6djd17L5SuwX0LemFisBM3dkd/3cyjxFA3Qo5S46fX0/ihY0VZ7mfb9KF703t5OjWDBWMA4GA1UdDwEB/wQEAwIHgDAVBgNVHSUEDjAMBgorBgEEAYPoXgIBMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAUzlHiBIFOZFsj+OPEz5o+nMHXXMIwCgYIKoZIzj0EAwMDZwAwZAIwMXMdFJ4BetLLVY7ORuE9noqbbAZOZn/aArXyTwFAZfKrPzxF2vPoJNf1+UCdg1XGAjBwX1zd9WGqYkqmL5SFqw1QySjr1zJfpJM9+1rdDwSPLMOPOjKuiXjoU/pUUeG9RwmhY3BhZFkNngAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPZYQPIseWOeDgk7e6lkQ8EXkFjrS/6jggitnY2G4C1DS6NDY1SzvUoZchh5IGHXSfi3QrVJANONWb1z6J4AKZ79+Kc=Pwas.Microservice: the official base for extending PwasEvery custom tool extends the pwas-microservice-base library, which provides the HTTP contract, authentication, an asynchronous queue, webhooks and a multi-provider LLM driver. Each tool registers its actions and is declared as a resource in the Capability Registry, so the platform and the orchestrator can call it like any native capability.Pwas platformFRAMEWORK · ORCHESTRATORCapability RegistryTOOL DECLARED AS RESOURCEPWAS-MICROSERVICE-BASEHTTP contractnamespace + actionAuthenticationtwo modesAsync queuesync or asyncWebhookscallbacks on completionLLM driverinterchangeable providersYOUR TOOLS, BUILT ON THE BASEDocsResolverPDF · IMAGES → DATADocument OCRCUSTOM ACTIONPricing engineCUSTOM ACTIONYour toolregister_action()
il contratto standard

Ogni tool, stesso contratto.

Qualsiasi cosa costruita su questa base espone lo stesso contratto HTTP — cambia solo cosa fa params.

Routing namespace + action

Ogni azione risponde su POST /{namespace}/{action} con lo stesso payload {params, webhook, async, correlation_id} — nessun routing da scrivere a mano per un nuovo tool.

Sync o asincrono

async:false (default) risponde subito con completed/failed; async:true risponde 202 accepted con un job_id, il job entra in coda file-based e un worker interno chiama il webhook a completamento.

Due modalità di autenticazione

AUTH_MODE=static confronta un token statico; AUTH_MODE=framework_me verifica che il bearer sia un vero utente Pwas.Framework tramite GET /api/auth/me.

Provider LLM intercambiabili

Gemini, OpenAI e Claude selezionabili per singola chiamata (params.llm_provider / params.llm_model, con alias claude/gpt) — nessun redeploy per cambiare provider.

Smoke test integrati

GET /healthz e system.echo sono sempre disponibili, indipendentemente da quali tool concreti sono registrati.

prima implementazione

Pwas.MicroService.DocsResolver

Il primo tool concreto costruito su questa base — capacità documentali e AI leggere per Pwas.Framework, su tre namespace.

docmgmt
Estrazione e generazione documenti

extract (PDF/immagini → campi mappati via LLM multimodale), tabular_transform (xls/csv/json/xml/html → righe mappate, senza LLM), rag_ingest/rag_query, generate (markdown/html/docx/pdf), translate, anonymize (redazione PII via un modello locale dedicato, non un LLM).

ai
Capability AI leggere

map_import_columns (intestazioni CSV → colonna del nome) e score_lead (punteggio 0-100 di un lead a partire da contesto libero).

procurement
Confronto fornitori

compare_quotes confronta una shortlist di preventivi fornitore e ne raccomanda uno — i dati arrivano già risolti dal chiamante, il servizio non accede direttamente al database di Pwas.Framework.

esempio

Un'azione, un contratto.

 POST /docmgmt/extract
POST /docmgmt/extract
Authorization: Bearer <token>

{
  "params": {
    "file_url": "https://.../fattura.pdf",
    "field_mapping": { "totale": "number" }
  },
  "async": false
}
estendere la piattaforma

Cosa significa, in pratica, costruirsi un modulo su misura.

È la domanda che arriva appena qualcuno capisce il modello dichiarativo: "e le cose che il modello non copre?". La risposta è che si costruiscono, e diventano parte del dominio invece di restarne fuori.

Un'estensione non è un plugin appiccicato: è una capacità dichiarata.

Nella maggior parte delle piattaforme un'estensione vive ai margini: un plugin che si aggancia a un punto previsto, con un proprio modello di permessi, una propria interfaccia e una propria vita. Funziona finché qualcuno ricorda che esiste.

Qui è diverso, e la differenza è strutturale. Un tool costruito su questa base si dichiara come risorsa — quali azioni espone, quali campi accetta, cosa restituisce, cosa fare in caso di errore — ed entra nel Capability Registry insieme a tutto il resto. Da quel momento è una capacità come le altre: una pipeline lo richiama come richiamerebbe un'operazione interna, l'orchestratore lo può includere in un piano compilato, i permessi che valgono per chi lo invoca valgono anche lì.

La conseguenza che conta davvero: quello che costruite non è un'eccezione da mantenere a parte. Non ha un proprio livello di autorizzazione da tenere allineato, non è invisibile all'agente AI, non sfugge alla tracciabilità. È il motivo per cui l'estensibilità qui non produce il debito tecnico che di solito produce.

Cosa vi tocca scrivere, e cosa vi trovate già fatto.

La base fornisce le parti che sono identiche in ogni tool e che nessuno ha voglia di riscrivere ogni volta: il contratto di comunicazione con la piattaforma, l'autenticazione, la coda asincrona per le elaborazioni che durano più di una richiesta, i webhook per segnalare il completamento, e l'accesso ai modelli linguistici attraverso driver intercambiabili.

Quello che scrivete voi è la logica specifica: come si legge quel formato di documento, come si calcola quella cosa, come si parla con quel sistema che nessun altro ha. In pratica, il vostro codice comincia dove finisce ciò che è comune, che è esattamente dove dovrebbe cominciare.

Il primo tool costruito su questa base è il risolutore documentale: estrazione di campi da PDF e immagini via modello multimodale, generazione di documenti da dati e base di conoscenza, anonimizzazione dei dati personali. È insieme uno strumento utilizzabile e un esempio completo di come si struttura un'estensione seria.

Quando conviene un tool dedicato e quando no.

La regola pratica è semplice e vale la pena rispettarla, perché forzarla in un senso o nell'altro si paga.

  • Resta in una pipeline dichiarata quando l'operazione si esprime componendo passi: condizioni, cicli, funzioni, chiamate a servizi esterni. È la maggior parte dei casi, ed è la scelta che mantiene tutto leggibile.
  • Costruisci un tool dedicato quando serve codice vero: lettura di formati particolari, conversioni, calcoli numerici, elaborazioni lunghe, integrazioni con sistemi che parlano protocolli propri, prompt complessi verso un modello.

La cosa da non fare è piegare una pipeline dichiarata fino a farla diventare un programma scritto male pur di non uscire dalla configurazione. Quando serve codice, isolarlo in un componente con la propria coda e dichiararlo è più pulito, più verificabile e più facile da sostituire.

Restano vostri: il codice, il tool e il riuso.

Un tool costruito su questa base è codice vostro, nel vostro repository, rilasciato con le vostre procedure. Non c'è un marketplace da cui passare né una certificazione da ottenere perché funzioni: si dichiara e viene richiamato.

Nella pratica questo è ciò che permette a un partner o a un'azienda con competenze verticali forti di costruirsi un patrimonio riutilizzabile: il tool che legge il formato di scambio tipico di un settore, quello che parla con un macchinario specifico, quello che calcola una cosa che solo voi calcolate. Lo riusate su ogni progetto di quel settore, e non appartiene a noi.

domande frequenti

Pwas.Microservice: le domande.

È un servizio o una libreria?
Una libreria: si installa e si estende per costruire il proprio strumento, che registra le proprie azioni e riceve gratuitamente contratto di comunicazione, autenticazione, coda asincrona, webhook e accesso ai modelli. Non è un servizio pronto da avviare, ed è una distinzione che conta quando si pianifica il lavoro.
Possiamo costruire noi i nostri tool, o li fate voi?
Potete costruirli voi, ed è lo scenario per cui questa base esiste. Servono competenze di sviluppo ordinarie: la base fornisce contratto, autenticazione, coda e webhook, e voi scrivete la logica specifica. Nei primi progetti ci affianchiamo per la struttura, poi la maggior parte dei partner procede in autonomia. Il codice resta vostro, nel vostro repository.
Un tool che costruiamo noi è un cittadino di serie B?
No, e questa è la differenza principale rispetto a un sistema a plugin. Un tool dichiarato entra nel Capability Registry come qualsiasi altra capacità: le pipeline lo richiamano come un'operazione interna, l'orchestratore lo può includere in un piano compilato e verificato, e i permessi dell'utente che lo invoca valgono anche lì. Non ha un proprio livello di autorizzazione da tenere allineato a mano.
Quando conviene costruire un microservizio invece di una pipeline?
Quando l'elaborazione è specializzata e non si esprime bene come composizione di passi dichiarati: lettura di documenti, conversioni, calcoli numerici, chiamate a modelli con prompt complessi. La regola pratica è che se serve codice vero, meglio isolarlo in un componente con una propria coda invece di forzarlo dentro una pipeline.
Come si integra con il resto della piattaforma?
Il microservizio viene dichiarato come risorsa esterna, con le sue azioni e i suoi campi, e richiamato da una pipeline o da un piano compilato come qualsiasi altra capacità. Dal punto di vista di chi descrive il dominio non c'è differenza fra un'elaborazione interna e una delegata a un microservizio.
Le elaborazioni lunghe come si gestiscono?
Con la coda asincrona e i webhook che la base fornisce: il chiamante riceve subito una conferma di presa in carico e viene notificato al completamento. È il motivo per cui questa base esiste: le elaborazioni documentali e le chiamate ai modelli hanno tempi che non si prestano a una risposta sincrona.
Quali modelli si possono usare?
I principali fornitori commerciali sono supportati come driver intercambiabili, insieme all'opzione di modelli ospitati nel vostro perimetro. La scelta si fa in fase di progetto ed è una configurazione, non una dipendenza scritta nel codice dello strumento.
Esiste uno strumento già pronto da guardare?
Sì, il risolutore documentale costruito su questa base: estrazione di campi da documenti e immagini, generazione di documenti da dati e base di conoscenza, anonimizzazione dei dati personali quando serve un risultato deterministico invece di un giudizio probabilistico del modello.
get in touch

Pronto a
costruire il tuo tool.

Pwas.Microservice è sviluppato da Pooel Srl. Scrivici per vedere come costruire un nuovo tool sulla base condivisa.