데이터 세트 관리
이 주제에서는 데이터 세트 생성, 검색, 나열, 업데이트 및 삭제를 다룹니다.
데이터 세트 생성
CreateDataset API는 새 평가 데이터 세트를 생성합니다. 이는 비동기 작업(HTTP 202)으로, 수집이 완료되면 데이터 세트가에서 ACTIVE CREATING로 전환됩니다.
필수 파라미터: datasetName (영숫자 및 밑줄만, ^[a-zA-Z][a-zA-Z0-9_]{0,47}$), schemaType및 source (인라인 예제 또는 S3 URI).
선택적 파라미터: description, kmsKeyArn (고객 관리형 암호화 키, 생성 후 변경할 수 없음 - 데이터 세트 암호화 참조), tags.
다음 예제에서는 데이터 세트를 생성하는 방법을 보여줍니다.
예
- AgentCore CLI
-
-
# Add a dataset to your project agentcore add dataset --name my_eval_dataset \ --schema-type AGENTCORE_EVALUATION_PREDEFINED_V1 # Edit the generated JSONL file with your scenarios # File location: agentcore/datasets/my_eval_dataset.jsonl # Deploy to create the dataset in your AWS account agentcore deploy이렇게 하면 로컬 JSONL 파일이 생성되고 프로젝트 구성에 데이터 세트가 등록됩니다. 를 실행
agentcore deploy하여 데이터 세트 리소스를 생성하고 예제를 서비스에 동기화합니다.참고
AgentCore 프로젝트 디렉터리(로 생성됨) 내에서이 작업을 실행합니다
agentcore create.
-
- AgentCore SDK
-
-
from bedrock_agentcore.evaluation import DatasetClient client = DatasetClient(region_name="us-west-2") # Create with inline examples (polls until ACTIVE) ds = client.create_dataset_and_wait( datasetName="customer_support_scenarios", schemaType="AGENTCORE_EVALUATION_PREDEFINED_V1", source={ "inlineExamples": { "examples": [ { "scenario_id": "TC-01", "turns": [{"input": "What is my balance?", "expected_response": "Your balance is $50."}], "assertions": ["Response includes a dollar amount"], } ] } }, ) print(f"Dataset ID: {ds['datasetId']}, Status: {ds['status']}") # Create with S3 source ds = client.create_dataset_and_wait( datasetName="my_s3_dataset", schemaType="AGENTCORE_EVALUATION_PREDEFINED_V1", source={"s3Source": {"s3Uri": "s3://my-bucket/scenarios.jsonl"}}, )참고
S3 수집의 경우 JSONL 파일의 각 줄에는
exampleId필드가 포함되어야 합니다. S3 버킷은 호출자의 자격 증명을 사용하여 액세스할 수 있어야 합니다.
-
- AWS SDK
-
-
import boto3 import time client = boto3.client('bedrock-agentcore-control') response = client.create_dataset( datasetName='customer_support_scenarios', schemaType='AGENTCORE_EVALUATION_PREDEFINED_V1', source={ 'inlineExamples': { 'examples': [ { 'scenario_id': 'TC-01', 'turns': [{'input': 'What is my balance?', 'expected_response': 'Your balance is $50.'}], 'assertions': ['Response includes a dollar amount'], } ] } } ) dataset_id = response['datasetId'] # Create with S3 source response = client.create_dataset( datasetName='my_s3_dataset', schemaType='AGENTCORE_EVALUATION_PREDEFINED_V1', source={ 's3Source': {'s3Uri': 's3://my-bucket/scenarios.jsonl'} } ) # Poll until ACTIVE while True: ds = client.get_dataset(datasetId=dataset_id) if ds['status'] in ('ACTIVE', 'CREATE_FAILED'): break time.sleep(2)
-
- AWS CLI
-
-
# Create with inline examples aws bedrock-agentcore-control create-dataset \ --dataset-name "customer_support_scenarios" \ --schema-type AGENTCORE_EVALUATION_PREDEFINED_V1 \ --source '{"inlineExamples": {"examples": [{"scenario_id": "TC-01", "turns": [{"input": "What is my balance?", "expected_response": "Your balance is $50."}], "assertions": ["Response includes a dollar amount"]}]}}' # Create with S3 source aws bedrock-agentcore-control create-dataset \ --dataset-name "my_s3_dataset" \ --schema-type AGENTCORE_EVALUATION_PREDEFINED_V1 \ --source '{"s3Source": {"s3Uri": "s3://my-bucket/scenarios.jsonl"}}' # Poll until ACTIVE aws bedrock-agentcore-control get-dataset \ --dataset-id my-dataset-id
-
데이터 세트 가져오기
GetDataset API는 데이터 세트 메타데이터, 상태, 예제 수 및 데이터 세트 콘텐츠에 대해 미리 서명된 다운로드 URL을 검색합니다. 기본적으로 초안을 읽고 게시된 버전에 datasetVersion 대해를 지정합니다.
downloadUrl는 전체 dataset.jsonl 파일에 대해 미리 서명된 S3 URL입니다. 인증 헤더 없이 일반 HTTP GET 요청으로 다운로드할 수 있습니다.
다음 예제에서는 데이터 세트를 가져오는 방법을 보여줍니다.
예
- AgentCore CLI
-
-
# Show dataset deployment status and metadata agentcore status --type dataset # Download dataset content to your local JSONL file (default: Draft) agentcore dataset download --name my_eval_dataset # Download a specific published version agentcore dataset download --name my_eval_dataset --version 1
-
- AgentCore SDK
-
-
from bedrock_agentcore.evaluation import DatasetClient client = DatasetClient(region_name="us-west-2") # Get dataset (default: Draft) ds = client.get_dataset(datasetId="my-dataset-id") print(f"Status: {ds['status']}, Examples: {ds['exampleCount']}") print(f"Download URL: {ds['downloadUrl']}") # Get a specific published version ds_v1 = client.get_dataset(datasetId="my-dataset-id", datasetVersion="1")
-
- AWS SDK
-
-
import boto3 client = boto3.client('bedrock-agentcore-control') response = client.get_dataset(datasetId='my-dataset-id') print(f"Status: {response['status']}, Examples: {response['exampleCount']}") # Download the dataset content via presigned URL if 'downloadUrl' in response: import requests data = requests.get(response['downloadUrl']) print(data.text) # Get a specific published version response = client.get_dataset(datasetId='my-dataset-id', datasetVersion='1')
-
- AWS CLI
-
-
# Get dataset (default: Draft) aws bedrock-agentcore-control get-dataset \ --dataset-id my-dataset-id # Get a specific published version aws bedrock-agentcore-control get-dataset \ --dataset-id my-dataset-id \ --dataset-version 1
-
데이터 세트 나열
ListDatasets API는 계정 및 리전에 있는 데이터 세트의 페이지 매김 목록을 반환합니다.
다음 예제에서는 데이터 세트를 나열하는 방법을 보여줍니다.
예
- AgentCore CLI
-
-
agentcore status --type dataset
-
- AgentCore SDK
-
-
from bedrock_agentcore.evaluation import DatasetClient client = DatasetClient(region_name="us-west-2") response = client.list_datasets() for dataset in response["datasets"]: print(f" {dataset['datasetName']} ({dataset['status']})")
-
- AWS SDK
-
-
import boto3 client = boto3.client('bedrock-agentcore-control') response = client.list_datasets() for dataset in response['datasets']: print(f" {dataset['datasetName']} ({dataset['status']})")
-
- AWS CLI
-
-
aws bedrock-agentcore-control list-datasets
-
데이터 세트 업데이트
UpdateDataset API는 데이터 세트 메타데이터를 업데이트합니다. 이는 동기식 작업(HTTP 200)입니다. description 및 만 업데이트할 수 tags 있습니다. datasetName, schemaType및 kmsKeyArn는 생성 후 변경할 수 없습니다.
데이터 세트는 ACTIVE, UPDATE_FAILED또는 CREATE_FAILED 상태여야 합니다.
다음 예제에서는 데이터 세트 메타데이터를 업데이트하는 방법을 보여줍니다.
예
- AgentCore CLI
-
-
AgentCore CLI를 사용하여 데이터 세트를 업데이트하려면
agentcore.json파일에서 데이터 세트 구성을 직접 편집한 다음 재배포합니다.agentcore deploy를 열고
datasets배열에서 데이터 세트를agentcore.json찾은 다음를 수정한description다음를 실행합니다agentcore deploy. 변경 사항은 배포 후 적용됩니다.참고
AgentCore 프로젝트 디렉터리(로 생성됨) 내에서이 작업을 실행합니다
agentcore create.
-
- AgentCore SDK
-
-
from bedrock_agentcore.evaluation import DatasetClient client = DatasetClient(region_name="us-west-2") client.update_dataset(datasetId="my-dataset-id", description="Updated description")
-
- AWS SDK
-
-
import boto3 client = boto3.client('bedrock-agentcore-control') client.update_dataset(datasetId='my-dataset-id', description='Updated description')
-
- AWS CLI
-
-
aws bedrock-agentcore-control update-dataset \ --dataset-id my-dataset-id \ --description "Updated description"
-
데이터 세트 삭제
DeleteDataset API는 데이터 세트를 삭제합니다. 이는 비동기 작업(HTTP 202)입니다.
-
전체 삭제( 생략
datasetVersion): 모든 버전, 초안 및 데이터 세트 레코드를 삭제합니다. -
버전별 삭제(정수
datasetVersion로 지정): 게시된 버전만 삭제합니다.
데이터 세트는 ACTIVE, CREATE_FAILEDUPDATE_FAILED, 또는 DELETE_FAILED 상태여야 합니다.
참고
버전별 삭제에는 정수 버전 번호만 허용됩니다.
다음 예제에서는 데이터 세트를 삭제하는 방법을 보여줍니다.
예
- AgentCore CLI
-
-
# Delete a specific published version agentcore dataset remove-version 1 --name my_eval_dataset # Delete entire dataset agentcore remove dataset --name my_eval_dataset agentcore deploy
-
- AgentCore SDK
-
-
from bedrock_agentcore.evaluation import DatasetClient client = DatasetClient(region_name="us-west-2") # Delete a specific published version client.delete_dataset_and_wait(datasetId="my-dataset-id", datasetVersion="1") # Delete entire dataset (polls until complete) client.delete_dataset_and_wait(datasetId="my-dataset-id")
-
- AWS SDK
-
-
import boto3 client = boto3.client('bedrock-agentcore-control') # Delete a specific published version client.delete_dataset(datasetId='my-dataset-id', datasetVersion='1') # Delete entire dataset client.delete_dataset(datasetId='my-dataset-id')
-
- AWS CLI
-
-
# Delete a specific published version aws bedrock-agentcore-control delete-dataset \ --dataset-id my-dataset-id \ --dataset-version 1 # Delete entire dataset aws bedrock-agentcore-control delete-dataset \ --dataset-id my-dataset-id
-