View a markdown version of this page

システムプロンプトのレコメンデーションを開始する - Amazon Bedrock AgentCore

システムプロンプトのレコメンデーションを開始する

エージェントの最適化されたシステムプロンプトを生成するレコメンデーションを開始します。このサービスは、エージェントトレースを分析し、障害パターンを特定し、ターゲット評価者のパフォーマンスを向上させる改訂されたシステムプロンプトを生成します。

注記

レコメンデーションは LLMs。適用する前に確認してテストします。

コードサンプル

AgentCore CLI

CLI は、複数のトレースソースと 3 つのシステムプロンプト入力モードを受け入れます。必要に応じて組み合わせます。

  • トレースソース: CloudWatch Logs (--lookback)、インラインスパン (--spans-file)、ローカルインサイト実行 (--from-insights <id> — トレースソースとしてローカルインサイト実行を使用します。バッチ評価 ARN を解決します)、またはバッチ評価 ARN を直接 (--batch-evaluation-arn <arn> — トレースソースとしてバッチ評価 ARN を直接使用します)

  • システムプロンプト入力: インラインテキスト (--inline)、プロンプトファイル (--prompt-file)、または設定バンドル (--bundle-name)

  • オプションのフィルター: 分析するトレースを絞り込むための特定のセッション IDs (--session-id)

  • オプションの暗号化: KMS キー (--kms-key <arn> — レコメンデーション結果を暗号化するための KMS キー ARN)

    CloudWatch トレースを使用したインラインシステムプロンプト:

    agentcore run recommendation \ --type system-prompt \ --run my-prompt-rec \ --runtime MyAgent \ --evaluator Builtin.GoalSuccessRate \ --inline "You are a helpful customer support assistant. Help users with their orders and returns." \ --lookback 7 \ --wait

    run recommendation は非同期ジョブを開始し、 recommendationIdと初期 PENDINGまたは IN_PROGRESSステータスのみを返します。レコメンデーションが終了状態になるまで、 --waitをブロックに追加します。後で完了した結果を取得するには、「結果の取得」を参照してください。

    CloudWatch トレースを含むファイルからのインラインシステムプロンプト:

    agentcore run recommendation \ --type system-prompt \ --run my-prompt-rec \ --runtime MyAgent \ --evaluator Builtin.GoalSuccessRate \ --prompt-file ./system-prompt.txt \ --lookback 7

    スパンファイルを含むインラインシステムプロンプト:

    agentcore run recommendation \ --type system-prompt \ --run my-prompt-rec \ --runtime MyAgent \ --evaluator Builtin.GoalSuccessRate \ --inline "You are a helpful customer support assistant." \ --spans-file agent-traces.json

    特定のセッション IDs を持つインラインシステムプロンプト:

    CLI は、指定されたセッションクライアント側のスパンを収集し、インラインスパンとして渡します。

    agentcore run recommendation \ --type system-prompt \ --run my-prompt-rec \ --runtime MyAgent \ --evaluator Builtin.GoalSuccessRate \ --inline "You are a helpful customer support assistant." \ --session-id <session-id-1> <session-id-2>

    CloudWatch トレースを含む設定バンドル:

    CLI は、エージェントのランタイム ARN のconfiguration親オブジェクトから完全な JSON パスを自動解決します。システムプロンプトを含むキー名のみを指定する必要があります。

    agentcore run recommendation \ --type system-prompt \ --run my-prompt-rec \ --runtime MyAgent \ --evaluator Builtin.GoalSuccessRate \ --bundle-name <bundle-name> \ --bundle-version <bundle-version> \ --system-prompt-json-path "system_prompt" \ --lookback 7

    結果を取得します。

    レコメンデーションジョブ ID view recommendationとともに を使用して、完了した結果を取得します。recommendedSystemPrompt と を含む機械読み取り可能な出力--jsonに を追加しますexplanation

    agentcore view recommendation <recommendation-id> --json
AWS SDK (boto3)

CloudWatch トレースを使用したインラインテキスト:

import boto3 import json import uuid from datetime import datetime, timedelta, timezone client = boto3.client("bedrock-agentcore", region_name="us-west-2") now = datetime.now(timezone.utc) response = client.start_recommendation( name="my-prompt-rec", type="SYSTEM_PROMPT_RECOMMENDATION", recommendationConfig={ "systemPromptRecommendationConfig": { "systemPrompt": { "text": "You are a helpful customer support assistant. Help users with their orders and returns." }, "agentTraces": { "cloudwatchLogs": { "logGroupArns": [ "<log-group-arn>" ], "serviceNames": ["<service-name>"], "startTime": now - timedelta(days=7), "endTime": now, } }, "evaluationConfig": { "evaluators": [ {"evaluatorArn": "arn:aws:bedrock-agentcore:::evaluator/Builtin.GoalSuccessRate"} ] }, } }, clientToken=str(uuid.uuid4()), ) recommendation_id = response["recommendationId"] print(f"Started recommendation: {recommendation_id}") print(f"Status: {response['status']}")

インラインスパンを含むインラインテキスト:

with open("agent-traces.json") as f: spans = json.load(f) response = client.start_recommendation( name="my-prompt-rec-spans", type="SYSTEM_PROMPT_RECOMMENDATION", recommendationConfig={ "systemPromptRecommendationConfig": { "systemPrompt": { "text": "You are a helpful customer support assistant." }, "agentTraces": { "sessionSpans": spans }, "evaluationConfig": { "evaluators": [ {"evaluatorArn": "arn:aws:bedrock-agentcore:::evaluator/Builtin.GoalSuccessRate"} ] }, } }, clientToken=str(uuid.uuid4()), )

CloudWatch トレースを含む設定バンドル:

response = client.start_recommendation( name="my-bundle-prompt-rec", type="SYSTEM_PROMPT_RECOMMENDATION", recommendationConfig={ "systemPromptRecommendationConfig": { "systemPrompt": { "configurationBundle": { "bundleArn": "<bundle-arn>", "versionId": "<bundle-version>", "systemPromptJsonPath": "$.configuration.system_prompt", } }, "agentTraces": { "cloudwatchLogs": { "logGroupArns": [ "<log-group-arn>" ], "serviceNames": ["<service-name>"], "startTime": now - timedelta(days=7), "endTime": now, } }, "evaluationConfig": { "evaluators": [ {"evaluatorArn": "arn:aws:bedrock-agentcore:::evaluator/Builtin.GoalSuccessRate"} ] }, } }, clientToken=str(uuid.uuid4()), )

インラインスパンを含む設定バンドル:

response = client.start_recommendation( name="my-bundle-prompt-rec-spans", type="SYSTEM_PROMPT_RECOMMENDATION", recommendationConfig={ "systemPromptRecommendationConfig": { "systemPrompt": { "configurationBundle": { "bundleArn": "<bundle-arn>", "versionId": "<bundle-version>", "systemPromptJsonPath": "$.configuration.system_prompt", } }, "agentTraces": { "sessionSpans": spans }, "evaluationConfig": { "evaluators": [ {"evaluatorArn": "arn:aws:bedrock-agentcore:::evaluator/Builtin.GoalSuccessRate"} ] }, } }, clientToken=str(uuid.uuid4()), )

リクエストパラメータ

パラメータ タイプ 必須 説明

name

文字列

はい

レコメンデーションの名前。最大 48 文字。パターン: [a-zA-Z][a-zA-Z0-9_-]{0,47}

type

String

はい

SYSTEM_PROMPT_RECOMMENDATION を指定してください。

recommendationConfig

オブジェクト

はい

レコメンデーションの設定systemPromptRecommendationConfigに が含まれます。

description

String

いいえ

オプションの説明。最大 4096 文字。

clientToken

String

いいえ

べき等性トークン。同じクライアントトークンを使用してリクエストを再試行すると、サービスは新しいレコメンデーションを作成する代わりに既存のレコメンデーションを返します。

systemPromptRecommendationConfig フィールド

フィールド Type 必須 説明

systemPrompt

Union

はい

最適化する現在のシステムプロンプト。(textインライン文字列、最大 20,000 文字) または configurationBundle (バンドルリファレンス) を指定します。

agentTraces

Union

はい

分析用のトレースソース。推奨事項については、「トレースソース」を参照してください。

evaluationConfig

オブジェクト

はい

ターゲット評価者を指定する評価設定。評価者リファレンスが 1 つしかないevaluatorsリストが含まれます。

評価者の選択

改善する方向に沿った評価者を選択します。選択した評価者は、推奨事項を最適化する方向を決定します。評価者のスコアが高いものは、オプティマイザがプロンプトをプッシュする方向です。

組み込みの評価者を使用するか、カスタム評価者 ARN を提供できます。次のガイドラインを使用して選択します。

  • エージェントに完了すべき明確なタスク (予約、取得、複数ステップのワークフロー) がある場合は、これが適切なシグナルBuiltin.GoalSuccessRateです。

  • エージェントがオープンエンドで、インタラクション自体の品質を重視している場合は、 Builtin.Helpfulness の方が適しています。

  • 関心のある品質がドメイン固有であるか、組み込み評価者によってキャプチャされていない場合は、カスタム評価者を使用して測定値を最もよく表します。

注記

推奨事項は、組み込みのカスタム LLM-as-judge およびコードベースの評価者をサポートしますが、評価者は最適化シグナルとして数値を返す必要があります。カスタム LLM-as-judge 評価者の場合は、numericalスケール ( ではなく) ratingScaleで を設定しますcategorical。コードベースの評価者の場合、レスポンススキーマvalueフィールドを含めます。

API で、evaluationConfig.evaluatorsリスト内の評価者を指定し、評価者リファレンスを 1 つだけ指定します。

"evaluationConfig": { "evaluators": [ {"evaluatorArn": "arn:aws:bedrock-agentcore:::evaluator/Builtin.GoalSuccessRate"} ] }

CLI で、 --evaluatorフラグを使用します。

--evaluator Builtin.GoalSuccessRate

システムプロンプト入力モード

モード CLI フラグ API フィールド

インラインテキスト

--inline "prompt text"、または --prompt-file ./path.txt

systemPrompt.text

設定バンドル

--bundle-name <bundle-name> + --bundle-version <bundle-version> + --system-prompt-json-path <path>

systemPrompt.configurationBundlebundleArnversionIdsystemPromptJsonPath

設定バンドルを使用する場合、結果には、最適化されたシステムプロンプトが適用された新しいバンドルバージョンが含まれます。

[応答]

フィールド タイプ 説明

recommendationId

文字列

レコメンデーションの一意の識別子。

recommendationArn

String

レコメンデーションの ARN。

name

String

指定した名前。

type

String

SYSTEM_PROMPT_RECOMMENDATION.

status

String

初期ステータス: PENDINGまたは IN_PROGRESS

createdAt

タイムスタンプ

レコメンデーションが作成された日時。

updatedAt

タイムスタンプ

レコメンデーションが最後に更新された日時。

レコメンデーション結果

レコメンデーションがCOMPLETEDステータス (レコメンデーションの取得を介して取得) に達すると、結果には以下が含まれます。

フィールド タイプ 説明

recommendedSystemPrompt

文字列

最適化システムプロンプトテキスト。

configurationBundle

オブジェクト

入力が設定バンドルであった場合に表示されます。最適化されたプロンプトが適用された新しいバンドルバージョンが含まれ、bundleArnversionIdそれを指しています。

explanation

String

レコメンデーションが生成された理由と、提案された変更の背後にある理由の説明。

errorCode

String

レコメンデーションが失敗したかどうかを示します。失敗を説明するエラーコード。

errorMessage

String

レコメンデーションが失敗したかどうかを示します。人間が読めるエラーの説明。

エラー

エラー HTTP ステータス 説明

ValidationException

400

リクエストパラメータが無効です。フィールドの制約と必須フィールドを確認します。

AccessDeniedException

403

アクセス許可が不十分です。IAM ポリシーを確認します。

ConflictException

409

同じクライアントトークンを持つレコメンデーションは、異なるパラメータで既に存在します。

ServiceQuotaExceededException

402

同時レコメンデーションの最大数を超えました。

ThrottlingException

429

リクエストレートを超えました。エクスポネンシャルバックオフを使用して再試行してください。

InternalServerException

500

サービス側のエラー。リクエストを再試行します。