Amazon Bedrock 이란?
Amazon Bedrock은 AI21 Labs, Anthropic, Cohere, Meta, Stability AI 등의 다양한 Foundation Model을 선택하여 사용할 수 있는 생성형 AI 서비스입니다.Amazon Bedrock에 대한 자세한 소개 및 사용법은 서태호님께서 기재한 Amazon 생성형 AI 도구인 베드락 사용해 보자 편을 참고하시기 바랍니다.
이번 블로그에는 Amazon Bedrock를 어플리케이션에 통합하여 Foundation Model에 프롬프트를 입력하고, 그 결과를 출력할 수 있는 부분에 집중하여 설명하려 합니다.
Amazon Bedrock Endpoint를 이용한 어플리케이션 통합
아래 이미지는 리전별로 호출 가능한 Bedrock Endpoint 주소 정보 및 Bedrock 사용 요금 입니다.
(예시로 사용할 Foundation Model은claude3 sonnet 을 사용할 예정입니다.)

또한 Endpoint를 어플리케이션에 통합하기 위해서는 AWS SDK인 boto3 패키지를 사용하여 Bedrock을 호출합니다.
import boto3
def call_bedrock_endpoint():
model = "anthropic.claude-3-sonnet-20240229-v1:0" #FM : claude3 sonnet
prompt = "토끼와 거북이 이야기를 영어로 200자 이내로 번역하여 지문으로 생성하고, 3지 선다로 문제와 답을 3개 생성해줘."
session = boto3.Session()
bedrock = session.client(service_name='bedrock-runtime') #creates a Bedrock client
body = json.dumps({
"anthropic_version": "bedrock-2023-05-31",
"max_tokens": 512,
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": prompt
}
]
}
],
"temperature": 0.5,
"top_p": 0.9
})
response = bedrock.invoke_model(body=body, modelId=model, accept='application/json', contentType='application/json') #send the payload to Bedrock
response_body = json.loads(response.get('body').read()) # read the response
response_text = response_body.get("content")[0].get("text") #extract the text from the JSON response
print(response_text)
아래 코드는 Pyhton의 Boto3 패키지를 이용하여 Bedrock Endpoint를 호출하는 예시 코드입니다.위의 코드를 작성 후 호출하게 되면 다음과 같이 결과가 나오게 됩니다.
결론
Amazon Bedrock Endpoint를 사용하여 어플리케이션을 통합하면 빠르고 쉽게 챗봇 서비스, 이미지 생성 어플레케이션 등의 다양한 서비스를 구성할 수 있습니다.
AWS에서 제공하는 완전 관리형 서비스인 만큼Foundation Model 업데이트도 빠른 편이며, 사용자가 직접 생성한 Foundation Model을 import하여 구성할 수 있습니다.
뿐만 아니라, Knowledge Base, Agent, Playground 등의 다양한 기능을 제공 및 SageMaker 서비스와의 연동도 가능하니, 상황에 맞게 사용하시면 될 것으로 생각됩니다.
참고
Amazon Bedrock Endpoint
Amazon Bedrock 가격 정책
Amazon Bedrock Runtime examples using SDK for Python (Boto3)