Skip to main content

Vue d’ensemble

revolution/laravel-amazon-bedrock est un pilote permettant d’utiliser Amazon Bedrock avec Laravel AI SDK. Il expose plusieurs modèles Bedrock via l’API unifiée de Laravel AI SDK.
Le symbole ⚠️ du tableau signifie non pas que la fonctionnalité est absente, mais qu’elle n’est pas utilisable avec la seule clé API Bedrock.
La prise en charge officielle du Text, de l’Image et des Embeddings via une clé API Bedrock a été ajoutée dans Laravel AI SDK v0.6.3. Ce package couvre également des fonctionnalités absentes de l’intégration officielle, comme la synthèse vocale (TTS) via Amazon Polly ou le reranking, et continue donc d’être publié.
Ses principales caractéristiques :
  • Authentification : au choix, clé API Bedrock, identifiants AWS IAM (SigV4) ou chaîne d’identifiants AWS par défaut (rôle IAM, profil d’instance, etc.).
  • Basculement (failover) : compatible avec le failover multi-provider de l’AI SDK. Les erreurs de limitation (429), de surcharge (503, 529) et les erreurs liées aux crédits sont mappées sur des exceptions permettant le basculement.
  • Contrôle du cache : cache éphémère toujours activé sur le prompt système via l’API Bedrock Converse.
  • API unifiée : tous les modèles (Anthropic Claude, Amazon Nova, Meta Llama, Mistral, etc.) sont exposés via une interface unique grâce à l’API Bedrock Converse.

Prérequis

  • PHP >= 8.3
  • Laravel >= 12.x

Installation

1

Installer le package

2

Publier la configuration d'AI SDK

Configuration

Ajoutez le provider amazon-bedrock dans config/ai.php. Basculez éventuellement les providers par défaut vers Bedrock.

Option 1 : clé API Bedrock

Récupérez la clé API Bedrock depuis la console de gestion AWS.
La clé API Bedrock est réservée à l’API Bedrock Runtime. Elle n’est pas utilisable pour le reranking (qui passe par bedrock-agent-runtime) ni pour Amazon Polly (TTS). Utilisez alors SigV4 ou la chaîne d’identifiants AWS par défaut.

Option 2 : identifiants AWS IAM (SigV4)

Utilisez une access key et une secret key AWS signées avec Signature Version 4.
Ne renseignez AWS_SESSION_TOKEN que si vous utilisez des identifiants temporaires (STS).

Option 3 : chaîne d’identifiants AWS par défaut (rôle IAM)

Dans les environnements disposant d’un rôle IAM (EC2 / ECS / Lambda, etc.), vous pouvez omettre key et secret et utiliser la chaîne de fournisseurs d’identifiants AWS par défaut.
La chaîne par défaut résout automatiquement les identifiants depuis les variables d’environnement, le fichier partagé (~/.aws/credentials), le rôle de tâche ECS, le profil d’instance EC2, etc.

Clés de configuration facultatives

Génération de texte

Classe Agent

Créez une classe Agent avec une commande Artisan.

Agent anonyme

Pour une utilisation rapide sans créer de classe, utilisez le helper agent().

Streaming

Vous pouvez également gérer les événements manuellement.

Utilisation d’outils (Function Calling)

Définissez un outil qui pourra être appelé pendant la génération.
Utilisez-le depuis un Agent.
Vous pouvez également l’utiliser avec un agent anonyme.
Les appels d’outils fonctionnent également en streaming. Le SDK exécute automatiquement les outils et poursuit la conversation jusqu’à obtenir la réponse texte finale.

Pièces jointes

Le paramètre attachments permet de joindre à un prompt des fichiers image, document, audio ou vidéo. L’API Bedrock Converse traite les blocs de pièces jointes, mais les formats réellement acceptés dépendent du modèle (par exemple Anthropic Claude ne gère que les images et les documents).
Les types de pièces jointes pris en charge sont Image, Document et Audio dans Laravel\Ai\Files\*. Les vidéos peuvent être jointes via Illuminate\Http\UploadedFile.
Le téléversement de fichiers côté serveur (Document::fromPath()->put()) et la réutilisation via un identifiant (Document::fromId()) ne sont pas pris en charge par Bedrock.

Historique de conversation

Pour maintenir une conversation multi-tours, implémentez l’interface Conversational dans votre classe Agent. Les messages retournés par messages() seront automatiquement inclus dans chaque prompt.

Sauvegarde automatique avec RemembersConversations

