Skip to main content

개요

revolution/laravel-amazon-bedrockLaravel 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.phpamazon-bedrock 프로바이더를 추가합니다. 필요에 따라 기본 프로바이더도 Bedrock으로 전환합니다.

옵션 1: Bedrock API 키

Bedrock API 키는 AWS 관리 콘솔에서 발급받습니다.
Bedrock API 키는 Bedrock Runtime API 전용입니다. bedrock-agent-runtime을 사용하는 리랭킹이나 Amazon Polly(TTS)에서는 사용할 수 없습니다. 이들은 SigV4 또는 기본 AWS 자격 증명 체인을 사용하세요.

옵션 2: AWS IAM 자격 증명(SigV4)

Signature Version 4로 서명하는 AWS 액세스 키와 시크릿 키를 사용합니다.
AWS_SESSION_TOKEN은 임시 자격 증명(STS)을 사용하는 경우에만 설정합니다.

옵션 3: 기본 AWS 자격 증명 체인(IAM 역할)

EC2 / ECS / Lambda 등 IAM 역할이 있는 환경에서는 keysecret을 생략하고 기본 AWS 자격 증명 프로바이더 체인을 사용할 수 있습니다.
기본 자격 증명 체인은 환경 변수, 공유 자격 증명 파일(~/.aws/credentials), ECS 태스크 역할, EC2 인스턴스 프로파일 등에서 자동으로 해결합니다.

선택적 설정 키

텍스트 생성

Agent 클래스

Artisan 명령어로 Agent 클래스를 생성합니다.

Anonymous Agent

클래스를 만들지 않고 간편하게 사용하려면 agent() 헬퍼를 이용합니다.

스트리밍

이벤트를 수동으로 다룰 수도 있습니다.

툴 사용(Function Calling)

생성 중에 호출되는 툴을 정의합니다.
Agent에서 이용합니다.
Anonymous Agent에서도 사용할 수 있습니다.
스트리밍에서도 툴 호출은 동작합니다. SDK가 자동으로 툴을 실행하고, 최종 텍스트 응답이 나올 때까지 대화를 이어갑니다.

파일 첨부

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를 실행하세요.
새로운 대화를 시작합니다.
기존 대화를 이어갑니다.
Bedrock 드라이버는 Bedrock Converse API 요청에 대화 이력을 자동으로 포함하므로, 지원하는 모든 모델에서 멀티턴 대화 컨텍스트를 활용할 수 있습니다.

구조화된 출력

HasStructuredOutput 인터페이스를 구현하면 타입이 지정된 응답을 얻을 수 있습니다.
Anonymous Agent에서도 구조화된 출력을 사용할 수 있습니다.
내부적으로는 스키마에 맞는 값을 반환하도록 하는 합성 툴(output_structured_data)을 생성합니다. 이 방식은 Converse API를 통해 Bedrock의 모든 모델과 호환됩니다.

Converse API(모든 모델)

모든 텍스트 생성과 스트리밍은 Bedrock Converse API를 통해 실행됩니다. Anthropic Claude를 포함해 통일되어 있으며, Amazon Nova, Meta Llama, Mistral, Cohere, DeepSeek 등 Bedrock의 다양한 모델을 동일한 인터페이스로 이용할 수 있습니다.
스트리밍, 툴 사용, 구조화된 출력, 파일 첨부는 각 기능을 지원하는 모델에서 동작합니다. 자세한 내용은 Bedrock 지원 모델 목록을 참조하세요.

Provider Options

anthropic_version 등 Bedrock 고유 옵션을 전달하려면 HasProviderOptions를 구현합니다.
지원되는 Provider Options:

Agent 설정 속성

PHP 속성으로 텍스트 생성 옵션을 설정할 수 있습니다.

이미지 생성

Stability AI 모델(기본값) 또는 Amazon Nova Canvas를 사용해 이미지를 생성합니다.
사용 가능한 Stability AI 모델(모두 us-west-2 리전이 필요):
Stability AI 이미지 모델은 us-west-2에서만 이용 가능합니다. 이 모델들을 사용할 때는 AWS_DEFAULT_REGION=us-west-2를 설정하세요.

Stability AI를 이용한 이미지 편집

Stability AI Image Services의 편집 계열 모델도 attachments() 메서드로 이용할 수 있습니다. 입력 이미지를 전달하고 편집 모델로 변환합니다.
사용 가능한 Stability AI 편집 모델(모두 us-east-1, us-east-2, us-west-2에서 이용 가능): Amazon Nova Canvas도 지원하지만, AWS에 의해 권장 중단이 진행되고 있습니다.

음성(TTS)

Amazon Polly를 사용해 텍스트에서 음성을 생성합니다.
남성/여성 목소리를 지정할 수 있습니다.
특정 Polly 보이스를 지정합니다.
생성된 음성을 저장합니다.
엔진(모델)을 지정할 수도 있습니다.
기본 보이스: default-female → Ruth, default-male → Matthew(둘 다 generative 엔진 지원).
Amazon Polly는 Bedrock과는 별도의 AWS 서비스입니다. Bedrock API 키(bearer token)는 Polly에서 사용할 수 없습니다. AWS IAM 자격 증명(SigV4) 또는 기본 AWS 자격 증명 체인을 사용하세요.

임베딩

Amazon Titan Embeddings V2를 사용해 벡터 임베딩을 생성합니다.
차원 수를 지정할 수 있습니다(Titan Embeddings V2는 256, 512, 1024).
커스텀 모델을 지정하는 예시.

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 저장소를 참조하세요.
마지막 수정일 2026년 7월 26일