View a markdown version of this page

启动系统提示推荐 - 亚马逊基岩 AgentCore

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

启动系统提示推荐

开始提出建议,为您的代理生成优化的系统提示。该服务分析代理跟踪,确定故障模式,并生成修订后的系统提示音,以提高目标评估器的性能。

注意

建议由 LLM 生成。在应用它们之前进行审查和测试。

代码示例

例
AgentCore CLI

CLI 接受多个跟踪源和三种系统提示输入模式。根据需要将它们组合在一起:

  • 追踪来源: CloudWatch 日志 (--lookback)、行内跨度 (--spans-file)、本地洞察运行(--from-insights <id>— 使用本地见解作为跟踪源;解析批量评估 ARN)或直接批量评估 ARN(--batch-evaluation-arn <arn>— 直接使用批量评估 ARN 作为跟踪源)

  • 系统提示输入:行内文本 (--inline)、提示文件 (--prompt-file) 或配置包 (--bundle-name)

  • 可选过滤器:用于缩小分析跟踪范围的特定会话 ID (--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启动异步任务并仅返回 a 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

    带有 spans 文件的内联系统提示符:

    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

    带有特定会话 ID 的内联系统提示:

    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 父对象的完整 JSON 路径。configuration您只需要提供包含系统提示符的密钥名称。

    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

    检索结果:

    view recommendation与推荐任务 ID 一起使用以获取完成的结果。添加包含recommendedSystemPrompt和--jsonexplanation的机器可读输出。

    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()), )

请求参数

参数 Type 必需 描述

name

字符串

是

推荐的名称。最多 48 个字符。图案:[a-zA-Z][a-zA-Z0-9_-]{0,47}。

type

字符串

是

必须是 SYSTEM_PROMPT_RECOMMENDATION。

recommendationConfig

对象

是

systemPromptRecommendationConfig包含建议的配置。

description

字符串

否

可选描述。最多 4096 个字符。

clientToken

字符串

否

等效性标记。如果您使用相同的客户端令牌重试请求,该服务将返回现有建议,而不是创建新的建议。

系统PromptRecommendationConfig 字段

字段 类型 必需 说明

systemPrompt

Union

是

当前系统提示要优化。提供text(行内字符串,最多 20,000 个字符)或configurationBundle(捆绑引用)。

agentTraces

Union

是

用于分析的追踪来源。有关建议,请参阅追踪来源。

evaluationConfig

对象

是

指定目标评估者的评估配置。包含一个仅包含一个评估者参考的evaluators列表。

选择评估员

选择与要改进的方向对齐的评估器。您选择的评估器决定建议的优化方向;无论评估者的得分高如何,都是优化器将提示推送到的方向。

您可以使用内置评估器或提供自定义评估器 ARN。使用以下准则进行选择:

  • 如果您的代理有明确的任务要完成(预订、检索、多步工作流程),Builtin.GoalSuccessRate这是正确的信号。

  • 如果你的代理更开放,而且你关心互动本身的质量,Builtin.Helpfulness那就更合适了。

  • 如果您关心的质量是特定领域的,或者不是由内置评估器捕获的,请使用自定义评估器来最好地表示测量结果。

注意

推荐支持内置 LLM-as-judge、自定义和基于代码的评估器,但要求评估器返回数值作为优化信号。对于自定义 LLM-as-judge 评估器,使用numerical比例ratingScale进行配置(不是categorical)。对于基于代码的评估器,请在响应架构中包含该value字段。

在 API 中,仅使用一个评估器参考来指定evaluationConfig.evaluators列表中的评估者:

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

在 CLI 中,使用以下--evaluator标志:

--evaluator Builtin.GoalSuccessRate

系统提示输入模式

Mode 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.configurationBundle用bundleArn,versionId,systemPromptJsonPath

使用配置包时,结果包括应用了优化系统提示的新捆绑包版本。

响应

字段 Type 说明

recommendationId

字符串

建议的唯一标识符。

recommendationArn

字符串

该建议的 ARN。

name

字符串

你指定的名字。

type

字符串

SYSTEM_PROMPT_RECOMMENDATION.

status

字符串

初始状态:PENDING或IN_PROGRESS。

createdAt

Timestamp

创建推荐的时间。

updatedAt

Timestamp

上次更新建议的时间。

推荐结果

当推荐达到COMPLETED状态(通过 “获取推荐” 检索)时,结果包含:

字段 Type 说明

recommendedSystemPrompt

字符串

优化的系统提示文本。

configurationBundle

对象

当输入是配置包时出现。包含bundleArn并versionId指向应用了优化提示的新捆绑包版本。

explanation

字符串

解释提出该建议的原因以及修改建议背后的理由。

errorCode

字符串

如果建议失败,则出现。描述故障的错误代码。

errorMessage

字符串

如果建议失败,则出现。 Human-readable 错误描述。

错误

错误 HTTP 状态 说明

ValidationException

400

请求参数无效。检查字段限制和必填字段。

AccessDeniedException

403

权限不足。验证 IAM 策略。

ConflictException

409

已经存在具有相同客户令牌且具有不同参数的推荐。

ServiceQuotaExceededException

402

您已超过并发建议的最大数量。

ThrottlingException

429

超出请求速率。使用指数回退进行重试。

InternalServerException

500

Service-side 错误。重试请求。