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,
]);