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.
- 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 provideramazon-bedrock in config/ai.php. Se necessario, imposta Bedrock anche come provider predefinito.
Opzione 1: Bedrock API key
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 ometterekey e secret e usare la catena di provider di credenziali AWS predefinita.
~/.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’helperagent().
Streaming
Uso di strumenti (Function Calling)
Definisci gli strumenti da invocare durante la generazione.Allegati di file
Con il parametroattachments 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).
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’interfacciaConversational 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.
Output strutturato
Implementando l’interfacciaHasStructuredOutput puoi ottenere risposte tipizzate.
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.Provider Options
Per passare opzioni specifiche di Bedrock comeanthropic_version, implementa HasProviderOptions.
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.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 metodoattachments(). Passi un’immagine di input e la trasformi con un modello di editing.
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.default-female → Ruth, default-male → Matthew (entrambe supportano il motore generative).
Embedding
Genera embedding vettoriali con Amazon Titan Embeddings V2.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.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’helperagent() 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.