Ir al contenido
Nibiru docsv0.9.2

Plugin de chat

Completaciones de chat de una o varias turnos contra cualquier punto final compatible con Ollama.

Stable Reading time ~ 2 min Edit on GitHub

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.

$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 (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"

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

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.

  • Olvidar complete(). El constructor fluido no ejecuta nada hasta que se llama a complete() o ask().
  • 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 segmentar history() 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.