Skip to Content

Chatbot Pilot

Chatbot Pilot este un chatbot AI de customer support pentru WordPress. Vine ca un widget de chat flotant pe frontend și ca o zonă completă de administrare în Settings → Chatbot Pilot. Plugin-ul oferă două moduri de operare:

  • Modul n8n — widget-ul redirecționează fiecare mesaj de la vizitator către un workflow n8n  extern prin webhook. Folosește-l când rulezi deja automatizări, logică custom sau integrări terțe în afara WordPress.
  • Modul RAG nativ — plugin-ul indexează conținutul propriu al site-ului (articole, pagini, custom post types) în chunk-uri stocate într-o bază de date SQLite locală, regăsește la query time cele mai relevante pasaje și generează un răspuns cu furnizorul LLM la alegere (OpenAI, Anthropic Claude, Google Gemini, DeepSeek sau o instanță Ollama self-hosted).

Ambele moduri folosesc același widget, același log de conversații și aceleași tool-uri de feedback/export, deci poți schimba oricând backend-ul fără să pierzi experiența vizibilă vizitatorului.

Widget de chat
Widget-ul de chat randat pe frontend.

Puncte forte

  • Backend dual: webhook n8n sau Retrieval-Augmented Generation integral nativ.
  • Suport multi-provider LLM: OpenAI, Anthropic Claude, Google Gemini, DeepSeek, Ollama (local).
  • Engine RAG nativ cu storage SQLite, chunk size configurabil și retrieval top-K.
  • Indexare în background prin WordPress cron, ca re-indexarea să nu blocheze niciodată UI-ul de admin.
  • Widget personalizabil: poziție, culori primară/fundal/text, culori bule user și bot, dimensiuni, border radius, tipografie.
  • Texte editabile pentru mesajul de bun venit, subtitlu, placeholder de input, starea de loading și mesajul de eroare.
  • Log de conversații cu feedback per mesaj (thumbs up / thumbs down) și export CSV.
  • Health check integrat care verifică conectivitatea cu furnizorul, statusul indexului și accesibilitatea webhook-ului.
  • Multilingv prin Polyglot — textele widget-ului și baza de cunoștințe pot fi servite per limbă.

Cerințe

Plugin-ul este de sine stătător și nu cere niciun serviciu extern în modul RAG nativ în afară de API-ul LLM la alegere. Vector store-ul inclus folosește SQLite, disponibil în orice build standard de PHP.

ComponentăRecomandat
WordPress6.2 sau mai nou (testat până la 7.0)
PHP7.4 sau mai nou (recomandat 8.x)
Bază de dateMySQL/MariaDB pentru datele WordPress, SQLite pentru indexul vectorial
HTTPSNecesar pentru apelurile webhook și provider
Rețea outboundNecesară pentru a ajunge la furnizorul LLM selectat

