You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何强制AWS Bedrock Agent始终仅输出JSON格式结果?

解决AWS Bedrock Agent强制输出纯JSON的方案

针对你遇到的Bedrock Agent偶尔输出额外文本破坏JSON结构的问题,可通过以下几种方式强制其始终输出纯JSON:

  • 强化指令的绝对约束
    在Agent的系统指令中,用明确、无歧义的表述强制仅输出JSON,例如:

    你必须严格按照指定格式输出纯JSON内容,不得包含任何JSON以外的文字,包括解释、说明、问候、前缀或后缀。无论对话上下文如何,输出必须仅为符合语法的JSON对象/数组。

    同时可以在指令末尾添加格式示例,对比正确与错误输出:

    正确输出示例:{"result": "xxx", "data": []}
    错误输出示例:以下是结果:{"result": "xxx"}(禁止此类格式)

  • 自定义编排模板的输出规则
    在Bedrock Agent的**编排模板(Orchestration Template)**中,修改最终输出环节的提示词,明确要求模型仅返回JSON。例如在模板的Final Response Generation部分添加:

    基于会话历史和知识库检索结果,生成严格符合要求的纯JSON响应,不得添加任何额外内容。

  • 启用后处理的JSON提取逻辑
    利用Bedrock Agent的后处理功能,添加自定义脚本提取有效JSON:

    1. 在Agent配置中开启后处理
    2. 编写简单的正则匹配逻辑,例如使用Python的re模块:
      import re
      import json
      
      def extract_json(response):
          # 匹配最外层的JSON结构
          json_match = re.search(r'\{.*\}', response, re.DOTALL)
          if json_match:
              try:
                  return json.loads(json_match.group())
              except json.JSONDecodeError:
                  # 若匹配到的内容无效,返回预设的错误JSON
                  return {"error": "Invalid JSON format"}
          return {"error": "No valid JSON found"}
      

    该脚本会过滤掉JSON前后的额外文本,只保留有效结构化内容。

  • 切换至结构化输出依从性更高的模型
    选择对格式化输出支持更好的基础模型,例如Anthropic Claude 3系列、Amazon Titan Text Premier。这类模型对指令的结构化约束响应更稳定,同时可将模型参数temperature设置为0,降低输出随机性,减少额外文本的产生。

  • 会话上下文的重复约束
    由于你的应用是无状态架构,依赖Agent的会话记忆,可在每次调用Agent时,在会话历史的系统提示部分追加格式要求,确保每轮对话都明确告知模型必须输出纯JSON,避免因上下文漂移导致的格式违规。

内容的提问来源于stack exchange,提问作者Ibrahim Masalha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 17:02:44