Dans cet article, nous plongerons dans le monde de l’intelligence artificielle générative et découvrirons comment l’intégrer dans nos applications grâce au service Amazon Bedrock et au SDK AWS pour PHP. Aujourd’hui, le langage PHP n’est plus une limitation pour accéder aux nombreux avantages offerts par l’IA.
Amazon Bedrock propose une vaste gamme de modèles d’IA générative provenant de divers fournisseurs tels que Meta, Anthropic, Mistral AI, et bien d’autres encore.
À travers un exemple pratique basé sur Symfony, nous allons effectuer une génération d’image pour illustrer la simplicité d’intégration de l’intelligence artificielle dans nos applications PHP.
Demande d’accès aux modèles
Tout d’abord, nous devons demander l’accès aux modèles d’IA. Pour ce faire, rendez-vous sur le service Amazon Bedrock dans AWS. Cliquer sur « Accès aux modèles », puis sur le bouton « Gérer l’accès aux modèles ». Ensuite, sélectionner tous les modèles que vous souhaitez utiliser et valider en cliquant sur le bouton « Demander l’accès au modèle » en bas de page. Veuillez noter que la disponibilité des modèles dépend des régions.
Installer le SDK AWS pour PHP
Pour installer le SDK via Composer, exécuter la commande suivante dans votre terminal :
composer require aws/aws-sdk-php
Configurer le runtime Bedrock
Pour configurer le client runtime Bedrock, nous devons le déclarer en tant que service dans le fichier config/services.yaml de notre application Symfony.
Assurez-vous que les variables d’environnement soient correctement définies dans le fichier d’environnement. Ces variables sont essentielles pour que le client runtime Bedrock puisse accéder aux informations de connexion AWS nécessaires.
services:
#...
Aws\BedrockRuntime\BedrockRuntimeClient:
autowire: true
public: true
arguments:
- {
version: "%env(string:AWS_VERSION)%",
region: "%env(string:AWS_REGION)%",
credentials:
{
key: "%env(string:AWS_ACCESS_KEY)%",
secret: "%env(string:AWS_ACCESS_SECRET)%"
}
}
Une fois le client runtime Bedrock configuré, notre application est prête à utiliser les fonctionnalités avancées fournies par le service AWS Bedrock, telles que l’invocation de modèles d’intelligence artificielle générative pour des tâches spécifiques.
Générer une image
Dans cette section, nous allons utiliser notre client runtime Bedrock pour invoquer le modèle « Titan Image Generator G1 » d’Amazon. Ce modèle nous permettra de générer une image représentant un lion dans une forêt.
try {
$modelId = 'amazon.titan-image-generator-v1';
$request = json_encode([
'taskType' => 'TEXT_IMAGE',
'textToImageParams' => [
'text' => 'Generate an image of a lion in a forest'
],
'imageGenerationConfig' => [
'numberOfImages' => 1,
'quality' => 'standard',
'cfgScale' => 8.0,
'height' => 512,
'width' => 512,
'seed' => 10
]
]);
$result = $this->bedrockRuntimeClient->invokeModel([
'contentType' => 'application/json',
'body' => $request,
'modelId' => $modelId,
]);
$responseBody = json_decode($result['body']);
$imageData = base64_decode($responseBody->images[0]);
file_put_contents('lion.png', $imageData);
} catch (\Exception $e) {
echo "Error: ({$e->getCode()}) - {$e->getMessage()}\n";
}
Dans ce code, nous spécifions d’abord l’identifiant du modèle à invoquer, qui est amazon.titan-image-generator-v1. Ensuite, nous définissons la requête pour générer l’image, notamment le texte descriptif « Generate an image of a lion in a forest » et les paramètres de l’image telles que la qualité, la taille et la graine de génération. En utilisant le client runtime Bedrock, nous invoquons ensuite le modèle avec les paramètres spécifiés. A partir de la réponse, nous décodons les données de l’image générée. Enfin, nous sauvegardons l’image localement sous le nom « lion.png ».
Résultat
Dans cet article, nous avons exploré en détail comment intégrer l’IA dans notre propre application en utilisant le service Amazon Bedrock et le SDK AWS. Nous avons découvert comment configurer le runtime Bedrock, invoquer un modèle d’IA et générer une image d’un lion dans une forêt en seulement quelques lignes de code. En exploitant l’IA, il est possible d’apporter de la valeur ajoutée à nos projets et améliorer l’expérience utilisateur.