개요
revolution/laravel-amazon-bedrock은 Laravel AI SDK에서 Amazon Bedrock을 사용하기 위한 드라이버입니다. Bedrock의 여러 모델을 Laravel AI SDK의 통일된 API로 다룰 수 있습니다.표의
⚠️는 “기능 자체가 미지원”이 아니라 “Bedrock API 키만으로는 이용할 수 없음”을 나타냅니다.Laravel AI SDK v0.6.3에서 Bedrock API 키를 사용한 Text·Image·Embeddings 공식 지원이 추가되었습니다. 이 패키지는 Amazon Polly를 이용한 음성(TTS)이나 리랭킹 등 공식 통합에서는 이용할 수 없는 기능도 지원하므로, 계속해서 공개를 이어가고 있습니다.
- 인증: Bedrock API 키, AWS IAM 자격 증명(SigV4), 기본 AWS 자격 증명 체인(IAM 역할, 인스턴스 프로파일 등)에서 선택할 수 있습니다.
- 페일오버: AI SDK의 멀티 프로바이더 페일오버를 지원. 속도 제한(429), 과부하(503, 529), 크레딧 관련 오류는 페일오버 가능한 예외로 매핑됩니다.
- 캐시 제어: Bedrock Converse API의 시스템 프롬프트에 ephemeral 캐시를 항상 활성화.
- 통일된 API: Anthropic Claude, Amazon Nova, Meta Llama, Mistral 등 모든 모델을 Bedrock Converse API를 통해 통일된 인터페이스로 다룰 수 있습니다.
필수 요건
- PHP >= 8.3
- Laravel >= 12.x
설치
1
패키지 설치
2
AI SDK 설정 파일 공개
설정
config/ai.php에 amazon-bedrock 프로바이더를 추가합니다. 필요에 따라 기본 프로바이더도 Bedrock으로 전환합니다.
옵션 1: Bedrock API 키
옵션 2: AWS IAM 자격 증명(SigV4)
Signature Version 4로 서명하는 AWS 액세스 키와 시크릿 키를 사용합니다.AWS_SESSION_TOKEN은 임시 자격 증명(STS)을 사용하는 경우에만 설정합니다.옵션 3: 기본 AWS 자격 증명 체인(IAM 역할)
EC2 / ECS / Lambda 등 IAM 역할이 있는 환경에서는key와 secret을 생략하고 기본 AWS 자격 증명 프로바이더 체인을 사용할 수 있습니다.
~/.aws/credentials), ECS 태스크 역할, EC2 인스턴스 프로파일 등에서 자동으로 해결합니다.
선택적 설정 키
텍스트 생성
Agent 클래스
Artisan 명령어로 Agent 클래스를 생성합니다.Anonymous Agent
클래스를 만들지 않고 간편하게 사용하려면agent() 헬퍼를 이용합니다.
스트리밍
툴 사용(Function Calling)
생성 중에 호출되는 툴을 정의합니다.파일 첨부
attachments 파라미터로 이미지, 문서, 음성, 동영상 파일을 프롬프트에 첨부할 수 있습니다. Bedrock Converse API가 첨부 블록을 처리하지만, 실제로 어떤 형식을 사용할 수 있는지는 모델에 따라 다릅니다(예: Anthropic Claude는 이미지와 문서만 지원).
Laravel\Ai\Files\*의 Image, Document, Audio입니다. 동영상은 Illuminate\Http\UploadedFile을 통해 첨부할 수 있습니다.
서버 측 파일 업로드(
Document::fromPath()->put())나 ID를 통한 재사용(Document::fromId())은 Bedrock에서 미지원입니다.대화 이력
여러 턴에 걸친 대화를 유지하려면 Agent 클래스에서Conversational 인터페이스를 구현합니다. messages()에서 과거 대화 메시지를 반환하면 각 프롬프트에 자동으로 포함됩니다.
RemembersConversations로 자동 저장
messages()를 직접 구현하고 싶지 않다면 RemembersConversations 트레이트로 완전 자동 대화 저장을 이용할 수 있습니다. AI SDK의 데이터베이스 테이블이 필요하므로, 먼저 php artisan vendor:publish --provider="Laravel\Ai\AiServiceProvider" && php artisan migrate를 실행하세요.
구조화된 출력
HasStructuredOutput 인터페이스를 구현하면 타입이 지정된 응답을 얻을 수 있습니다.
output_structured_data)을 생성합니다. 이 방식은 Converse API를 통해 Bedrock의 모든 모델과 호환됩니다.
Converse API(모든 모델)
모든 텍스트 생성과 스트리밍은 Bedrock Converse API를 통해 실행됩니다. Anthropic Claude를 포함해 통일되어 있으며, Amazon Nova, Meta Llama, Mistral, Cohere, DeepSeek 등 Bedrock의 다양한 모델을 동일한 인터페이스로 이용할 수 있습니다.Provider Options
anthropic_version 등 Bedrock 고유 옵션을 전달하려면 HasProviderOptions를 구현합니다.
Agent 설정 속성
PHP 속성으로 텍스트 생성 옵션을 설정할 수 있습니다.이미지 생성
Stability AI 모델(기본값) 또는 Amazon Nova Canvas를 사용해 이미지를 생성합니다.us-west-2 리전이 필요):
Stability AI 이미지 모델은
us-west-2에서만 이용 가능합니다. 이 모델들을 사용할 때는 AWS_DEFAULT_REGION=us-west-2를 설정하세요.Stability AI를 이용한 이미지 편집
Stability AI Image Services의 편집 계열 모델도attachments() 메서드로 이용할 수 있습니다. 입력 이미지를 전달하고 편집 모델로 변환합니다.
us-east-1, us-east-2, us-west-2에서 이용 가능):
Amazon Nova Canvas도 지원하지만, AWS에 의해 권장 중단이 진행되고 있습니다.
음성(TTS)
Amazon Polly를 사용해 텍스트에서 음성을 생성합니다.default-female → Ruth, default-male → Matthew(둘 다 generative 엔진 지원).
임베딩
Amazon Titan Embeddings V2를 사용해 벡터 임베딩을 생성합니다.Cohere Embed 모델
Cohere Embed 모델은 자동으로 감지되며, 배치 API를 사용합니다. Titan이 입력별로 HTTP 요청을 보내는 것과 달리, Cohere는 모든 입력을 하나의 요청으로 묶기 때문에 여러 텍스트를 처리할 때 효율적입니다.Cohere Embed 모델은 토큰 수를 반환하지 않으므로,
$response->tokens는 항상 0입니다.리랭킹
Cohere Rerank 3.5나 Amazon Rerank 1.0을 사용해 쿼리와의 관련도로 문서를 재정렬합니다.리랭킹 API는
bedrock-agent-runtime 엔드포인트를 사용합니다(bedrock-runtime이 아님). Amazon Rerank 1.0은 us-east-1에서 이용할 수 없으므로, 해당 리전에서는 Cohere Rerank 3.5를 사용하세요.테스트
AI SDK의 표준 테스트 기능을 그대로 이용할 수 있습니다. 공식 문서에는 기재되어 있지 않지만,agent() 헬퍼로 만든 Anonymous Agent는 AnonymousAgent::fake(), 구조화된 출력 버전은 StructuredAnonymousAgent::fake()로 모킹할 수 있습니다.
최신 정보는 GitHub 저장소를 참조하세요.