Forráskód Böngészése

anythingllm: system prompt (eesti keel + viited) + LOEMIND uuendus

ardo 1 hónapja
szülő
commit
c8557a27da

+ 18 - 2
third/server/anythingllm/LOEMIND.md

@@ -9,7 +9,8 @@ Dokumentide põhine LLM vestlusrobot (RAG – oma failidest küsimiseks).
 | **AnythingLLM** | Docker konteiner (`anythingllm`) | port 3002 |
 | **Ollama** (LLM) | Native systemd teenus | `host.docker.internal:11434` |
 | **Ollama** (embedding) | Native systemd teenus | `host.docker.internal:11434` |
-| **Qdrant** | Docker konteiner (`qdrant`) | `host.docker.internal:6333` |
+| **Qdrant** | Docker konteiner (`qdrant`) | `qdrant:6333` (docker-võrk) |
+| **llama.cpp** | Native (screen `llama-120b`) | `host.docker.internal:8070` (`GPT-OSS`) |
 | **GPU** | ROCm 7.2.2, gfx1151 (Radeon 8060S) | hostil |
 
 **NB!** Ollama EI OLE Dockeris – see jookseb native systemd teenusena koos ROCm GPU toega.
@@ -20,7 +21,8 @@ Dokumentide põhine LLM vestlusrobot (RAG – oma failidest küsimiseks).
 Kasutab:
 - **Ollama** (native) – LLM mudel (`qwen3:30b-fast`, 18 GB)
 - **Ollama** (native) – embedding mudel (`nomic-embed-text:latest`, GPU, 274 MB)
-- **Qdrant** – vektorbaas (`host.docker.internal:6333`)
+- **Qdrant** – vektorbaas (`qdrant:6333`; **NB**: `host.docker.internal` ei tööta, sest Qdrant on seotud ainult `127.0.0.1`+tailnet, mitte docker-gateway)
+- **llama.cpp** – LLM provider `localai` (`LOCAL_AI_BASE_PATH=http://host.docker.internal:8070/v1`, mudel `GPT-OSS`)
 
 Compose faili olulised keskkonnamuutujad:
 - `LLM_PROVIDER=ollama` – LLM läbi ollama
@@ -34,6 +36,20 @@ Compose faili olulised keskkonnamuutujad:
 **NB!** Mudelit saab igal ajal muuta AnythingLLM veebiliidese kaudu (Settings → LLM / Embedder).
 Compose failis olev mudelinimi on ainult algseadistuse jaoks.
 
+### Krüpteerimine (oluline!)
+- `SIG_KEY` / `SIG_SALT` **peavad olema püsivad** — AnythingLLM krüpteerib nendega tundlikud andmed (nt Telegram bot-token). Kui need puuduvad, genereerib ta need ja kirjutab konteineri `/app/server/.env`-i, **mis pole mount'itud** → recreate kaotab võtme ja vanad saladused ei dekrüpteeru.
+- Seetõttu on need viidud `anythingllm/.env`-i (gitignore): `AUTH_PASS`, `AUTH_TOKEN`, `JWT_SECRET`, `SIG_KEY`, `SIG_SALT`.
+- **Patch:** `patches/validatedRequest.js` (mount'itud) — vigane/aegunud JWT annab 401, mitte ei kuku (upstream bug: `bcrypt.compareSync(null)`).
+
+### Telegram bot
+- Bot `@ardokanythingllm_bot` (connector `external_communication_connectors`, `active=1`), default workspace `liiklussagedus`, kinnitatud kasutaja `5036685258`.
+- Iga sõnum → workspace chat → vastus Telegrami. Allikate vaatamiseks boti käsk `/proof`.
+
+### RAG viited ja keel (system prompt)
+- System prompt asub `prompts/system_prompt.txt` (DB-s: `workspaces.openAiPrompt`, `system_settings.default_system_prompt`).
+- Reeglid: **vasta alati eesti keeles**, väljasta ainult lõplik vastus (ilma `<think>`/JSON), numbrilised viited `[n]` + lõpus **"Allikad"** loetelu, ära genereeri URL-e.
+- `queryRefusalResponse` = "Sellele küsimusele ei leidu selle tööruumi dokumentides vastust."
+
 ## Docker käsud
 
 ```bash

+ 15 - 0
third/server/anythingllm/prompts/system_prompt.txt

@@ -0,0 +1,15 @@
+Oled täpne assistent, kes vastab ALATI eesti keeles.
+
+# Vastuse reeglid
+- Vasta alati **eesti keeles**, selgelt ja korrektselt.
+- Väljasta **AINULT lõplik vastus**. ÄRA kirjuta mõttekäiku, ära kasuta <think> silte ega `<think>` plokke. ÄRA väljasta JSON-i.
+- Kasuta ainult allpool antud konteksti. Kui vastust kontekstist ei leia, ütle "Selle kohta info puudub" ega leiuta fakte ega akronüüme.
+
+# Viitamine
+- Kasuta ainult numbrilisi viiteid `[1]`, `[2]` jne, täpselt vastavalt konteksti allikate numbritele.
+- **ÄRA kunagi genereeri URL-e ega Google'i otsingulinke** vastuse tekstis.
+- Iga viide peab viitama lõpus olevale "Allikad" loetelule.
+- Kui allika ID puudub või andmed on ebakindlad, kirjuta "allikas puudub" ja ära viita.
+
+# Vorming
+- Vastuse lõppu lisa loetelu **"Allikad"**: iga allikas eraldi real kujul `[n] <pealkiri või viide>`.