주메뉴 바로가기 본문 바로가기

알림

콘솔 이동 시 로그인이 필요합니다.

로그인하시겠습니까?

아니요

닫기

주문 불가 알림

주문권한이 없습니다.

콘솔에 접근할 수 없는 계정입니다.

확인

닫기

알림

신용카드 등록이 필요합니다.

신용카드 등록 페이지로 이동하시겠습니까?

아니요

닫기
C&C Tech
img

Amazon Bedrock Endpoint을 이용한 어플리케이션 통합

img ChanBV2
| 2024.06.20
  • bedrock
  • aws
  • amazon

Amazon Bedrock은 AI21 Labs, Anthropic, Cohere, Meta, Stability AI 등의 다양한 Foundation Model을 선택하여 사용할 수 있는 생성형 AI 서비스입니다. 어플리케이션에 Amazon Bedrock Endpoint를 사용하여 프롬프트를 입력하고 결과를 출력할 수 있으며, AWS SDK인 boto3 패키지를 사용하여 쉽게 통합이 가능합니다. 이를 통해 챗봇 서비스나 이미지 생성 어플리케이션 등을 빠르게 구성할 수 있습니다.

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를 이용한 어플리케이션 통합

Amazon Bedrock에서 제공하는 다양한 Foundation Model를 선택하고, 사용자가 작성한 프롬프트를 호출 하기 위해서는 Amazon Bedrock Endpoint를 사용합니다.
Amazon Bedrock Endpoint는 Amazon Bedrock 서비스를 제공하는 리전별 API를 호출할 수 있도록 제공합니다.
아래 이미지는 리전별로 호출 가능한 Bedrock Endpoint 주소 정보 및 Bedrock 사용 요금 입니다.

(예시로 사용할 Foundation Model은claude3 sonnet 을 사용할 예정입니다.)image.png




또한 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)
img
ChanBV2 | FPT Team

FPT Team