AI/LLM Setup und Betrieb (xw.jv0.me)
Last modified by Claude Code on 2026/07/03 21:06
- Installierte Extensions (Version 0.8, Stand 2026-07-02)
- Server-Konfiguration
- Modelle
- RAG / Collection
- Token-Auth / MCP
- Editor-Integration
- Offene Punkte
Installierte Extensions (Version 0.8, Stand 2026-07-02)
- LLM Application (BETA) — Haupt-Extension, Chat-UI + Widget
- LLM Models API / LLM Index API (BETA) — Dependencies
- Index for the LLM Application (BETA) — RAG/Collections
- LLM MCP Server (BETA) — MCP-Endpoint für externe Agents
- LLM Internal Inference Server (BETA)
- Token-based authentication (BETA) — installiert 2026-07-02
Server-Konfiguration
Administration → AI LLM Application
| Feld | Wert |
|---|---|
| Server Name | gwgd (Tippfehler, gemeint: gwdg — beim Umbenennen müssen alle Modell-Einträge angepasst werden) |
| URL Prefix | https://chat-ai.academiccloud.de/v1/ |
| Token | GWDG-API-Key (in der Konfiguration hinterlegt) |
| Can Stream | ja |
Modelle
Verwaltung unter AI.Models. Alle Einträge: Server gwgd, Group XWiki.XWikiAllGroup, Allow guests = No. Am 2026-07-02 per Testprompt verifiziert.
| Page | Model id | Context size |
|---|---|---|
| llama-3.1-8b-instruct | meta-llama-3.1-8b-instruct | 128000 |
| qwen3.5-122b-a10b | qwen3.5-122b-a10b | 128000 |
| mistral-large-3-675b-instruct | mistral-large-3-675b-instruct-2512 | 256000 |
| deepseek-r1-distill-llama-70b | deepseek-r1-distill-llama-70b | 32768 |
| qwen3-coder-30b-a3b-instruct | qwen3-coder-30b-a3b-instruct | 128000 |
Embedding-Modell (für RAG):
| Page | Model id | Dimensions | Context size | Max. Parallelism |
|---|---|---|---|---|
| multilingual-e5-large-instruct | multilingual-e5-large-instruct | 1024 | 512 | 5 |
Stolperfallen:
- Ohne Group-Zuweisung erscheint ein Modell für niemanden in der Chat-Modell-Liste.
- Ohne Maximum parallelism schickt XWiki bis zu 100 Texte pro Embedding-Request — GWDG quittiert das mit leerem 500er. Wert 5 läuft stabil.
- Nicht (mehr) bei GWDG verfügbar: openai-gpt-oss-120b, e5-mistral-7b-instruct (leerer 500er = Modell-ID existiert nicht).
- Aktuelle GWDG-Modell-IDs: GWDG-Modellliste
RAG / Collection
- Collection wiki-inhalte: indexiert Spaces Main und Documentation, Document Store = XWiki, Rights check = XWiki, Chunking 1000 Zeichen / 100 Overlap.
- Chunk-Größe muss zum Token-Limit des Embedding-Modells passen: 2000er Chunks sprengen die 512 Tokens → 400er Fehler.
- Collections werden pro Modell aktiviert (Modell-Edit → Filters/Context): aktuell bei qwen3.5-122b-a10b.
- Re-Indexierung: Collection-Seite → "Start re-indexing". Clean nur bei Modell-/Dimensionswechsel nötig; einzelne transiente 500er verschwinden durch erneutes Re-Indexieren ohne Clean. Seiten-Updates in indexierten Spaces laufen automatisch.
Token-Auth / MCP
Externe Apps (z.B. Claude Code) authentifizieren sich per Ed25519-signiertem JWT:
- App-Registrierung: Authorized Applications — Eintrag claude-code, Issuer https://claude-code.local/mcp, Public Key hinterlegt.
- JWT-Anforderungen: iss = App-URL, aud enthält https://xw.jv0.me/, exp gesetzt (max. 25h), Signatur EdDSA.
- Serverseitig aktiviert (2026-07-02): xwiki.authentication.authclass=org.xwiki.contrib.llm.authentication.JWTTokenAuth in xwiki.cfg; Fallback llm.authentication.jwt.authenticator=org.xwiki.contrib.oidc.auth.OIDCAuthServiceImpl in der Konfigurations-Override-Datei — der OIDC-Browser-Login bleibt unverändert.
- Bug + Workaround: Token-Requests warfen 500 (ClassNotFoundException: com.google.crypto.tink.subtle.Ed25519Verify) — Nimbus-JWT findet Tink wegen der Extension-Classloader-Hierarchie nicht. Workaround: das Tink-JAR aus dem Extension-Repository zusätzlich in WEB-INF/lib des Tomcat legen und neu starten. Achtung: überlebt kein Container-Recreate — dauerhaft als Volume-Mount eintragen.
- MCP-Endpoint: POST /rest/wikis/xwiki/aiLLM/mcp, Tools search_wiki und list_collections (auch authentifiziert nicht mehr; Schreib-Tools existieren im Quellcode, sind in 0.8 nicht freigeschaltet).
- Der JWT-User hat Schreibrechte in Main/Documentation/Sandbox, aber nicht im AI-Space.
Editor-Integration
✨-Icon in der CKEditor-Toolbar und /-Quick-Action "Generative AI". In Version 0.8 defekt — Details im Hotfix LLMAI-122.
Offene Punkte
- RAG-Quellenlinks zeigen http://localhost:8080/... statt https://xw.jv0.me/... → xwiki.home=https://xw.jv0.me/ in xwiki.cfg setzen, Neustart, danach Collection mit Clean re-indexieren.
- Tink-JAR-Workaround als dauerhaften Volume-Mount in die Compose-Datei übernehmen.
- Beim Upgrade auf Extension-Version ≥ 0.8.1: Merge-Konflikt bei AI.Code.CKEditorPlugin zugunsten der Extension auflösen (Hotfix wird abgelöst).
Eingerichtet: 2026-07-02/03