Zum Inhalt springen
Nibiru docsv0.9.2

Chat-Plugin

Einzel- oder mehrstufige Chat-Vervollständigungen gegen einen beliebigen Ollama-kompatiblen Endpunkt.

Stable Reading time ~ 2 min Edit on GitHub

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.

$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}, ]
echo (new \Nibiru\Module\Ai\Ai())
->chat()
->ask('In one sentence, what does Form::create() do?');
$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?');

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"

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.)

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.

  • Vergessen Sie complete(). Der fließende Builder führt nichts aus, bis complete() oder ask() 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 von history(), 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.