Prism, le SDK agentique pour Laravel

À la façon de ChatGPT et consort, les services en ligne pour "interroger l'IA" reposent généralement sur au moins deux applications. Une interface utilisateur, qui vous permettra de chatter et envoyer vos prompts ainsi qu'une API qui expose le model IA pour pouvoir communiquer avec celui-ci.
Prism est un SDK qui facilitera la communication avec les modèles IA de manière agnostique !
L'évolution des models a peu à peu convergé vers un protocol de communication standardisé et partagé entre les acteurs IA. Néanmoins, chaque model dispose de ses propres spécificités. Certains font du texte, de l'audio et du traitement d'image, d'autres non.
Prism s'installe dans votre projet via composer composer require prism-php/prism
, et nécessitera l'installation de son fichier de configuration :
1php artisan vendor:publish --tag=prism-config
Dans le fichier de configuration, on trouve principalement deux sections prism_server
et providers
.
Dans la première, prism_server
, que nous n’aborderons que superficiellement, vous pourrez indiquer la mise en service du serveur Prism.
Ce serveur mettra à disposition dans votre application des routes spécifiques pour lister les models disponibles et permettre la mise en place de l'auto-complétion prédite par un model IA. Vous pourrez également ajouter des middlewares à ces routes, pour les sécuriser.
Pour conclure sur cette première section que je ne traiterai pas plus ici, la documentation officielle propose un exemple d'intégration de l'outil openwebui.com.
Open WebUI est une interface complète pour chat IA, en tout point ressemblante à ce qui se fait sur le marché des agents IA grand public. Cette interface couplée au serveur Prism et à un model, vous permettra d'accélérer l'intégration d'un agent IA dans votre entreprise.
La seconde section providers
permet d'ajouter la configuration des différents gestionnaires IA que vous allez utiliser.
Généralement, vous allez y renseigner une URL et une clef d'API pour accéder à votre model hébergé par vous-même ou par une des plateformes des acteurs majeurs comme Mistral ou ChatGPT.
Pour la suite de ce tutoriel, nous allons connecter notre application Laravel à un model Qwen3 que nous hébergerons sur notre machine avec Ollama et docker.
Utilise un model en local avec Prism
Ollama est un logiciel en ligne de commande qui permet d'exécuter des models IA facilement en jouant le rôle d'intermédiaire de téléchargement, de configuration et d'exécution des models.
Ainsi, seulement deux commandes suffisent à mettre en route notre model Qwen3, un model qui fonctionne généralement même sur des configurations modestes/anciennes.
1docker run -d -p 11434:11434 --name ollama ollama/ollama2docker exec -it ollama ollama pull qwen3:0.6b
Pour les IA natives, ces deux commandes peuvent être enrichies avec des arguments pour prendre en compte vos cartes graphiques et maximiser vos performances.
Dès la fin d'exécution de ces deux commandes, vous pourrez contacter votre model Qwen3 via l'URL http://localhost:11434. Vous pouvez alors ajuster la configuration Prism dans notre projet, comme suit :
1<?php 2 3return [ 4 'prism_server' => [ 5 // ... 6 ], 7 'providers' => [ 8 'ollama' => [ 9 'url' => env('OLLAMA_URL', 'http://localhost:11434'),10 ],11 ],12];
Une fois la configuration ajustée, nous pouvons faire notre premier appel.
Ici pour la démonstration, nous demanderons à notre model de résoudre la grande question "Combien font 2+2 ?", mais bien sûr charge à vous ensuite d'intégrer votre prompt.
La méthode using($provider, $model)
vous permettra d'utiliser les différents models enregistrés dans votre fichier de configuration.
Et certaines options pourront être ajoutées au Provider ou au Client, notamment le timeout
qui vous permettra en local d'éviter les erreurs liées aux temps de réponse trop longs de votre model IA.
1<?php 2 3use Prism\Prism\Prism; 4use Prism\Prism\Enums\Provider as PrismProvider; 5use Illuminate\Support\Facades\Artisan; 6 7Artisan::command('ask', function () { 8 9 $response = Prism::text()10 ->using(PrismProvider::Ollama, 'qwen3:0.6b')11 ->withPrompt('Combien font 2+2 ?')12 ->withClientOptions(['timeout' => 3600])13 ->asText();14 15 var_dump($response->text);16 17})->purpose('Ask ollama agent');
Avec Prism, vous pourrez également manipuler des prompts audio (Prism::audio()
) ou image (Prism::image()
). Intégrer à vos prompts vos documents audio, video, image, texte.
Pour chacun de ces cas d'usages, il faudra toute fois choisir le modèle adapté.
Prism vous permettra également de mettre en place des outils spécifiques et si besoin, les créer à la volée avec sa suite de "Tool", très proche des Outils MCP.
D'ailleurs, si votre application nécessite l'intégration d'Outils MCP, le package prism-php/relay vous facilitera lui aussi la vie.
Derrière son utilisation simple et verbeuse, Prism cache une boite à outil très complète pour l'intégration de vos models IA dans vos applications.

A lire
Autres articles de la même catégorie

Type-Safe de A à Z
Unifiez les types entre le backend et le frontend pour réduire les bugs et améliorer la cohérence de votre code

Rémy Guillermic

Déléguez la configuration à vos utilisateurs
Et si vos utilisateurs pouvaient modifier la configuration de leur site sans toucher une ligne de code ?

Antoine Benevaut

Gérer ses permissions avec laravel-permission
Présentation du paquet spatie/laravel-permission, une boîte à outils gérant les rôles et les permissions !

Marc COLLET