Last modified by Claude Code on 2026/07/03 21:06

Hide last authors
Claude Code 1.1 1 {{info}}
2 Betriebs-/Admin-Dokumentation der KI-Integration **dieses Wikis** (xw.jv0.me). Die Nutzer-Doku ist unter [[KI-Funktionen>>Documentation.KI-Funktionen]] zu finden. Secrets (GWDG-API-Key, private Schlüssel) liegen ausschließlich in der Wiki-/Serverkonfiguration bzw. auf dem Admin-Rechner.
3 {{/info}}
4
5 {{toc/}}
6
7 = Installierte Extensions (Version 0.8, Stand 2026-07-02) =
8
9 * LLM Application (BETA) — Haupt-Extension, Chat-UI + Widget
10 * LLM Models API / LLM Index API (BETA) — Dependencies
11 * Index for the LLM Application (BETA) — RAG/Collections
12 * LLM MCP Server (BETA) — MCP-Endpoint für externe Agents
13 * LLM Internal Inference Server (BETA)
14 * Token-based authentication (BETA) — installiert 2026-07-02
15
16 = Server-Konfiguration =
17
18 [[Administration → AI LLM Application>>path:/bin/admin/XWiki/XWikiPreferences?editor=globaladmin&section=AI%20LLM%20Application]]
19
20 |=Feld|=Wert
21 |Server Name|{{code}}gwgd{{/code}} (Tippfehler, gemeint: gwdg — beim Umbenennen müssen alle Modell-Einträge angepasst werden)
22 |URL Prefix|{{code}}https://chat-ai.academiccloud.de/v1/{{/code}}
23 |Token|GWDG-API-Key (in der Konfiguration hinterlegt)
24 |Can Stream|ja
25
26 {{warning}}
27 Das URL-Prefix **muss mit /** enden. Ohne abschließenden Slash baut die Extension {{code}}.../v1chat/completions{{/code}} und GWDG antwortet mit 401.
28 {{/warning}}
29
30 = Modelle =
31
32 Verwaltung unter [[AI.Models>>AI.Models.WebHome]]. Alle Einträge: Server {{code}}gwgd{{/code}}, Group {{code}}XWiki.XWikiAllGroup{{/code}}, Allow guests = No. Am 2026-07-02 per Testprompt verifiziert.
33
34 |=Page|=Model id|=Context size
35 |llama-3.1-8b-instruct|meta-llama-3.1-8b-instruct|128000
36 |qwen3.5-122b-a10b|qwen3.5-122b-a10b|128000
37 |mistral-large-3-675b-instruct|mistral-large-3-675b-instruct-2512|256000
38 |deepseek-r1-distill-llama-70b|deepseek-r1-distill-llama-70b|32768
39 |qwen3-coder-30b-a3b-instruct|qwen3-coder-30b-a3b-instruct|128000
40
41 Embedding-Modell (für RAG):
42
43 |=Page|=Model id|=Dimensions|=Context size|=Max. Parallelism
44 |multilingual-e5-large-instruct|multilingual-e5-large-instruct|1024|512|5
45
46 **Stolperfallen:**
47
48 * Ohne **Group**-Zuweisung erscheint ein Modell für niemanden in der Chat-Modell-Liste.
49 * Ohne **Maximum parallelism** schickt XWiki bis zu 100 Texte pro Embedding-Request — GWDG quittiert das mit leerem 500er. Wert 5 läuft stabil.
50 * Nicht (mehr) bei GWDG verfügbar: {{code}}openai-gpt-oss-120b{{/code}}, {{code}}e5-mistral-7b-instruct{{/code}} (leerer 500er = Modell-ID existiert nicht).
51 * Aktuelle GWDG-Modell-IDs: [[GWDG-Modellliste>>https://docs.hpc.gwdg.de/services/ai-services/chat-ai/models/]]
52
53 = RAG / Collection =
54
55 * Collection [[wiki-inhalte>>AI.Collections.wiki-inhalte.WebHome]]: indexiert Spaces **Main** und **Documentation**, Document Store = XWiki, Rights check = XWiki, Chunking 1000 Zeichen / 100 Overlap.
56 * Chunk-Größe muss zum Token-Limit des Embedding-Modells passen: 2000er Chunks sprengen die 512 Tokens → 400er Fehler.
57 * Collections werden pro **Modell** aktiviert (Modell-Edit → Filters/Context): aktuell bei {{code}}qwen3.5-122b-a10b{{/code}}.
58 * 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.
59
60 = Token-Auth / MCP =
61
62 Externe Apps (z.B. Claude Code) authentifizieren sich per Ed25519-signiertem JWT:
63
64 * App-Registrierung: [[Authorized Applications>>AI.Authorized Applications.WebHome]] — Eintrag {{code}}claude-code{{/code}}, Issuer {{code}}https://claude-code.local/mcp{{/code}}, Public Key hinterlegt.
65 * JWT-Anforderungen: {{code}}iss{{/code}} = App-URL, {{code}}aud{{/code}} enthält {{code}}https://xw.jv0.me/{{/code}}, {{code}}exp{{/code}} gesetzt (max. 25h), Signatur EdDSA.
66 * Serverseitig aktiviert (2026-07-02): {{code}}xwiki.authentication.authclass=org.xwiki.contrib.llm.authentication.JWTTokenAuth{{/code}} in xwiki.cfg; Fallback {{code}}llm.authentication.jwt.authenticator=org.xwiki.contrib.oidc.auth.OIDCAuthServiceImpl{{/code}} in der Konfigurations-Override-Datei — der OIDC-Browser-Login bleibt unverändert.
67 * **Bug + Workaround:** Token-Requests warfen 500 ({{code}}ClassNotFoundException: com.google.crypto.tink.subtle.Ed25519Verify{{/code}}) — Nimbus-JWT findet Tink wegen der Extension-Classloader-Hierarchie nicht. Workaround: das Tink-JAR aus dem Extension-Repository zusätzlich in {{code}}WEB-INF/lib{{/code}} des Tomcat legen und neu starten. Achtung: überlebt kein Container-Recreate — dauerhaft als Volume-Mount eintragen.
68 * MCP-Endpoint: {{code}}POST /rest/wikis/xwiki/aiLLM/mcp{{/code}}, Tools {{code}}search_wiki{{/code}} und {{code}}list_collections{{/code}} (auch authentifiziert nicht mehr; Schreib-Tools existieren im Quellcode, sind in 0.8 nicht freigeschaltet).
69 * Der JWT-User hat Schreibrechte in Main/Documentation/Sandbox, aber **nicht** im AI-Space.
70
71 = Editor-Integration =
72
73 ✨-Icon in der CKEditor-Toolbar und {{code}}/{{/code}}-Quick-Action "Generative AI". In Version 0.8 defekt — Details im [[Hotfix LLMAI-122>>Documentation.AI-LLM-Hotfix-LLMAI-122]].
74
75 = Offene Punkte =
76
77 * RAG-Quellenlinks zeigen {{code}}http://localhost:8080/...{{/code}} statt {{code}}https://xw.jv0.me/...{{/code}} → {{code}}xwiki.home=https://xw.jv0.me/{{/code}} in xwiki.cfg setzen, Neustart, danach Collection mit Clean re-indexieren.
78 * Tink-JAR-Workaround als dauerhaften Volume-Mount in die Compose-Datei übernehmen.
79 * Beim Upgrade auf Extension-Version ≥ 0.8.1: Merge-Konflikt bei {{code}}AI.Code.CKEditorPlugin{{/code}} zugunsten der Extension auflösen (Hotfix wird abgelöst).
80
81 Eingerichtet: 2026-07-02/03
82