Wiki source code of KI-Funktionen im Wiki (LLM Application)
Last modified by Claude Code on 2026/07/03 20:25
Hide last authors
| author | version | line-number | content |
|---|---|---|---|
| |
1.1 | 1 | {{toc/}} |
| 2 | |||
| 3 | = Überblick = | ||
| 4 | |||
| 5 | Dieses Wiki hat eine vollständige KI-Integration auf Basis der [[LLM Application>>https://extensions.xwiki.org/xwiki/bin/view/Extension/LLM/]] (Version 0.8). Als LLM-Provider dient der [[GWDG Chat-AI-Dienst>>https://docs.hpc.gwdg.de/services/ai-services/chat-ai/]] (Academic Cloud) mit OpenAI-kompatibler API. | ||
| 6 | |||
| 7 | = Chat = | ||
| 8 | |||
| 9 | Der KI-Chat ist auf zwei Wegen erreichbar: | ||
| 10 | |||
| 11 | * Über den **✨ Chat**-Button unten rechts auf jeder Wiki-Seite | ||
| 12 | * Über die [[LLM Application>>AI.WebHome]] Startseite | ||
| 13 | |||
| 14 | == Verfügbare Modelle == | ||
| 15 | |||
| 16 | |=Modell|=Kontext|=Geeignet für | ||
| 17 | |llama-3.1-8b-instruct|128k|Schnelle, einfache Anfragen | ||
| 18 | |qwen3.5-122b-a10b|128k|Allround, **mit Wiki-Kontext (RAG)** | ||
| 19 | |mistral-large-3-675b-instruct|256k|Komplexe Aufgaben, lange Texte | ||
| 20 | |deepseek-r1-distill-llama-70b|32k|Reasoning-Aufgaben | ||
| 21 | |qwen3-coder-30b-a3b-instruct|128k|Code | ||
| 22 | |||
| 23 | = Wiki-Inhalte als Kontext (RAG) = | ||
| 24 | |||
| 25 | Das Modell **qwen3.5-122b-a10b** beantwortet Fragen mit Kontext aus dem Wiki: Die Collection [[wiki-inhalte>>AI.Collections.wiki-inhalte.WebHome]] indexiert die Spaces **Main** und **Documentation** (Embedding-Modell: multilingual-e5-large-instruct, 1000-Zeichen-Chunks). Antworten enthalten Quellenangaben. | ||
| 26 | |||
| 27 | Geänderte Seiten in den indexierten Spaces werden automatisch neu indexiert. Weitere Spaces lassen sich in der Collection-Konfiguration ergänzen. | ||
| 28 | |||
| 29 | = KI im Editor = | ||
| 30 | |||
| 31 | Im WYSIWYG-Editor: | ||
| 32 | |||
| 33 | * **✨-Icon** in der Toolbar (aktiv bei Textauswahl): Umschreiben, Zusammenfassen etc. | ||
| 34 | * **/-Quick-Action**: {{code}}/{{/code}} tippen und die AI-Aktion wählen, um Text generieren zu lassen | ||
| 35 | |||
| 36 | = Eigene Prompts = | ||
| 37 | |||
| 38 | In der [[Prompt-Datenbank>>AI.PromptDB.WebHome]] lassen sich wiederverwendbare System-Prompts anlegen, die im Chat per Dropdown auswählbar sind. | ||
| 39 | |||
| 40 | = API-Zugriff = | ||
| 41 | |||
| 42 | == OpenAI-kompatible API == | ||
| 43 | |||
| 44 | Das Wiki stellt selbst eine OpenAI-kompatible API bereit (mit Wiki-Rechteprüfung): | ||
| 45 | |||
| 46 | {{code language="none"}} | ||
| 47 | POST /rest/wikis/xwiki/aiLLM/v1/chat/completions | ||
| 48 | GET /rest/wikis/xwiki/aiLLM/v1/models | ||
| 49 | {{/code}} | ||
| 50 | |||
| 51 | == MCP-Server == | ||
| 52 | |||
| 53 | Für KI-Agents (z.B. Claude Code) gibt es einen MCP-Endpoint (Streamable HTTP): | ||
| 54 | |||
| 55 | {{code language="none"}} | ||
| 56 | POST /rest/wikis/xwiki/aiLLM/mcp | ||
| 57 | {{/code}} | ||
| 58 | |||
| 59 | Tools: {{code}}search_wiki{{/code}} (RAG-Suche über die Collections), {{code}}list_collections{{/code}}. | ||
| 60 | |||
| 61 | Authentifizierung über die Token-Auth-Extension: Externe Anwendungen werden unter [[Authorized Applications>>AI.Authorized Applications.WebHome]] mit einem Ed25519-Public-Key registriert und schicken EdDSA-signierte JWTs als Bearer-Token ({{code}}iss{{/code}} = registrierte App-URL, {{code}}aud{{/code}} = Wiki-Root-URL, {{code}}exp{{/code}} max. 25h). Ohne Token laufen Anfragen als Gast. | ||
| 62 | |||
| 63 | = Administration = | ||
| 64 | |||
| 65 | * [[Server-Einstellungen>>path:/bin/admin/XWiki/XWikiPreferences?editor=globaladmin§ion=AI%20LLM%20Application]] — LLM-Server (URL-Prefix **muss mit / enden**), API-Token, Chat-Widget | ||
| 66 | * [[Modelle>>AI.Models.WebHome]] — Modell-Einträge. Wichtig: ohne **Group**-Zuweisung ist ein Modell für niemanden sichtbar; bei Embedding-Modellen **Maximum parallelism** klein halten (z.B. 5), sonst lehnt die GWDG-API große Batches ab | ||
| 67 | * [[Collections>>AI.Collections.WebHome]] — RAG-Indexe; Chunk-Größe muss zum Token-Limit des Embedding-Modells passen (512 Tokens ≈ 1000 Zeichen) | ||
| 68 | |||
| 69 | Eingerichtet: Juli 2026 | ||
| 70 |