🤖

본 콘텐츠의 이미지 및 내용은 AI로 생성되었습니다.

⚠️

본 콘텐츠의 이미지 및 내용을 무단으로 복제, 배포, 수정하여 사용할 경우 저작권법에 의해 법적 제재를 받을 수 있습니다.

이미지 로딩 중...

Bedrock 콘솔과 Playground 완벽 가이드 - 슬라이드 1/7
A

AI Generated

2025. 12. 17. · 4 Views

Bedrock 콘솔과 Playground 완벽 가이드

AWS Bedrock의 콘솔과 Playground를 처음 접하는 개발자를 위한 가이드입니다. 실무에서 바로 활용할 수 있도록 기본 사용법부터 파라미터 조정까지 단계별로 설명합니다.


목차

  1. Bedrock_콘솔_둘러보기
  2. Playground_접속하기
  3. 텍스트_생성_테스트
  4. 파라미터_조정하기
  5. 다양한_모델_비교_테스트
  6. 결과_저장_및_공유

1. Bedrock 콘솔 둘러보기

김개발 씨는 AI 서비스를 개발하라는 업무를 받았습니다. "Bedrock을 사용해서 구현해 보세요"라는 팀장님의 말씀에 AWS 콘솔에 접속했지만, 어디서부터 시작해야 할지 막막했습니다.

선배 개발자 박시니어 씨가 다가와 말했습니다. "걱정하지 마세요.

콘솔부터 천천히 둘러보면 금방 익숙해질 거예요."

Bedrock 콘솔은 AWS에서 제공하는 생성형 AI 서비스의 관리 화면입니다. 여기서 다양한 AI 모델을 선택하고, 테스트하고, 설정할 수 있습니다.

마치 자동차 대리점 쇼룸처럼 여러 모델을 한눈에 살펴보고 시운전할 수 있는 공간입니다.

다음 코드를 살펴봅시다.

# AWS CLI로 Bedrock 서비스 확인하기
import boto3

# Bedrock 클라이언트 생성
bedrock = boto3.client(
    service_name='bedrock',
    region_name='us-east-1'
)

# 사용 가능한 모델 목록 조회
response = bedrock.list_foundation_models()

# 모델 정보 출력
for model in response['modelSummaries']:
    print(f"모델 이름: {model['modelName']}")
    print(f"모델 ID: {model['modelId']}")

김개발 씨는 AWS 콘솔에 로그인한 후 검색창에 "Bedrock"을 입력했습니다. 화면에 나타난 서비스 페이지를 클릭하자 새로운 세계가 펼쳐졌습니다.

처음 보는 개발자에게 Bedrock 콘솔은 다소 복잡해 보일 수 있습니다. 하지만 구조를 이해하면 매우 직관적입니다.

Bedrock 콘솔의 구조를 쉽게 비유하자면, 대형 도서관과 같습니다. 왼쪽 사이드바는 도서관의 층별 안내판이고, 각 메뉴는 다른 섹션으로 연결됩니다.

Foundation models 메뉴는 이용 가능한 책들의 목록이고, Playgrounds는 독서실이라고 생각하면 됩니다. 콘솔에 처음 접속하면 어디부터 봐야 할까요?

먼저 왼쪽 사이드바를 주목해야 합니다. 여기에는 Get started, Foundation models, Playgrounds, Guardrails 등 다양한 메뉴가 있습니다.

각 메뉴는 특정 기능을 담당합니다. Get started 메뉴는 말 그대로 시작 가이드입니다.

Bedrock이 처음이라면 여기서 기본 개념과 사용법을 익힐 수 있습니다. 간단한 튜토리얼과 문서 링크가 제공됩니다.

Foundation models 메뉴는 가장 중요한 부분입니다. 여기서 Anthropic의 Claude, AI21 Labs의 Jurassic, Amazon의 Titan 등 다양한 AI 모델을 확인할 수 있습니다.

각 모델은 회사별로 구분되어 있고, 모델마다 특징과 가격 정보가 표시됩니다. 김개발 씨는 Foundation models 메뉴를 클릭했습니다.

화면에 여러 모델 카드가 나타났습니다. Claude 3 Sonnet, Claude 3.5 Sonnet, Titan Text 등 이름도 다양했습니다.

박시니어 씨가 설명했습니다. "각 모델마다 강점이 다릅니다.

Claude는 대화와 분석에 강하고, Titan은 AWS와의 통합이 잘 되어 있죠. 프로젝트 요구사항에 맞는 모델을 선택하는 게 중요합니다." 모델 액세스 관리도 중요한 기능입니다.

Bedrock의 모델들은 기본적으로 비활성화되어 있습니다. 사용하려면 각 모델에 대한 액세스를 요청해야 합니다.

Foundation models 메뉴에서 "Model access" 버튼을 클릭하면 각 모델의 활성화 상태를 확인할 수 있습니다. 일부 모델은 즉시 사용 가능하지만, 일부는 승인 절차가 필요합니다.

특히 강력한 성능의 모델일수록 사용 사례를 제출하고 AWS의 승인을 받아야 합니다. 리전 선택도 신경 써야 할 부분입니다.

AWS 콘솔 오른쪽 상단을 보면 현재 리전이 표시됩니다. Bedrock은 모든 리전에서 제공되지 않습니다.