Pentru modul n8n ai nevoie suplimentar de o instanță n8n accesibilă, cu un nod Webhook configurat să accepte request-uri POST. Pentru Ollama ai nevoie de un server Ollama care rulează și este accesibil de pe host-ul WordPress (de obicei http://localhost:11434).

Instalare

  1. Deschide Plugins → Add New → Upload Plugin în adminul WordPress și urcă fișierul ZIP al Chatbot Pilot.
  2. Activează Chatbot Pilot.
  3. Deschide Settings → Chatbot Pilot. Plugin-ul își creează tabelele de bază de date și opțiunile default la prima încărcare.
  4. Alege modul de backend (n8n sau RAG nativ) și completează configurarea de furnizor de mai jos.
  5. În modul RAG nativ, apasă Reindex cel puțin o dată, ca să populezi baza de cunoștințe înainte să expui widget-ul vizitatorilor.
  6. Vizitează o pagină publică pe frontend ca să confirmi că widget-ul apare la poziția configurată.

Widget-ul este enqueued automat pe fiecare pagină odată ce plugin-ul este configurat; nu sunt necesare shortcoduri sau editări de temă.

Configurare

Ecranul de setări este sub Settings → Chatbot Pilot și este împărțit în șase taburi — General, AI / RAG, Aspect, Icoane, Texte și Feedback. Toate valorile sunt salvate per site (sau per site din rețea pe multisite) și pot fi schimbate fără să fie nevoie de re-indexare, cu excepția parametrilor de indexare în sine.

General

Chatbot Pilot — Settings, tabul General
Tabul General — License, comutatorul principal Enable Chatbot, lista de Visibility per URL și cardul Balloon Notification cu delay-ul lui.

Tabul General conține trei carduri:

  • License — lipește cheia PILOT-XXXX-XXXX-XXXX-XXXX și apasă Verify & Save pentru a activa update-urile automate ale plugin-ului.
  • General → Enable Chatbot — comutator principal pentru afișarea widget-ului pe site.
  • Visibility → Hidden on these URLs — listă separată prin virgulă sau prin newline cu căile pe care widget-ul trebuie să rămână ascuns (potrivire prin prefix: /login ascunde și /login/).
  • Balloon Notification — afișează un hint în stil balon lângă bula de chat după un delay configurabil (Show After în secunde, 0 = imediat) pentru a atrage atenția.

Modul de backend

Alege exact un backend. Alegerea determină ce câmpuri ulterioare sunt vizibile.

  • Webhook n8n — widget-ul face POST cu mesajul vizitatorului, ID-ul conversației și URL-ul paginii curente către webhook-ul pe care îl furnizezi. Răspunsul așteptat este un payload JSON cu un string reply care e randat înapoi utilizatorului.
  • RAG nativ — request-ul este gestionat în-process. Plugin-ul preia cele mai relevante top-K chunk-uri din indexul local, construiește un prompt și apelează furnizorul LLM configurat.

Setări n8n

Vizibile doar când modul de backend este setat pe Webhook n8n.

  • Webhook URL — URL-ul HTTPS complet al nodului Webhook n8n.
  • Authentication header (opțional) — numele și valoarea unui header trimis cu fiecare request, util pentru webhook-uri protejate prin shared-secret.
  • Timeout — timpul maxim, în secunde, pentru a aștepta răspunsul înainte de a afișa mesajul de eroare utilizatorului.

Furnizor AI (RAG nativ)

Vizibile doar când modul de backend este setat pe RAG nativ.

Setări furnizor AI
Setări furnizor AI

Selectează un furnizor și completează câmpurile corespunzătoare:

FurnizorNote
OpenAICea mai bună calitate de ansamblu cu familia GPT-4. Necesită o cheie API de la platform.openai.com.
Anthropic ClaudeReasoning puternic și control bun pe ton. Necesită o cheie API de la console.anthropic.com.
Google GeminiRăspunsuri rapide la prețuri competitive. Necesită o cheie de la Google AI Studio.
DeepSeekOpțiune budget-friendly, cu performanță bună pe conținut tehnic.
OllamaRulează local. Configurează URL-ul de bază (default http://localhost:11434) și numele modelului. Nu este necesară o cheie API.

Fiecare furnizor expune aceleași trei câmpuri:

  • API key (sau base URL pentru Ollama) — stocată în tabelul de opțiuni WordPress; niciodată expusă în frontend.
  • Model — identificatorul specific al modelului de apelat (de exemplu gpt-4o-mini, claude-3-5-sonnet, gemini-1.5-flash, deepseek-chat, llama3.1:8b).
  • Test connection — trimite un ping minimal către furnizor și raportează succesul sau eroarea verbatim returnată de API. Rulează-l mereu după schimbarea cheii sau a modelului.

Bază de cunoștințe

Controlează cum este construit și interogat indexul RAG nativ. Schimbările parametrilor de chunking au efect la următoarea re-indexare.

  • Source path — listă separată prin virgulă de post types (sau un URL root) care să fie ingerate. Lasă default-ul post,page pentru a indexa întreg site-ul sau restricționează la un CPT specific de bază de cunoștințe.
  • Chunk size — numărul de tokeni al fiecărui chunk scris în index. Default 500. Chunk-uri mai mici îmbunătățesc precizia retrieval-ului; chunk-uri mai mari păstrează mai mult context înconjurător.
  • Top-K — numărul de chunk-uri preluate per întrebare a vizitatorului și pasate către LLM ca context. Default 5.
  • Reindex — programează un rebuild complet prin WP-Cron. Bara de progres arată numărul de documente puse în queue, procesate și sărite. Cât timp rulează job-ul, indexul existent continuă să răspundă la query-uri.
  • Clear index — șterge fiecare rând din tabelul vectorial. Folosește-l înainte să schimbi modelul de embedding.

Aspect

Fiecare aspect vizual al widget-ului este editabil din acest tab. Previzualizarea live din dreapta se actualizează imediat cum schimbi valorile.

Setări aspect
Setări aspect

Poziție

  • Bottom-right (default)
  • Bottom-left

Culori

  • Culoare primară — background-ul header-ului, butonul de send, focus rings.
  • Culoare fundal — fundalul ferestrei de chat.
  • Culoare text — culoarea de bază a textului din fereastră.
  • Culoare mesaj user — fundalul bulei vizitatorului.
  • Culoare mesaj bot — fundalul bulei asistentului.

Dimensiuni

  • Lățime fereastră și înălțime fereastră — în pixeli.
  • Mărime buton launcher — diametrul butonului flotant.
  • Border radius — aplicat pe fereastră, bule și launcher.

Tipografie

  • Font family — preia din temă din start; poate fi suprascris cu orice stack CSS de fonturi.
  • Mărime font de bază — aplicată pe body-ul chat-ului.

Icoane

Chatbot Pilot — tabul Icoane
Tabul Icoane — alege iconița de launcher (bulă de chat, message, robot, support, sparkle), iconița de close și iconița de send sau urcă propriul SVG/PNG.

Tabul Icoane decuplează branding-ul de tabul Aspect, ca să poți schimba iconițele de launcher, close și send fără să atingi culorile sau mărimile. Setul inclus acoperă cele mai uzuale pattern-uri de chat; câmpul Custom URL acceptă orice SVG sau PNG accesibil public.

Texte

Chatbot Pilot — tabul Texte
Tabul Texte — fiecare string vizibil vizitatorului într-un singur loc: titlul și subtitlul header-ului, mesajul de welcome, placeholder-ul de input, textele de loading și de eroare, prompt-ul de feedback și textul de balloon notification.

Fiecare string vizibil pentru vizitator se află în tabul Texte, ca să poți traduce sau reformula widget-ul fără să atingi tema vizuală:

  • Mesaj de bun venit — primul mesaj afișat când un vizitator deschide widget-ul.
  • Subtitlu — text mic sub titlu, în header.
  • Placeholder input — text afișat în câmpul de input gol.
  • Text loading — afișat în timp ce se așteaptă răspunsul asistentului.
  • Mesaj de eroare — afișat când apelul către backend eșuează sau dă timeout.
  • Prompt feedback — text afișat deasupra butoanelor thumbs-up / thumbs-down (când feedback-ul este activ).
  • Text Balloon Notification — textul afișat în hintul de tip balon.

Reguli de vizibilitate

  • Show on — alege între Toate paginile, Doar pe paginile selectate sau Pe toate, în afară de paginile selectate. ID-urile paginilor se introduc ca listă separată prin virgulă.
  • Ascunde pentru utilizatorii logați — comută widget-ul pe off pentru sesiunile autentificate.
  • Mobile breakpoint — lățimea viewport-ului sub care widget-ul se comprimă într-un layout compact.

Feedback și analytics

  • Activează butoanele de feedback — adaugă controale thumbs-up / thumbs-down sub fiecare mesaj al asistentului.
  • Stochează conversațiile — păstrează transcriptul complet în tabelul wp_chatbotpilot_conversations pentru revizuire și export.
  • Perioadă de retenție — numărul de zile după care conversațiile stocate sunt șterse de job-ul cron zilnic. Setează 0 pentru a păstra pentru totdeauna.

Health check

Panoul de health check este mereu vizibil în partea de sus a ecranului de setări. Rulează trei probe-uri și arată o pastilă colorată de status pentru fiecare:

  • Accesibilitate furnizor — apelează API-ul LLM cu un ping de un token.
  • Status index — numără chunk-urile din store-ul SQLite și raportează timestamp-ul ultimei re-indexări reușite.
  • Accesibilitate webhook (modul n8n) — emite un request OPTIONS către URL-ul de webhook configurat.

Orice status care nu e verde este clickabil și se expandează în eroarea verbatim returnată de apelul de bază, ceea ce este de obicei suficient pentru a diagnostica problema.

Utilizare

Pentru vizitatori

Widget-ul apare pe fiecare pagină pe care se aplică regulile de vizibilitate. Vizitatorul apasă butonul de launcher pentru a deschide fereastra, citește mesajul de bun venit și scrie o întrebare în câmpul de input. Apăsarea Enter sau a butonului de send trimite mesajul; widget-ul afișează textul de loading, apoi randează răspunsul asistentului cu formatare markdown (bold, linkuri, liste ordonate și neordonate, blocuri de cod).

Dacă butoanele de feedback sunt active, vizitatorul poate evalua fiecare mesaj al asistentului. Evaluarea este stocată față de ID-ul mesajului, astfel încât același răspuns poate fi revizuit ulterior în panoul de admin.

Pentru administratori

Administrarea zi de zi se întâmplă în două locuri:

  • Settings → Chatbot Pilot pentru configurare și panoul de health check.
  • Chatbot Pilot → Conversations pentru log-ul de conversații și exportul feedback-ului.
Feedback și log de conversații
Feedback și log de conversații

Log-ul de conversații listează fiecare sesiune cu data, pagina de origine, numărul de mesaje și feedback-ul agregat. Fiecare rând poate fi expandat ca să afișeze transcriptul complet, inclusiv pasajele de context preluate în modul RAG nativ. Butonul Export CSV din partea de sus a listei produce un CSV UTF-8 cu un rând per mesaj; respectă orice filtru activ de dată sau rating.

Re-indexare după schimbări de conținut

Indexul nativ nu se actualizează singur în timp real. Declanșează o re-indexare când:

  • Publici sau editezi substanțial un batch de articole.
  • Schimbi chunk size-ul, source path-ul sau modelul de embedding.
  • Panoul de health check raportează status de index expirat sau gol.

Pentru update-uri incrementale, plugin-ul re-indexează și un singur articol la salvare când este activă opțiunea Auto-reindex on save din tabul Bază de cunoștințe. Asta adaugă un mic overhead la fiecare salvare de articol, dar ține baza de cunoștințe sincronizată fără intervenție manuală.

Schimbarea backend-urilor

Poți schimba oricând între n8n și RAG nativ. Widget-ul, log-ul de conversații și store-ul de feedback sunt partajate între moduri. Când treci pe RAG nativ pentru prima dată, ține minte să rulezi Reindex înainte ca widget-ul să poată răspunde la întrebări.

Screenshot-uri

Screenshot-urile de mai jos corespund celor patru zone principale ale interfeței de admin și widget-ului de frontend.

Widget-ul de chat din frontend

Widget-ul de chat randat pe o pagină
Widget-ul de chat randat pe o pagină

Configurare furnizor AI

Selecție de furnizor, cheie API, model și test de conexiune
Selecție de furnizor, cheie API, model și test de conexiune

Editor de aspect al widget-ului

Previzualizare live cu poziție, culori, dimensiuni și texte
Previzualizare live cu poziție, culori, dimensiuni și texte

Log de conversații și export de feedback

Listă de conversații cu indicatori de feedback
Listă de conversații cu indicatori de feedback

FAQ

Ce backend ar trebui să aleg?

Folosește RAG nativ dacă scopul tău este să răspunzi la întrebări despre conținutul propriu al site-ului și vrei o soluție de sine stătătoare care are nevoie doar de o cheie API LLM. Folosește n8n dacă trebuie să combini chatbot-ul cu unelte externe (lookup-uri CRM, ticketing, rutare custom) sau dacă conversația ar trebui să declanșeze acțiuni în afara WordPress.

Trebuie să instalez n8n ca să folosesc plugin-ul?

Nu. n8n este necesar doar dacă selectezi n8n ca mod de backend. Modul RAG nativ este complet de sine stătător.

Sunt datele mele trimise către un terț?

În modul RAG nativ, fiecare prompt și contextul preluat sunt trimise furnizorului LLM pe care l-ai selectat. Dacă asta nu e acceptabil, rulează plugin-ul pe o instanță locală Ollama — în acel caz nicio dată nu părăsește serverul. În modul n8n, fiecare mesaj este trimis către propriul tău endpoint n8n; ce se întâmplă după aceea depinde de workflow-ul pe care îl construiești.

Unde este stocat indexul?

Indexul vectorial este un fișier SQLite în wp-content/uploads/chatbot-pilot/. Tabelul de opțiuni WordPress ține configurarea chatbot-ului, iar tabelul wp_chatbotpilot_conversations ține log-ul de conversații.

Pot folosi plugin-ul pe un site multilingv?

Da. Cu Polyglot instalat, indexer-ul ingerează versiunile traduse ale fiecărui articol, iar textele widget-ului sunt servite per limbă. Fără Polyglot poți opera totuși un widget per limbă, limitând source path-ul la categorii specifice limbii.

Suportă custom post types?

Da. Adaugă slug-urile CPT în câmpul Source path, separate prin virgulă, și re-indexează.

Pot exporta conversațiile?

Da. Butonul Export CSV din ecranul Conversations produce un fișier CSV UTF-8 cu un rând per mesaj, inclusiv rating-ul, timestamp-ul, pagina de origine și textul complet al mesajului.

Cum șterg datele unui vizitator?

Deschide Chatbot Pilot → Conversations, filtrează după session ID sau după IP și folosește acțiunea Delete pe rândurile care se potrivesc. Conversația și intrările ei de feedback sunt șterse imediat.

Funcționează widget-ul fără JavaScript?

Nu. Widget-ul este o componentă JavaScript single-page; nu degradează elegant într-un fallback noscript.

Depanare

Widget-ul nu apare pe frontend

  • Verifică dacă modul de backend este setat și dacă credențialele relevante (cheie API sau URL webhook) sunt salvate.
  • Verifică regulile de vizibilitate — pagina poate fi exclusă.
  • Inspectează consola browser-ului: un răspuns 4xx de la admin-ajax.php indică de obicei o problemă de permisiuni sau de nonce cauzată de un plugin agresiv de caching.

Asistentul răspunde cu mesajul de eroare

Deschide panoul de health check și apasă pe pastila roșie de status pentru a citi verbatim eroarea de la furnizor. Cauze uzuale:

  • Cheie API expirată sau revocată.
  • Modelul selectat nu este disponibil pentru contul sau regiunea ta.
  • Rate limit depășit — așteaptă sau fă upgrade pe planul furnizorului.
  • URL-ul webhook returnează un status non-2xx.

Re-indexarea pare blocată

WordPress cron se declanșează doar când site-ul primește trafic. Fie declanșează un hit manual de pagină, fie apelează wp cron event run --due-now din WP-CLI. Bara de progres se reîmprospătează la câteva secunde cât rulează job-ul.

Răspunsurile sunt off-topic sau halucinate

  • Re-indexează după editări recente de conținut.
  • Mărește Top-K ca să dai modelului mai mult context.
  • Scade Chunk size pentru retrieval mai fin granulat, apoi re-indexează.
  • Încearcă un model mai puternic (de exemplu, schimbând din GPT-4o-mini în GPT-4o sau din Gemini Flash în Gemini Pro).

Răspunsurile Ollama sunt foarte lente

Viteza inferenței locale depinde integral de host. Folosește un model cuantizat (:q4_K_M sau similar), asigură-te că accelerarea GPU este activă și păstrează chunk size-ul și top-K modest.

Conversațiile nu sunt stocate

Confirmă faptul că Stochează conversațiile este activ în tabul Feedback și analytics și că tabelul wp_chatbotpilot_conversations există. Dezactivarea și reactivarea plugin-ului recreează tabelele lipsă.

Last updated on