Skip to main content

Überblick

revolution/laravel-amazon-bedrock ist ein Treiber, mit dem Sie Amazon Bedrock im Laravel AI SDK verwenden können. Sie können die verschiedenen Bedrock-Modelle über die einheitliche API des Laravel AI SDK ansprechen.
Das ⚠️ in der Tabelle bedeutet nicht, dass die Funktion selbst nicht unterstützt wird, sondern dass sie nicht allein mit einem Bedrock-API-Key genutzt werden kann.
In Laravel AI SDK v0.6.3 wurde die offizielle Unterstützung für Text, Bild und Embeddings über den Bedrock-API-Key ergänzt. Da dieses Paket auch Funktionen wie Audio (TTS) über Amazon Polly und Reranking abdeckt, die in der offiziellen Integration nicht verfügbar sind, wird es weiterhin veröffentlicht.
Die wichtigsten Merkmale:
  • Authentifizierung: Sie können zwischen Bedrock-API-Key, AWS IAM-Credentials (SigV4) und der Default AWS Credentials Chain (IAM-Rollen, Instance Profiles etc.) wählen.
  • Failover: Unterstützt das Multi-Provider-Failover des AI SDK. Rate Limits (429), Overloads (503, 529) und Credit-bezogene Fehler werden auf failover-fähige Exceptions abgebildet.
  • Cache Control: Für System-Prompts der Bedrock Converse API ist der ephemere Cache stets aktiviert.
  • Einheitliche API: Alle Modelle wie Anthropic Claude, Amazon Nova, Meta Llama, Mistral usw. werden über die Bedrock Converse API mit einer einheitlichen Schnittstelle angesprochen.

Voraussetzungen

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

Installation

1

Paket installieren

2

Konfiguration des AI SDK veröffentlichen

Konfiguration

Fügen Sie in config/ai.php den Provider amazon-bedrock hinzu. Bei Bedarf setzen Sie den Standard-Provider ebenfalls auf Bedrock.

Option 1: Bedrock-API-Key

Sie erhalten den Bedrock-API-Key über die AWS Management Console.
Der Bedrock-API-Key ist ausschließlich für die Bedrock Runtime API bestimmt. Für Reranking über bedrock-agent-runtime sowie für Amazon Polly (TTS) kann er nicht verwendet werden. Nutzen Sie in diesen Fällen SigV4 oder die Default AWS Credentials Chain.

Option 2: AWS IAM-Credentials (SigV4)

Verwendet AWS Access Key und Secret Key mit Signierung nach Signature Version 4.
AWS_SESSION_TOKEN wird nur gesetzt, wenn temporäre Credentials (STS) verwendet werden.

Option 3: Default AWS Credentials Chain (IAM-Rolle)

In Umgebungen mit IAM-Rollen wie EC2 / ECS / Lambda können Sie key und secret weglassen und die Default AWS Credentials Provider Chain nutzen.
Die Default Credentials Chain löst Credentials automatisch aus Umgebungsvariablen, dem Shared-Credentials-File (~/.aws/credentials), ECS-Task-Rollen, EC2-Instance-Profiles usw. auf.

Optionale Konfigurationsschlüssel

Textgenerierung

Agent-Klasse

Erzeugen Sie mit einem Artisan-Kommando eine Agent-Klasse.

Anonymer Agent

Wenn Sie schnell ohne eigene Klasse arbeiten möchten, nutzen Sie den Helper agent().

Streaming

Sie können die Events auch manuell verarbeiten.

Tool-Nutzung (Function Calling)

Definieren Sie ein Tool, das während der Generierung aufgerufen wird.
Verwendung in einem Agent.
Auch mit einem anonymen Agent möglich.
Tool-Aufrufe funktionieren auch im Streaming. Das SDK führt Tools automatisch aus und setzt die Konversation fort, bis eine finale Textantwort vorliegt.

Dateianhänge

Über den Parameter attachments können Sie Bilder, Dokumente, Audio- und Videodateien an einen Prompt anhängen. Die Bedrock Converse API verarbeitet die Anhang-Blöcke, welche Formate tatsächlich verwendbar sind, hängt aber vom Modell ab (z. B. unterstützt Anthropic Claude nur Bilder und Dokumente).
Unterstützte Anhangstypen sind Image, Document und Audio aus Laravel\Ai\Files\*. Videos können über Illuminate\Http\UploadedFile angehängt werden.
Server-seitige Datei-Uploads (Document::fromPath()->put()) und die Wiederverwendung über ID (Document::fromId()) werden von Bedrock nicht unterstützt.

Konversationsverlauf

Um Mehrfach-Turn-Konversationen zu erhalten, implementieren Sie in der Agent-Klasse das Interface Conversational. Wenn messages() frühere Nachrichten zurückgibt, werden diese jedem Prompt automatisch hinzugefügt.

Automatisches Speichern mit RemembersConversations

