Skip to content

KI: dritter Anbieter „OpenAI-kompatibel“ (Ollama, LM Studio, OpenAI, OpenRouter, Qwen) - #3

Merged
leonatwork merged 1 commit into
mainfrom
claude/local-ai-compatibility-63acdc
Oct 12, 2026
Merged

leonatwork merged 1 commit into
mainfrom
claude/local-ai-compatibility-63acdc

Conversation

@leonatwork

Copy link
Copy Markdown
Owner

Worum es geht

Neben Foundry und der Claude API kann Plotwerk jetzt jeden Dienst mit OpenAI-kompatibler Chat-Completions-API nutzen: lokal (Ollama, LM Studio) oder in der Cloud (OpenAI, OpenRouter, Qwen/Alibaba Cloud, eigene URL). Entscheidung E15 in docs/architektur.md.

Wie

  • core/ki/openai.ts: übersetzt Messages-API ⇄ Chat Completions. Prompt, Allowlist (E12), Zitatprüfung (E6) und Antwortprüfung bleiben unverändert. Das Schema geht als response_format (json_schema strict, bei Qwen json_object mit Schema im Prompt). <think>-Blöcke und ```-Zäune werden vor dem JSON entfernt.
  • Transport (src/backend/tauri/kiTransport.ts): Übersetzung, Prüfung auf ein eingetragenes Modell, Ablehnung zu großer Anfragen bei gesetzter Kontextlänge (statt still gekürztem Buch). Kein count_tokens → Schätzung.
  • Rust (plotwerk-ki): Anbieter::OpenAi → {endpoint}/chat/completions, Authorization: Bearer nur wenn ein Schlüssel hinterlegt ist (Konto openai-kompatibel), http:// nur für localhost, Zeitlimit 30 min.
  • Datenmodell (additiv): KiAnbieter + 'openai', ki.openai{vorlage, endpoint, modelle, kontextTokens?}. Beim Umschalten geht nichts verloren.
  • Kosten: Listenpreise gibt es nur für Claude. Sonst steht „keine Angabe – rechnet der Dienst ab (lokal kostenlos)“, und Ablagen speichern kein kostenUsd.
  • Einstellungsdialog: Dienst, Basis-URL, Modelle je Rolle, Kontextlänge, Datenschutzhinweis je Dienst.

Tests

  • npm test: 1105 Tests grün, npm run typecheck sauber
  • neu: Übersetzer, ganzer Prüflauf über die Übersetzung (dieselben Hinweise wie mit Claude), Transport, Einstellungsdialog, Roundtrip von projekt.md
  • cargo test, cargo clippy, cargo fmt --check sauber; neue HTTP-Tests für /chat/completions
  • Browser-Demo: Dialog und Kostenanzeige im Prüf-Dialog geprüft

Offen

  • Noch nicht gegen einen echten Ollama-, LM-Studio- oder OpenRouter-Server getestet
  • Nicht gegen die Doku geprüft: DashScope-URL und OpenRouter-Felder (require_parameters, data_collection: "deny")
  • Texte nennen noch Claude-Modelle („Tiefencheck mit Opus“, „Haiku liest …“); „Effort“ wird auch angezeigt, wo der Dienst ihn nicht bekommt
  • Ein Schlüsselbund-Eintrag für alle OpenAI-kompatiblen Dienste

🤖 Generated with Claude Code

…OpenRouter, Qwen)

core/ki baut weiter Messages-API-Bodys; der Transport übersetzt nach Chat
Completions und zurück (core/ki/openai.ts). Der Rust-Kern schickt an
/chat/completions mit optionalem Bearer-Schlüssel (Konto „openai-kompatibel“,
http nur für localhost, Zeitlimit 30 min).

- Vorlagen mit Standard-URL, Antwortformat (json_schema bzw. json_object) und
  Effort-Übergabe; Modelle ohne Claude-Standard, leere Rolle = Prüfmodell
- optionale Kontextlänge: zu große Anfragen werden vorher abgelehnt statt still
  gekürzt
- kein count_tokens (Schätzung), keine Listenpreise (Kosten „keine Angabe“,
  Ablagen ohne kostenUsd)
- Einstellungsdialog mit Dienst, Basis-URL, Modellen, Kontextlänge
- Entscheidung E15 in docs/architektur.md, Details in core/ki/README.md

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Leon Machnik <98738343+leonatwork@users.noreply.github.com>
@leonatwork
leonatwork merged commit b892208 into main Oct 12, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant