언어 모델로 텍스트 생성

Amazon Bedrock 입문

Nikhil Rangarajan

Data Scientist

언어 모델에 프롬프트 보내기

  • 프롬프트: 모델에 보내는 입력 텍스트
    • "Explain how AWS Lambda works"

프롬프트를 나타내는 아이콘.

Amazon Bedrock 입문

언어 모델에 프롬프트 보내기

  • 프롬프트: 모델에 보내는 입력 텍스트
    • "Explain how AWS Lambda works"
  • 컴플리션: 모델이 생성한 텍스트
    • "AWS Lambda is a serverless compute service that..."

프롬프트와 컴플리션을 나타내는 아이콘.

Amazon Bedrock 입문

언어 모델에 프롬프트 보내기

  • 프롬프트: 모델에 보내는 입력 텍스트
    • "Explain how AWS Lambda works"
  • 컴플리션: 모델이 생성한 텍스트
    • "AWS Lambda is a serverless compute service that..."
  • 응답:
    • 생성 텍스트(컴플리션)
    • 메타데이터(토큰, 모델 정보)
    • 상태 정보

프롬프트, 컴플리션, 응답을 순서대로 나타내는 세 아이콘.

Amazon Bedrock 입문

기본 프롬프트 엔지니어링 적용

  • 더 나은 결과를 위한 기법:
    • 명확성과 구체성: 상세하고 정확한 지시 작성
    • 역할 부여: 맥락 이해를 높이기 위해 페르소나 지정
    • 형식 지침: 응답을 유도할 제약 추가
"Explain the benefits of exercise 
in simple terms."
"You are a nutritionist. Explain the 
benefits of a balanced diet."
"List the top 3 benefits of cloud 
computing in bullet points."
Amazon Bedrock 입문

고급 텍스트 파싱 기법

  • 누락/예상치 못한 키 처리
data = json.loads(response['body'].read())
if 'completion' in data:
    output = data['completion']

else: output = "Key not found"
  • 중첩 구조 탐색을 위한 다단계 JSON 파싱
try:
    nova_output = data.decode()["output"]

except (KeyError, IndexError) as e: nova_output = f"Error: {str(e)}"
Amazon Bedrock 입문

응답 처리와 텍스트 핸들링

  • 유니코드/인코딩 문제: 특수문자 처리
    # Ensure proper encoding
    output = data['completion'].encode('utf-8').decode('unicode_escape')
    print(output)
    
  • 대용량 응답 처리: 사용성을 위해 분할/절단
    # Truncate response for display
    output = data['completion'][:500]  # Limit to 500 characters
    print(output)
    
Amazon Bedrock 입문

Bedrock으로 카테고리 추출

  • 예: 텍스트 데이터 분류
  • 명확한 카테고리 옵션이 있는 구조화 프롬프트 사용
  • 단일 카테고리로만 출력하도록 명시
  • 모델 응답을 효율적으로 처리
  • 결과: 정확한 텍스트 분류

텍스트 분류를 나타내는 아이콘

Amazon Bedrock 입문

Bedrock으로 카테고리 추출

def categorize_ticket(ticket, categories):
  prompt = f"Categorize into one: {', '.join(categories)}. 
  Ticket: {ticket}"
  response = bedrock.invoke_model(
    modelId='amazon.nova-micro-v1:0',
    body=json.dumps({"messages": [{"role": "user", "content": 
                                   [{"text": prompt}]}]}))

return json.loads(nova_response.get("body").read().decode())["output"]
{"output": {"message": {"role": "assistant","content": [
        {
          "text": "Customer Service"
        }]}, "stop_reason": "stop_sequence"}}
Amazon Bedrock 입문

연습해 봅시다!

Amazon Bedrock 입문

Preparing Video For Download...