Skip to main content

Panoramica

revolution/laravel-amazon-bedrock è un driver per usare Amazon Bedrock con Laravel AI SDK. Ti permette di gestire più modelli di Bedrock tramite l’API unificata di Laravel AI SDK.
Il simbolo ⚠️ in tabella non significa “funzionalità non supportata” ma “non utilizzabile con la sola Bedrock API key”.
Laravel AI SDK v0.6.3 ha aggiunto il supporto ufficiale per Text, Image ed Embeddings usando le Bedrock API key. Questo pacchetto continua a essere pubblicato perché supporta anche funzionalità non disponibili nell’integrazione ufficiale, come l’audio (TTS) con Amazon Polly e il reranking.
Le caratteristiche principali sono le seguenti.
  • Autenticazione: puoi scegliere tra Bedrock API key, credenziali AWS IAM (SigV4) e la catena di credenziali AWS predefinita (ruoli IAM, instance profile, ecc.).
  • Failover: supporta il failover multi-provider dell’AI SDK. Rate limiting (429), sovraccarico (503, 529) ed errori legati al credito vengono mappati su eccezioni gestibili con failover.
  • Controllo della cache: la cache ephemeral è sempre attiva sui system prompt della Bedrock Converse API.
  • API unificata: tutti i modelli, come Anthropic Claude, Amazon Nova, Meta Llama e Mistral, sono gestibili tramite Bedrock Converse API con un’interfaccia uniforme.

Requisiti

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

Installazione

1

Installa il pacchetto

2

Pubblica la configurazione dell'AI SDK

Configurazione

Aggiungi il provider amazon-bedrock in config/ai.php. Se necessario, imposta Bedrock anche come provider predefinito.

Opzione 1: Bedrock API key

La Bedrock API key si ottiene dalla console di gestione AWS.
La Bedrock API key è utilizzabile solo con la Bedrock Runtime API. Non è utilizzabile per il reranking o per Amazon Polly (TTS), che usano bedrock-agent-runtime. Per queste funzionalità usa SigV4 o la catena di credenziali AWS predefinita.

Opzione 2: credenziali AWS IAM (SigV4)

Usa la chiave di accesso e la chiave segreta AWS con firma Signature Version 4.
Imposta AWS_SESSION_TOKEN solo se stai usando credenziali temporanee (STS).

Opzione 3: catena di credenziali AWS predefinita (ruoli IAM)

In ambienti con ruoli IAM (EC2 / ECS / Lambda), puoi omettere key e secret e usare la catena di provider di credenziali AWS predefinita.
La catena di credenziali predefinita risolve automaticamente da variabili d’ambiente, file di credenziali condivise (~/.aws/credentials), ruoli di attività ECS, instance profile EC2 e altro.

Chiavi di configurazione opzionali

Generazione di testo

Classe Agent

Crea una classe Agent con un comando Artisan.

Agent anonimo

Se vuoi usare l’SDK rapidamente senza creare una classe, usa l’helper agent().

Streaming

Puoi anche gestire manualmente gli eventi.

Uso di strumenti (Function Calling)

Definisci gli strumenti da invocare durante la generazione.
Utilizzalo dall’Agent.
Funziona anche con un Agent anonimo.
Le chiamate di strumento funzionano anche in streaming. L’SDK esegue automaticamente lo strumento e continua la conversazione finché non produce una risposta testuale finale.

Allegati di file

Con il parametro attachments puoi allegare a un prompt immagini, documenti, audio e video. La Bedrock Converse API gestisce i blocchi allegati, ma quali formati siano effettivamente utilizzabili dipende dal modello (ad esempio, Anthropic Claude supporta solo immagini e documenti).
I tipi di allegato supportati sono Image, Document e Audio in Laravel\Ai\Files\*. I video si possono allegare tramite Illuminate\Http\UploadedFile.
L’upload di file lato server (Document::fromPath()->put()) e il riutilizzo tramite ID (Document::fromId()) non sono supportati da Bedrock.

Cronologia conversazioni

Per mantenere conversazioni multi-turno, implementa l’interfaccia Conversational nella classe Agent. Restituendo i messaggi passati da messages(), verranno inclusi automaticamente in ogni prompt.

Salvataggio automatico con RemembersConversations