us-east-1(버지니아), us-west-2(오레곤) 등 특정 리전에서만 사용 가능합니다. 프로젝트 시작 전 반드시 지원 리전을 확인해야 합니다.

대시보드와 모니터링도 콘솔의 중요한 기능입니다. 좌측 메뉴의 Monitoring 섹션에서는 API 호출 횟수, 토큰 사용량, 비용 등을 실시간으로 확인할 수 있습니다.

프로덕션 환경에서는 이 정보를 통해 서비스를 최적화할 수 있습니다. 김개발 씨는 콘솔을 이리저리 둘러보며 점점 구조가 보이기 시작했습니다.

"생각보다 직관적이네요. 각 메뉴가 명확하게 분리되어 있어서 찾기 쉬워요." Bedrock 콘솔을 제대로 이해하면 AI 모델 관리가 훨씬 수월해집니다.

처음에는 복잡해 보여도 몇 번 사용하다 보면 자연스럽게 익숙해집니다.

실전 팁

💡 - 처음 사용할 때는 Model access 메뉴에서 필요한 모델의 액세스를 먼저 활성화하세요

  • 각 모델의 pricing 정보를 확인하여 비용을 예측하세요
  • 리전별로 제공되는 모델이 다르므로 프로젝트 시작 전 확인이 필수입니다

2. Playground 접속하기

콘솔 구조를 파악한 김개발 씨는 이제 실제로 모델을 테스트해보고 싶어졌습니다. 코드를 작성하기 전에 모델이 어떻게 응답하는지 미리 확인할 방법이 있을까요?

박시니어 씨가 미소를 지으며 답했습니다. "그럴 때 쓰라고 Playground가 있는 거죠."

Playground는 코드 작성 없이 브라우저에서 바로 AI 모델을 테스트할 수 있는 대화형 인터페이스입니다. 마치 자동차를 구매하기 전 시운전하는 것처럼, 코드를 작성하기 전에 모델의 성능을 직접 체험할 수 있습니다.

다음 코드를 살펴봅시다.

# Playground에서 테스트한 내용을 코드로 변환하기
import boto3
import json

bedrock_runtime = boto3.client(
    service_name='bedrock-runtime',
    region_name='us-east-1'
)

# Playground에서 확인한 모델 ID 사용
model_id = "anthropic.claude-3-sonnet-20240229-v1:0"

# 프롬프트 구성 (Playground에서 테스트한 내용)
prompt = "Python으로 간단한 계산기를 만들어주세요."

# API 호출
response = bedrock_runtime.invoke_model(
    modelId=model_id,
    body=json.dumps({"prompt": prompt, "max_tokens": 1000})
)

김개발 씨는 Bedrock 콘솔 왼쪽 메뉴에서 Playgrounds를 클릭했습니다. 여러 옵션이 나타났습니다.

Chat, Text, Image playground 등 용도별로 구분되어 있었습니다. Playground의 종류를 이해하는 것이 첫 단계입니다.

Chat playground는 대화형 인터페이스입니다. 마치 ChatGPT처럼 질문하고 답변받는 형식으로 모델을 테스트할 수 있습니다.

여러 번의 대화를 이어갈 수 있어서 컨텍스트를 유지하는 기능을 테스트하기 좋습니다. Text playground는 단일 입력과 출력에 최적화되어 있습니다.

긴 텍스트를 한 번에 처리하거나, 문서 요약, 번역 등의 작업을 테스트할 때 유용합니다. Image playground는 이미지 생성 모델을 테스트하는 공간입니다.

Stable Diffusion 같은 모델을 사용하여 텍스트 프롬프트로부터 이미지를 생성할 수 있습니다. 김개발 씨는 Chat playground를 선택했습니다.

화면 중앙에 깔끔한 채팅 인터페이스가 나타났습니다. 상단에는 모델 선택 드롭다운이 있고, 하단에는 메시지 입력창이 있습니다.

오른쪽에는 다양한 설정 옵션들이 보였습니다. "먼저 모델을 선택해야 해요." 박시니어 씨가 화면을 가리키며 설명했습니다.

"상단의 Select model 버튼을 클릭하면 사용 가능한 모델 목록이 나타납니다." 모델 선택은 매우 중요합니다. 드롭다운을 클릭하면 액세스가 활성화된 모델들이 나타납니다.

Claude 3 Sonnet, Claude 3 Opus, Claude 3 Haiku 등 여러 버전이 있습니다. 각 모델마다 성능과 속도, 비용이 다릅니다.

Sonnet은 균형잡힌 성능과 속도를 제공합니다. Opus는 가장 강력한 성능을 자랑하지만 속도가 느리고 비용이 높습니다.

Haiku는 빠른 응답 속도가 필요한 경우에 적합합니다. 김개발 씨는 Claude 3 Sonnet을 선택했습니다.

화면 상단에 선택한 모델 이름이 표시되었습니다. 인터페이스 구성도 살펴볼 필요가 있습니다.

왼쪽은 대화 영역입니다. 여기서 프롬프트를 입력하고 모델의 응답을 확인합니다.

오른쪽은 설정 패널입니다. Temperature, Top P, Top K, Maximum length 등 다양한 파라미터를 조정할 수 있습니다.

하단의 입력창은 두 가지 모드를 지원합니다. User 모드는 일반 사용자 입력이고, System 모드는 모델에게 역할이나 지시사항을 부여할 때 사용합니다.

시스템 프롬프트는 특히 유용한 기능입니다. 예를 들어 "당신은 친절한 Python 선생님입니다.

초보자도 이해할 수 있게 쉽게 설명해주세요"라는 시스템 프롬프트를 설정하면, 이후 모든 대화에서 모델이 그 역할을 유지합니다. 김개발 씨는 간단한 질문을 입력해보기로 했습니다.

"안녕하세요. Python으로 리스트를 정렬하는 방법을 알려주세요." 입력창에 타이핑하고 엔터를 누르자 모델이 즉시 응답했습니다.

응답 속도도 빠르고 내용도 명확했습니다. "이렇게 간단하게 테스트할 수 있다니 신기해요!" 대화 히스토리 관리도 Playground의 장점입니다.

왼쪽 사이드바를 보면 이전 대화들이 자동으로 저장됩니다. 나중에 다시 돌아와서 이어서 테스트할 수 있습니다.

각 대화에는 제목을 붙일 수 있어서 관리가 편합니다. Export 기능도 놓치지 말아야 합니다.

Playground에서 만족스러운 결과를 얻었다면, 우측 상단의 Export 버튼을 클릭하세요. 현재 설정과 프롬프트를 Python, JavaScript 등의 코드로 자동 변환해줍니다.

이 코드를 복사해서 프로젝트에 바로 사용할 수 있습니다. 박시니어 씨가 조언했습니다.

"Playground는 실험실이라고 생각하세요. 여기서 충분히 테스트하고 검증한 다음 코드로 옮기면 시행착오를 줄일 수 있습니다." Playground를 잘 활용하면 개발 시간을 크게 단축할 수 있습니다.

코드를 작성하기 전 반드시 거쳐야 할 단계입니다.

실전 팁

💡 - Export 기능으로 테스트한 설정을 코드로 즉시 변환할 수 있습니다

  • 시스템 프롬프트를 활용하여 모델의 톤과 스타일을 제어하세요
  • 대화 히스토리를 저장하여 나중에 참고할 수 있습니다

3. 텍스트 생성 테스트

Playground에 익숙해진 김개발 씨는 본격적으로 텍스트 생성을 테스트해보기로 했습니다. 단순한 질문이 아니라 실제 업무에 활용할 만한 기능을 시도해보고 싶었습니다.

"코드 리뷰를 자동화하면 어떨까요?" 김개발 씨의 질문에 박시니어 씨가 고개를 끄덕였습니다. "좋은 생각이에요.

한번 테스트해봅시다."

텍스트 생성은 Bedrock의 핵심 기능으로, 프롬프트를 입력하면 AI가 문맥에 맞는 텍스트를 생성합니다. 코드 작성, 문서 요약, 번역, 질문 답변 등 다양한 작업에 활용할 수 있습니다.

마치 숙련된 어시스턴트가 바로 옆에서 도와주는 것과 같습니다.

다음 코드를 살펴봅시다.

# 텍스트 생성 기본 예제
import boto3
import json

bedrock_runtime = boto3.client(
    service_name='bedrock-runtime',
    region_name='us-east-1'
)

# 프롬프트 작성 - 코드 리뷰 요청
prompt = """
다음 Python 코드를 리뷰해주세요:

def calculate_total(items):
    total = 0
    for item in items:
        total = total + item['price']
    return total

개선점과 잠재적 문제점을 알려주세요.
"""

# 모델 호출
body = json.dumps({
    "anthropic_version": "bedrock-2023-05-31",
    "max_tokens": 1000,
    "messages": [{"role": "user", "content": prompt}]
})

response = bedrock_runtime.invoke_model(
    modelId="anthropic.claude-3-sonnet-20240229-v1:0",
    body=body
)

# 응답 파싱
result = json.loads(response['body'].read())
print(result['content'][0]['text'])

김개발 씨는 Playground의 입력창에 코드 리뷰 요청 프롬프트를 작성했습니다. 실제 프로젝트에서 작성한 함수를 붙여넣고, 개선점을 알려달라고 요청했습니다.

엔터를 누르자 모델이 분석을 시작했습니다. 프롬프트 작성이 텍스트 생성의 핵심입니다.

좋은 프롬프트는 명확하고 구체적이어야 합니다. "코드를 개선해줘"보다는 "다음 코드의 성능 문제와 가독성 문제를 분석하고, 개선된 코드를 제시해줘"가 훨씬 좋은 결과를 만들어냅니다.

김개발 씨가 입력한 프롬프트는 잘 구조화되어 있었습니다. 코드를 명확히 구분했고, 원하는 결과를 구체적으로 명시했습니다.

몇 초 후 모델이 응답을 생성하기 시작했습니다. 응답은 매우 체계적이었습니다.

먼저 코드의 현재 문제점을 지적했습니다. "딕셔너리 키가 존재하지 않을 경우 KeyError가 발생할 수 있습니다"라는 정확한 분석이었습니다.

응답의 구조를 살펴보면 흥미롭습니다. 모델은 단순히 답만 주는 것이 아니라 설명을 곁들입니다.

왜 문제인지, 어떻게 개선할 수 있는지를 논리적으로 풀어냅니다. 그리고 개선된 코드까지 제시합니다.

박시니어 씨가 화면을 가리켰습니다. "보세요.

모델이 리스트 컴프리헨션을 사용한 더 파이썬다운 코드를 제안하네요. 이런 게 바로 AI 코드 리뷰의 장점이죠." 다양한 텍스트 생성 작업을 시도해볼 수 있습니다.

