Fuente de datos: AI


1Presentación

La fuente de datos \Temma\Datasources\Ai ofrece una interfaz unificada para consultar modelos de lenguaje (LLM) de diversos proveedores: OpenAI, Claude (Anthropic), Gemini (Google), Mistral, OpenRouter, Ollama, así como cualquier servicio compatible con OpenAI.

Para la documentación completa (adjuntos, salida en JSON, conversación con múltiples turnos, servicios compatibles con OpenAI), consulta la página dedicada a la inteligencia artificial.

Si has configurado correctamente los parámetros de conexión, Temma crea automáticamente un objeto de tipo \Temma\Datasources\Ai. Por convención, supondremos que has llamado a esta conexión ai en el archivo etc/temma.php (consulta la documentación de configuración).

En los controladores, la conexión está disponible escribiendo:

$ai = $this->ai;

En otros objetos gestionados por el componente de inyección de dependencias, la conexión es accesible escribiendo:

$ai = $loader->dataSources->ai;
$ai = $loader->dataSources['ai'];

2Configuración

El DSN de conexión se escribe así:

ai://PROVIDER/MODEL#API_KEY

Proveedores integrados:

  • openai: OpenAI (GPT-4o, etc.)
  • claude: Anthropic Claude
  • gemini: Google Gemini
  • mistral: Mistral AI
  • openrouter: OpenRouter (pasarela multimodelo)
  • ollama: Ollama (modelos locales, sin necesidad de clave de API)

Ejemplo de configuración en etc/temma.php:

<?php

return [
    'application' => [
        'dataSources' => [
            'ai' => 'ai://openai/gpt-4o#sk-proj-xxxxxxxxxxxxx',
        ],
    ],
];

Para un servicio compatible con OpenAI, usa la URL del endpoint entre corchetes:

ai://[https://api.groq.com/openai/v1/chat/completions]/llama-3.3-70b#gsk-XXX

3Llamadas unificadas

3.1Acceso tipo array

Devuelve una respuesta en texto.

$response = $ai['¿Cuál es la capital de Francia?'];

3.2Método read()

Devuelve una respuesta en texto bruto.

// prompt simple
$response = $ai->read('¿Cuál es la capital de Francia?');

// con un valor por defecto en caso de error
$response = $ai->read('Traduce al francés: Hola', 'Bonjour');

3.3Método get()

Activa automáticamente el modo JSON y devuelve un array de PHP decodificado.

// se fuerza al LLM a responder en JSON
$data = $ai->get('Enumera las 3 ciudades más grandes de Francia con su población');
// $data contiene un array de PHP

4Opciones

Los métodos read() y get() aceptan un tercer parámetro $options:

  • system: (string) Prompt del sistema.
  • messages: (array) Historial de la conversación.
  • temperature: (float) Temperatura (0 a 2).
  • max_tokens: (int) Límite de tokens de salida.
  • attachments: (array) Adjuntos (imágenes, audio, vídeo, PDF).
  • output: (string) Formato de salida (alias o tipo MIME).

Para todos los detalles sobre las opciones, los adjuntos, la salida en JSON y las conversaciones con múltiples turnos, consulta la documentación completa de inteligencia artificial.

Ejemplo:

$response = $ai->read('Explica la fotosíntesis', null, [
    'system'      => 'Eres un profesor de biología. Responde de forma concisa.',
    'temperature' => 0.3,
    'max_tokens'  => 500,
]);