Source de données : OpenAI
1Présentation
OpenAI propose des modèles de langage (LLM) accessibles via une API, permettant de générer du texte, répondre à des questions, traduire, résumer, etc.
La source de données \Temma\Datasources\OpenAi facilite l'accès à l'API Chat Completions d'OpenAI.
Si vous avez correctement configuré les paramètres de connexion au service OpenAI, Temma crée automatiquement un objet de type \Temma\Datasources\OpenAi, avec lequel vous pourrez interroger les modèles de langage. Par convention, nous partirons du principe que vous avez nommé cette connexion openai dans le fichier etc/temma.php (voir la documentation de la configuration).
Dans les contrôleurs, la connexion à OpenAI est alors disponible en écrivant :
$openai = $this->openai;
Dans les autres objets gérés par le composant d'injection de dépendances, la connexion à OpenAI est accessible en écrivant :
$openai = $loader->dataSources->openai;
$openai = $loader->dataSources['openai'];
2Configuration
Pour utiliser l'API OpenAI, vous devez disposer d'une clé API.
Dans le fichier etc/temma.php (voir la documentation de la configuration), vous pourrez alors déclarer le DSN (Data Source Name) qui permet de se connecter à OpenAI.
Le DSN de connexion à OpenAI s'écrit de la forme :
openai://chat/MODÈLE/CLÉ_API
Avec MODÈLE l'identifiant du modèle de langage à utiliser (par exemple gpt-4o, gpt-4-turbo, etc.) et CLÉ_API votre clé API OpenAI.
Exemple de configuration dans etc/temma.php :
<?php
return [
'application' => [
'dataSources' => [
'openai' => 'openai://chat/gpt-4o/sk-proj-xxxxxxxxxxxxx',
],
],
];
3Appels unifiés
3.1Accès de type tableau
// envoie un prompt et récupère la réponse
$response = $openai['Quelle est la capitale de la France ?'];
3.2Méthode avancée
// envoie un prompt et récupère la réponse
$response = $openai->read('Quelle est la capitale de la France ?');
// avec une valeur par défaut en cas d'erreur
$response = $openai->read(
'Traduis en anglais : Bonjour le monde',
'Hello world'
);
// avec une fonction de rappel en cas d'erreur
$response = $openai->read(
'Traduis en anglais : Bonjour le monde',
function() {
return 'Valeur de remplacement';
}
);
4Options
Les méthodes read() et get() acceptent un troisième paramètre $options, un tableau associatif permettant de configurer l'appel :
- system : (string) Prompt système définissant le comportement de l'assistant.
- messages : (array) Tableau de messages précédents pour une conversation multi-tours (voir la section suivante).
- temperature : (float) Température d'échantillonnage, entre 0 et 2. Les valeurs basses rendent les réponses plus déterministes, les valeurs hautes les rendent plus aléatoires.
- max_tokens : (int) Nombre maximal de tokens dans la réponse.
Exemple :
$response = $openai->read('Explique la photosynthèse', null, [
'system' => 'Tu es un professeur de biologie. Réponds de manière concise.',
'temperature' => 0.3,
'max_tokens' => 500,
]);
5Conversation multi-tours
Il est possible de mener des conversations multi-tours en fournissant l'historique des messages précédents via l'option messages. Chaque message est un tableau associatif contenant les clés role (user ou assistant) et content.
Exemple :
$response = $openai->read('Et celle de l\'Italie ?', null, [
'system' => 'Tu es un assistant géographique.',
'messages' => [
['role' => 'user', 'content' => 'Quelle est la capitale de la France ?'],
['role' => 'assistant', 'content' => 'La capitale de la France est Paris.'],
],
]);
// $response contient "La capitale de l'Italie est Rome."