김개발 씨는 다른 프롬프트도 테스트해보기로 했습니다. "이번에는 API 문서를 요약해달라고 해볼까요?" 긴 API 문서를 붙여넣고, "주요 엔드포인트와 사용법을 5줄 이내로 요약해줘"라고 요청했습니다.

결과는 놀라웠습니다. 20페이지짜리 문서가 핵심만 담은 5줄로 압축되었습니다.

정확하고 간결했습니다. 텍스트 생성의 활용 범위는 상상보다 넓습니다.

코드 생성은 물론이고, 주석 작성, 테스트 케이스 생성, 버그 리포트 작성, 기술 문서 번역 등 개발 과정의 거의 모든 단계에서 활용할 수 있습니다. 예를 들어 "이 함수의 유닛 테스트를 작성해줘"라고 요청하면, pytest 형식의 완전한 테스트 코드를 생성해줍니다.

"이 에러 메시지를 한국어로 번역하고 해결 방법을 제시해줘"라고 하면, 번역과 함께 디버깅 가이드까지 제공합니다. 프롬프트 엔지니어링의 중요성도 깨달았습니다.

처음에 김개발 씨는 "코드 리뷰해줘"라고만 입력했습니다. 결과는 좋았지만 너무 일반적이었습니다.

그래서 프롬프트를 개선했습니다. "Python 3.10 기준으로, PEP 8 스타일 가이드를 따르며, 성능과 보안 측면에서 코드를 리뷰해줘"라고 구체화했습니다.

결과가 완전히 달라졌습니다. 훨씬 실용적이고 구체적인 제안이 나왔습니다.

멀티턴 대화도 가능합니다. 첫 응답이 만족스럽지 않다면 추가 질문을 할 수 있습니다.

"방금 제안한 코드에서 에러 처리를 더 강화해줄 수 있나요?"라고 물으면, 이전 컨텍스트를 기억하고 개선된 버전을 제시합니다. 김개발 씨는 여러 가지 시나리오를 테스트하며 점점 더 정교한 프롬프트를 작성하게 되었습니다.

"처음에는 단순히 답을 얻는 것만 생각했는데, 프롬프트를 어떻게 작성하느냐에 따라 결과가 천차만별이네요." 김개발 씨의 감탄에 박시니어 씨가 미소지었습니다. "맞아요.

프롬프트 엔지니어링이 하나의 기술이 된 이유가 바로 그겁니다." 텍스트 생성을 제대로 활용하면 생산성이 비약적으로 향상됩니다. 반복적인 작업을 자동화하고, 더 창의적인 문제 해결에 집중할 수 있습니다.

실전 팁

💡 - 프롬프트는 구체적이고 명확하게 작성하세요. 원하는 형식, 길이, 스타일을 명시하면 더 좋은 결과를 얻습니다

  • 첫 응답이 만족스럽지 않다면 추가 질문으로 개선할 수 있습니다
  • 코드 생성 시 프로그래밍 언어 버전과 코딩 컨벤션을 명시하면 더 정확한 결과를 얻습니다

4. 파라미터 조정하기

텍스트 생성에 익숙해진 김개발 씨는 때때로 응답이 너무 창의적이거나 반대로 너무 보수적인 것을 발견했습니다. "이 응답 스타일을 제어할 방법이 없을까요?" 박시니어 씨가 Playground 오른쪽 패널을 가리켰습니다.

"바로 이 파라미터들이 그 역할을 합니다. Temperature와 Top-p를 조정해보세요."

파라미터 조정은 AI 모델의 응답 스타일을 제어하는 핵심 기능입니다. Temperature는 응답의 창의성과 무작위성을 조절하고, Top-p는 토큰 선택의 다양성을 제어합니다.

마치 라디오의 볼륨과 음색 조절 다이얼처럼, 이 파라미터들로 모델의 출력을 세밀하게 튜닝할 수 있습니다.

다음 코드를 살펴봅시다.

# 파라미터를 조정하여 텍스트 생성하기
import boto3
import json

bedrock_runtime = boto3.client(
    service_name='bedrock-runtime',
    region_name='us-east-1'
)

# 창의적인 응답을 위한 높은 Temperature
creative_body = json.dumps({
    "anthropic_version": "bedrock-2023-05-31",
    "max_tokens": 500,
    "temperature": 0.9,  # 높은 창의성
    "top_p": 0.95,       # 넓은 토큰 범위
    "messages": [{
        "role": "user",
        "content": "새로운 앱 이름을 제안해주세요"
    }]
})

# 정확한 응답을 위한 낮은 Temperature
precise_body = json.dumps({
    "anthropic_version": "bedrock-2023-05-31",
    "max_tokens": 500,
    "temperature": 0.1,  # 낮은 창의성, 높은 정확성
    "top_p": 0.5,        # 좁은 토큰 범위
    "messages": [{
        "role": "user",
        "content": "Python의 리스트와 튜플의 차이를 설명해주세요"
    }]
})

response = bedrock_runtime.invoke_model(
    modelId="anthropic.claude-3-sonnet-20240229-v1:0",
    body=creative_body
)

김개발 씨는 Playground 오른쪽 패널에 있는 Configuration 섹션을 자세히 살펴봤습니다. Temperature, Top P, Top K, Maximum length 등 여러 슬라이더가 보였습니다.

"이 숫자들이 정확히 뭘 의미하는 거죠?" 김개발 씨의 질문에 박시니어 씨가 차근차근 설명하기 시작했습니다. Temperature를 먼저 이해해야 합니다.

쉽게 비유하자면, Temperature는 주사위의 공정성을 조절하는 것과 같습니다. Temperature가 0에 가까우면 모델은 항상 가장 확률이 높은 단어를 선택합니다.

마치 조작된 주사위가 항상 6만 나오는 것처럼 예측 가능하고 일관된 결과를 만듭니다. 반대로 Temperature가 1에 가까우면 모델은 더 다양한 선택을 합니다.

확률이 낮은 단어도 선택될 수 있어서 창의적이고 예상 밖의 응답이 나옵니다. 김개발 씨는 실험을 시작했습니다.

먼저 Temperature를 0.1로 설정하고 "Python으로 Hello World를 출력하는 코드를 작성해줘"라고 입력했습니다. 응답은 매우 표준적이었습니다.

print("Hello World")라는 가장 기본적인 코드가 나왔습니다. 같은 질문을 Temperature 0.9로 다시 시도했습니다.

이번에는 재미있는 변화가 있었습니다. ASCII 아트를 포함한 창의적인 버전, 또는 여러 언어로 Hello World를 출력하는 확장된 예제가 제시되었습니다.

**Top-p(nucleus sampling)**도 중요한 파라미터입니다. Top-p는 0과 1 사이의 값을 가지며, 누적 확률을 기준으로 토큰을 선택합니다.

쉽게 설명하면, Top-p가 0.9라는 것은 "누적 확률 상위 90%에 해당하는 단어들 중에서만 선택하겠다"는 의미입니다. 마치 식당에서 메뉴를 선택하는 것과 비슷합니다.

Top-p가 낮으면 인기 메뉴 몇 개만 선택 가능하고, Top-p가 높으면 거의 모든 메뉴를 선택할 수 있습니다. 박시니어 씨가 실용적인 조언을 했습니다.

"보통 기술 문서나 정확한 답변이 필요할 때는 Temperature를 0.10.3으로 낮게 설정합니다. 반대로 브레인스토밍이나 창의적인 아이디어가 필요할 때는 0.70.9로 높게 설정하죠." 김개발 씨는 코드 리뷰 시나리오로 테스트해봤습니다.

Temperature 0.2로 설정했을 때는 표준적인 베스트 프랙티스만 제안했습니다. 변수명 개선, 타입 힌트 추가 등 안전하고 검증된 제안들이었습니다.

Temperature 0.8로 올렸을 때는 훨씬 다양한 접근이 나왔습니다. 디자인 패턴 적용, 함수형 프로그래밍 스타일로의 리팩토링, 성능 최적화를 위한 알고리즘 변경 등 더 실험적인 제안이 포함되었습니다.

Maximum length도 살펴봐야 합니다. 이 파라미터는 응답의 최대 토큰 수를 제한합니다.

토큰은 대략 단어나 문자의 조각입니다. 영어의 경우 1 토큰은 약 4글자, 한국어는 1~2글자 정도입니다.

Maximum length를 100으로 설정하면 짧고 간결한 응답을 받습니다. 2000으로 설정하면 상세하고 긴 설명을 받을 수 있습니다.

비용과 직결되므로 필요한 만큼만 설정하는 것이 중요합니다. Top K는 덜 사용되지만 알아둘 필요가 있습니다.

Top K는 각 단계에서 고려할 상위 K개의 토큰만 선택합니다. Top K가 50이면, 확률이 높은 상위 50개 토큰 중에서만 다음 단어를 선택합니다.

Top-p와 비슷하지만 절대적인 개수를 제한한다는 차이가 있습니다. 김개발 씨는 여러 조합을 실험하며 패턴을 발견했습니다.

정확한 기술 답변이 필요할 때는 Temperature 0.2, Top-p 0.5로 설정하는 것이 좋았습니다. 창의적인 아이디어가 필요할 때는 Temperature 0.8, Top-p 0.95가 효과적이었습니다.

파라미터 조합의 예술을 익히는 것이 중요합니다. Temperature와 Top-p는 함께 작동합니다.

Temperature가 높아도 Top-p가 낮으면 다양성이 제한됩니다. 반대로 Temperature가 낮아도 Top-p가 높으면 어느 정도 변화가 생깁니다.

박시니어 씨가 정리해줬습니다. "파라미터는 레시피와 같아요.

같은 재료라도 온도와 시간을 어떻게 조절하느냐에 따라 완전히 다른 요리가 나오죠. AI도 마찬가지입니다." 파라미터를 제대로 이해하고 조정하면 같은 모델로도 다양한 용도에 맞는 결과를 얻을 수 있습니다.

처음에는 기본값을 사용하다가, 경험이 쌓이면 상황에 맞게 세밀하게 조정하세요.

실전 팁

💡 - 기술 문서, 코드 리뷰, 정확한 답변: Temperature 0.1-0.3, Top-p 0.5

  • 브레인스토밍, 창의적 글쓰기: Temperature 0.7-0.9, Top-p 0.9-1.0
  • Maximum length는 비용과 직결되므로 필요한 만큼만 설정하세요

5. 다양한 모델 비교 테스트

파라미터 조정에 익숙해진 김개발 씨는 문득 궁금해졌습니다. "Bedrock에는 Claude 말고도 다른 모델들이 있잖아요.

각각 어떤 차이가 있을까요?" 박시니어 씨가 모델 선택 드롭다운을 열었습니다. "좋은 질문이에요.

직접 비교해보는 게 가장 빠릅니다."

모델 비교는 각 AI 모델의 강점과 특성을 파악하는 과정입니다. Bedrock은 Claude, Jurassic, Titan, Llama 등 다양한 모델을 제공하며, 각각 속도, 비용, 성능, 특화 분야가 다릅니다.

마치 여러 전문가에게 같은 질문을 하고 답변을 비교하는 것과 같습니다.

다음 코드를 살펴봅시다.

# 여러 모델을 순차적으로 테스트하기
import boto3
import json
import time

bedrock_runtime = boto3.client(
    service_name='bedrock-runtime',
    region_name='us-east-1'
)

# 테스트할 모델 목록
models = [
    "anthropic.claude-3-sonnet-20240229-v1:0",
    "anthropic.claude-3-haiku-20240307-v1:0",
    "amazon.titan-text-premier-v1:0"
]

prompt = "Python으로 피보나치 수열을 구현하는 가장 효율적인 방법은?"

# 각 모델 성능 비교
for model_id in models:
    start_time = time.time()

    body = json.dumps({
        "anthropic_version": "bedrock-2023-05-31",
        "max_tokens": 500,
        "messages": [{"role": "user", "content": prompt}]
    }) if "anthropic" in model_id else json.dumps({
        "inputText": prompt,
        "textGenerationConfig": {"maxTokenCount": 500}
    })

    response = bedrock_runtime.invoke_model(
        modelId=model_id,
        body=body
    )

    elapsed_time = time.time() - start_time
    print(f"\n모델: {model_id}")
    print(f"응답 시간: {elapsed_time:.2f}초")

김개발 씨는 Playground에서 모델 선택 드롭다운을 열었습니다. 생각보다 많은 모델이 나열되어 있었습니다.

Anthropic의 Claude 시리즈, Amazon의 Titan 시리즈, AI21 Labs의 Jurassic, Meta의 Llama 등 다양했습니다. "어떤 기준으로 선택해야 하죠?" 김개발 씨의 질문에 박시니어 씨가 설명을 시작했습니다.

모델 선택의 기준은 크게 네 가지입니다. 첫째는 성능입니다.

복잡한 추론, 긴 컨텍스트 이해, 정확한 분석이 필요하다면 Claude 3 Opus 같은 고성능 모델이 적합합니다. 둘째는 속도입니다.

실시간 응답이 중요한 챗봇이나 대화형 서비스라면 Claude 3 Haiku처럼 빠른 모델이 좋습니다. 셋째는 비용입니다.

대량의 텍스트를 처리하거나 높은 트래픽을 감당해야 한다면 비용 효율적인 모델을 선택해야 합니다. 넷째는 특화 기능입니다.

어떤 모델은 코드 생성에 강하고, 어떤 모델은 다국어 처리에 특화되어 있습니다. 김개발 씨는 실험을 시작했습니다.

먼저 같은 프롬프트를 여러 모델에 입력해보기로 했습니다. "Python으로 REST API 클라이언트를 작성하는 예제 코드를 만들어줘"라는 질문을 준비했습니다.

Claude 3 Opus를 먼저 시도했습니다. 응답은 매우 상세했습니다.

에러 처리, 타임아웃 설정, 재시도 로직, 로깅까지 포함된 프로덕션 수준의 코드가 나왔습니다. 설명도 깊이가 있었습니다.

하지만 응답 시간이 다소 길었습니다. 약 8초가 걸렸습니다.

Claude 3 Haiku로 같은 질문을 했습니다. 응답은 2초 만에 나왔습니다.

빠릅니다. 코드는 기본적이지만 작동하는 예제였습니다.

에러 처리는 간단했고, 주석도 최소한이었습니다. 간단한 프로토타입이나 빠른 테스트에는 충분해 보였습니다.

Amazon Titan Text도 테스트했습니다. Titan은 AWS 네이티브 모델입니다.

응답은 중간 정도의 상세함을 보였습니다. 특이한 점은 AWS 서비스와의 통합 예제를 자주 제안한다는 것이었습니다.

boto3 사용법, IAM 권한 설정 등 AWS 생태계에 최적화된 답변이었습니다. 코드 품질을 비교해보는 것도 흥미로웠습니다.

김개발 씨는 "이 SQL 쿼리를 최적화해줘"라는 프롬프트로 테스트했습니다. 복잡한 JOIN이 여러 개 있는 비효율적인 쿼리를 제시했습니다.

Claude 3 Opus는 인덱스 추가 제안, 서브쿼리를 CTE로 변환, 실행 계획 분석 방법까지 제시했습니다. Claude 3 Haiku는 기본적인 인덱스 제안과 간단한 리팩토링만 제공했습니다.

Titan은 AWS RDS와 Aurora에 특화된 최적화 팁을 추가로 제공했습니다. 다국어 지원도 테스트 대상입니다.

한국어 프롬프트를 입력했습니다. "한국의 전통 음식에 대해 설명해줘." Claude 모델들은 자연스러운 한국어로 응답했습니다.

문맥도 정확하고 문화적 뉘앙스도 잘 이해했습니다. 컨텍스트 길이도 중요한 차이점입니다.

