最新资讯
theverge.com OpenAI 宣布数据中心项目不再与公职人员签署保密协议 dev.to NVIDIA 发布四个开放 Cosmos 3 仿真模型 dev.to 真实 MCP 客户端击穿我们服务器的五种方式 theverge.com Airbnb 正在开发 AI 旅行 agent,计划 2027 年上半年推出 wechat 这可能是美国AI最魔幻的一天。 nytimes.com 美众议院共和党领袖要求 Nvidia 黄仁勋闭门简报 pub.towardsai.net 忘掉我:为记忆而设计的系统中的删除难题 marktechpost.com Google 发布 Gemini Omni 1.2 Flash:15 秒视频,每秒 0.07 美元 unite.ai Airbnb 计划推出覆盖规划、预订与客服的 AI 旅行 agent techcrunch.com Airbnb 称将于 2027 年上半年推出 AI 旅行代理 theverge.com Perplexity 推出面向工作的 AI 代理 Teammates unite.ai Five9 拟以约3.25亿美元收购 Level AI,扩展客服AI分销渠道
多元动态
登录 注册
智能体 aws.amazon.com · @Suvojit Dasgupta

Intuit基于Amazon Bedrock构建代理式灾难恢复助手EWOK Agent

原文 我的收藏

Intuit开发了名为EWOK Agent的代理式灾难恢复助手,该助手基于Amazon Bedrock构建。它允许值班工程师通过自然语言请求触发生产环境故障转移,同时确保每个操作可审计、符合政策且安全。此案例展示了如何利用生成式AI简化复杂的灾难恢复流程。

AI推荐理由 该案例展示了代理式AI如何将复杂的灾难恢复流程转化为自然语言触发的合规操作,为AI在关键基础设施运维中的落地提供了务实参考;同时,它验证了生成式AI平台在企业级Agent工作流中的实用性,凸显了在自动化中嵌入审计与政策约束的必要性。

85

正文

