程式碼範例 - Amazon Bedrock

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

程式碼範例

注意

批次推論為預覽版,可能會有所變更。批次推論目前只能透過 API 使用。透過下列 SDK 存取批次 API。

我們建議您建立虛擬環境以使用 SDK。由於最新的 SDK 中無法使用批次推論 API,因此建議您先從虛擬環境中解除安裝最新版本的 SDK,然後再使用批次推論 API 安裝版本。如需引導範例,請參閱程式碼範例。

選取要用以查看程式碼範例語言,以呼叫批次推論 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 建立並啟動虛擬環境。您可以使用您選擇的環境名稱來取代基礎批次

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

若要確保沒有來自boto3和較新版本的成品botocore,請在終端機中執行下列命令來解除安裝任何現有版本。

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