Plugin de chat
Completaciones de chat de una o varias turnos contra cualquier punto final compatible con Ollama.
El complemento de chat es la pieza más simple del módulo de IA. Envuelve la API de Ollama con un constructor fluido, memoria de conversación, una caída automática a un modelo de respaldo y un atajo ask() en un solo paso.
Vista general de la API
Sección titulada «Vista general de la 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}, …]En un solo paso
Sección titulada «En un solo paso»echo (new \Nibiru\Module\Ai\Ai()) ->chat() ->ask('In one sentence, what does Form::create() do?');Multiturno
Sección titulada «Multiturno»$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 contextSobrescribir modelo y estilo por llamada
Sección titulada «Sobrescribir modelo y estilo por llamada»$german = $ai->chat() ->system('Answer in German. Be precise.') ->model('qwen2.5-coder:14b') ->temperature(0.1) ->ask('Wie definiere ich einen Controller?');Fallback automático
Sección titulada «Fallback automático»Si chat.model (por ejemplo, nibiru-coder:1.0) no está en el servidor Ollama, el complemento vuelve a ejecutar la llamada con chat.fallback_model (por ejemplo, qwen2.5-coder:14b). Esto mantiene tu aplicación funcionando mientras sigues construyendo el ajuste fino.
[AI]chat.model = "nibiru-coder:1.0"chat.fallback_model = "qwen2.5-coder:14b"Cambiar proveedores
Sección titulada «Cambiar proveedores»Por defecto: Ollama. Para usar Anthropic Claude como el backend:
[AI]chat.provider = "anthropic"anthropic.api_key = "sk-ant-..."anthropic.model = "claude-haiku-4-5-20251001"El complemento de chat no incluye el transporte de Anthropic en el módulo del framework aún — por ahora, el patrón de scripts/lib/providers.mjs del sitio de documentación es la referencia. (Consulte la Hoja de ruta.)
Un patrón práctico: chat-como-una-acción
Sección titulada «Un patrón práctico: chat-como-una-acción»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(); }}Seis líneas más el código base, y tienes un punto final de IA accesible mediante AJAX respaldado por tu propio Ollama.
Trucos comunes
Sección titulada «Trucos comunes»- Olvidar
complete(). El constructor fluido no ejecuta nada hasta que se llama acomplete()oask(). - Llamar a
assistant()entre turnos de usuario. Está ahí para reproducir una conversación guardada, no para uso normal. - Conversaciones largas. Cada turno reenvía la historia completa. Recorta con
reset()o por segmentarhistory()cuando ya no necesites el contexto más antiguo. - Establecer temperatura demasiado baja. 0 hace que el modelo sea rígido; 0.3–0.5 es el punto óptimo para respuestas técnicas.