AWS Bedrock에 첫 API 요청을 보내려면 세 가지 필수 구성 요소가 필요합니다: 서비스에 연결하기 위한 Bedrock Runtime Client, 실행할 모델을 지정하는 Model ID, 그리고 모델에 입력할 텍스트를 담은 User Message입니다.
Bedrock 클라이언트 설정하기
boto3를 사용하여 Bedrock runtime 서비스에 연결하는 클라이언트를 생성하는 것부터 시작합니다:
Model ID와 지역별 가용성 이해하기
여기서부터 까다로워집니다. 모든 모델이 모든 AWS 리전에서 사용 가능한 것은 아닙니다. 선택한 리전에 존재하지 않는 모델을 실행하려고 하면, 모델이 존재하지 않는다는 알기 어려운 오류 메시지를 받게 됩니다.

예를 들어, Claude Sonnet이 us-west-2에서 사용 가능하지만 us-east-1에서 요청을 보내는 경우, 요청이 실패합니다.

Inference Profile 사용하기
Inference profile은 선택한 모델이 실제로 호스팅되는 리전으로 요청을 자동으로 라우팅하여 지역별 가용성 문제를 해결합니다.

어떤 모델이 어떤 리전에 있는지 추적하는 대신, us-west-2와 us-east-2 같은 여러 리전에서 모델이 사용 가능하다는 것을 알고 있는 inference profile을 사용할 수 있습니다.

inference profile을 사용하여 요청을 보내면, 다른 리전에서 연결하고 있더라도 AWS가 자동으로 모델이 존재하는 올바른 리전으로 요청을 라우팅합니다.
inference profile ID를 찾으려면, AWS Bedrock 콘솔로 이동하여 메인 모델 카탈로그 페이지의 model ID를 사용하는 대신 "Cross-region inference" 항목을 확인하세요.

선택한 모델의 inference profile ID를 복사하세요.
User Message 만들기
User message는 처음에는 지나치게 복잡해 보일 수 있는 특정 구조를 가지고 있지만, 여기에는 타당한 이유가 있습니다:
content가 리스트인 이유는 하나의 메시지가 텍스트, 이미지 또는 다른 미디어 유형 등 다양한 유형의 콘텐츠를 포함할 수 있기 때문입니다. 이 구조를 통해 멀티모달 요청을 보낼 수 있습니다.

요청 보내기
이제 converse 메서드를 사용하여 API 호출을 할 수 있습니다:
응답에는 많은 메타데이터가 포함되어 있지만, 생성된 텍스트만 얻으려면 응답 구조를 탐색해야 합니다:
메시지 유형 이해하기
작업하게 될 두 가지 주요 메시지 유형이 있습니다:
- User message - 모델에 입력하고자 하는 콘텐츠 (role: "user")
- Assistant message - 모델이 생성한 콘텐츠 (role: "assistant")

두 메시지 유형 모두 role과 content 리스트로 구성된 동일한 구조를 따릅니다. 이러한 일관성 덕분에 user message와 assistant message를 번갈아 사용하여 대화를 쉽게 구성할 수 있습니다.
Bedrock에서 받는 assistant message는 role만 다를 뿐 user message와 정확히 동일한 형식을 따릅니다. 이러한 표준화된 구조 덕분에 더 긴 대화를 위해 여러 요청을 연결하는 것이 간단해집니다.