Chat-Plugin
Einzel- oder mehrstufige Chat-Vervollständigungen gegen einen beliebigen Ollama-kompatiblen Endpunkt.
Das Chat-Plugin ist das einfachste Element des KI-Moduls. Es umhüllt Ollamas /api/chat mit einem flüssigen Builder, einer Konversationsmemory, einem automatischen Fallback auf ein Sicherheitsmodell und einem ask()-Shortcut für einen Einzeiler.
API im Überblick
Abschnitt betitelt „API im Überblick“$ai = new \Nibiru\Module\Ai\Ai();$chat = $ai->chat();
$chat->system('Be terse.'); / optional system prompt$chat->model('qwen2.5-coder:14b'); / override the configured model$chat->temperature(0.2); / override config$chat->maxTokens(512); / override config
$chat->user('Hello'); / append a user message$chat->assistant('Hi.'); / append an assistant message (rare)
$reply = $chat->complete(); / run the call, return text$reply = $chat->ask('How are you?'); / = ->user(...)->complete()
$chat->reset(); / clear messages, keep model + system$chat->history(); / [{role, content}, …]Einmalig
Abschnitt betitelt „Einmalig“echo (new \Nibiru\Module\Ai\Ai()) ->chat() ->ask('In one sentence, what does Form::create() do?');Mehrfachgespräch
Abschnitt betitelt „Mehrfachgespräch“$chat = $ai->chat();
$chat->user('Name three Nibiru singletons.');$singletons = $chat->complete(); / appended to history
$chat->user('What does the second one do?');$detail = $chat->complete(); / model has full contextÜberschreiben des Modells und des Stils pro Aufruf
Abschnitt betitelt „Überschreiben des Modells und des Stils pro Aufruf“$german = $ai->chat() ->system('Answer in German. Be precise.') ->model('qwen2.5-coder:14b') ->temperature(0.1) ->ask('Wie definiere ich einen Controller?');Automatischer Fallback
Abschnitt betitelt „Automatischer Fallback“Wenn chat.model (z.B. nibiru-coder:1.0) nicht auf dem Ollama-Server verfügbar ist, führt das Plugin den Aufruf mit chat.fallback_model (z.B. qwen2.5-coder:14b) erneut aus. Dies gewährleistet, dass Ihre Anwendung weiterhin funktioniert, während Sie die Feinabstimmung erstellen.
[AI]chat.model = "nibiru-coder:1.0"chat.fallback_model = "qwen2.5-coder:14b"Anbieter wechseln
Abschnitt betitelt „Anbieter wechseln“Standard: Ollama. Um Anthropic Claude als Backend zu verwenden:
[AI]chat.provider = "anthropic"anthropic.api_key = "sk-ant-..."anthropic.model = "claude-haiku-4-5-20251001"Der Chat-Plugin verfügt derzeit nicht über die Anthropic-Transport-Funktion im Framework-Modul — für jetzt ist das Muster in scripts/lib/providers.mjs der Dokumentationssite das Referenzmodell. (Siehe die Roadmap.)
Ein praktisches Muster: Chat als eine Aktion
Abschnitt betitelt „Ein praktisches Muster: Chat als eine Aktion“namespace Nibiru;use Nibiru\Adapter\Controller;use Nibiru\Module\Ai\Ai;
class supportController extends Controller{ public function askAction(): void { View::forwardToJsonHeader(); $q = trim($this->getPost('question', '')); if ($q === '') { View::assign(['data' => ['error' => 'question required']]); return; } $reply = (new Ai())->chat() ->system('You are the Nibiru support assistant. Be brief.') ->ask($q); View::assign(['data' => ['answer' => $reply]]); }
public function pageAction(): void {} public function navigationAction(): void { JsonNavigation::getInstance()->loadJsonNavigationArray(); }}Sechs Zeilen plus Boilerplate und Sie haben einen durch Ihren eigenen Ollama gestützten AJAX-aufrufbaren KI-Endpunkt.
Häufige Fallen
Abschnitt betitelt „Häufige Fallen“- Vergessen Sie
complete(). Der fließende Builder führt nichts aus, biscomplete()oderask()aufgerufen wird. - Aufruf von
assistant()zwischen Benutzerabläufen. Es dient dazu, eine gespeicherte Konversation wiederzugeben und nicht für die normale Nutzung. - Lange Konversationen. Jeder Ablauf sendet die vollständige Geschichte erneut. Verkürzen Sie dies mit
reset()oder durch Schneiden vonhistory(), wenn Sie den älteren Kontext nicht mehr benötigen. - Temperatur zu niedrig einstellen. 0 macht das Modell steif; 0,3–0,5 ist der ideale Bereich für technische Antworten.