大规模灾难恢复(DR)是困难的。当数千个微服务跨越多个AWS区域时,协调可靠的故障转移成为一个重大的运营挑战。在Intuit,我们以这种规模运营。我们支持数百万依赖的产品来运营他们的业务和管理财务。这些产品包括TurboTax、QuickBooks、Mailchimp和Credit Karma。为了弥补这一差距,我们使用Amazon Bedrock构建了一个智能体灾难恢复助手。它构建在我们现有的集中式内部灾难恢复系统之上,该系统称为Ecosystem Wide Orchestrator Kit(EWOK)。EWOK标准化了跨计算、数据库、网络、缓存和异步工作负载的故障转移执行。服务所有者用YAML声明恢复意图,EWOK系统编排底层基础设施操作,将受支持工作负载的恢复时间从几小时缩短到约20分钟。EWOK解决了执行问题,但没有解决决策问题。选择哪个恢复工作流适用,以及确认资产是否就绪,仍然依赖于经验丰富的值班工程师的隐性知识,处理恢复过程中出现的异常也是如此。一个常见的例子出现在变更冻结窗口期间。这是一个严格限制部署和变更的时期,以保护关键业务时段(如报税季)的服务可用性。如果故障转移请求在此期间到达,它会被拒绝。工程师必须知道详细的紧急覆盖程序才能继续。为了弥补这一差距,我们构建了EWOK Agent,一个使用Amazon Bedrock构建的AI驱动智能体。Intuit的各个团队在过去八个月中一直使用它来运行故障转移。Amazon Bedrock让我们通过单个API访问来自领先AI提供商的数百个基础模型。我们可以评估并为故障转移推理选择正确的模型,并根据需求的变化切换模型,而无需重新架构智能体。它还提供了内置的Amazon Bedrock Guardrails,以及安全性和隐私保护。我们的数据不用于训练模型,并且在传输和静态时保持加密。当智能体在生产的金融系统上运行时,这一点很重要。由于Amazon Bedrock是完全托管的,我们在EWOK之上添加了这个推理层,而无需自己配置或管理模型基础设施。我们将EWOK Agent作为插件交付。工程师可以安装它,并直接从Intuit的工程门户或他们选择的集成开发环境(IDE)中运行故障转移。在这篇文章中,我们解释了EWOK Agent背后的架构和设计决策。我们涵盖了将故障转移知识编码为技能的设计原则。我们描述了薄薄的Amazon Bedrock层如何将基础模型连接到这些技能。我们展示了智能体循环如何将诸如“在生产环境中故障转移payments-gateway”这样的自然语言请求转变为经过验证的、符合策略的恢复执行。我们专注于设计模式,而不是逐步实现。在整个过程中,我们坚定地持有一个想法。模型决定做什么,而EWOK Agent确定性地执行如何做。以下各节中描述的每个设计选择都是为了保持该边界的清晰。开始之前 这篇文章描述了一种架构和可重用的模式,而不是逐步部署。代码示例是说明性的摘录,不是完整的、可运行的实现。要遵循设计决策并将模式适应到您自己的环境,有助于具备:熟悉Amazon Bedrock以及如何在您的AWS区域中授予对基础模型(FM)的模型访问权限。Amazon Bedrock基础模型的可用性因AWS区域而异,因此在采用此模式之前,请检查您选择的模型在您的区域中是否可用。熟悉Amazon Bedrock Converse API及其工具使用(函数调用)功能,技能到工具的编译依赖于该功能。理解Amazon Bedrock Guardrails以及Bedrock工作负载通常调用的IAM操作(例如,bedrock:Converse、bedrock:ConverseStream、bedrock:InvokeModel和bedrock:ApplyGuardrail),以便安全性和执行边界决策易于遵循。熟悉Python以及AWS SDK for Python(Boto3)和langchain-aws库,说明性代码示例使用了这些。恢复执行层(EWOK)是Intuit的内部系统。该模式本身(类型化技能、薄薄的Amazon Bedrock层以及确定性执行器上的有界智能体循环)并非特定于EWOK,可以应用于其他公开经过身份验证、可审计API的系统。Ecosystem Wide Orchestrator Kit(EWOK)简介 开头介绍了EWOK作为EWOK Agent之下的服务。它的几个术语在本文中反复出现,因此我们在演练使用它们之前在此定义它们。资产:资产是已注册的、可恢复的单元,即EWOK管理其流量的服务或无服务器应用。可恢复单元通常包括:计算层(例如,Kubernetes命名空间或集群,或Amazon Elastic Compute Cloud(Amazon EC2)目标组)。流量端点(例如,Amazon API Gateway路由或服务网格主机名)。关联的数据库(例如,Amazon Aurora全局数据库)。关联的缓存(例如,Amazon ElastiCache)。异步或有状态依赖项(例如,消息队列或管道)。恢复工作流:恢复工作流是EWOK执行的一系列有序的自动化步骤,用于将资产从降级的主区域移动到健康的辅助区域。换句话说,它就是故障转移。用户在一个YAML配置文件中声明他们的恢复意图,该文件定义了工作流阶段,每个阶段映射到一个特定操作。YAML抽象了机制,因此所有者专注于恢复什么以及以什么顺序恢复,而不是低层基础设施细节。资产:payments-gateway 主:region-a 辅助:region-b 阶段: - 计算 # 在辅助区域扩展容量 - 数据库 # 将辅助副本提升为主副本 - 缓存 # 预热并切换缓存层 - 流量 # 将路由从主区域转移到辅助区域 就绪检查:就绪检查是在允许执行故障转移工作流之前对资产运行的预检验证。它验证资产是否满足EWOK安全编排流量移动的要求。策略门:策略门是EWOK在工作流执行之前或期间评估的护栏或限制,以确定工作流是否被允许继续。它们代表组织、运营或合规级别的控制,位于资产本身的技术就绪性之上。执行ID:执行ID是分配给EWOK工作流单次运行的唯一值。它端到端地标识该特定执行实例,从工作流触发的那一刻起,经过所有阶段,直到完成或失败。变更记录:变更管理系统中授权并记录生产变更的正式条目。EWOK在生产工作流启动时打开一个,并在运行结束时关闭,因此每次故障转移都通过人类操作员将遵循的相同过程进行授权和审计,并且没有生产工作流在没有变更记录的情况下运行。团队如何运行故障转移 在深入架构之前,以下演示了工程师使用EWOK Agent在EWOK上运行故障转移的体验。一名值班工程师,在我们的内部工程门户或IDE中工作,告诉智能体:“在生产环境中故障转移payments-gateway” EWOK Agent然后:解析资产并发现其可用的恢复工作流。选择合适的故障转移工作流(或在多个适用时让工程师选择)。验证就绪性并检查策略门,例如活动的变更冻结窗口。通过EWOK系统触发执行,并返回执行ID和变更记录。监控并报告逐阶段状态,直到故障转移完成。这些任务过去是一系列运行手册查找和控制台访问。以前,工程师协调API调用。现在他们监督对话。工程师在判断和批准方面保持参与,但不再需要成为编排者。解决方案概述 在高层次上,EWOK Agent由四层组成。下图说明了端到端流程,从工程师的请求到确定性的恢复操作。架构从上到下组织:消费者层(顶部):包含Intuit的工程门户和IDE集成,通过Model Context Protocol(MCP)连接,这是工程师提交自然语言请求的两个入口点。智能体层:在Amazon Bedrock上运行,将基础模型选择和受限推理循环与Amazon Bedrock Guardrails配对,这些护栏在每次调用时应用。它处理模型选择、护栏和技能调度。技能层(右侧):包含类型化、版本化的技能,每个技能定义为YAML模式加上提示主体,编译为模型从中选择的工具规范。执行层(底部):是EWOK API层,它确定性地执行资产解析、恢复工作流查找、就绪检查、策略门、基于执行ID的跟踪、变更记录以及故障转移本身,通过针对计算、数据库、缓存和流量的工作负载特定智能体。状态沿相同路径向上流动,从执行层通过智能体层到工程师。图1:EWOK Agent架构和请求流,从工程师的请求通过Amazon Bedrock到EWOK中的确定性恢复操作 一名值班工程师从内部工程门户或IDE助手(通过MCP)发出自然语言请求。智能体层通过Amazon Bedrock Converse API将请求连同编译的技能工具规范一起发送给基础模型,每次调用都附加Amazon Bedrock Guardrail。模型选择合适的技能并返回结构化的工具使用请求(例如,带有目标资产和环境的故障转移技能)。技能的执行器对EWOK的API运行所选操作,解析资产、检查策略门、创建变更记录并调用工作流,然后返回结构化结果。EWOK通过工作负载特定智能体跨计算、数据库、缓存和流量层执行批准的恢复工作流,并通过循环将逐阶段状态报告给工程师。将故障转移知识编码为技能 EWOK Agent背后的基础设计决策是停止为人类编写运行手册,开始编写技能,这些定义同时是人类可读的过程和机器可消费的能力。技能是一个Markdown文件,包含两部分:YAML前置元数据声明类型化的I/O模式,作为操作契约。提示主体包含模型遵循的指令、规则和决策逻辑。以下是故障转移管理的简化技能定义:名称:failover-manager 描述:> 管理资产的故障转移工作流:列出工作流、调用故障转移并检查执行状态。当用户要求“触发故障转移”或“检查故障转移状态”时使用。输入模式:操作:类型:字符串 描述:“'get-workflows'、'invoke-failover'或'get-status'” 必需:true 资产名称:类型:字符串 描述:“要操作的资产的名称或别名” 必需:true 环境:类型:字符串 描述:“目标环境,例如'staging'或'production'” 必需:true 事件编号:类型:字符串 描述:“仅在覆盖活动的变更冻结窗口时需要” 必需:false 输出模式:状态:类型:字符串 描述:“'success'或'error'” 结果:类型:对象 描述:“操作特定的负载(工作流、执行ID或状态)” 模式的作用不仅仅是记录技能。它直接编译 成模型推理所依据的工具定义。然后,技能的操作通过真实的执行器对EWOK的API运行。我们如何编写技能提示主体 提示主体是操作判断所在之处。我们将其保持为结构化的、基于规则的格式,而不是自由形式的散文:显式操作演练:每个操作的编号步骤,每个步骤精确映射到一个执行器调用。严格的出错即停规则:失败的步骤立即结束技能,并且明确禁止模型重试或即兴发挥替代方案,因为执行器已经处理了瞬时重试。策略门作为一等分支:这些是定义好的流程,有明确的出口,而不是错误。结构化的响应契约:模型填充声明的输出模式。它不会发明自己的。策略门模式最好通过示例来展示。在Intuit,变更冻结窗口期间的故障转移被阻止,除非与事件关联。这种判断过去存在于工程师对变更政策的记忆中。现在它是技能主体中的一个显式分支:如果调用结果的状态为“change_blocked”:这不是错误。此资产的变更限制处于活动状态。向用户询问以下之一: - 事件编号(例如INC0001234),或 - 紧急理由(24-100个字符) 使用提供的值重新运行调用恰好一次。如果用户拒绝,停止并报告故障转移未执行。Amazon Bedrock层:将模型插入技能 技能故意与基础模型无关。薄薄的Amazon Bedrock层将它们连接到基础模型,它做三件事。第一件事是将每个技能的模式编译成Amazon Bedrock工具规范。Amazon Bedrock Converse API接受一个toolConfig,描述模型可以调用的工具。加载器对每个技能运行以下函数一次。在加载时,每个技能成为一个工具条目:def to_tool_spec(skill) -> dict: """将技能声明的模式编译为Bedrock toolSpec。""" properties = { name: {"type": field.type, "description": field.description} for name, field in skill.input_schema.items() } required = [n for n, f in skill.input_schema.items() if f.required] return { "toolSpec": { "name": skill.name, "description": skill.description, "inputSchema": {"json": { "type": "object", "properties": properties, "required": required, }}, } } 这使模型能够从上下文中选择正确的功能。请求“在生产环境中故障转移payments-gateway”激活故障转移技能,操作=invoke-failover,资产名称=payments-gateway,环境=production,而无需我们硬编码决策树。第二件事是保持模型可插拔。由于Amazon Bedrock Converse API跨模型是统一的,模型是一个配置值,而不是架构承诺。我们通过更改配置来评估和采用更新的基础模型,而技能、循环和执行器保持不变。第三件事是附加护栏。我们通过在一次配置中在循环使用的同一个ChatBedrockConverse客户端上配置Amazon Bedrock Guardrail,将其附加到每次模型调用。对于其工具可以触发生产故障转移的系统,内容级安全检查属于基础设施层,而不是每个技能作者的提示中。client = ChatBedrockConverse( model_id=config.model_id, # 可通过配置插拔 guardrail_config={ "guardrailIdentifier": config.guardrail_id, "guardrailVersion": config.guardrail_version, "trace": "enabled", }, ) 智能体循环 基础模型不能自己采取行动。它只能决定采取什么行动。根据该决定采取行动,将结果反馈,并让模型再次决定是智能体循环的工作。在EWOK Agent中,这个循环故意小而明确,围绕Amazon Bedrock Converse API构建,使用LangChain ChatBedrockConverse客户端。我们使用langchain-aws ChatBedrockConverse客户端而不是Boto3来保持
查看原文(中文正文为 AI 翻译)
Disaster recovery (DR) at scale is hard. When thousands of microservices span multiple AWS Regions, coordinating a reliable failover becomes a major operational challenge. At Intuit, we operate at this scale. We support products that millions of people rely on to run their businesses and manage their finances. These include TurboTax, QuickBooks, Mailchimp, and Credit Karma. To close that gap, we built an agentic disaster recovery assistant with Amazon Bedrock. It builds on our existing centralized internal disaster recovery system called Ecosystem Wide Orchestrator Kit (EWOK). EWOK standardizes failover execution across compute, databases, networking, caches, and asynchronous workloads. Service owners declare recovery intent in YAML, and the EWOK system orchestrates the underlying infrastructure actions, reducing recovery times from several hours to about 20 minutes for supported workloads. EWOK solved execution but not decision-making. Choosing which recovery workflow applies, and confirming an asset is ready, still relied on the tribal knowledge of experienced on-call engineers, as did handling the exceptions that surface mid-recovery. A common example arises during a change-freeze window. This is a period when deployments and changes are tightly restricted to protect service availability during critical business times such as tax season. If a failover request lands during one of these windows, it gets rejected. The engineer must know the detailed emergency-override procedure to proceed. To close this gap, we built EWOK Agent, an AI-powered agent built with Amazon Bedrock. Teams across Intuit have used it to run failovers for the past eight months. Amazon Bedrock gives us access to hundreds of foundation models from leading AI providers through a single API. We can evaluate and select the right model for failover reasoning, and switch models as our needs evolve, without rearchitecting the agent. It also provides built-in Amazon Bedrock Guardrails, along with security and privacy protections. Our data isn’t used to train models and remains encrypted in transit and at rest. This matters when the agent operates on production financial systems. Because Amazon Bedrock is fully managed, we added this reasoning layer on top of EWOK without provisioning or managing model infrastructure ourselves. We deliver EWOK Agent as a plugin. Engineers can install it and run failovers directly from Intuit’s Engineering portal or integrated development environment (IDE) of their choice. In this post, we explain the architecture and design decisions behind the EWOK Agent. We cover the design principles for encoding failover knowledge as skills. We describe how a thin Amazon Bedrock layer connects foundation models to those skills. We show how an agentic loop turns a plain-language request like “failover payments-gateway in production” into a validated, policy-aligned recovery execution. We focus on the design patterns rather than a step-by-step implementation. Throughout, we hold one idea firmly. The model decides what to do, and the EWOK Agent deterministically executes how. Each design choice described in the following sections exists to keep that boundary crisp. Before you begin This post describes an architecture and a reusable pattern rather than a step-by-step deployment. The code samples are illustrative excerpts, not a complete, runnable implementation. To follow the design decisions and adapt the pattern to your own environment, it helps to have: Familiarity with Amazon Bedrock and how model access is granted for a foundation model (FM) in your AWS Region. Amazon Bedrock foundation model availability varies by AWS Region, so check that your chosen model is available in your Region before adopting this pattern. Familiarity with the Amazon Bedrock Converse API and its tool use (function calling) capability, which the skill-to-tool compilation relies on. An understanding of Amazon Bedrock Guardrails and the IAM actions a Bedrock workload typically calls (for example, bedrock:Converse, bedrock:ConverseStream, bedrock:InvokeModel, and bedrock:ApplyGuardrail), so the security and execution-boundary decisions are straightforward to follow. Familiarity with Python and the AWS SDK for Python (Boto3) and langchain-aws libraries, which the illustrative code samples use. The recovery execution layer (EWOK) is an internal Intuit system. The pattern itself (typed skills, a thin Amazon Bedrock layer, and a bounded agentic loop over a deterministic executor) is not specific to EWOK and can be applied to other systems that expose authenticated, auditable APIs. Ecosystem Wide Orchestrator Kit (EWOK) in brief The opening introduced EWOK as the service underneath the EWOK Agent. A few of its terms recur throughout this post, so we define them here before the walkthrough uses them. Asset: An asset is a registered, recoverable unit, a service or serverless app, that EWOK manages traffic for. A recoverable unit typically includes: The compute layer (for example, a Kubernetes namespace or cluster, or an Amazon Elastic Compute Cloud (Amazon EC2) target group). The traffic endpoints (for example, Amazon API Gateway routes or service mesh hostnames). Associated databases (for example, an Amazon Aurora global database). Associated caches (for example, Amazon ElastiCache). Asynchronous or stateful dependencies (for example, message queues or pipelines). Recovery workflow: A recovery workflow is the ordered sequence of automated steps EWOK executes to move an asset from a degraded primary region to a healthy secondary region. In other words, it is the failover. Users declare their recovery intent in a YAML configuration file that defines the workflow stages, and each stage maps to a specific action. The YAML abstracts away the mechanics, so owners focus on what to recover and in what order, not low-level infrastructure details. Asset: payments-gateway primary: region-a secondary: region-b stages: - compute # scale up capacity in the secondary region - database # promote the secondary replica to primary - cache # warm and cut over the cache tier - traffic # shift routing from primary to secondary Readiness check: A readiness check is a pre-flight validation that runs against an asset before a failover workflow is allowed to execute. It verifies that the asset meets EWOK’s requirements for safely orchestrating a traffic move. Policy gates: Policy gates are guardrails or restrictions that EWOK evaluates before or during workflow execution to determine whether a workflow is permitted to proceed. They represent organizational, operational, or compliance-level controls that sit above the technical readiness of the asset itself. Execution ID: An execution ID is a unique value assigned to a single run of an EWOK workflow. It identifies that specific execution instance end to end, from the moment the workflow is triggered through all its stages to completion or failure. Change record: A formal entry in the change-management system that authorizes and documents a production change. EWOK opens one when a production workflow starts and closes it when the run ends, so every failover is authorized and auditable through the same process a human operator would follow, and no production workflow runs without one. How teams run failover Before diving into the architecture, the following demonstrates an engineer’s experience running a failover with EWOK using EWOK Agent. An on-call engineer, working from our internal engineering portal or an IDE, tells the agent: “Failover payments-gateway in production” EWOK Agent then: Resolves the asset and discovers its available recovery workflows. Selects the appropriate failover workflow (or asks the engineer to choose when several apply). Validates readiness and checks policy gates, such as an active change-freeze window. Triggers execution through the EWOK system and returns the execution ID and change record. Monitors and reports stage-by-stage status until the failover completes. Those tasks used to be a sequence of runbook lookups and console visits. Earlier, an engineer coordinated the API calls. Now they supervise conversations. The engineer stays in the loop for judgment calls and approvals but no longer needs to be the orchestrator. Solution overview At a high level, the EWOK Agent consists of four layers. The following diagram illustrates the end-to-end flow, from an engineer’s request to a deterministic recovery action. The architecture is organized top to bottom: Consumer layer (top): holds Intuit’s Engineering Portal and IDE integration, connected through Model Context Protocol (MCP), the two entry points where an engineer submits a plain-language request. Agent layer: runs on Amazon Bedrock and pairs foundation model selection and a bounded reasoning loop with Amazon Bedrock Guardrails that are applied on every invocation. It handles model selection, guardrails, and skill dispatch. Skill layer (right): holds typed, versioned skills, each defined as a YAML schema plus a prompt body, which compiles to tool specifications that the model selects from. Execution layer (bottom): is the EWOK API layer, which deterministically performs asset resolution, recovery workflow lookup, readiness checks, policy gates, execution-ID-based tracking, change records, and the failover itself, through workload-specific agents for compute, database, cache, and traffic. Status flows back up the same path, from the execution layer through the agent layer to the engineer. Figure 1: EWOK Agent architecture and request flow, from an engineer’s request through Amazon Bedrock to a deterministic recovery action in EWOK An on-call engineer issues a plain-language request from the internal engineering portal or an IDE assistant (through MCP). The agent layer sends the request, together with the compiled skill tool specifications, to a foundation model through the Amazon Bedrock Converse API, with an Amazon Bedrock Guardrail attached to each invocation. The model selects the appropriate skill and returns a structured tool-use request (for example, the failover skill with the target asset and environment). The skill’s executor runs the selected operation against EWOK’s APIs, resolving the asset, checking policy gates, creating a change record, and invoking the workflow, then returns a structured result. EWOK executes the approved recovery workflow through workload-specific agents across the compute, database, cache, and traffic tiers, and reports stage-by-stage status back through the loop to the engineer. Encoding failover knowledge as skills The foundational design decision behind EWOK Agent was to stop writing runbooks for humans and start writing skills, definitions that are simultaneously human-readable procedure and machine-consumable capability. A skill is a Markdown file with two parts: YAML frontmatter declaring a typed I/O schema, which serves as the operational contract. A prompt body containing the instructions, rules, and decision logic the model follows. Here is a simplified skill definition for failover management: name: failover-manager description: > Manages failover workflows for assets: list workflows, invoke failover, and check execution status. Use when the user asks to "trigger failover" or "check failover status" for an asset. input_schema: operation: type: string description: "'get-workflows', 'invoke-failover', or 'get-status'" required: true asset_name: type: string description: "Name or alias of the asset to act on" required: true environment: type: string description: "Target environment, e.g. 'staging' or 'production'" required: true incident_number: type: string description: "Only needed to override an active change-freeze window" required: false output_schema: status: type: string description: "'success' or 'error'" result: type: object description: "Operation-specific payload (workflows, execution ID, or status)" The schema does more than documenting the skill. It compiles directly into the tool definition the model reasons against. The skill’s actions then run through a real executor against EWOK’s APIs. How we write skill prompt bodies The prompt body is where operational judgment lives. We hold it to a structured, rule-based format rather than free-form prose: Explicit operation walkthroughs: Numbered steps per operation, each mapping to exactly one executor call. Strict stop-on-error rules: A failed step ends the skill immediately, and the model is explicitly forbidden from retrying or improvising alternatives, because the executor already handles transient retries. Policy gates as first-class branches: These are defined flows with defined exits, not errors. A structured response contract: The model populates the declared output schema. It does not invent its own. The policy-gate pattern is best shown by example. At Intuit, failovers during a change-freeze window are blocked unless tied to an incident. That judgment call used to live in an engineer’s memory of the change policy. Now it is an explicit branch in the skill body: If the invoke result has status "change_blocked": This is NOT an error. Change restrictions are active for this asset. Ask the user for ONE of: - an incident number (e.g. INC0001234), or - an emergency justification (24-100 characters) Re-run the invoke exactly once with the value provided. If the user declines, stop and report that the failover was not executed. The Amazon Bedrock layer: Plugging models into skills Skills are deliberately foundation model agnostic. A thin Amazon Bedrock layer connects them to a foundation model, and it does three jobs. The first job is to compile each skill’s schema into an Amazon Bedrock tool specification. The Amazon Bedrock Converse API accepts a toolConfig describing the tools a model may call. The loader runs the following function once per skill. At load time, each skill becomes one tool entry: def to_tool_spec(skill) -> dict: """Compile a skill's declared schema into a Bedrock toolSpec.""" properties = { name: {"type": field.type, "description": field.description} for name, field in skill.input_schema.items() } required = [n for n, f in skill.input_schema.items() if f.required] return { "toolSpec": { "name": skill.name, "description": skill.description, "inputSchema": {"json": { "type": "object", "properties": properties, "required": required, }}, } } This is what lets the model choose the right capability from context. The request “failover payments-gateway in production” activates the failover skill with operation=invoke-failover, asset_name=payments-gateway, and environment=production, without us hardcoding a decision tree. The second job is to keep the model pluggable. Because the Amazon Bedrock Converse API is uniform across models, the model is a configuration value rather than an architectural commitment. We evaluate and adopt newer foundation models by changing configs, and the skills, the loop, and the executors stay untouched. The third job is to attach guardrails. We attach an Amazon Bedrock Guardrail to every model invocation by configuring it once on the same ChatBedrockConverse client that the loop uses. For a system whose tools can trigger production failovers, content-level safety checks belong in the infrastructure layer, not in each skill author’s prompt. client = ChatBedrockConverse( model_id=config.model_id, # pluggable via config guardrail_config={ "guardrailIdentifier": config.guardrail_id, "guardrailVersion": config.guardrail_version, "trace": "enabled", }, ) The agentic loop A foundation model can’t take actions on its own. It can only decide what actions to take. Acting on that decision, feeding the results back, and letting the model decide again is the job of an agentic loop. In EWOK Agent, this loop is deliberately small and explicit, built around the Amazon Bedrock Converse API using the LangChain ChatBedrockConverse client. We use the langchain-aws ChatBedrockConverse client instead of Boto3 to keep the

来源报道 · 3 篇 · 以下链接均前往原始媒体

opmlrss::AWS Machine Learning Blog Intuit基于Amazon Bedrock构建代理式灾难恢复助手EWOK Agent 09-05 · 原文发布
← 返回精选动态 原文

更多内容