Fonte de dados: AI


1Apresentação

A fonte de dados \Temma\Datasources\Ai oferece uma interface unificada para consultar modelos de linguagem (LLMs) de diversos provedores: OpenAI, Claude (Anthropic), Gemini (Google), Mistral, OpenRouter, Ollama, além de qualquer serviço compatível com a OpenAI.

Para a documentação completa (anexos, saída em JSON, conversa com múltiplas interações, serviços compatíveis com a OpenAI), consulte a página dedicada à inteligência artificial.

Se você configurou corretamente os parâmetros de conexão, o Temma cria automaticamente um objeto do tipo \Temma\Datasources\Ai. Por convenção, vamos considerar que você nomeou essa conexão ai no arquivo etc/temma.php (veja a documentação de configuração).

Nos controladores, a conexão fica disponível ao escrever:

$ai = $this->ai;

Em outros objetos gerenciados pelo componente de injeção de dependências, a conexão é acessível ao escrever:

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

2Configuração

O DSN de conexão é escrito da seguinte forma:

ai://PROVIDER/MODEL#API_KEY

Provedores integrados:

  • openai: OpenAI (GPT-4o, etc.)
  • claude: Anthropic Claude
  • gemini: Google Gemini
  • mistral: Mistral AI
  • openrouter: OpenRouter (gateway multi-modelo)
  • ollama: Ollama (modelos locais, sem necessidade de chave de API)

Exemplo de configuração em etc/temma.php:

<?php

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

Para um serviço compatível com a OpenAI, use a URL do endpoint entre colchetes:

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

3Chamadas unificadas

3.1Acesso como array

Retorna uma resposta em texto.

$response = $ai['Qual é a capital da França?'];

3.2Método read()

Retorna uma resposta em texto bruto.

// prompt simples
$response = $ai->read('Qual é a capital da França?');

// com um valor padrão em caso de erro
$response = $ai->read('Traduza para o francês: Olá', 'Bonjour');

3.3Método get()

Ativa automaticamente o modo JSON e retorna um array PHP decodificado.

// o LLM é forçado a responder em JSON
$data = $ai->get('Liste as 3 maiores cidades da França com sua população');
// $data contém um array PHP

4Opções

Os métodos read() e get() aceitam um terceiro parâmetro $options:

  • system: (string) Prompt do sistema.
  • messages: (array) Histórico da conversa.
  • temperature: (float) Temperatura (0 a 2).
  • max_tokens: (int) Limite de tokens de saída.
  • attachments: (array) Anexos (imagens, áudio, vídeo, PDF).
  • output: (string) Formato de saída (alias ou tipo MIME).

Para todos os detalhes sobre as opções, os anexos, a saída em JSON e as conversas com múltiplas interações, consulte a documentação completa sobre inteligência artificial.

Exemplo:

$response = $ai->read('Explique a fotossíntese', null, [
    'system'      => 'Você é um professor de biologia. Responda de forma concisa.',
    'temperature' => 0.3,
    'max_tokens'  => 500,
]);