코드 샘플 - Amazon Bedrock

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

코드 샘플

참고

배치 추론은 현재 미리 보기이므로 변경될 수도 있습니다. 배치 추론은 현재 API를 통해서만 사용할 수 있습니다. 다음 SDK를 통해 배치 API에 액세스할 수 있습니다.

SDK를 사용할 가상 환경을 만드는 것이 좋습니다. 최신 SDK에서는 일괄 추론 API를 사용할 수 없으므로 일괄 추론 API가 포함된 버전을 설치하기 전에 가상 환경에서 최신 버전의 SDK를 제거하는 것이 좋습니다. 가이드 예제는 을 참조하십시오. 코드 샘플

언어를 선택하면 배치 추론 API 작업을 호출하는 코드 샘플을 볼 수 있습니다.

Python

배치 추론 API 작업이 포함된 Python SDK 및 CLI 파일을 다운로드한 후 파일이 들어 있는 폴더로 이동하여 터미널에서 ls 실행합니다. 최소한 다음 2개의 파일이 표시되어야 합니다.

botocore-1.32.4-py3-none-any.whl boto3-1.29.4-py3-none-any.whl

터미널에서 다음 명령을 실행하여 배치 추론 API를 위한 가상 환경을 만들고 활성화합니다. bedrock-batch를 환경에 맞게 선택한 이름으로 바꿀 수 있습니다.

python3 -m venv bedrock-batch source bedrock-batch/bin/activate

최신 버전의 boto3botocore 버전에서 아티팩트가 발생하지 않도록 터미널에서 다음 명령을 실행하여 기존 버전을 모두 제거하십시오.

python3 -m pip uninstall botocore python3 -m pip uninstall boto3

터미널에서 다음 명령을 실행하여 Amazon Bedrock 컨트롤 플레인 API가 포함된 Python SDK를 설치합니다.

python3 -m pip install botocore-1.32.4-py3-none-any.whl python3 -m pip install boto3-1.29.4-py3-none-any.whl

만든 가상 환경에서 다음 코드를 모두 실행합니다.

S3에 업로드한 abc.jsonl 파일을 사용하여 배치 추론 작업을 생성합니다. 출력을 s3://output-bucket/output/에 있는 버킷에 기록합니다. 응답에서 jobArn을 가져옵니다.

import boto3 bedrock = boto3.client(service_name="bedrock") inputDataConfig=({ "s3InputDataConfig": { "s3Uri": "s3://input-bucket/input/abc.jsonl" } }) outputDataConfig=({ "s3OutputDataConfig": { "s3Uri": "s3://output-bucket/output/" } }) response=bedrock.create_model_invocation_job( roleArn="arn:aws:iam::123456789012:role/MyBatchInferenceRole", modelId="amazon.titan-text-express-v1", jobName="my-batch-job", inputDataConfig=inputDataConfig, outputDataConfig=outputDataConfig ) jobArn = response.get('jobArn')

작업의 status를 반환합니다.

bedrock.get_model_invocation_job(jobIdentifier=jobArn)['status']

실패한 배치 추론 작업을 나열합니다.

bedrock.list_model_invocation_jobs( maxResults=10, statusEquals="Failed", sortOrder="Descending" )

시작한 작업을 중지합니다.

bedrock.stop_model_invocation_job(jobIdentifier=jobArn)
Java
package com.amazon.aws.sample.bedrock.inference; import com.amazonaws.services.bedrock.AmazonBedrockAsync; import com.amazonaws.services.bedrock.AmazonBedrockAsyncClientBuilder; import com.amazonaws.services.bedrock.model.CreateModelInvocationJobRequest; import com.amazonaws.services.bedrock.model.CreateModelInvocationJobResult; import com.amazonaws.services.bedrock.model.GetModelInvocationJobRequest; import com.amazonaws.services.bedrock.model.GetModelInvocationJobResult; import com.amazonaws.services.bedrock.model.InvocationJobInputDataConfig; import com.amazonaws.services.bedrock.model.InvocationJobOutputDataConfig; import com.amazonaws.services.bedrock.model.InvocationJobS3InputDataConfig; import com.amazonaws.services.bedrock.model.InvocationJobS3OutputDataConfig; import com.amazonaws.services.bedrock.model.ListModelInvocationJobsRequest; import com.amazonaws.services.bedrock.model.ListModelInvocationJobsResult; import com.amazonaws.services.bedrock.model.StopModelInvocationJobRequest; import com.amazonaws.services.bedrock.model.StopModelInvocationJobResult; public class BedrockAsyncInference { private final AmazonBedrockAsync amazonBedrockAsyncClient = AmazonBedrockAsyncClientBuilder.defaultClient(); public void createModelInvokeJobSampleCode() { final InvocationJobS3InputDataConfig invocationJobS3InputDataConfig = new InvocationJobS3InputDataConfig() .withS3Uri("s3://Input-bucket-name/input/abc.jsonl") .withS3InputFormat("JSONL"); final InvocationJobInputDataConfig inputDataConfig = new InvocationJobInputDataConfig() .withS3InputDataConfig(invocationJobS3InputDataConfig); final InvocationJobS3OutputDataConfig invocationJobS3OutputDataConfig = new InvocationJobS3OutputDataConfig() .withS3Uri("s3://output-bucket-name/output/"); final InvocationJobOutputDataConfig invocationJobOutputDataConfig = new InvocationJobOutputDataConfig() .withS3OutputDataConfig(invocationJobS3OutputDataConfig); final CreateModelInvocationJobRequest createModelInvocationJobRequest = new CreateModelInvocationJobRequest() .withModelId("anthropic.claude-v2") .withJobName("unique-job-name") .withClientRequestToken("Client-token") .withInputDataConfig(inputDataConfig) .withOutputDataConfig(invocationJobOutputDataConfig); final CreateModelInvocationJobResult createModelInvocationJobResult = amazonBedrockAsyncClient .createModelInvocationJob(createModelInvocationJobRequest); System.out.println(createModelInvocationJobResult.getJobArn()); } public void getModelInvokeJobSampleCode() { final GetModelInvocationJobRequest getModelInvocationJobRequest = new GetModelInvocationJobRequest() .withJobIdentifier("jobArn"); final GetModelInvocationJobResult getModelInvocationJobResult = amazonBedrockAsyncClient .getModelInvocationJob(getModelInvocationJobRequest); } public void listModelInvokeJobSampleCode() { final ListModelInvocationJobsRequest listModelInvocationJobsRequest = new ListModelInvocationJobsRequest() .withMaxResults(10) .withNameContains("matchin-string"); final ListModelInvocationJobsResult listModelInvocationJobsResult = amazonBedrockAsyncClient .listModelInvocationJobs(listModelInvocationJobsRequest); } public void stopModelInvokeJobSampleCode() { final StopModelInvocationJobRequest stopModelInvocationJobRequest = new StopModelInvocationJobRequest() .withJobIdentifier("jobArn"); final StopModelInvocationJobResult stopModelInvocationJobResult = amazonBedrockAsyncClient .stopModelInvocationJob(stopModelInvocationJobRequest); } }