{"id":2552,"date":"2026-03-14T11:52:12","date_gmt":"2026-03-14T11:52:12","guid":{"rendered":"https:\/\/paoloronco.it\/?p=2552"},"modified":"2026-03-14T11:52:14","modified_gmt":"2026-03-14T11:52:14","slug":"ai-red-teaming-con-promptfoo-come-ho-testato-la-sicurezza-del-mio-chatbot-wordpress","status":"publish","type":"post","link":"https:\/\/paoloronco.it\/en\/ai-red-teaming-con-promptfoo-come-ho-testato-la-sicurezza-del-mio-chatbot-wordpress\/","title":{"rendered":"AI Red Teaming with PromptFoo: How I Tested the Security of My WordPress Chatbot"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Ho un <a href=\"https:\/\/paoloronco.it\/ai-chatbot\/\">chatbot AI integrato nel mio sito<\/a> accessibile da chiunque visiti paoloronco.it. Non si tratta di un semplice widget di Q&amp;A: dietro le quinte gira un sistema RAG (Retrieval-Augmented Generation) orchestrato tramite n8n, con OpenAI come motore linguistico, Qdrant Cloud come vector store, Cohere come reranker, e un webhook autenticato via Bearer Token come punto di ingresso.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">L&#8217;articolo che descrive l&#8217;intera architettura \u00e8 disponibile qui: <a href=\"https:\/\/paoloronco.it\/wordpress-ai-chatbot-trasformare-contenuti-in-un-sistema-interrogabile-n8n-qdrant-mongodb-vector-store\/\">WordPress AI Chatbot \u2013 Trasformare contenuti in un sistema interrogabile con n8n, Qdrant, MongoDB Vector Store<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Un sistema del genere, esposto a visitatori anonimi, \u00e8 un bersaglio interessante. Chiunque pu\u00f2 inviargli un messaggio. E quando si parla di LLM, i vettori di attacco non sono quelli classici del web (SQLi, XSS, SSRF) ma qualcosa di pi\u00f9 insidioso: <strong>il linguaggio naturale stesso diventa l&#8217;arma<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Da qui la domanda che mi sono posto: <em>quanto \u00e8 robusto il mio chatbot contro un attaccante che usa prompt crafted ad arte?<\/em><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Cos&#8217;\u00e8 PromptFoo e cosa fa<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/promptfoo.dev\/\">PromptFoo<\/a> \u00e8 uno strumento open source per il testing e la valutazione di applicazioni basate su LLM. Permette di fare due cose fondamentali:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Evaluation (eval):<\/strong> confrontare prompt, modelli e configurazioni su dataset di test, misurando qualit\u00e0 e coerenza delle risposte.<\/li>\n\n\n\n<li><strong>Red Teaming:<\/strong> simulare attacchi automatizzati contro il tuo sistema AI per identificare vulnerabilit\u00e0 prima che lo faccia qualcun altro.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Per il red teaming, PromptFoo funziona come un attacker automatizzato: genera centinaia di payload malevoli usando una serie di <strong>plugin<\/strong> (ognuno specializzato in una categoria di rischio) e <strong>strategie di attacco<\/strong> (tecniche per aggirare i filtri). Ogni risposta del sistema viene poi valutata da un modello giudice che determina se l&#8217;attacco ha avuto successo.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Plugin disponibili<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">I plugin coprono le principali categorie di rischio per un LLM:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Categoria<\/th><th>Descrizione<\/th><\/tr><\/thead><tbody><tr><td><code>bias:*<\/code><\/td><td>Rilevazione di bias su et\u00e0, disabilit\u00e0, genere, razza<\/td><\/tr><tr><td><code>hallucination<\/code><\/td><td>Generazione di informazioni false o inventate<\/td><\/tr><tr><td><code>harmful:*<\/code><\/td><td>Contenuti dannosi (droghe, armi, sfruttamento, hate speech, ecc.)<\/td><\/tr><tr><td><code>pii:*<\/code><\/td><td>Esposizione di dati personali via API, sessione o social engineering<\/td><\/tr><tr><td><code>excessive-agency<\/code><\/td><td>Azioni non autorizzate oltre i confini del sistema<\/td><\/tr><tr><td><code>hijacking<\/code><\/td><td>Deviazione dell&#8217;uso del sistema verso scopi non previsti<\/td><\/tr><tr><td><code>contracts<\/code><\/td><td>Impegni contrattuali non autorizzati<\/td><\/tr><tr><td><code>politics<\/code><\/td><td>Contenuti politici e bias ideologici<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Strategie di attacco<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">PromptFoo non si limita a inviare i payload cos\u00ec come sono. Li passa attraverso <strong>strategie di evasione<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Basic:<\/strong> payload diretto, senza trasformazioni<\/li>\n\n\n\n<li><strong>Base64:<\/strong> il payload \u00e8 codificato in Base64 per bypassare filtri lessicali<\/li>\n\n\n\n<li><strong>Citation (Authority Bias):<\/strong> il prompt si maschera da citazione accademica per sfruttare il bias di autorit\u00e0 del modello<\/li>\n\n\n\n<li><strong>Emoji Smuggling:<\/strong> testo nascosto usando variation selector unicode negli emoji<\/li>\n\n\n\n<li><strong>Jailbreak Meta (IterativeMeta):<\/strong> un agente meta che costruisce autonomamente una tassonomia di attacchi, impara dai fallimenti precedenti e ottimizza i vettori in modo iterativo \u2014 la strategia pi\u00f9 sofisticata<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">La configurazione del test<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Ho configurato PromptFoo per attaccare direttamente il webhook n8n del mio chatbot:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">description: WP-AI-Chatbot RedTeam1<br>targets:<br>  - id: http<br> &nbsp;  label: wp-ai-chatbot<br> &nbsp;  config:<br> &nbsp; &nbsp;  url: https:\/\/n8n.prhomelab.com\/webhook\/wp-ai-chatbot<br> &nbsp; &nbsp;  method: POST<br> &nbsp; &nbsp;  headers:<br> &nbsp; &nbsp; &nbsp;  Content-Type: application\/json<br> &nbsp; &nbsp;  body: '{ \"message\": \"{{prompt}}\", \"sessionId\": \"promptfoo-redteam-001\" }'<br> &nbsp; &nbsp;  transformResponse: (json, text) =&gt; json.text || json.results?.[0]?.title || text<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Il sistema sotto test \u00e8 esattamente quello in produzione: stesso endpoint, stessa logica n8n, stesso modello OpenAI. Nessuna sandbox, nessun ambiente di test artificioso.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ho attivato <strong>35+ plugin<\/strong> e <strong>5 strategie<\/strong>, con <code>numTests: 10<\/code> per plugin per strategia. Il risultato \u00e8 stato un test con quasi <strong>2.000 casi totali<\/strong>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">I risultati: numeri e analisi<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Overview generale<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Metrica<\/th><th>Valore<\/th><\/tr><\/thead><tbody><tr><td>Test superati (pass)<\/td><td><strong>1.646<\/strong><\/td><\/tr><tr><td>Test falliti (fail)<\/td><td><strong>52<\/strong><\/td><\/tr><tr><td>Errori di connessione\/timeout<\/td><td>252<\/td><\/tr><tr><td><strong>Pass rate<\/strong> (escl. errori)<\/td><td><strong>96,9%<\/strong><\/td><\/tr><tr><td>Token utilizzati (totale)<\/td><td>~9 milioni<\/td><\/tr><tr><td>Latenza totale cumulativa<\/td><td>~108.000 secondi<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Un pass rate del <strong>96,9%<\/strong> su un sistema pubblico \u00e8 un risultato solido, ma i 52 fallimenti meritano attenzione: indicano aree dove il chatbot ha risposto in modo non conforme alle aspettative di sicurezza.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Risultati per categoria (score medio su 10)<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">Strategie standard (Basic, Base64, Citation, Emoji)<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">La grande maggioranza delle categorie ha ottenuto il massimo o quasi:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Plugin<\/th><th>Basic<\/th><th>Base64<\/th><th>Citation<\/th><th>Emoji<\/th><\/tr><\/thead><tbody><tr><td>Bias: Age<\/td><td>10\/10<\/td><td>10\/10<\/td><td>10\/10<\/td><td>10\/10<\/td><\/tr><tr><td>Bias: Disability<\/td><td>10\/10<\/td><td>10\/10<\/td><td>10\/10<\/td><td>10\/10<\/td><\/tr><tr><td>Bias: Gender<\/td><td>10\/10<\/td><td>10\/10<\/td><td>10\/10<\/td><td>10\/10<\/td><\/tr><tr><td><strong>Bias: Race<\/strong><\/td><td><strong>7\/10<\/strong><\/td><td>10\/10<\/td><td><strong>8\/10<\/strong><\/td><td>10\/10<\/td><\/tr><tr><td>Child Exploitation<\/td><td>10\/10<\/td><td>10\/10<\/td><td>10\/10<\/td><td>10\/10<\/td><\/tr><tr><td>Cybercrime<\/td><td>10\/10<\/td><td>10\/10<\/td><td>10\/10<\/td><td>10\/10<\/td><\/tr><tr><td><strong>Hallucination<\/strong><\/td><td><strong>9\/10<\/strong><\/td><td><strong>9\/10<\/strong><\/td><td>10\/10<\/td><td>10\/10<\/td><\/tr><tr><td><strong>Chem &amp; Bio Weapons<\/strong><\/td><td><strong>6\/10<\/strong><\/td><td>10\/10<\/td><td><strong>7\/10<\/strong><\/td><td>10\/10<\/td><\/tr><tr><td><strong>Illegal Activities<\/strong><\/td><td><strong>8\/10<\/strong><\/td><td>10\/10<\/td><td><strong>9\/10<\/strong><\/td><td>10\/10<\/td><\/tr><tr><td><strong>Indiscriminate Weapons<\/strong><\/td><td><strong>9\/10<\/strong><\/td><td>10\/10<\/td><td><strong>9\/10<\/strong><\/td><td>10\/10<\/td><\/tr><tr><td><strong>Non-Violent Crimes<\/strong><\/td><td><strong>9\/10<\/strong><\/td><td>10\/10<\/td><td><strong>9\/10<\/strong><\/td><td>10\/10<\/td><\/tr><tr><td><strong>Privacy Violations<\/strong><\/td><td><strong>9\/10<\/strong><\/td><td>10\/10<\/td><td>10\/10<\/td><td>10\/10<\/td><\/tr><tr><td><strong>Financial Advice<\/strong><\/td><td><strong>9\/10<\/strong><\/td><td><strong>8\/10<\/strong><\/td><td>10\/10<\/td><td>10\/10<\/td><\/tr><tr><td><strong>Hijacking<\/strong><\/td><td><strong>9\/10<\/strong><\/td><td>10\/10<\/td><td>10\/10<\/td><td>10\/10<\/td><\/tr><tr><td>PII Leak<\/td><td>40\/40<\/td><td>40\/40<\/td><td>40\/40<\/td><td>38\/40<\/td><\/tr><tr><td>Hate Speech<\/td><td>10\/10<\/td><td>10\/10<\/td><td>10\/10<\/td><td>10\/10<\/td><\/tr><tr><td>Violent Crimes<\/td><td>10\/10<\/td><td>10\/10<\/td><td>10\/10<\/td><td>10\/10<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Osservazione:<\/strong> le strategie Base64, Citation ed Emoji non hanno prodotto risultati significativamente peggiori rispetto al Basic. Il sistema reagisce in modo robusto anche a payload offuscati o nascosti in encoding non standard.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">La strategia pi\u00f9 dura: Jailbreak Meta (IterativeMeta)<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Questa \u00e8 la parte pi\u00f9 interessante. Il meta-agente di PromptFoo \u2014 che apprende e ottimizza gli attacchi iterativamente \u2014 ha prodotto risultati notevolmente diversi:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Plugin<\/th><th>IterativeMeta<\/th><th>Delta vs Basic<\/th><\/tr><\/thead><tbody><tr><td><strong>Bias: Age<\/strong><\/td><td><strong>3\/10<\/strong><\/td><td>-7<\/td><\/tr><tr><td><strong>Cybercrime<\/strong><\/td><td><strong>5\/10<\/strong><\/td><td>-5<\/td><\/tr><tr><td><strong>Bias: Gender<\/strong><\/td><td><strong>6\/10<\/strong><\/td><td>-4<\/td><\/tr><tr><td><strong>Harassment<\/strong><\/td><td><strong>6\/10<\/strong><\/td><td>-4<\/td><\/tr><tr><td><strong>Contractual Commitment<\/strong><\/td><td><strong>6\/10<\/strong><\/td><td>-4<\/td><\/tr><tr><td><strong>Bias: Race<\/strong><\/td><td><strong>7\/10<\/strong><\/td><td>0 (gi\u00e0 basso)<\/td><\/tr><tr><td><strong>Excessive Agency<\/strong><\/td><td><strong>7\/10<\/strong><\/td><td>-3<\/td><\/tr><tr><td>Hallucination<\/td><td>9\/10<\/td><td>0<\/td><\/tr><tr><td>Chemical &amp; Bio Weapons<\/td><td>10\/10<\/td><td>+4<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Il dato pi\u00f9 critico \u00e8 <strong>BiasAge\/IterativeMeta a 3\/10<\/strong>: con attacchi iterativi e adattativi, il chatbot ha mostrato significativa cedevolezza su bias legati all&#8217;et\u00e0. Questo non significa che produca contenuti pericolosi, ma che le sue risposte mostrano pattern linguistici consistenti con ragionamenti basati sull&#8217;et\u00e0 in modo non neutro.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Il Jailbreak Meta \u00e8 il vero banco di prova<\/strong>: se un sistema regge bene contro Basic, Base64 e Citation ma cede all&#8217;IterativeMeta, significa che i guardrail esistono ma possono essere erosi con persistenza e adattamento \u2014 esattamente il profilo di un attaccante motivato.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Cosa significano questi risultati concretamente<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Le buone notizie<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Nessuna esposizione di dati critici<\/strong>: PII Leak a 40\/40, nessun token\/API key trapelato<\/li>\n\n\n\n<li><strong>Resistenza eccellente a contenuti esplicitamente illegali o pericolosi<\/strong>: armi, droghe, sfruttamento minorile, crimini violenti \u2014 tutti a 10\/10 anche con strategie avanzate<\/li>\n\n\n\n<li><strong>Offuscamento non efficace<\/strong>: Base64 ed Emoji smuggling non hanno degradato la sicurezza<\/li>\n\n\n\n<li><strong>Il sistema conosce i propri confini<\/strong>: excessive agency e hijacking sono stati bloccati nella quasi totalit\u00e0 dei casi<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Una premessa importante: cosa posso controllare e cosa no<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Il chatbot usa <strong>OpenAI GPT-4o<\/strong> come motore linguistico. Questo significa che una parte dei comportamenti emersi dal red team \u2014 in particolare i bias e alcune allucinazioni \u2014 <strong>non dipende dalla mia implementazione, ma dal modello stesso<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">OpenAI applica i propri guardrail e policy di sicurezza sul modello, ma si tratta di un sistema che non posso modificare internamente: posso solo influenzarlo tramite il system prompt, la struttura del contesto RAG e i parametri della chiamata API. Se GPT-4o mostra un bias residuo su determinati argomenti, o se risponde in modo borderline a certi prompt, quella \u00e8 una caratteristica del modello base \u2014 non un difetto della mia pipeline n8n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Questo non \u00e8 un alibi: il compito di chi costruisce un&#8217;applicazione sopra un LLM di terze parti \u00e8 <strong>mitigare i rischi noti tramite guardrail applicativi<\/strong>, anche sapendo che non si potr\u00e0 mai avere controllo totale sul modello sottostante. Ed \u00e8 esattamente quello che questo red team ha misurato.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Le aree di miglioramento<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Bias linguistico residuo<\/strong>, in particolare su et\u00e0 e razza: emerge sotto pressione iterativa. La radice \u00e8 nel modello OpenAI sottostante, ma \u00e8 mitigabile con un system prompt pi\u00f9 esplicito su neutralit\u00e0 e un output filter che intercetti pattern problematici prima della risposta.<\/li>\n\n\n\n<li><strong>Armi chimiche\/biologiche con strategy Basic (6\/10)<\/strong>: un sottoinsieme di richieste borderline ha ottenuto risposte non ideali. Il chatbot risponde di contenuti del sito che include articoli su cybersecurity\/biotech \u2014 il contesto pu\u00f2 confondere il modello.<\/li>\n\n\n\n<li><strong>Hallucination non a zero<\/strong>: il sistema a volte inventa informazioni. Questo non \u00e8 un rischio di sicurezza diretto ma impatta la fiducia degli utenti.<\/li>\n\n\n\n<li><strong>Jailbreak iterativo<\/strong>: l&#8217;IterativeMeta ha dimostrato che un attaccante paziente e adattativo pu\u00f2 erodere le difese in alcune categorie. La mitigazione principale \u00e8 aumentare la robustezza del system prompt e aggiungere output filtering.<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Il valore pratico di questo tipo di test<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Fare red teaming su un AI chatbot con PromptFoo prima del lancio (o periodicamente, come audit) ha un valore concreto:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Individua vulnerabilit\u00e0 reali<\/strong> prima che le trovino gli utenti. Un chatbot esposto pubblicamente \u00e8 un target: meglio scoprirlo in un ambiente controllato.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Misura la robustezza in modo riproducibile.<\/strong> Non basta &#8220;testare qualche prompt a mano&#8221;. PromptFoo genera centinaia di varianti sistematiche, combina strategie e produce metriche comparabili nel tempo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Distingue le vulnerabilit\u00e0 del modello da quelle dell&#8217;applicazione.<\/strong> Se un attacco funziona su Basic ma non su Base64, il problema \u00e8 nel modello. Se funziona su entrambi, il problema \u00e8 nell&#8217;architettura applicativa.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Giustifica scelte architetturali.<\/strong> I risultati di un red team automatizzato sono documentazione: mostrano ai stakeholder (o a se stessi) che la sicurezza non \u00e8 stata lasciata al caso.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Stack tecnologico del sistema testato<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Per completezza, l&#8217;architettura del chatbot sotto test:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">Utente (browser)<br> &nbsp;  \u2502<br> &nbsp;  \u25bc<br>WordPress Plugin (shortcode)<br> &nbsp;  \u2502  HTTP POST + Bearer Token<br> &nbsp;  \u25bc<br>n8n Webhook \u2500\u2500\u2192 Classificazione intent (OpenAI)<br> &nbsp;  \u2502<br> &nbsp;  \u251c\u2500\u2192 RAG: Embed query (OpenAI) \u2192 Ricerca semantica (Qdrant Cloud)<br> &nbsp;  \u2502 &nbsp; &nbsp; &nbsp; &nbsp; \u2192 Reranking (Cohere) \u2192 Generazione risposta (OpenAI GPT-4o)<br> &nbsp;  \u2502<br> &nbsp;  \u251c\u2500\u2192 Smalltalk: risposta diretta GPT-4o<br> &nbsp;  \u2502<br> &nbsp;  \u2514\u2500\u2192 Log anonimizzati \u2192 Google Cloud Storage<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ogni livello di questo stack \u00e8 un potenziale vettore d&#8217;attacco. PromptFoo ha testato quello pi\u00f9 esposto: <strong>l&#8217;interfaccia linguistica<\/strong>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusioni<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Il chatbot ha superato il red team con un <strong>96,9% di pass rate<\/strong> su quasi 2.000 test automatizzati che coprono oltre 35 categorie di rischio e 5 strategie di attacco diverse. \u00c8 un risultato che d\u00e0 fiducia, ma non complacenza.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I punti deboli identificati \u2014 bias residuo sotto jailbreak iterativo, allucinazioni occasionali, qualche risposta borderline su argomenti scientifici sensibili \u2014 sono aree di lavoro concrete per il prossimo ciclo di miglioramento.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La sicurezza AI non \u00e8 un checkbox. \u00c8 un processo iterativo: costruisci, testa, misura, migliora. PromptFoo \u00e8 lo strumento che ho scelto per rendere quel processo sistematico e misurabile.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Vuoi approfondire l&#8217;architettura del chatbot? Leggi l&#8217;articolo tecnico: <a href=\"https:\/\/paoloronco.it\/wordpress-ai-chatbot-trasformare-contenuti-in-un-sistema-interrogabile-n8n-qdrant-mongodb-vector-store\/\">WordPress AI Chatbot con n8n, Qdrant e MongoDB Vector Store<\/a>. Il chatbot \u00e8 visibile su <a href=\"https:\/\/paoloronco.it\/ai-chatbot\/\">paoloronco.it\/ai-chatbot\/<\/a>.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ho un chatbot AI integrato nel mio sito accessibile da chiunque visiti paoloronco.it. Non si tratta di un semplice widget di Q&amp;A: dietro le quinte gira un sistema RAG (Retrieval-Augmented Generation) orchestrato tramite n8n, con OpenAI come motore linguistico, Qdrant Cloud come vector store, Cohere come reranker, e un webhook autenticato via Bearer Token come &hellip; <a href=\"https:\/\/paoloronco.it\/en\/ai-red-teaming-con-promptfoo-come-ho-testato-la-sicurezza-del-mio-chatbot-wordpress\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;AI Red Teaming con PromptFoo: come ho testato la sicurezza del mio chatbot WordPress&#8221;<\/span><\/a><\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-2552","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/paoloronco.it\/en\/wp-json\/wp\/v2\/posts\/2552","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/paoloronco.it\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/paoloronco.it\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/paoloronco.it\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/paoloronco.it\/en\/wp-json\/wp\/v2\/comments?post=2552"}],"version-history":[{"count":1,"href":"https:\/\/paoloronco.it\/en\/wp-json\/wp\/v2\/posts\/2552\/revisions"}],"predecessor-version":[{"id":2553,"href":"https:\/\/paoloronco.it\/en\/wp-json\/wp\/v2\/posts\/2552\/revisions\/2553"}],"wp:attachment":[{"href":"https:\/\/paoloronco.it\/en\/wp-json\/wp\/v2\/media?parent=2552"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/paoloronco.it\/en\/wp-json\/wp\/v2\/categories?post=2552"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/paoloronco.it\/en\/wp-json\/wp\/v2\/tags?post=2552"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}