Claude 3 시리즈는 최대 200K 토큰의 긴 컨텍스트를 지원합니다. 긴 문서 전체를 입력하고 분석할 수 있습니다.

다른 모델들은 보통 4K~32K 토큰을 지원합니다. 김개발 씨는 긴 코드 파일(약 500줄)을 Claude 3에 입력하고 "이 코드의 아키텍처를 설명하고 개선점을 제시해줘"라고 요청했습니다.

모델은 전체 코드를 이해하고 종합적인 분석을 제공했습니다. 박시니어 씨가 실무 팁을 공유했습니다.

"프로토타이핑 단계에서는 Haiku로 빠르게 테스트하세요. 비용도 낮고 속도도 빠릅니다.

실제 프로덕션에 배포할 때는 Sonnet이나 Opus로 품질을 높이는 게 좋습니다. 그리고 AWS 서비스와 깊이 통합해야 한다면 Titan도 고려해보세요." 비용 비교도 빼놓을 수 없습니다.

각 모델의 요금은 입력 토큰과 출력 토큰당으로 책정됩니다. Haiku는 가장 저렴하고, Opus는 가장 비쌉니다.

하지만 Opus가 한 번에 정확한 답을 준다면, Haiku로 여러 번 시도하는 것보다 오히려 비용 효율적일 수 있습니다. 김개발 씨는 스프레드시트에 각 모델의 응답 시간, 답변 품질, 예상 비용을 정리했습니다.

프로젝트마다 최적의 모델이 다르다는 것을 깨달았습니다. "결국 정답은 없고, 상황에 맞게 선택해야 하는 거네요." 김개발 씨의 말에 박시니어 씨가 고개를 끄덕였습니다.

"맞아요. 그래서 Playground에서 충분히 비교 테스트하는 게 중요합니다." 모델 비교를 통해 각각의 강점을 파악하면, 프로젝트 요구사항에 가장 적합한 선택을 할 수 있습니다.

시간을 들여 비교하는 것이 장기적으로는 시간과 비용을 절약하는 길입니다.

실전 팁

💡 - 프로토타이핑은 Haiku, 프로덕션은 Sonnet/Opus를 사용하면 효율적입니다

  • 같은 프롬프트를 여러 모델에 입력하여 응답 품질과 속도를 비교하세요
  • 비용은 토큰 기반이므로 실제 사용량을 예측하여 총 비용을 계산하세요

6. 결과 저장 및 공유

여러 모델을 테스트하며 좋은 결과를 많이 얻은 김개발 씨는 문득 걱정이 되었습니다. "이 대화 내용들을 나중에 다시 볼 수 있을까요?

팀원들과 공유하려면 어떻게 해야 하죠?" 박시니어 씨가 Playground 상단 메뉴를 가리켰습니다. "결과를 저장하고 공유하는 기능도 물론 있습니다."

결과 저장 및 공유는 Playground에서 테스트한 프롬프트와 응답을 보존하고 팀원들과 협업하는 기능입니다. 대화 히스토리를 저장하고, 코드로 변환하고, 팀원들과 공유할 수 있습니다.

마치 실험 노트에 결과를 기록하고 동료들과 리뷰하는 것과 같습니다.

다음 코드를 살펴봅시다.

# Playground 결과를 코드로 변환한 예제
import boto3
import json
from datetime import datetime

bedrock_runtime = boto3.client(
    service_name='bedrock-runtime',
    region_name='us-east-1'
)

# Playground에서 테스트한 설정을 그대로 코드화
def save_prompt_result(prompt, response_text):
    """프롬프트와 응답을 로컬에 저장"""
    timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
    filename = f"bedrock_result_{timestamp}.json"

    result = {
        "timestamp": timestamp,
        "prompt": prompt,
        "response": response_text,
        "model": "anthropic.claude-3-sonnet-20240229-v1:0",
        "parameters": {
            "temperature": 0.7,
            "max_tokens": 1000
        }
    }

    with open(filename, 'w', encoding='utf-8') as f:
        json.dump(result, f, ensure_ascii=False, indent=2)

    return filename

# 사용 예제
prompt = "AWS Lambda 함수 예제 작성"
# ... API 호출 후 응답 받음 ...
saved_file = save_prompt_result(prompt, "응답 내용")
print(f"결과 저장됨: {saved_file}")

김개발 씨는 지금까지 수십 개의 프롬프트를 테스트했습니다. 유용한 결과도 많고, 나중에 참고하고 싶은 설정도 많았습니다.

하지만 Playground를 닫으면 모든 내용이 사라지지 않을까 걱정이 되었습니다. 박시니어 씨가 안심시켰습니다.

"걱정하지 마세요. Playground는 자동으로 대화 히스토리를 저장합니다." 대화 히스토리 자동 저장이 첫 번째 기능입니다.

Playground 왼쪽 사이드바를 보면 이전 대화 목록이 표시됩니다. 각 대화는 첫 프롬프트의 일부를 제목으로 사용하여 자동 저장됩니다.

원한다면 제목을 더 의미 있게 변경할 수 있습니다. 김개발 씨는 "코드 리뷰 테스트"라는 제목으로 대화를 하나 찾았습니다.

클릭하자 며칠 전에 테스트했던 모든 프롬프트와 응답이 그대로 나타났습니다. "오, 편하네요!" Export 기능이 매우 유용합니다.

