S3의 CSV테이블을 Bedrock의 다양한 AI 모델을 이용하여 SQL 없이 테이블을 분석할 수 있습니다.
요약 설명
Amazon Bedrock은 AI21 Labs, Anthropic, Cohere, Meta, Stability AI 및 Amazon과 같은 선도적인 AI 회사의 다양한 고성능 파운데이션 모델(FM)을 단일 API로 제공하는 완전관리형 서비스입니다. Bedrock의 다양한 파운데이션 모델을 API를 이용하여 사용할 수 있습니다. 해당 가이드에서는 CSV 로 되어 있는 파일을 Athena, Redshift 테이블 생성 및 SQL 을 사용할 필요 없이 간단하게 분석하는 방법에 대해서 가이드 해드립니다.
전제 조건
- Sagemaker기본 도메인이 생성되어 있어야 합니다.
- Sagemaker를 이용할 리전과 S3 버킷의 리전이 동일 해야합니다.
- 사용할 Sagemaker 도메인의 IAM역할에 AmazonS3FullAccess 있어야 합니다.
단계1. CSV 테이블 다운로드 및 가공
- 아래의 링크에 있는 Shipping Logs를 아래와 같이 수정하여 업로드합니다. [1]
- Bedrock에 사용할 수 있는 prompt에 한계가 있어 현재 예제 에서는 19개의 데이터만을 사용합니다.
단계2. S3에 CSV파일 저장
- S3에 이전단계를 통해서 가공한 데이터를 저장합니다.
단계3. Sagemaker를 통해 CSV 파일 분석
- Sagemaker 네비게이션 바에서 Studio, 도메인 선택, 스튜디오 열기를 클릭합니다.
- Studio Classic을 클릭한뒤 run을 클릭하여 studio classic 애플리케이션을 실행합니다.
- 실행이 완료되면 open, File, New, Notebook을 클릭하여 새로운 노트북을 생성합니다.
- 새롭게 생성된 노트북에 아래와 같은 코드를 입력해줍니다.
- 아래의 코드에서 파일이 저장된 S3 URL에는 S3에 업로드한 URL을 Command에는 검색하려 하는것을 넣어줍니다.
import json
import boto3
import pandas as pd
bedrock = boto3.client(
service_name='bedrock-runtime'
)
// Example S3 URL : s3://example-bucket/sage-maker/ShippingLogs.csv
s3_url ='<S3 URL>'
csv_file = pd.read_csv(s3_url, iterator=True)
df = pd.concat(csv_file, ignore_index=True)
table=df.to_string()
// Example command : How many are Shipping Origin Seattle
command=<Enter the information you want to analyze in the table>
modelId = 'meta.llama2-13b-chat-v1'
accept = 'application/json'
contentType = 'application/json'
prompt = table + command
input = {
'prompt': prompt,
'max_gen_len': 512,
'temperature': 0.5,
'top_p': 0.9
}
body=json.dumps(input)
response = bedrock.invoke_model(body=body, modelId=modelId, accept=accept,contentType=contentType)
response_body = json.loads(response.get('body').read())
results = response_body['generation']
print(results)
추가정보
- Foundation Model API 이용시 각 모델별 요구하는 파라미터가 다릅니다. 사용할 모델이 "meta.llama2-13b-chat-v1" 이 아닌 경우에는 아래의 링크를 통해 모델에 맞는 파라미터를 사용해야합니다. [2]
- 프롬프트에 입력하는 내용에 따라서 결과값의 정확도가 달라질 수 있습니다. 아래의 모범사례를 참고해주세요. [3]
- 사용하는 모델에 따라 지원되는 prompt의 크기가 다릅니다. 사용하는 모델에 따른 지원되는 크기를 참고하여 CSV파일을 수정하여 이용할 수 있습니다.
[1] Shipping Logs
https://catalog.us-east-1.prod.workshops.aws/workshops/80ba0ea5-7cf9-4b8c-9d3f-1cd988b6c071/en-US/1-use-cases/7-supply-chain
[2] 기초 모델의 추론 파라미터
https://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/model-parameters.html
[3] 프롬프트 엔지니어링이란 무엇입니까?
https://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/what-is-prompt-engineering.html