Aller au contenu
Nibiru docsv0.9.2

Plugin de chat

Conversations à un ou plusieurs tours contre n'importe quel point de terminaison compatible avec Ollama.

Stable Reading time ~ 2 min Edit on GitHub

Le plugin de chat est la pièce la plus simple du module IA. Il encapsule l’API /api/chat d’Ollama avec un constructeur fluide, une mémoire de conversation, un basculement automatique vers un modèle de sauvegarde et un raccourci ask() en une seule étape.

$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
$german = $ai->chat()
->system('Answer in German. Be precise.')
->model('qwen2.5-coder:14b')
->temperature(0.1)
->ask('Wie definiere ich einen Controller?');

Si chat.model (par exemple nibiru-coder:1.0) n’est pas sur le serveur Ollama, le plugin relance l’appel avec chat.fallback_model (par exemple qwen2.5-coder:14b). Cela assure que votre application continue de fonctionner pendant que vous construisez la fine-tune.

[AI]
chat.model = "nibiru-coder:1.0"
chat.fallback_model = "qwen2.5-coder:14b"

Par défaut : Ollama. Pour utiliser Anthropic Claude comme backend :

[AI]
chat.provider = "anthropic"
anthropic.api_key = "sk-ant-..."
anthropic.model = "claude-haiku-4-5-20251001"

Le plugin de conversation ne fournit pas encore le transport Anthropic dans le module du cadre — pour l’instant, le modèle de scripts/lib/providers.mjs sur le site des documents est la référence. (Consultez le 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();
}
}

Six lignes plus du code standard, et vous avez un point d’entrée IA appelable via AJAX basé sur votre propre Ollama.

  • Oublier complete(). Le constructeur fluide ne fait rien jusqu’à ce que complete() ou ask() soit appelé.
  • Appeler assistant() entre les tours de l’utilisateur. C’est là pour relire une conversation enregistrée, pas pour un usage normal.
  • Longues conversations. Chaque tour renvoie l’ensemble de l’historique. Utilisez reset() ou découpez history() lorsque vous n’avez plus besoin du contexte plus ancien.
  • Définir la température trop basse. 0 rend le modèle rigide ; 0,3–0,5 est le point d’équilibre idéal pour les réponses techniques.