Playground 우측 상단에 "Export" 버튼이 있습니다. 이 버튼을 클릭하면 현재 프롬프트와 설정을 코드로 변환해줍니다.

Python, JavaScript, cURL 등 다양한 형식을 지원합니다. 김개발 씨는 Export를 클릭하고 Python을 선택했습니다.

팝업 창에 즉시 사용 가능한 Python 코드가 나타났습니다. boto3 클라이언트 설정부터 API 호출, 응답 파싱까지 완벽한 코드였습니다.

"이 코드를 복사해서 프로젝트에 바로 붙여넣으면 됩니다." 박시니어 씨가 설명했습니다. "Playground에서 테스트한 모든 파라미터가 그대로 반영되어 있어요." 결과를 파일로 저장하는 방법도 있습니다.

응답이 긴 경우 복사-붙여넣기가 번거로울 수 있습니다. 브라우저의 개발자 도구를 열면 네트워크 탭에서 실제 API 응답을 JSON 형식으로 다운로드할 수 있습니다.

또는 간단하게 응답 텍스트를 선택하고 복사한 후, 로컬 텍스트 파일이나 마크다운 파일로 저장할 수 있습니다. 김개발 씨는 유용한 프롬프트와 응답을 bedrock_prompts.md 파일에 정리하기 시작했습니다.

팀원과 공유하기는 협업에 필수적입니다. Playground 자체는 AWS 계정에 종속되어 있어서 직접 공유 기능은 제한적입니다.

하지만 Export한 코드나 저장한 프롬프트를 Git 저장소에 커밋하면 팀원들과 쉽게 공유할 수 있습니다. 김개발 씨는 팀 저장소에 prompts/ 디렉토리를 만들었습니다.

여기에 각 사용 사례별로 프롬프트 템플릿과 파라미터 설정을 JSON 파일로 저장했습니다. 예를 들어 code_review_prompt.json이라는 파일을 만들고, 다음과 같이 구조화했습니다: json { "name": "코드 리뷰 프롬프트", "model": "anthropic.claude-3-sonnet-20240229-v1:0", "temperature": 0.3, "max_tokens": 2000, "prompt_template": "다음 {language} 코드를 리뷰해주세요..." } 프롬프트 라이브러리 구축도 좋은 전략입니다.

김개발 씨는 자주 사용하는 프롬프트들을 카테고리별로 정리했습니다. 코드 리뷰, 버그 분석, 문서 작성, API 설계 등으로 분류하고, 각각 최적의 파라미터를 기록했습니다.

팀원들도 이 라이브러리를 사용하기 시작하면서 점점 더 좋은 프롬프트가 축적되었습니다. 누군가 더 나은 결과를 얻으면 프롬프트를 개선하여 다시 공유했습니다.

버전 관리도 고려할 점입니다. 프롬프트도 코드처럼 버전 관리가 필요합니다.

같은 작업이라도 시간이 지나면 더 나은 방법을 발견할 수 있습니다. Git을 사용하면 프롬프트의 변경 이력을 추적하고, 어떤 버전이 더 좋은 결과를 냈는지 비교할 수 있습니다.

API 래퍼 함수 작성도 유용합니다. 김개발 씨는 Playground에서 Export한 코드를 기반으로 재사용 가능한 함수를 만들었습니다.

bedrock_utils.py라는 파일에 call_bedrock() 함수를 작성하여, 프롬프트만 전달하면 자동으로 최적의 파라미터로 API를 호출하도록 했습니다. 팀원들은 이 함수를 import해서 사용하면 되므로, 매번 boto3 설정을 반복할 필요가 없었습니다.

비용 추적도 결과 저장의 일부입니다. 각 테스트의 토큰 사용량을 기록하면 실제 프로덕션 환경의 비용을 예측할 수 있습니다.

김개발 씨는 간단한 스프레드시트에 날짜, 프롬프트 유형, 토큰 수, 예상 비용을 기록했습니다. 한 달 후 데이터를 분석하자 어떤 작업이 가장 비용이 많이 드는지, 어떤 모델이 비용 대비 효율적인지 명확히 보였습니다.

박시니어 씨가 마무리 조언을 했습니다. "Playground는 실험실입니다.

여기서 얻은 인사이트를 잘 기록하고 공유하면, 팀 전체의 AI 활용 수준이 빠르게 향상됩니다." 김개발 씨는 이제 Bedrock Playground를 자신 있게 사용할 수 있게 되었습니다. 콘솔 탐색부터 모델 비교, 파라미터 조정, 결과 저장까지 모든 과정을 마스터했습니다.

결과를 체계적으로 저장하고 팀원들과 공유하면 같은 실수를 반복하지 않고, 성공 사례를 빠르게 확산시킬 수 있습니다. 이것이 바로 협업의 힘입니다.

실전 팁

💡 - Export 기능으로 Playground 설정을 코드로 즉시 변환하세요

  • 자주 사용하는 프롬프트는 템플릿화하여 Git 저장소에 저장하세요
  • 토큰 사용량을 추적하여 프로덕션 비용을 사전에 예측하세요

이상으로 학습을 마칩니다. 위 내용을 직접 코드로 작성해보면서 익혀보세요!

#AWS#Bedrock#Playground#AIModel#CloudConsole

댓글 (0)

댓글을 작성하려면 로그인이 필요합니다.