{"id":2366,"date":"2026-07-10T09:10:28","date_gmt":"2026-07-10T07:10:28","guid":{"rendered":"https:\/\/userbot.ai\/blog\/?p=2366"},"modified":"2026-07-15T09:06:37","modified_gmt":"2026-07-15T07:06:37","slug":"guardrails-agenti-ai-ridurre-rischi-produzione","status":"publish","type":"post","link":"https:\/\/userbot.ai\/blog\/guardrails-agenti-ai-ridurre-rischi-produzione\/","title":{"rendered":"Guardrails negli Agenti AI: ridurre i rischi in produzione"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Cosa succede se un utente prova a far uscire il tuo agente AI dai binari? Se gli chiede qualcosa di violento, prova a manipolarlo con un prompt injection, o semplicemente pone una domanda a cui il tuo sistema non dovrebbe rispondere perch\u00e9 non ha fonti affidabili per farlo?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Se la risposta \u00e8 &#8220;<em>spero che il prompt regga<\/em>&#8220;, il problema non \u00e8 il prompt. \u00c8 che manca uno strato di protezione che non dovrebbe dipendere dalla fortuna, ma dal design del sistema.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I <strong>guardrails<\/strong> sono esattamente questo: un insieme di controlli che si frappongono tra l&#8217;utente, il modello e l&#8217;azienda, e che decidono cosa pu\u00f2 passare e cosa deve essere bloccato, prima o dopo che l&#8217;agente abbia generato una risposta. In questo articolo vediamo perch\u00e9 sono indispensabili in un agente AI in produzione, quali livelli di protezione sono gi\u00e0 integrati nativamente in <strong>Userbot 3.0<\/strong>, e come \u00e8 possibile aggiungerne altri su misura per il proprio caso d&#8217;uso.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Perch\u00e9 un agente AI senza guardrails non \u00e8 pronto per la produzione<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Un modello linguistico, da solo, non sa cosa \u00e8 appropriato dire in un determinato contesto aziendale. Sa generare testo plausibile in base a quello che gli viene chiesto e al contesto che gli viene fornito. Se quel contesto viene manipolato, o se la domanda tocca un&#8217;area sensibile, il modello non ha un meccanismo interno che gli dica &#8220;<em>qui devo fermarmi<\/em>&#8220;.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Questo espone chi mette in produzione un agente AI a rischi molto concreti: <\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>risposte inappropriate su temi come violenza o self-harm,<\/li>\n\n\n\n<li>tentativi di <strong>prompt injection<\/strong> che cercano di far ignorare all&#8217;agente le sue istruzioni originali<\/li>\n\n\n\n<li>risposte costruite su informazioni recuperate da un <strong><a href=\"https:\/\/userbot.ai\/blog\/hybrid-search-rag-agente-ai-significato-precisione\/\">sistema RAG<\/a><\/strong> ma che non sono pertinenti con la domanda<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Nessuno di questi problemi si risolve scrivendo &#8220;<em>non rispondere a domande violente<\/em>&#8221; nel prompt di sistema. <strong>Serve uno strato separato, che agisca indipendentemente dal ragionamento del modello<\/strong>: \u00e8 qui che entrano in gioco i guardrails.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Un prompt \u00e8 un&#8217;istruzione, non un controllo. Pu\u00f2 essere aggirato, frainteso, o semplicemente non bastare di fronte a un input costruito apposta per confonderlo.<\/p>\n<\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\">Cosa sono davvero i guardrails (e perch\u00e9 &#8220;un buon prompt&#8221; non basta)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Un <strong>guardrail<\/strong> \u00e8 un controllo che si pu\u00f2 applicare prima che l&#8217;input arrivi al modello, dopo che il modello ha generato una risposta, oppure nel mezzo del flusso, ad esempio per validare i risultati di una ricerca. In tutti i casi, la logica \u00e8 la stessa: <strong>verificare qualcosa secondo criteri definiti, e decidere se lasciar proseguire, correggere, o bloccare<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La differenza rispetto a un&#8217;istruzione nel prompt \u00e8 sostanziale. Un&#8217;istruzione (&#8220;non parlare di argomenti violenti&#8221;) \u00e8 una richiesta rivolta al modello, che il modello interpreta e a cui il modello pu\u00f2, in certi casi, non attenersi con coerenza, soprattutto se l&#8217;input \u00e8 costruito per aggirarla. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Un guardrail \u00e8 invece un controllo esterno al ragionamento del modello: non chiede al modello di comportarsi bene, verifica che il comportamento sia corretto, e agisce di conseguenza a prescindere da cosa il modello abbia &#8220;deciso&#8221; di fare.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Per questo un&#8217;architettura agentica seria non si affida a un solo livello di guardrails, ma a pi\u00f9 livelli, ciascuno pensato per un tipo di rischio diverso: contenuti dannosi, manipolazione del prompt, informazioni non pertinenti, casi specifici del proprio dominio. In <strong>Userbot 3.0<\/strong> questi livelli sono gi\u00e0 integrati nella piattaforma, e si possono estendere con configurazioni personalizzate.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><em>Un prompt \u00e8 un&#8217;istruzione. Un guardrail \u00e8 un controllo. Solo uno dei due non si aggira semplicemente chiedendo con le parole giuste.<\/em><\/p>\n<\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\">I livelli di guardrails nativi in Userbot 3.0<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">1. Filtro Azure: violenza, contenuti sessuali, odio, self-harm<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Il primo livello di protezione agisce sui contenuti in senso stretto, ed \u00e8 basato sul filtro di <strong>Azure AI Content Safety<\/strong>, integrato nativamente nella piattaforma. Ogni input e ogni output del modello passano attraverso una classificazione automatica su quattro categorie: <strong>violenza, contenuti sessuali, incitamento all&#8217;odio e self-harm<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Se un messaggio, in ingresso o in uscita, viene classificato come a rischio in una di queste categorie, il flusso viene interrotto prima che l&#8217;agente possa generare o restituire quel contenuto. Non \u00e8 un filtro opzionale da configurare manualmente: \u00e8 un livello di sicurezza di base che protegge ogni conversazione gestita dalla piattaforma, indipendentemente dal settore o dal caso d&#8217;uso.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Questo tipo di controllo \u00e8 particolarmente rilevante nei contesti di <strong>customer service<\/strong> aperti al pubblico, dove non si pu\u00f2 prevedere in anticipo cosa scriver\u00e0 un utente, e dove anche un singolo episodio gestito male ha un costo reputazionale reale.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2. Blocco codice Python: la difesa contro prompt injection<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Il secondo livello riguarda un elemento diverso, e pi\u00f9 tecnico, dell&#8217;architettura di Userbot: il <strong>blocco di codice Python<\/strong> che pu\u00f2 essere inserito all&#8217;interno di un workflow agentico per eseguire logica custom, calcoli, trasformazioni di dati o chiamate a servizi esterni.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Un blocco che esegue codice \u00e8, per sua natura, un punto delicato: se un utente riuscisse a far eseguire all&#8217;agente istruzioni non previste, camuffate da input legittimo, potrebbe usare quello stesso blocco per tentare un <strong>prompt injection<\/strong>, per provare ad accedere a dati del sistema a cui non dovrebbe avere accesso, o pi\u00f9 in generale per far agire il codice contro il prodotto stesso invece che a supporto del workflow.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Per questo, in Userbot, il blocco di codice Python non si limita a essere eseguito in <strong>sandbox isolata<\/strong>: al suo interno \u00e8 integrato un <strong>guardrail dedicato<\/strong>, che analizza il codice e il contesto di esecuzione prima che vengano eseguiti, e blocca i tentativi di sfruttare quel blocco per scopi diversi da quello per cui \u00e8 stato configurato, che si tratti di un tentativo di prompt injection, di un tentativo di leggere o esfiltrare dati del sistema, o di un tentativo di agire su funzionalit\u00e0 della piattaforma che non dovrebbero essere raggiungibili da quel punto del workflow.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00c8 un controllo deterministico, non affidato all&#8217;interpretazione del modello: verifica strutturale del codice e del contesto in cui viene eseguito, non un giudizio probabilistico su di esso. La sandbox garantisce che l&#8217;esecuzione resti isolata dal resto del sistema; il guardrail garantisce che, anche all&#8217;interno di quello spazio isolato, il codice non venga usato per fare qualcosa che va oltre lo scopo del blocco.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Questo tipo di protezione diventa via via pi\u00f9 importante quanto pi\u00f9 un agente ha accesso a <strong>tool<\/strong> che compiono azioni reali: aprire ticket, aggiornare record in un CRM, effettuare chiamate ad API esterne. Un tentativo di abuso che riesce a passare in un contesto del genere non produce solo una risposta imbarazzante: pu\u00f2 tradursi in un&#8217;azione indesiderata su un sistema aziendale.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3. Validare (o scartare) i risultati della ricerca semantica<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Il terzo livello riguarda un problema pi\u00f9 sottile, tipico dei sistemi <strong>RAG<\/strong>: cosa succede quando la ricerca semantica restituisce risultati che assomigliano alla domanda, ma non la soddisfano davvero?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Un <strong><a href=\"https:\/\/userbot.ai\/blog\/hybrid-search-rag-agente-ai-significato-precisione\/\">retriever<\/a><\/strong> lavora per similarit\u00e0 vettoriale: trova i chunk di documento pi\u00f9 vicini semanticamente alla domanda posta. Ma &#8220;vicino semanticamente&#8221; non equivale sempre a &#8220;pertinente e sufficiente per rispondere correttamente&#8221;. Se l&#8217;agente costruisce comunque una risposta su chunk poco pertinenti, il risultato \u00e8 una risposta che sembra fondata, ma non lo \u00e8: uno dei rischi pi\u00f9 insidiosi nei sistemi basati su knowledge base, perch\u00e9 non si presenta come un errore evidente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Per questo, in Userbot, viene usato un modello specifico come guardrail di validazione a valle della ricerca semantica: verifica se i risultati recuperati sono effettivamente rilevanti rispetto alla domanda, prima che vengano usati per costruire la risposta. Se la validazione fallisce, l&#8217;agente non forza comunque una risposta basata su fonti deboli, ma pu\u00f2 gestire il caso in modo esplicito, ad esempio segnalando che non ha informazioni sufficienti o passando la mano a un altro flusso.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00c8 un guardrail meno visibile degli altri due, perch\u00e9 non riguarda contenuti &#8220;vietati&#8221; in senso classico, ma \u00e8 altrettanto importante: protegge l&#8217;affidabilit\u00e0 delle risposte, non solo la loro appropriatezza.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">4. Guardrails su misura: agenti con prompt personalizzati<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">I tre livelli precedenti coprono rischi comuni a qualunque agente AI, indipendentemente dal settore. Ma ogni azienda ha anche le proprie regole specifiche, che nessun filtro generico pu\u00f2 conoscere in anticipo: un&#8217;assicurazione che non deve mai fornire una stima di indennizzo, un e-commerce che non deve mai promettere sconti non autorizzati, un servizio sanitario che non deve mai sostituirsi a un parere medico.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Per questi casi, Userbot permette di costruire <strong>guardrails su misura<\/strong>, sotto forma di <strong>agenti condizionali<\/strong> o <strong>agenti custom<\/strong> con un prompt di validazione dedicato, inseriti nel punto del flusso in cui servono. Un agente condizionale pu\u00f2, ad esempio, valutare l&#8217;output prima che venga inviato all&#8217;utente e decidere se lasciarlo passare, correggerlo o bloccarlo in base a una policy scritta in linguaggio naturale, specifica per quel processo aziendale.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Questo livello \u00e8 quello che rende i guardrail non solo uno strumento di sicurezza generico, ma un vero strumento di <strong>governance del comportamento dell&#8217;agente<\/strong>, calibrato sulle regole reali di ogni singola azienda, e non su un set fisso di categorie predefinite.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Guardrails nativi vs guardrails custom: quando usare cosa<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Non tutti i guardrails servono allo stesso scopo, e non tutti vanno configurati allo stesso modo. I tre livelli nativi sono pensati per coprire rischi trasversali, comuni a qualsiasi agente conversazionale: sono gi\u00e0 attivi, non richiedono configurazione manuale, e agiscono come <strong>base di sicurezza minima<\/strong> per ogni flusso.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I guardrails custom, al contrario, hanno senso quando il rischio da mitigare \u00e8 specifico del dominio o del processo aziendale: una policy di comunicazione particolare, un vincolo normativo di settore, un caso limite emerso dall&#8217;analisi delle conversazioni reali. In questi casi vale la pena costruire un agente condizionale dedicato, con un prompt che descrive esattamente cosa verificare e come comportarsi in caso di violazione.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nella pratica, i sistemi pi\u00f9 solidi combinano entrambi i livelli: la protezione di base che non richiede intervento, e i controlli su misura costruiti man mano che si osservano nuovi rischi durante l&#8217;uso reale della piattaforma.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Guardrails e osservabilit\u00e0: sapere sempre cosa \u00e8 stato bloccato e perch\u00e9<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Un guardrail che blocca qualcosa senza lasciare traccia \u00e8 utile solo a met\u00e0. Se un utente riceve un messaggio generico di rifiuto e il team non ha modo di capire quale guardrail \u00e8 intervenuto, su quale contenuto, e perch\u00e9, si perde la possibilit\u00e0 di distinguere un blocco corretto da un <strong>falso positivo<\/strong>, cio\u00e8 un caso in cui il guardrail ha bloccato qualcosa che invece andava lasciato passare.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Per questo, come per ogni altro blocco del flusso, anche l&#8217;attivazione di un guardrail \u00e8 <strong>tracciata e osservabile<\/strong> nella sezione <strong>Conversazioni<\/strong> di Userbot 3.0: si pu\u00f2 vedere se un filtro \u00e8 intervenuto esattamente come per gli altri blocchi del flusso descritti nel nostro <a href=\"https:\/\/userbot.ai\/blog\/osservabilita-e-debug-degli-agenti-ai\/\">articolo sull&#8217;osservabilit\u00e0 degli agenti AI<\/a>. Questo permette non solo di verificare che i guardrails stiano funzionando, ma anche di <strong>affinarli nel tempo<\/strong>: se un guardrail custom blocca troppe richieste legittime, il prompt di validazione pu\u00f2 essere corretto sulla base di casi reali, non di ipotesi.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">I guardrails non sono un limite: sono ci\u00f2 che rende un agente affidabile<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">C&#8217;\u00e8 un modo sbagliato di pensare ai guardrails: come un vincolo che limita le capacit\u00e0 dell&#8217;agente, qualcosa che &#8220;l<em>o rende meno intelligente<\/em>&#8221; o meno utile. \u00c8 il contrario. <strong>Un agente senza guardrails non \u00e8 pi\u00f9 libero: \u00e8 semplicemente pi\u00f9 imprevedibile<\/strong>, e l&#8217;imprevedibilit\u00e0, in un contesto aziendale, non \u00e8 un vantaggio.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I guardrails sono ci\u00f2 che permette di portare un agente AI in produzione con la certezza che risponder\u00e0 nei limiti definiti, anche quando l&#8217;input \u00e8 ostile, ambiguo o inaspettato. Sono anche, sempre di pi\u00f9, un requisito che va oltre la scelta tecnica: con l&#8217;entrata in vigore di obblighi normativi come quelli dell&#8217;<strong><a href=\"https:\/\/userbot.ai\/blog\/ai-act-customer-service\/\">AI Act<\/a><\/strong>, dimostrare che un sistema conversazionale ha controlli verificabili sui contenuti che genera non \u00e8 pi\u00f9 solo buona pratica, ma parte della conformit\u00e0.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In Userbot 3.0, i tre livelli di guardrails nativi coprono i rischi comuni a ogni agente fin dal primo giorno, e lo strato di guardrails custom permette di adattare la protezione alle regole specifiche di ogni azienda. Il risultato \u00e8 un agente che non si limita a &#8220;<strong>provare a comportarsi bene<\/strong>&#8220;: \u00e8 costruito perch\u00e9 non possa fare altrimenti.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<style>\n  .ub4 {\n    font-family: 'Inter', -apple-system, sans-serif;\n    background: #0d1b3e;\n    background-image: radial-gradient(ellipse at 70% 30%, #122b6b 0%, #0d1b3e 70%);\n    border-radius: 16px;\n    padding: 44px 48px;\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    text-align: center;\n    position: relative;\n    overflow: hidden;\n    max-width: 520px;\n    margin: 8px auto;\n  }\n  .ub4-deco1 {\n    position: absolute; top: -80px; right: -80px;\n    width: 260px; height: 260px; border-radius: 50%;\n    background: rgba(62,174,255,0.07); pointer-events: none;\n  }\n  .ub4-deco2 {\n    position: absolute; bottom: -60px; left: -60px;\n    width: 200px; height: 200px; border-radius: 50%;\n    background: rgba(62,174,255,0.05); pointer-events: none;\n  }\n  .ub4-icon {\n    width: 48px; height: 48px;\n    background: rgba(62,174,255,0.12);\n    border: 1.5px solid rgba(62,174,255,0.28);\n    border-radius: 12px;\n    display: flex; align-items: center; justify-content: center;\n    margin-bottom: 20px;\n    position: relative;\n  }\n  .ub4-eyebrow {\n    font-size: 11px; font-weight: 600;\n    letter-spacing: 0.13em; text-transform: uppercase;\n    color: #3EAEFF;\n    margin-bottom: 10px;\n    position: relative;\n  }\n  .ub4-title {\n    font-size: 24px; font-weight: 700;\n    color: #ffffff;\n    line-height: 1.3; margin-bottom: 10px;\n    position: relative;\n  }\n  .ub4-sub {\n    font-size: 15px;\n    color: rgba(255,255,255,0.62);\n    line-height: 1.6;\n    margin-bottom: 28px;\n    position: relative;\n  }\n  .ub4-btn {\n    display: inline-flex !important;\n    visibility: visible !important;\n    opacity: 1 !important;\n    align-items: center;\n    gap: 8px;\n    background: #3EAEFF !important;\n    color: #ffffff !important;\n    font-size: 15px;\n    font-weight: 700;\n    padding: 15px 36px;\n    border-radius: 10px;\n    border: none;\n    cursor: pointer;\n    white-space: nowrap;\n    font-family: inherit;\n    position: relative;\n    z-index: 10;\n    box-shadow: 0 0 0 3px rgba(62,174,255,0.3);\n  }\n  .ub4-btn:hover {\n    background: #2298f0 !important;\n    transform: translateY(-1px);\n  }\n  .ub4-btn:active { transform: scale(0.98); }\n<\/style>\n\n<div class=\"ub4\" role=\"complementary\" aria-label=\"Banner demo Userbot\">\n  <div class=\"ub4-deco1\"><\/div>\n  <div class=\"ub4-deco2\"><\/div>\n\n  <div class=\"ub4-icon\">\n    <svg width=\"22\" height=\"22\" viewBox=\"0 0 22 22\" fill=\"none\">\n      <rect x=\"2\" y=\"5\" width=\"18\" height=\"13\" rx=\"3\" stroke=\"#3EAEFF\" stroke-width=\"1.6\"><\/rect>\n      <path d=\"M7 9h8M7 12.5h5\" stroke=\"#3EAEFF\" stroke-width=\"1.6\" stroke-linecap=\"round\"><\/path>\n      <circle cx=\"17\" cy=\"4\" r=\"3\" fill=\"#3EAEFF\"><\/circle>\n    <\/svg>\n  <\/div>\n\n  <div class=\"ub4-eyebrow\">Scopri Userbot<\/div>\n  <div class=\"ub4-title\">Pronto a scoprire come<br>possiamo aiutarti?<\/div>\n  <div class=\"ub4-sub\">Richiedi una demo gratuita o contattaci:<br>il nostro team \u00e8 a tua disposizione.<\/div>\n\n  <a href=\"https:\/\/userbot.typeform.com\/to\/ctnyuoTq?_gl=1*jrn3dk*_gcl_au*NDU3NjU4NTAwLjE3NzI3MTc1Mzg.&amp;typeform-embed=popup-classic&amp;typeform-source=userbot.ai&amp;typeform-medium=embed-sdk&amp;embed-hide-headers=true&amp;typeform-embed-id=qjr2w\" target=\"_blank\" class=\"ub4-btn\">\n\n  <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n\n    <path d=\"M2 8h10M8 4l4 4-4 4\" stroke=\"#ffffff\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path>\n\n  <\/svg>\n\n  Contattaci\n\n<\/a>\n<\/div>\n","protected":false},"excerpt":{"rendered":"Cosa succede se un utente prova a far uscire il tuo agente AI dai binari? Se gli chiede&hellip;","protected":false},"author":7,"featured_media":2368,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"csco_display_header_overlay":false,"csco_singular_sidebar":"","csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_reading_time":"","csco_page_toc_navigation":"","csco_post_video_location":[],"csco_post_video_location_hash":"","csco_post_video_url":"","csco_post_video_bg_start_time":0,"csco_post_video_bg_end_time":0,"csco_post_video_bg_volume":false,"footnotes":""},"categories":[41,109,24],"tags":[144,100,146,28],"class_list":["post-2366","post","type-post","status-publish","format-standard","has-post-thumbnail","category-intelligenza-artificiale","category-ai-business","category-tecnologia","tag-agente-ai","tag-ai","tag-guardrails","tag-intelligenza-artificiale","cs-entry","cs-video-wrap"],"_links":{"self":[{"href":"https:\/\/userbot.ai\/blog\/wp-json\/wp\/v2\/posts\/2366","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/userbot.ai\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/userbot.ai\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/userbot.ai\/blog\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/userbot.ai\/blog\/wp-json\/wp\/v2\/comments?post=2366"}],"version-history":[{"count":6,"href":"https:\/\/userbot.ai\/blog\/wp-json\/wp\/v2\/posts\/2366\/revisions"}],"predecessor-version":[{"id":2374,"href":"https:\/\/userbot.ai\/blog\/wp-json\/wp\/v2\/posts\/2366\/revisions\/2374"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/userbot.ai\/blog\/wp-json\/wp\/v2\/media\/2368"}],"wp:attachment":[{"href":"https:\/\/userbot.ai\/blog\/wp-json\/wp\/v2\/media?parent=2366"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/userbot.ai\/blog\/wp-json\/wp\/v2\/categories?post=2366"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/userbot.ai\/blog\/wp-json\/wp\/v2\/tags?post=2366"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}