Spaces:
Sleeping
Sleeping
XQ commited on
Commit ·
20b4d6f
1
Parent(s): 278c896
Update README
Browse files- .github/README.md +17 -23
- README.md +17 -23
.github/README.md
CHANGED
|
@@ -1,13 +1,13 @@
|
|
| 1 |
# Dokumentassistent
|
| 2 |
|
| 3 |
-
## Live demo
|
| 4 |
Hosted on Hugging Face Spaces: [xq-dokumentassistent.hf.space](https://xq-dokumentassistent.hf.space)
|
| 5 |
|
| 6 |
[Skip to English ↓](#english)
|
| 7 |
|
| 8 |
## Dansk
|
| 9 |
|
| 10 |
-
En
|
| 11 |
|
| 12 |
### Funktioner
|
| 13 |
|
|
@@ -32,9 +32,9 @@ Når en bruger stiller et spørgsmål, kører systemet både den semantiske og d
|
|
| 32 |
|
| 33 |
Systemet kan køre i to forskellige tilstande, der vælges via miljøvariablen `AGENT_MODE`.
|
| 34 |
|
| 35 |
-
**Pipeline** (`AGENT_MODE=pipeline`)
|
| 36 |
|
| 37 |
-
**Plan-and-Execute
|
| 38 |
|
| 39 |
| Værktøj | Formål |
|
| 40 |
|---|---|
|
|
@@ -47,12 +47,9 @@ Systemet kan køre i to forskellige tilstande, der vælges via miljøvariablen `
|
|
| 47 |
|
| 48 |
### Produktionshensyn
|
| 49 |
|
| 50 |
-
|
| 51 |
-
|
| 52 |
-
|
| 53 |
-
- **Provider-neutralitet.** Forretningskoden importerer aldrig en provider-SDK direkte. LLM- og embedding-backends skiftes via factory-funktionerne `create_llm()` og `create_embeddings()`, hvilket undgår vendor lock-in.
|
| 54 |
-
- **Lokal som standard.** Standardkonfigurationen kører helt uden eksterne API-kald og passer til miljøer med strenge krav til datahjemsted.
|
| 55 |
-
- **Pakket i containere.** Docker Compose til lokal kørsel og Hugging Face Spaces til den offentlige demo.
|
| 56 |
|
| 57 |
### Teknologivalg
|
| 58 |
|
|
@@ -79,13 +76,13 @@ Se `.env.example` for konfiguration pr. provider.
|
|
| 79 |
|
| 80 |
Demoen ligger på [xq-dokumentassistent.hf.space](https://xq-dokumentassistent.hf.space).
|
| 81 |
|
| 82 |
-
Prøv
|
| 83 |
|
| 84 |
- "Hvad er KU's politik for brug af AI-værktøjer?"
|
| 85 |
- "Hvilke regler gælder for brug af generativ AI i eksamen?"
|
| 86 |
- "Sammenlign reglerne for AI-brug i forskning og undervisning."
|
| 87 |
|
| 88 |
-
Det
|
| 89 |
|
| 90 |
### Kom i gang
|
| 91 |
|
|
@@ -177,7 +174,7 @@ docs/ # eksempel-PDF'er eller tekster (KU AI-dokumenter)
|
|
| 177 |
|
| 178 |
## English
|
| 179 |
|
| 180 |
-
A
|
| 181 |
|
| 182 |
### Capabilities
|
| 183 |
|
|
@@ -188,7 +185,7 @@ A production-ready RAG application that lets users ask questions about documents
|
|
| 188 |
| Reranking | Cross-encoder `mmarco-mMiniLMv2-L12-H384-v1` |
|
| 189 |
| Agent flows | Plan-and-Execute with six tools, ReAct sub-agent and conversation memory |
|
| 190 |
| Evaluation | RAGAS metrics (faithfulness, answer relevancy, context precision) |
|
| 191 |
-
| Traceability | Each answer
|
| 192 |
| Provider abstraction | Factory pattern that allows swapping between Ollama, OpenAI, Azure OpenAI, Anthropic and Google GenAI without touching business code |
|
| 193 |
| Deployment | Docker Compose for local setup, Hugging Face Spaces for the public demo |
|
| 194 |
|
|
@@ -202,9 +199,9 @@ At query time, both indexes are searched and the results merged with reciprocal
|
|
| 202 |
|
| 203 |
The system can run in two different modes, switchable via the `AGENT_MODE` environment variable.
|
| 204 |
|
| 205 |
-
**Pipeline** (`AGENT_MODE=pipeline`) is
|
| 206 |
|
| 207 |
-
**Plan-and-Execute
|
| 208 |
|
| 209 |
| Tool | Purpose |
|
| 210 |
|---|---|
|
|
@@ -217,12 +214,9 @@ The system can run in two different modes, switchable via the `AGENT_MODE` envir
|
|
| 217 |
|
| 218 |
### Production considerations
|
| 219 |
|
| 220 |
-
|
| 221 |
-
|
| 222 |
-
|
| 223 |
-
- **Provider neutrality.** Business code never imports a provider SDK directly. LLM and embedding backends swap via the `create_llm()` and `create_embeddings()` factory functions, which avoids vendor lock-in.
|
| 224 |
-
- **Local-first.** The default configuration runs entirely without external API calls and fits environments with strict data residency requirements.
|
| 225 |
-
- **Containerized.** Docker Compose for local runs and Hugging Face Spaces for the public demo.
|
| 226 |
|
| 227 |
### Tech stack
|
| 228 |
|
|
@@ -249,7 +243,7 @@ See `.env.example` for per-provider configuration.
|
|
| 249 |
|
| 250 |
The demo lives at [xq-dokumentassistent.hf.space](https://xq-dokumentassistent.hf.space).
|
| 251 |
|
| 252 |
-
Try
|
| 253 |
|
| 254 |
- "Hvad er KU's politik for brug af AI-værktøjer?"
|
| 255 |
- "Hvilke regler gælder for brug af generativ AI i eksamen?"
|
|
|
|
| 1 |
# Dokumentassistent
|
| 2 |
|
| 3 |
+
## Live demo
|
| 4 |
Hosted on Hugging Face Spaces: [xq-dokumentassistent.hf.space](https://xq-dokumentassistent.hf.space)
|
| 5 |
|
| 6 |
[Skip to English ↓](#english)
|
| 7 |
|
| 8 |
## Dansk
|
| 9 |
|
| 10 |
+
En RAG-applikation, der lader brugeren stille spørgsmål til dokumenter på et hvilket som helst sprog og få svar med kildehenvisninger. Systemet er bygget på open source-komponenter (LangChain, LangGraph, Qdrant, Ollama) og kan køre lokalt uden API-nøgler. Det bruger hybrid søgning med reranking, en Plan-and-Execute-agent med samtalehukommelse, og RAGAS-baseret evaluering af svarkvaliteten.
|
| 11 |
|
| 12 |
### Funktioner
|
| 13 |
|
|
|
|
| 32 |
|
| 33 |
Systemet kan køre i to forskellige tilstande, der vælges via miljøvariablen `AGENT_MODE`.
|
| 34 |
|
| 35 |
+
**Pipeline** (`AGENT_MODE=pipeline`) er en fast LangGraph-DAG, der kører sprogdetektion, valgfri oversættelse, hybrid søgning, reranking, generering, plus en confidence-baseret retry-loop. Den fungerer fint med små lokale modeller, der ikke understøtter tool calling.
|
| 36 |
|
| 37 |
+
**Plan-and-Execute-agent** (`AGENT_MODE=react`, standard) er flertrinet: en planner nedbryder først spørgsmålet i delopgaver, en executor kører hver delopgave gennem en ReAct-subagent med adgang til værktøjerne nedenfor, og en synthesizer samler resultaterne til ét svar med kildehenvisninger. Den bruger samtalehukommelse til opfølgende spørgsmål og kræver en model, der understøtter tool calling.
|
| 38 |
|
| 39 |
| Værktøj | Formål |
|
| 40 |
|---|---|
|
|
|
|
| 47 |
|
| 48 |
### Produktionshensyn
|
| 49 |
|
| 50 |
+
Hvert svar henviser tilbage til de tekststykker, det bygger på, med dokument-ID, sidenummer og selve teksten, så svarene kan kontrolleres bagefter. RAGAS-evalueringen i `src/evaluation/` måler faithfulness og context precision, så man kan opdage forringelser, før en ændring går i drift.
|
| 51 |
+
|
| 52 |
+
Konfigurationen ligger i miljøvariabler via `src/config.py`; der er ingen hardkodede stier, modelnavne eller API-nøgler. Koden importerer aldrig en provider-SDK direkte — LLM- og embedding-backends hentes gennem `create_llm()` og `create_embeddings()`, så man kan skifte mellem Ollama, OpenAI og andre uden at røre den øvrige kode. Standardopsætningen kører lokalt uden eksterne API-kald.
|
|
|
|
|
|
|
|
|
|
| 53 |
|
| 54 |
### Teknologivalg
|
| 55 |
|
|
|
|
| 76 |
|
| 77 |
Demoen ligger på [xq-dokumentassistent.hf.space](https://xq-dokumentassistent.hf.space).
|
| 78 |
|
| 79 |
+
Prøv disse spørgsmål — eller dine egne — på et hvilket som helst sprog.
|
| 80 |
|
| 81 |
- "Hvad er KU's politik for brug af AI-værktøjer?"
|
| 82 |
- "Hvilke regler gælder for brug af generativ AI i eksamen?"
|
| 83 |
- "Sammenlign reglerne for AI-brug i forskning og undervisning."
|
| 84 |
|
| 85 |
+
Det tredje spørgsmål udløser Plan-and-Execute-agenten, så man kan se den nedbryde spørgsmålet i delopgaver i realtid.
|
| 86 |
|
| 87 |
### Kom i gang
|
| 88 |
|
|
|
|
| 174 |
|
| 175 |
## English
|
| 176 |
|
| 177 |
+
A RAG application that lets users ask questions about documents in any language and get answers with source citations. The system is built on open source components (LangChain, LangGraph, Qdrant, Ollama) and can run locally without API keys. It uses hybrid search with reranking, a Plan-and-Execute agent with conversation memory, and RAGAS-based evaluation of answer quality.
|
| 178 |
|
| 179 |
### Capabilities
|
| 180 |
|
|
|
|
| 185 |
| Reranking | Cross-encoder `mmarco-mMiniLMv2-L12-H384-v1` |
|
| 186 |
| Agent flows | Plan-and-Execute with six tools, ReAct sub-agent and conversation memory |
|
| 187 |
| Evaluation | RAGAS metrics (faithfulness, answer relevancy, context precision) |
|
| 188 |
+
| Traceability | Each answer includes source references with chunk ID and page number, plus structured logging |
|
| 189 |
| Provider abstraction | Factory pattern that allows swapping between Ollama, OpenAI, Azure OpenAI, Anthropic and Google GenAI without touching business code |
|
| 190 |
| Deployment | Docker Compose for local setup, Hugging Face Spaces for the public demo |
|
| 191 |
|
|
|
|
| 199 |
|
| 200 |
The system can run in two different modes, switchable via the `AGENT_MODE` environment variable.
|
| 201 |
|
| 202 |
+
**Pipeline** (`AGENT_MODE=pipeline`) is a fixed LangGraph DAG that runs language detection, optional translation, hybrid retrieval, reranking, generation, and a confidence-based retry loop. It works well with small local models that don't support tool calling.
|
| 203 |
|
| 204 |
+
**Plan-and-Execute agent** (`AGENT_MODE=react`, default) is multi-step: a planner first decomposes the query into sub-tasks, an executor runs each sub-task through a ReAct sub-agent with access to the tools listed below, and a synthesizer combines the results into a single cited answer. It uses conversation memory for follow-up questions and requires a model that supports tool calling.
|
| 205 |
|
| 206 |
| Tool | Purpose |
|
| 207 |
|---|---|
|
|
|
|
| 214 |
|
| 215 |
### Production considerations
|
| 216 |
|
| 217 |
+
Every answer points back to the chunks it was built on, with document ID, page number and the chunk text itself, so answers can be checked after the fact. The RAGAS evaluation in `src/evaluation/` measures faithfulness and context precision, which lets you catch regressions before a change goes live.
|
| 218 |
+
|
| 219 |
+
Configuration lives in environment variables via `src/config.py`; there are no hardcoded paths, model names or API keys. The application code never imports a provider SDK directly — LLM and embedding backends are loaded through `create_llm()` and `create_embeddings()`, so you can switch between Ollama, OpenAI and others without touching the rest of the code. The default setup runs locally without any external API calls.
|
|
|
|
|
|
|
|
|
|
| 220 |
|
| 221 |
### Tech stack
|
| 222 |
|
|
|
|
| 243 |
|
| 244 |
The demo lives at [xq-dokumentassistent.hf.space](https://xq-dokumentassistent.hf.space).
|
| 245 |
|
| 246 |
+
Try these questions, or ask one of your own in any language.
|
| 247 |
|
| 248 |
- "Hvad er KU's politik for brug af AI-værktøjer?"
|
| 249 |
- "Hvilke regler gælder for brug af generativ AI i eksamen?"
|
README.md
CHANGED
|
@@ -10,14 +10,14 @@ noindex: true
|
|
| 10 |
|
| 11 |
# Dokumentassistent
|
| 12 |
|
| 13 |
-
## Live demo
|
| 14 |
Hosted on Hugging Face Spaces: [xq-dokumentassistent.hf.space](https://xq-dokumentassistent.hf.space)
|
| 15 |
|
| 16 |
[Skip to English ↓](#english)
|
| 17 |
|
| 18 |
## Dansk
|
| 19 |
|
| 20 |
-
En
|
| 21 |
|
| 22 |
### Funktioner
|
| 23 |
|
|
@@ -42,9 +42,9 @@ Når en bruger stiller et spørgsmål, kører systemet både den semantiske og d
|
|
| 42 |
|
| 43 |
Systemet kan køre i to forskellige tilstande, der vælges via miljøvariablen `AGENT_MODE`.
|
| 44 |
|
| 45 |
-
**Pipeline** (`AGENT_MODE=pipeline`)
|
| 46 |
|
| 47 |
-
**Plan-and-Execute
|
| 48 |
|
| 49 |
| Værktøj | Formål |
|
| 50 |
|---|---|
|
|
@@ -57,12 +57,9 @@ Systemet kan køre i to forskellige tilstande, der vælges via miljøvariablen `
|
|
| 57 |
|
| 58 |
### Produktionshensyn
|
| 59 |
|
| 60 |
-
|
| 61 |
-
|
| 62 |
-
|
| 63 |
-
- **Provider-neutralitet.** Forretningskoden importerer aldrig en provider-SDK direkte. LLM- og embedding-backends skiftes via factory-funktionerne `create_llm()` og `create_embeddings()`, hvilket undgår vendor lock-in.
|
| 64 |
-
- **Lokal som standard.** Standardkonfigurationen kører helt uden eksterne API-kald og passer til miljøer med strenge krav til datahjemsted.
|
| 65 |
-
- **Pakket i containere.** Docker Compose til lokal kørsel og Hugging Face Spaces til den offentlige demo.
|
| 66 |
|
| 67 |
### Teknologivalg
|
| 68 |
|
|
@@ -89,13 +86,13 @@ Se `.env.example` for konfiguration pr. provider.
|
|
| 89 |
|
| 90 |
Demoen ligger på [xq-dokumentassistent.hf.space](https://xq-dokumentassistent.hf.space).
|
| 91 |
|
| 92 |
-
Prøv
|
| 93 |
|
| 94 |
- "Hvad er KU's politik for brug af AI-værktøjer?"
|
| 95 |
- "Hvilke regler gælder for brug af generativ AI i eksamen?"
|
| 96 |
- "Sammenlign reglerne for AI-brug i forskning og undervisning."
|
| 97 |
|
| 98 |
-
Det
|
| 99 |
|
| 100 |
### Kom i gang
|
| 101 |
|
|
@@ -187,7 +184,7 @@ docs/ # eksempel-PDF'er eller tekster (KU AI-dokumenter)
|
|
| 187 |
|
| 188 |
## English
|
| 189 |
|
| 190 |
-
A
|
| 191 |
|
| 192 |
### Capabilities
|
| 193 |
|
|
@@ -198,7 +195,7 @@ A production-ready RAG application that lets users ask questions about Danish do
|
|
| 198 |
| Reranking | Cross-encoder `mmarco-mMiniLMv2-L12-H384-v1` |
|
| 199 |
| Agent flows | Plan-and-Execute with six tools, ReAct sub-agent and conversation memory |
|
| 200 |
| Evaluation | RAGAS metrics (faithfulness, answer relevancy, context precision) |
|
| 201 |
-
| Traceability | Each answer
|
| 202 |
| Provider abstraction | Factory pattern that allows swapping between Ollama, OpenAI, Azure OpenAI, Anthropic and Google GenAI without touching business code |
|
| 203 |
| Deployment | Docker Compose for local setup, Hugging Face Spaces for the public demo |
|
| 204 |
|
|
@@ -212,9 +209,9 @@ At query time, both indexes are searched and the results merged with reciprocal
|
|
| 212 |
|
| 213 |
The system can run in two different modes, switchable via the `AGENT_MODE` environment variable.
|
| 214 |
|
| 215 |
-
**Pipeline** (`AGENT_MODE=pipeline`) is
|
| 216 |
|
| 217 |
-
**Plan-and-Execute
|
| 218 |
|
| 219 |
| Tool | Purpose |
|
| 220 |
|---|---|
|
|
@@ -227,12 +224,9 @@ The system can run in two different modes, switchable via the `AGENT_MODE` envir
|
|
| 227 |
|
| 228 |
### Production considerations
|
| 229 |
|
| 230 |
-
|
| 231 |
-
|
| 232 |
-
|
| 233 |
-
- **Provider neutrality.** Business code never imports a provider SDK directly. LLM and embedding backends swap via the `create_llm()` and `create_embeddings()` factory functions, which avoids vendor lock-in.
|
| 234 |
-
- **Local-first.** The default configuration runs entirely without external API calls and fits environments with strict data residency requirements.
|
| 235 |
-
- **Containerized.** Docker Compose for local runs and Hugging Face Spaces for the public demo.
|
| 236 |
|
| 237 |
### Tech stack
|
| 238 |
|
|
@@ -259,7 +253,7 @@ See `.env.example` for per-provider configuration.
|
|
| 259 |
|
| 260 |
The demo lives at [xq-dokumentassistent.hf.space](https://xq-dokumentassistent.hf.space).
|
| 261 |
|
| 262 |
-
Try
|
| 263 |
|
| 264 |
- "Hvad er KU's politik for brug af AI-værktøjer?"
|
| 265 |
- "Hvilke regler gælder for brug af generativ AI i eksamen?"
|
|
|
|
| 10 |
|
| 11 |
# Dokumentassistent
|
| 12 |
|
| 13 |
+
## Live demo
|
| 14 |
Hosted on Hugging Face Spaces: [xq-dokumentassistent.hf.space](https://xq-dokumentassistent.hf.space)
|
| 15 |
|
| 16 |
[Skip to English ↓](#english)
|
| 17 |
|
| 18 |
## Dansk
|
| 19 |
|
| 20 |
+
En RAG-applikation, der lader brugeren stille spørgsmål til dokumenter på et hvilket som helst sprog og få svar med kildehenvisninger. Systemet er bygget på open source-komponenter (LangChain, LangGraph, Qdrant, Ollama) og kan køre lokalt uden API-nøgler. Det bruger hybrid søgning med reranking, en Plan-and-Execute-agent med samtalehukommelse, og RAGAS-baseret evaluering af svarkvaliteten.
|
| 21 |
|
| 22 |
### Funktioner
|
| 23 |
|
|
|
|
| 42 |
|
| 43 |
Systemet kan køre i to forskellige tilstande, der vælges via miljøvariablen `AGENT_MODE`.
|
| 44 |
|
| 45 |
+
**Pipeline** (`AGENT_MODE=pipeline`) er en fast LangGraph-DAG, der kører sprogdetektion, valgfri oversættelse, hybrid søgning, reranking, generering, plus en confidence-baseret retry-loop. Den fungerer fint med små lokale modeller, der ikke understøtter tool calling.
|
| 46 |
|
| 47 |
+
**Plan-and-Execute-agent** (`AGENT_MODE=react`, standard) er flertrinet: en planner nedbryder først spørgsmålet i delopgaver, en executor kører hver delopgave gennem en ReAct-subagent med adgang til værktøjerne nedenfor, og en synthesizer samler resultaterne til ét svar med kildehenvisninger. Den bruger samtalehukommelse til opfølgende spørgsmål og kræver en model, der understøtter tool calling.
|
| 48 |
|
| 49 |
| Værktøj | Formål |
|
| 50 |
|---|---|
|
|
|
|
| 57 |
|
| 58 |
### Produktionshensyn
|
| 59 |
|
| 60 |
+
Hvert svar henviser tilbage til de tekststykker, det bygger på, med dokument-ID, sidenummer og selve teksten, så svarene kan kontrolleres bagefter. RAGAS-evalueringen i `src/evaluation/` måler faithfulness og context precision, så man kan opdage forringelser, før en ændring går i drift.
|
| 61 |
+
|
| 62 |
+
Konfigurationen ligger i miljøvariabler via `src/config.py`; der er ingen hardkodede stier, modelnavne eller API-nøgler. Koden importerer aldrig en provider-SDK direkte — LLM- og embedding-backends hentes gennem `create_llm()` og `create_embeddings()`, så man kan skifte mellem Ollama, OpenAI og andre uden at røre den øvrige kode. Standardopsætningen kører lokalt uden eksterne API-kald.
|
|
|
|
|
|
|
|
|
|
| 63 |
|
| 64 |
### Teknologivalg
|
| 65 |
|
|
|
|
| 86 |
|
| 87 |
Demoen ligger på [xq-dokumentassistent.hf.space](https://xq-dokumentassistent.hf.space).
|
| 88 |
|
| 89 |
+
Prøv disse spørgsmål — eller dine egne — på et hvilket som helst sprog.
|
| 90 |
|
| 91 |
- "Hvad er KU's politik for brug af AI-værktøjer?"
|
| 92 |
- "Hvilke regler gælder for brug af generativ AI i eksamen?"
|
| 93 |
- "Sammenlign reglerne for AI-brug i forskning og undervisning."
|
| 94 |
|
| 95 |
+
Det tredje spørgsmål udløser Plan-and-Execute-agenten, så man kan se den nedbryde spørgsmålet i delopgaver i realtid.
|
| 96 |
|
| 97 |
### Kom i gang
|
| 98 |
|
|
|
|
| 184 |
|
| 185 |
## English
|
| 186 |
|
| 187 |
+
A RAG application that lets users ask questions about documents in any language and get answers with source citations. The system is built on open source components (LangChain, LangGraph, Qdrant, Ollama) and can run locally without API keys. It uses hybrid search with reranking, a Plan-and-Execute agent with conversation memory, and RAGAS-based evaluation of answer quality.
|
| 188 |
|
| 189 |
### Capabilities
|
| 190 |
|
|
|
|
| 195 |
| Reranking | Cross-encoder `mmarco-mMiniLMv2-L12-H384-v1` |
|
| 196 |
| Agent flows | Plan-and-Execute with six tools, ReAct sub-agent and conversation memory |
|
| 197 |
| Evaluation | RAGAS metrics (faithfulness, answer relevancy, context precision) |
|
| 198 |
+
| Traceability | Each answer includes source references with chunk ID and page number, plus structured logging |
|
| 199 |
| Provider abstraction | Factory pattern that allows swapping between Ollama, OpenAI, Azure OpenAI, Anthropic and Google GenAI without touching business code |
|
| 200 |
| Deployment | Docker Compose for local setup, Hugging Face Spaces for the public demo |
|
| 201 |
|
|
|
|
| 209 |
|
| 210 |
The system can run in two different modes, switchable via the `AGENT_MODE` environment variable.
|
| 211 |
|
| 212 |
+
**Pipeline** (`AGENT_MODE=pipeline`) is a fixed LangGraph DAG that runs language detection, optional translation, hybrid retrieval, reranking, generation, and a confidence-based retry loop. It works well with small local models that don't support tool calling.
|
| 213 |
|
| 214 |
+
**Plan-and-Execute agent** (`AGENT_MODE=react`, default) is multi-step: a planner first decomposes the query into sub-tasks, an executor runs each sub-task through a ReAct sub-agent with access to the tools listed below, and a synthesizer combines the results into a single cited answer. It uses conversation memory for follow-up questions and requires a model that supports tool calling.
|
| 215 |
|
| 216 |
| Tool | Purpose |
|
| 217 |
|---|---|
|
|
|
|
| 224 |
|
| 225 |
### Production considerations
|
| 226 |
|
| 227 |
+
Every answer points back to the chunks it was built on, with document ID, page number and the chunk text itself, so answers can be checked after the fact. The RAGAS evaluation in `src/evaluation/` measures faithfulness and context precision, which lets you catch regressions before a change goes live.
|
| 228 |
+
|
| 229 |
+
Configuration lives in environment variables via `src/config.py`; there are no hardcoded paths, model names or API keys. The application code never imports a provider SDK directly — LLM and embedding backends are loaded through `create_llm()` and `create_embeddings()`, so you can switch between Ollama, OpenAI and others without touching the rest of the code. The default setup runs locally without any external API calls.
|
|
|
|
|
|
|
|
|
|
| 230 |
|
| 231 |
### Tech stack
|
| 232 |
|
|
|
|
| 253 |
|
| 254 |
The demo lives at [xq-dokumentassistent.hf.space](https://xq-dokumentassistent.hf.space).
|
| 255 |
|
| 256 |
+
Try these questions, or ask one of your own in any language.
|
| 257 |
|
| 258 |
- "Hvad er KU's politik for brug af AI-værktøjer?"
|
| 259 |
- "Hvilke regler gælder for brug af generativ AI i eksamen?"
|