Si vous ne souhaitez pas implémenter vous-même messages(), le trait RemembersConversations fournit une sauvegarde entièrement automatique des conversations. Une table de base de données de l’AI SDK est nécessaire ; exécutez d’abord php artisan vendor:publish --provider="Laravel\Ai\AiServiceProvider" && php artisan migrate.
Démarrer une nouvelle conversation :
Poursuivre une conversation existante :
Le pilote Bedrock inclut automatiquement l’historique de conversation dans les requêtes à l’API Bedrock Converse, ce qui permet d’exploiter le contexte multi-tours pour tous les modèles pris en charge.

Sortie structurée

En implémentant l’interface HasStructuredOutput, vous pouvez obtenir une réponse typée.
La sortie structurée fonctionne également avec un agent anonyme.
En interne, un outil synthétique (output_structured_data) est créé pour forcer une valeur conforme au schéma. Cette approche est compatible avec tous les modèles disponibles sur Bedrock via l’API Converse.

API Converse (tous les modèles)

Toute la génération de texte et le streaming passent par l’API Bedrock Converse. L’interface est unifiée, y compris pour Anthropic Claude, et vous pouvez utiliser Amazon Nova, Meta Llama, Mistral, Cohere, DeepSeek ou d’autres modèles Bedrock via la même interface.
Le streaming, l’utilisation d’outils, la sortie structurée et les pièces jointes fonctionnent sur les modèles qui les prennent en charge. Voir la liste des modèles Bedrock pris en charge pour plus de détails.

Provider Options

Pour transmettre des options spécifiques à Bedrock telles que anthropic_version, implémentez HasProviderOptions.
Provider Options pris en charge :

Attributs de configuration d’Agent

Les attributs PHP permettent de configurer les options de génération de texte.

Génération d’images

Générez des images avec les modèles Stability AI (par défaut) ou Amazon Nova Canvas.
Modèles Stability AI disponibles (tous nécessitent la région us-west-2) :
Les modèles d’image Stability AI ne sont disponibles qu’en us-west-2. Définissez AWS_DEFAULT_REGION=us-west-2 pour les utiliser.

Édition d’images avec Stability AI

Les modèles d’édition de Stability AI Image Services sont également accessibles via la méthode attachments(). Passez l’image d’entrée et transformez-la avec un modèle d’édition.
Modèles d’édition Stability AI disponibles (tous accessibles en us-east-1, us-east-2, us-west-2) : Amazon Nova Canvas est également pris en charge, bien que son abandon soit en cours chez AWS.

Synthèse vocale (TTS)

Générez de la parole à partir de texte avec Amazon Polly.
Vous pouvez choisir une voix masculine ou féminine.
Vous pouvez également préciser une voix Polly spécifique.
Enregistrer l’audio généré :
Vous pouvez aussi spécifier le moteur (modèle).
Voix par défaut : default-female → Ruth, default-male → Matthew (toutes deux compatibles avec le moteur generative).
Amazon Polly est un service AWS distinct de Bedrock. La clé API Bedrock (bearer token) ne fonctionne pas avec Polly. Utilisez des identifiants AWS IAM (SigV4) ou la chaîne d’identifiants AWS par défaut.

Embeddings

Générez des vecteurs d’embedding avec Amazon Titan Embeddings V2.
Vous pouvez spécifier le nombre de dimensions (Titan Embeddings V2 prend 256, 512 ou 1024).
Exemple avec un modèle personnalisé.

Modèles Cohere Embed

Les modèles Cohere Embed sont détectés automatiquement et utilisent l’API batch. Alors que Titan envoie une requête HTTP par entrée, Cohere regroupe toutes les entrées en une seule requête, ce qui est efficace pour traiter plusieurs textes.
Les modèles Cohere Embed ne renvoient pas de nombre de tokens ; $response->tokens vaut donc toujours 0.

Reranking

Réordonnez des documents selon leur pertinence par rapport à une requête avec Cohere Rerank 3.5 ou Amazon Rerank 1.0.
Exemple avec un modèle personnalisé.
L’API de reranking utilise l’endpoint bedrock-agent-runtime (et non bedrock-runtime). Amazon Rerank 1.0 n’étant pas disponible en us-east-1, utilisez Cohere Rerank 3.5 dans cette région.

Tests

Les fonctionnalités de test standard de l’AI SDK sont utilisables telles quelles. Bien que non documenté officiellement, les agents anonymes créés via le helper agent() peuvent être mockés avec AnonymousAgent::fake(), et leur variante à sortie structurée avec StructuredAnonymousAgent::fake().
Pour les informations les plus récentes, reportez-vous au dépôt GitHub.
Dernière modification le 26 juillet 2026