Amazon Bedrock 채팅

Amazon Bedrock 채팅 (Bedrock Chat)

Amazon Bedrock은 여러 AI 제공자의 파운데이션 모델을 통합 API로 제공하는 관리형 서비스예요. Spring AI는 Bedrock의 채팅 모델을 지원하며, 시작하기 위한 의존성 추가와 AWS 자격 증명, 리전 설정, 모델 활성화 방법을 알아볼게요.

출처: 문서

본문

__ | Bedrock 권장사항에 따라, Spring AI는 Spring AI의 모든 Chat 대화 구현을 위해 Amazon Bedrock의 Converse API를 사용하도록 전환했어요. Bedrock Converse API의 주요 이점은 다음과 같아요:

  • Unified Interface: 코드를 한 번 작성하면 지원되는 어떤 Amazon Bedrock 모델에서도 사용 가능
  • Model Flexibility: 코드 변경 없이 서로 다른 대화 모델 간에 매끄럽게 전환
  • Extended Functionality: 전용 구조를 통한 모델별 파라미터 지원
  • Tool Support: 함수 호출과 툴 사용 기능과의 네이티브 통합
  • Multimodal Capabilities: 비전 및 기타 멀티모달 기능의 내장 지원
  • Future-Proof: Amazon Bedrock의 권장 모범 사례에 부합

Converse API는 임베딩 연산을 지원하지 않으므로, 임베딩은 현재 API에 유지되고 기존 InvokeModel API의 임베딩 모델 기능도 계속 유지될 거예요. ---|---

Amazon Bedrock은 다양한 AI 제공자의 파운데이션 모델을 통합 API를 통해 제공하는 관리형 서비스예요.

Spring AI는 Spring EmbeddingModel 인터페이스를 구현하여 Amazon Bedrock을 통해 사용 가능한 Embedding AI 모델을 지원해요.

또한 Spring AI는 모든 클라이언트에 Spring Auto-Configuration과 Boot Starter를 제공해서, Bedrock 모델을 쉽게 부트스트랩하고 구성할 수 있게 해줘요.

Getting Started

시작하려면 몇 가지 단계가 있어요:

  • 프로젝트에 Bedrock용 Spring Boot starter를 추가하세요.

  • AWS 자격 증명 얻기: 아직 AWS 계정과 AWS CLI가 구성되어 있지 않다면, 이 비디오 가이드가 구성을 도와줄 거예요: AWS CLI & SDK Setup in Less Than 4 Minutes!. 접근 키(access key)와 보안 키(security key)를 얻을 수 있을 거예요.

  • 사용할 모델 활성화: Amazon Bedrock으로 이동해 왼쪽의 Model Access 메뉴에서 사용할 모델에 대한 접근을 구성하세요.

Project Dependencies

그런 다음 프로젝트의 Maven pom.xml 빌드 파일에 Spring Boot Starter 의존성을 추가하세요:

<dependency>
 <artifactId>spring-ai-starter-model-bedrock</artifactId>
 <groupId>org.springframework.ai</groupId>
</dependency>

또는 Gradle build.gradle 빌드 파일에 추가할 수도 있어요:

dependencies {
    implementation 'org.springframework.ai:spring-ai-starter-model-bedrock'
}
__ 빌드 파일에 Spring AI BOM을 추가하려면 Dependency Management 섹션을 참고해주세요.

Connect to AWS Bedrock

BedrockAwsConnectionProperties를 사용해 AWS 자격 증명과 리전을 구성해요:

spring.ai.bedrock.aws.region=eu-north-1

spring.ai.bedrock.aws.access-key=YOUR_ACCESS_KEY
spring.ai.bedrock.aws.secret-key=YOUR_SECRET_KEY

spring.ai.bedrock.aws.profile.name=YOUR_PROFILE_NAME
spring.ai.bedrock.aws.profile.credentials-path=YOUR_CREDENTIALS_PATH
spring.ai.bedrock.aws.profile.configuration-path=YOUR_CONFIGURATION_PATH

spring.ai.bedrock.aws.timeout=10m

AWS 자격 증명은 다음 순서로 해석돼요:

  1. Spring AI Bedrock spring.ai.bedrock.aws.access-key와 spring.ai.bedrock.aws.secret-key 프로퍼티.

  2. Spring AI Bedrock spring.ai.bedrock.aws.profile.name. spring.ai.bedrock.aws.profile.credentials-path와 spring.ai.bedrock.aws.profile.configuration-path를 지정하지 않으면, Spring AI는 표준 AWS 공유 파일을 사용해요: 자격 증명은 ~/.aws/credentials, 설정은 ~/.aws/config.

  3. Java System Properties - aws.accessKeyId와 aws.secretAccessKey.

  4. 환경 변수 - AWS_ACCESS_KEY_ID와 AWS_SECRET_ACCESS_KEY.

  5. 시스템 프로퍼티 또는 환경 변수의 Web Identity Token 자격 증명.

  6. 모든 AWS SDK와 AWS CLI가 공유하는 기본 위치(~/.aws/credentials)의 자격 증명 프로필 파일.

  7. AWS_CONTAINER_CREDENTIALS_RELATIVE_URI 환경 변수가 설정되어 있고 보안 관리자가 그 변수에 접근할 권한이 있다면, Amazon EC2 컨테이너 서비스를 통해 전달되는 자격 증명.

  8. Amazon EC2 메타데이터 서비스를 통해 전달되는 인스턴스 프로필 자격 증명, 또는 AWS_ACCESS_KEY_ID와 AWS_SECRET_ACCESS_KEY 환경 변수 설정.

AWS 리전은 다음 순서로 해석돼요:

  1. Spring AI Bedrock spring.ai.bedrock.aws.region 프로퍼티.

  2. Java System Properties - aws.region.

  3. 환경 변수 - AWS_REGION.

  4. 모든 AWS SDK와 AWS CLI가 공유하는 기본 위치(~/.aws/credentials)의 자격 증명 프로필 파일.

  5. Amazon EC2 메타데이터 서비스를 통해 전달되는 인스턴스 프로필 리전.

  6. 정의된 리전이 없으면 US_EAST_1로 기본 설정.

표준 Spring AI Bedrock 자격 증명 및 리전 프로퍼티 구성에 더해, Spring AI는 커스텀 AwsCredentialsProvider와 AwsRegionProvider 빈도 지원해요.

__ 예를 들어 Spring AI와 Spring Cloud for Amazon Web Services를 동시에 사용하는 경우입니다. Spring AI는 Spring Cloud for Amazon Web Services 자격 증명 구성과 호환돼요.

Enable selected Bedrock model

__ 기본적으로 모든 모델은 비활성화돼 있어요. spring.ai.model.embedding=<model-name> 프로퍼티를 사용해 선택한 Bedrock 모델을 명시적으로 활성화해야 해요.

지원되는 <model-name>은 다음과 같아요:

Model

bedrock-cohere bedrock-titan (no batch support yet)

예를 들어 Bedrock Cohere 임베딩 모델을 활성화하려면 spring.ai.model.embedding=bedrock-cohere로 설정해야 해요.

다음으로 spring.ai.bedrock.<model>.embedding.* 프로퍼티를 사용해 각 모델을 구성할 수 있어요.

자세한 내용은 아래 각 지원 모델의 문서를 참고해주세요.

더 알아보기 (Learn more)