# Configurarea puntii WhatsApp+RAG a lui Maria. # # install.sh copiaza acest fisier in ~/.maria-bridge/env cu drepturi 0600. # Format KEY=value, fara `export`, fara expandare de variabile. # --- Puntea WhatsApp (whatsapp/index.js) ----------------------------------- BRIDGE_HOST=127.0.0.1 BRIDGE_PORT=8099 # true = raspunde DOAR in chatul cu tine insuti (self-chat). Pune "false" abia # dupa ce esti multumit de calitatea raspunsurilor — altfel Maria raspunde la # oricine iti scrie pe numarul legat. TEST_MODE_SELF_CHAT_ONLY=true # Grupuri in care Maria raspunde chiar si cu self-chat-only (JID-uri, separate prin # virgula). JID-ul unui grup se citeste din punte: curl -s localhost:8099/groups # ATENTIE: nu pune un grup in care raspunde si Echo (LXC 110) — puntea lui nu # filtreaza `fromMe` in grupuri, deci cei doi boti isi raspund unul altuia la # nesfarsit. Vezi docs/chatboti-si-punti.md. ALLOWED_GROUP_JIDS= # Imaginile primite (capturi cu erori) peste aceasta marime sunt refuzate, fara # descarcare. O captura de ecran normala are sub 1 MB. MAX_MEDIA_MB=8 # --- OCR pentru capturile de ecran ------------------------------------------ # Modelul de raspuns e strict text, deci capturile trec prin tesseract inainte de # RAG (vezi rag/ocr.py). Cere: apt-get install tesseract-ocr tesseract-ocr-ron OCR_LANGS=ron+eng OCR_MAX_CHARS=1500 OCR_TIMEOUT_S=60 # --- Ordonare (rank) si pragul de escaladare --------------------------------- # Chunk-urile se ordoneaza de doua ori — semantic (embeddings) si lexical (BM25) — # iar clasamentele se fuzioneaza. Vezi rag/rank.py; valorile de mai jos sunt # calibrate pe indexul real, nu alese din burta. # Peste RANK_STRONG_COSINE raspundem din documente fara alte conditii; sub # RANK_WEAK_COSINE escaladam direct; intre ele, raspundem doar daca termenii rari # din intrebare (coduri de eroare, in general) chiar apar in chunk-urile gasite. RANK_STRONG_COSINE=0.70 RANK_WEAK_COSINE=0.58 RANK_RECALL_N=12 # Ce fractiune din termenii distinctivi ai intrebarii trebuie sa apara in # chunk-urile gasite, ca sa salvam un cosinus de mijloc. Un singur termen gasit # nu e o dovada — vezi ops/calibrate-rank.py. RANK_MIN_RARE_RATIO=0.5 # --- Escaladare la suport ---------------------------------------------------- # Unde pleaca intrebarile la care Maria NU are raspuns in documente. Fara asta ar # raspunde generic, ceea ce e mai rau decat sa nu raspunda deloc. # JID de WhatsApp: "@s.whatsapp.net" pentru o persoana, # "@g.us" pentru un grup. Numarul se scrie international, fara "+". # Gol = escaladarile se scriu doar in ~/.maria-bridge/escalations/, fara notificare. SUPPORT_JID= # Numarul spus clientului cand asteapta de peste 30 de minute fara raspuns. SUPPORT_PHONE= # --- Backend LLM + embeddings ----------------------------------------------- # Modelul de chat folosit pentru raspunsuri (format compatibil OpenAI # /v1/chat/completions). Implicit presupune un tunel/proxy local catre acelasi # backend folosit de Echo (LXC 110) — vezi docs/maria-whatsapp-rag-prototype.md. LLM_URL=http://127.0.0.1:8091 # Ollama, pentru embeddings (nomic-embed-text). OLLAMA_URL=http://127.0.0.1:11434 EMBED_MODEL=nomic-embed-text TOP_K=3 MAX_TOKENS=250 POLL_INTERVAL_S=2 # --- Depozit de documente + sincronizare Google Drive ----------------------- # Tinta rclone pentru dosarul de documente din Drive (pe Windows apare ca # D:\GoogleDrive\romfast\document_store). Se aduc doar *.txt, *.md, *.xml. # Gol = sincronizare dezactivata; documentele se administreaza doar manual din # dashboard. Vezi README.md, "Sincronizare cu Google Drive": autorizarea se face # cu `rclone authorize` pe o masina cu browser, tokenul se muta aici — fara cont # de serviciu. Exemplu, cu dosarul fixat pe ID: # DRIVE_REMOTE=gdrive,root_folder_id=1C4e75zgH1_7ZK-_oBP5ZZBvUPh3iEo1O: DRIVE_REMOTE= # --- control ----------------------------------------------------------------- # Fara dashboard propriu: start/stop/restart, documente, reindexare si # sincronizare Drive se fac din dashboard-ul puntii Discord (discord-bridge/), # sectiunea "Maria — WhatsApp + RAG" — un singur panou comun, o singura # autentificare (DASHBOARD_TOKEN din ~/.claude-discord/env).