AWS Bedrock knowledge bases을 batch로 사용하는 예제 코드
# python
import boto3
# AWS Boto3 클라이언트 초기화
s3_client = boto3.client('s3')
bedrock_client = boto3.client('bedrock')
# S3 버킷 설정
input_bucket = 'your-input-bucket-name'
output_bucket = 'your-output-bucket-name'
input_file = 'input-data.jsonl' # JSON Lines 형식의 입력 파일
output_file = 'output-data.jsonl'
local_file_path = 'path/to/your/local/input-data.jsonl' # 로컬 파일 경로
# 파일을 S3에 업로드하는 함수 정의
def upload_file_to_s3(local_file_path, bucket_name, s3_file_name):
s3_client.upload_file(local_file_path, bucket_name, s3_file_name)
print(f"File {local_file_path} uploaded to S3 bucket {bucket_name} as {s3_file_name}.")
# 배치 작업 제출 함수 정의
def submit_batch_job():
response = bedrock_client.start_batch_prediction_job(
InputS3Uri=f's3://{input_bucket}/{input_file}',
OutputS3Uri=f's3://{output_bucket}/{output_file}',
TaskType='text-inference',
ModelName='your-model-name',
RoleArn='your-iam-role-arn'
)
return response
# 파일 업로드
upload_file_to_s3(local_file_path, input_bucket, input_file)
# 배치 작업 실행
response = submit_batch_job()
print("Batch Job ID:", response['BatchPredictionJobId'])
# 배치 작업 상태 확인 함수 정의
def check_batch_job_status(job_id):
status_response = bedrock_client.describe_batch_prediction_job(
BatchPredictionJobId=job_id
)
return status_response['Status']
# 배치 작업 상태 확인
job_id = response['BatchPredictionJobId']
status = check_batch_job_status(job_id)
print("Batch Job Status:", status)
# 결과 확인
if status == 'COMPLETED':
print("Batch processing completed successfully.")
else:
print("Batch processing status:", status)
# php
<?php
require 'vendor/autoload.php';
use Aws\S3\S3Client;
use Aws\Bedrock\BedrockClient;
use Aws\Exception\AwsException;
// 1. AWS S3 클라이언트 초기화
$s3Client = new S3Client([
'region' => 'us-west-2',
'version' => 'latest'
]);
// 2. AWS Bedrock 클라이언트 초기화
$bedrockClient = new BedrockClient([
'region' => 'us-west-2',
'version' => 'latest'
]);
// 3. S3 버킷 설정
$inputBucket = 'your-input-bucket-name';
$outputBucket = 'your-output-bucket-name';
$inputFile = 'input-data.jsonl'; // JSON Lines 형식의 입력 파일
$outputFile = 'output-data.jsonl';
$localFilePath = 'path/to/your/local/input-data.jsonl'; // 로컬 파일 경로
// 4. 파일을 S3에 업로드하는 함수 정의
function uploadFileToS3($s3Client, $localFilePath, $bucketName, $s3FileName) {
try {
$s3Client->putObject([
'Bucket' => $bucketName,
'Key' => $s3FileName,
'SourceFile' => $localFilePath,
]);
echo "File {$localFilePath} uploaded to S3 bucket {$bucketName} as {$s3FileName}.\n";
} catch (AwsException $e) {
echo "Error uploading file to S3: " . $e->getMessage() . "\n";
}
}
// 5. 배치 작업 제출 함수 정의
function submitBatchJob($bedrockClient, $inputBucket, $inputFile, $outputBucket, $outputFile) {
try {
$result = $bedrockClient->startBatchPredictionJob([
'InputS3Uri' => "s3://{$inputBucket}/{$inputFile}",
'OutputS3Uri' => "s3://{$outputBucket}/{$outputFile}",
'TaskType' => 'text-inference',
'ModelName' => 'your-model-name',
'RoleArn' => 'your-iam-role-arn',
]);
return $result['BatchPredictionJobId'];
} catch (AwsException $e) {
echo "Error starting batch job: " . $e->getMessage() . "\n";
return null;
}
}
// 6. 파일 업로드
uploadFileToS3($s3Client, $localFilePath, $inputBucket, $inputFile);
// 7. 배치 작업 실행
$batchJobId = submitBatchJob($bedrockClient, $inputBucket, $inputFile, $outputBucket, $outputFile);
echo "Batch Job ID: {$batchJobId}\n";
// 8. 배치 작업 상태 확인 함수 정의
function checkBatchJobStatus($bedrockClient, $jobId) {
try {
$result = $bedrockClient->describeBatchPredictionJob([
'BatchPredictionJobId' => $jobId,
]);
return $result['Status'];
} catch (AwsException $e) {
echo "Error checking batch job status: " . $e->getMessage() . "\n";
return null;
}
}
// 9. 배치 작업 상태 확인
$status = checkBatchJobStatus($bedrockClient, $batchJobId);
echo "Batch Job Status: {$status}\n";
if ($status == 'COMPLETED') {
echo "Batch processing completed successfully.\n";
} else {
echo "Batch processing status: {$status}\n";
}
?>
'빅데이터 > AWS' 카테고리의 다른 글
퓨샷 프롬프팅 vs. 제로샷 프롬프팅 비교해보니.. (0) | 2024.11.07 |
---|---|
AWS Root 계정과 IAM 계정 비교 해보니.. (0) | 2024.11.06 |
json과 jsonl의 차이점 (0) | 2024.11.05 |
AWS Bedrock의 온디맨드 요금과 프로비저닝된 처리량 요금 알아보니... (0) | 2024.11.02 |
AWS APN( AWS Partner Network;AWS 파트너 네트워크) 알아보니... (0) | 2024.10.30 |