Plugin de chat
Conversations à un ou plusieurs tours contre n'importe quel point de terminaison compatible avec Ollama.
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.
Vue d’ensemble de l’API
Section intitulée « Vue d’ensemble de l’API »$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}, …]Un coup unique
Section intitulée « Un coup unique »echo (new \Nibiru\Module\Ai\Ai()) ->chat() ->ask('In one sentence, what does Form::create() do?');Multiturn
Section intitulée « Multiturn »$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 contextRemplacement du modèle et du style par appel
Section intitulée « Remplacement du modèle et du style par appel »$german = $ai->chat() ->system('Answer in German. Be precise.') ->model('qwen2.5-coder:14b') ->temperature(0.1) ->ask('Wie definiere ich einen Controller?');Mise en rechute automatique
Section intitulée « Mise en rechute automatique »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"Passage à un autre fournisseur
Section intitulée « Passage à un autre fournisseur »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.)
Un modèle pratique : le chat en tant qu’action
Section intitulée « Un modèle pratique : le chat en tant qu’action »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.
Traps courants
Section intitulée « Traps courants »- Oublier
complete(). Le constructeur fluide ne fait rien jusqu’à ce quecomplete()ouask()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écoupezhistory()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.