Wenn Sie messages() nicht selbst implementieren möchten, können Sie das vollständig automatische Speichern von Konversationen über den Trait RemembersConversations nutzen. Da die Datenbanktabellen des AI SDK benötigt werden, führen Sie zuvor php artisan vendor:publish --provider="Laravel\Ai\AiServiceProvider" && php artisan migrate aus.
Eine neue Konversation starten.
Eine bestehende Konversation fortsetzen.
Der Bedrock-Treiber fügt Konversationsverlauf automatisch in Bedrock-Converse-API-Anfragen ein, sodass Mehrfach-Turn-Kontext für alle unterstützten Modelle nutzbar ist.

Strukturierte Ausgaben

Wenn Sie das Interface HasStructuredOutput implementieren, können Sie typisierte Antworten erhalten.
Strukturierte Ausgaben funktionieren auch mit anonymen Agents.
Intern wird ein synthetisches Tool (output_structured_data) erzeugt, das Werte gemäß dem Schema zurückgeben lässt. Dieser Ansatz ist über die Converse API mit allen Bedrock-Modellen kompatibel.

Converse API (alle Modelle)

Sämtliche Textgenerierung und Streaming erfolgt über die Bedrock Converse API. Auch Anthropic Claude ist einheitlich integriert. Sie können Modelle wie Amazon Nova, Meta Llama, Mistral, Cohere, DeepSeek usw. auf Bedrock über dieselbe Schnittstelle ansprechen.
Streaming, Tool-Nutzung, strukturierte Ausgaben und Dateianhänge funktionieren mit den Modellen, die sie jeweils unterstützen. Details finden Sie in der Liste der von Bedrock unterstützten Modelle.

Provider Options

Um Bedrock-spezifische Optionen wie anthropic_version zu übergeben, implementieren Sie HasProviderOptions.
Unterstützte Provider Options:

Konfigurations-Attribute für Agents

Über PHP-Attribute können Sie Optionen für die Textgenerierung setzen.

Bildgenerierung

Erzeugen Sie Bilder mit Stability-AI-Modellen (Standard) oder Amazon Nova Canvas.
Verfügbare Stability-AI-Modelle (alle erfordern die Region us-west-2):
Die Bildmodelle von Stability AI sind nur in us-west-2 verfügbar. Setzen Sie AWS_DEFAULT_REGION=us-west-2, wenn Sie diese Modelle verwenden.

Bildbearbeitung mit Stability AI

Auch die Editing-Modelle der Stability AI Image Services lassen sich über die Methode attachments() verwenden. Übergeben Sie ein Eingangsbild, das dann vom Editing-Modell umgewandelt wird.
Verfügbare Editing-Modelle von Stability AI (alle in us-east-1, us-east-2 und us-west-2 verfügbar): Amazon Nova Canvas wird ebenfalls unterstützt, wird von AWS aber schrittweise als „deprecated” gekennzeichnet.

Audio (TTS)

Erzeugen Sie mit Amazon Polly Sprache aus Text.
Sie können männliche oder weibliche Stimmen wählen.
Sie können eine bestimmte Polly-Stimme angeben.
Das generierte Audio speichern.
Sie können auch die Engine (das Modell) angeben.
Standardstimmen: default-female → Ruth, default-male → Matthew (beide unterstützen die generative Engine).
Amazon Polly ist ein von Bedrock separater AWS-Dienst. Der Bedrock-API-Key (Bearer-Token) kann nicht mit Polly verwendet werden. Nutzen Sie stattdessen AWS-IAM-Credentials (SigV4) oder die Default AWS Credentials Chain.

Embeddings

Erzeugen Sie Vektor-Embeddings mit Amazon Titan Embeddings V2.
Sie können die Dimension angeben (Titan Embeddings V2: 256, 512, 1024).
Beispiel für ein benutzerdefiniertes Modell:

Cohere-Embed-Modelle

Cohere-Embed-Modelle werden automatisch erkannt und verwenden die Batch-API. Während Titan pro Eingabe eine HTTP-Anfrage sendet, fasst Cohere alle Eingaben zu einer einzigen Anfrage zusammen und ist damit bei mehreren Texten effizienter.
Cohere-Embed-Modelle liefern keine Token-Anzahl zurück, $response->tokens ist daher stets 0.

Reranking

Mit Cohere Rerank 3.5 oder Amazon Rerank 1.0 können Sie Dokumente nach Relevanz zu einer Query sortieren.
Beispiel für ein benutzerdefiniertes Modell:
Die Reranking-API verwendet den Endpunkt bedrock-agent-runtime (nicht bedrock-runtime). Da Amazon Rerank 1.0 in us-east-1 nicht verfügbar ist, nutzen Sie in dieser Region Cohere Rerank 3.5.

Tests

Die üblichen Testfunktionen des AI SDK können unverändert verwendet werden. Zwar nicht in der offiziellen Dokumentation aufgeführt, aber anonyme Agents, die mit dem Helper agent() erzeugt wurden, können Sie mit AnonymousAgent::fake() mocken, die strukturierte Variante mit StructuredAnonymousAgent::fake().
Aktuelle Informationen finden Sie im GitHub-Repository.
Zuletzt geändert am 26. Juli 2026