Se non vuoi implementare messages() da solo, puoi usare il trait RemembersConversations per un salvataggio conversazioni completamente automatico. Sono necessarie le tabelle del database dell’AI SDK, quindi esegui prima php artisan vendor:publish --provider="Laravel\Ai\AiServiceProvider" && php artisan migrate.
Avvia una nuova conversazione.
Continua una conversazione esistente.
Il driver Bedrock include automaticamente la cronologia della conversazione nelle richieste Bedrock Converse API, così puoi sfruttare il contesto multi-turno con tutti i modelli supportati.

Output strutturato

Implementando l’interfaccia HasStructuredOutput puoi ottenere risposte tipizzate.
L’output strutturato è disponibile anche con Agent anonimi.
Internamente viene creato uno strumento sintetico (output_structured_data) che forza a restituire valori conformi allo schema. Questo approccio è compatibile con tutti i modelli su Bedrock tramite Converse API.

Converse API (tutti i modelli)

Tutta la generazione di testo e lo streaming vengono eseguiti tramite la Bedrock Converse API. È tutto unificato, incluso Anthropic Claude, e puoi usare con la stessa interfaccia i vari modelli disponibili su Bedrock come Amazon Nova, Meta Llama, Mistral, Cohere e DeepSeek.
Streaming, uso di strumenti, output strutturato e allegati di file funzionano con i modelli che li supportano. Per maggiori dettagli consulta l’elenco dei modelli supportati da Bedrock.

Provider Options

Per passare opzioni specifiche di Bedrock come anthropic_version, implementa HasProviderOptions.
Provider Options supportate:

Attributi di configurazione dell’Agent

Puoi impostare le opzioni di generazione del testo tramite attributi PHP.

Generazione di immagini

Genera immagini con i modelli Stability AI (predefiniti) o con Amazon Nova Canvas.
Modelli Stability AI disponibili (tutti richiedono la regione us-west-2):
I modelli di immagine Stability AI sono disponibili solo in us-west-2. Quando usi questi modelli, imposta AWS_DEFAULT_REGION=us-west-2.

Editing di immagini con Stability AI

Anche i modelli di editing di Stability AI Image Services sono utilizzabili tramite il metodo attachments(). Passi un’immagine di input e la trasformi con un modello di editing.
Modelli di editing Stability AI disponibili (tutti in us-east-1, us-east-2, us-west-2): È supportato anche Amazon Nova Canvas, che però AWS sta progressivamente deprecando.

Audio (TTS)

Genera audio da testo con Amazon Polly.
Puoi specificare una voce maschile o femminile.
Puoi specificare una voce Polly specifica.
Salva l’audio generato.
Puoi anche specificare il motore (modello).
Voci predefinite: default-female → Ruth, default-male → Matthew (entrambe supportano il motore generative).
Amazon Polly è un servizio AWS distinto da Bedrock. La Bedrock API key (bearer token) non funziona con Polly. Usa le credenziali AWS IAM (SigV4) o la catena di credenziali AWS predefinita.

Embedding

Genera embedding vettoriali con Amazon Titan Embeddings V2.
Puoi specificare il numero di dimensioni (Titan Embeddings V2 supporta 256, 512, 1024).
Esempio con modello personalizzato.

Modelli Cohere Embed

I modelli Cohere Embed vengono rilevati automaticamente e usano l’API batch. Mentre Titan invia una richiesta HTTP per ogni input, Cohere raggruppa tutti gli input in una sola richiesta, risultando più efficiente quando si elaborano più testi.
I modelli Cohere Embed non restituiscono il numero di token, quindi $response->tokens è sempre 0.

Reranking

Usa Cohere Rerank 3.5 o Amazon Rerank 1.0 per riordinare i documenti in base alla rilevanza rispetto a una query.
Esempio con modello personalizzato.
L’API di reranking utilizza l’endpoint bedrock-agent-runtime (non bedrock-runtime). Amazon Rerank 1.0 non è disponibile in us-east-1, quindi in quella regione usa Cohere Rerank 3.5.

Testing

Puoi usare direttamente le funzionalità di test standard di AI SDK. Non è documentato ufficialmente, ma gli Agent anonimi creati con l’helper agent() possono essere mockati con AnonymousAgent::fake() e la variante con output strutturato con StructuredAnonymousAgent::fake().
Per le informazioni più aggiornate consulta la repository su GitHub.
Ultima modifica il 26 luglio 2026