빅데이터/AWS2024. 11. 8. 08:00

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";
}

?>
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
Posted by 프리스케이터