AWS Builder 文章

在 Amazon EKS 上构建生产环境就绪的信用与收益质押 AI 智能体

![在 EKS 上构建生产环境就绪的 信用与收益质押 AI 智能体](Building production-ready Credit & Yield Staking AI agents on EKS (10).png)

![在 EKS 上构建生产环境就绪的 信用与收益质押 AI 智能体](Building production-ready Credit & Yield Staking AI agents on EKS (10).png)

EKS 自动模式(Auto Mode)与 Karpenter 能为生产环境的 AI 智能体提供弹性运算资源,而模型上下文协议(MCP)则实现了动态工具发现与外部数据访问。Strands SDK 负责协调 A2A(智能体对智能体)智能体、智能体集群(swarms)、工作流(workflows)以及基于图(graph-based)的委派机制。信用与金融智能体以容器化 Kubernetes 服务的形式运行,使用 ECR 镜像、智能体卡片(agent-card)发现机制、HTTP/JSON 端点,并具备涵盖收益质押、宏观经济波动、利率、流动性、回撤(drawdowns)、对冲(hedging)和执行纪律的多智能体风险分析能力。

重要声明:本内容仅供工程教学研讨会使用。信用与收益质押领域仅用于教学智能体工具架构与生产部署模式。此内容不构成任何财务或投资建议。


信用与收益质押洞察

市场目前的狂热依旧由 AI 主导,但嫉妒的债券收益率正紧盯着这一切。全球股市受到科技/半导体财报与 AI 资本支出(capex)的推动而走高,然而债券波动性与过高的估值仍是主要的潜在风险。

  • 操作策略:仅在关键移动平均线上方顺势操作;严格执行止损、做好头寸控制,并避免盲目追高跳空缺口。

原油是诱人的宏观经济触发点:每一次飙升都伴随着通膨的耳语。中东局势动荡推高了能源风险溢价,迫使市场重新评估通膨压力、中央银行的耐心以及经济增长风险。

  • 操作策略:密切监控布兰特原油(Brent)、损益平衡通膨率(breakeven inflation)和 10 年期国债收益率;当原油波动加剧时,利用能源头寸进行对冲,或为股票多头头寸配置更紧密的移动止损。

利率则是随时能让派对结束的冷酷玩家。更高的主权债券收益率和期限溢价(term premiums)可能会压缩市盈率(P/E multiples),特别是对于长久期的成长股。

  • 操作策略:当收益率向上突破时,应降低杠杆;资产配置上更倾向于拥有优质资产负债表、自由现金流充裕的标的,并持有短久期固定收益产品以保留备用资金(dry powder)。

研讨会总结

![在 EKS 上构建生产环境就绪的信用与收益质押 AI 智能体](Building production-ready Credit & Yield Staking AI agents on EKS (1).png)

开发者将在 Amazon EKS 上构建生产环境就绪的信用与收益质押 AI 智能体。本研讨会将从 EKS 自动模式(Auto Mode)与节点池(NodePools)开始,接着加入 MCP 工具访问、Strands 智能体、A2A 服务器对外曝光、Docker 打包、ECR 镜像发布、Kubernetes 部署,最后构建一个多智能体信用审查系统。

本研讨会构建的架构

![在 EKS 上构建生产环境就绪的信用与收益质押 AI 智能体](Building production-ready Credit & Yield Staking AI agents on EKS (2).png)

交易员 (Trader)
  └─ 询问信用与收益质押的洞察问题

AWS 区域 (AWS Region)
  ├─ VPC
  │  └─ 启用自动模式与 Karpenter 的 Amazon EKS
  │     ├─ agents 命名空间 (namespace)
  │     │  ├─ financial-agent 服务 (Service)
  │     │  ├─ financial-agent 部署 (Deployment)
  │     │  ├─ 信用多智能体服务器 (Credit multi-agent server)
  │     │  └─ Strands 信用智能体 (Strands Credit Agent)
  │     ├─ mcp-servers 命名空间
  │     │  └─ 金融 MCP 服务器 (financial MCP server)
  │     ├─ MCP 客户端 (MCP Client)
  │     ├─ 智能体对智能体 (A2A) 服务器
  │     └─ Strands 金融智能体 (Strands financial agent)
  ├─ Amazon Elastic Container Registry (ECR)
  │  └─ 智能体与 MCP 服务器镜像
  └─ Amazon Bedrock
     └─ AI/LLM 功能

AWS 区域外部 (External)
  └─ 供 MCP 客户端访问金融策略的外部 MCP 服务器

研讨会章节

第一部分:动手做研讨会与 EKS 自动模式

介绍如何在 Amazon EKS 上构建生产环境就绪的 AI 智能体,涵盖研讨会资源、预先部署的 EKS 自动模式、Karpenter 驱动的资源配置、节点池(NodePools)、可扩展运算、ECR、Bedrock、VPC、命名空间,以及用于外部工具访问的 MCP。

第二部分:MCP、A2A 协议与 Strands

深入解析 MCP、A2A 协议与 Strands SDK,包括远程工具发现、智能体互通性、智能体即工具(agents-as-tools)、智能体集群(swarms)、图(graphs)、工作流(workflows)、装饰器(decorators)、由 Bedrock 支持的智能体、current_time 工具,以及市场趋势执行的实际示例。

第三部分:智能体对智能体服务器与测试

涵盖如何通过 A2A 服务器公开智能体、FastAPI 挂载、HTTP/JSON 功能发现、agent-card.json 端点、本地测试、Docker 容器化、uv 依赖缓存、生产环境镜像、ECR 推送指令以及利率驱动的输出。

第四部分:在 Kubernetes 中部署金融智能体

详细说明金融智能体的 Kubernetes 部署流程,包括 Service 和 Deployment YAML、标签(labels)、选择器(selectors)、连接埠(ports)、环境变量、存活探针(liveness probes)、命名空间构建、滚动更新检查、Pod 验证、内部 DNS、curl 测试以及智能体卡片(agent-card)发现。

第五部分:多智能体系统与信用审查智能体

描述多智能体系统协同运作,信用与金融智能体如何通过 A2A 工具提供者进行协作、动态发现、任务委派、整合多方来源、风险审查、交易对手分析、流动性检查、合规性考量以及多智能体服务器测试。


第一部分 — EKS 自动模式与节点池

![在 EKS 上构建生产环境就绪的信用与收益质押 AI 智能体](Building production-ready Credit & Yield Staking AI agents on EKS (3).png)

构建一个预先部署且启用了自动模式(Auto Mode)的 EKS 集群。

EKS 自动模式(Auto Mode)

EKS 自动模式利用 Karpenter 来实现:

  • 自动启动运算资源。
  • 监测被 Kubernetes 排程器标记为「无法排程(unschedulable)」的 Pod,并自动配置节点以运行这些 Pod。
  • 在不再需要节点时将其自动移除。

节点池(NodePools)

节点池定义了:

  • 可以被配置的运算资源类型。
  • 容量类型,例如按需(On-Demand)或点货(Spot)。
  • 可用区域(Availability zones)。

当 Pod 需要被排程时,Karpenter 会选择最合适的节点池配置来配置节点。这能将基本的对话式 AI 转化为具备弹性扩展、工具赋能的智慧智能体。

AWS 元件说明

  • Amazon Elastic Container Registry (ECR):存储智能体和 MCP 服务器部署所需的容器镜像。
  • Amazon Bedrock Claude Sonnet:为智能体提供强大的 AI/LLM 核心能力。
  • VPC:为 EKS 集群提供网络隔离与安全边界。
  • Amazon EKS Auto Mode:提供具备自动化基础设施管理的托管式 Kubernetes 集群。
  • Agent 命名空间:包含 AI 智能体容器的部署(Deployment)与服务(Service)。
  • MCP 命名空间:包含用于访问外部数据的 MCP 容器部署与服务。
  • MCP 协议:允许智能体访问外部工具和数据源的标准协议。

结合 MCP 的智能体

模型上下文协议(MCP)赋予了智能体访问外部服务的能力。


第二部分 — MCP、A2A 协议与 Strands

![在 EKS 上构建生产环境就绪的信用与收益质押 AI 智能体](Building production-ready Credit & Yield Staking AI agents on EKS (4).png)

智能体对智能体(A2A)协议

智能体对智能体(Agent-to-Agent, A2A)协议允许有多个应用与同一个智能体进行互动。

部署智能体至 Kubernetes — 生产环境就绪

模型上下文协议(MCP)

模型上下文协议(Model Context Protocol, MCP)使 AI 智能体能够安全地访问外部工具与服务。

MCP 客户端(MCP Client)

MCP 客户端利用远程 MCP 服务器的 URL 来动态发现并使用工具。

def get_mcp_tools():
    mcp_url = os.getenv("FINANCIAL_MCP_URL", "http://localhost:8080/mcp")
    mcp_client = MCPClient(lambda: streamablehttp_client(mcp_url))
    mcp_client.start()
    return mcp_client.list_tools_sync()

Strands 功能摘要

  • 智能体对智能体 (A2A):一种开放标准,供智能体跨系统发现技能、通讯和协作,提升互通性与委派效率。适用于跨平台助理、企业自动化、市场和协调式多智能体任务。
  • 智能体即工具 (Agents as Tools):将专门的智能体封装为其他智能体的可呼叫函数,提高模块化、重用性与控制度。适用于编码助理、检索专家、合规审查员、计算器及特定领域的工作流步骤。
  • 智能体集群 (Swarm):一种协同业务流程模式,多个智能体以团队形式运作、共享上下文、分工并共同解决问题。适用于研究、脑力激荡、规划、事件响应、调查及复杂且具不确定性的任务。
  • 图 (Graph):一种确定性的有向业务流程模式,智能体、节点、集群或嵌套图遵循预定义的路径,提高可预测性与可审计性。适用于审批、诊断、数据管道、受监管流程和可重复的决策。
  • 工作流 (Workflow):一种针对特定智能体在定义序列或模式中的结构化协调模式,可提高效率、可重复性和问责制。适用于入职培训、报告、理赔处理、内容审查、服务台自动化及运营。

Strands SDK

Strands 是一个开源 SDK,通过模型驱动的编排(model-driven orchestration)简化自主 AI 智能体的构建。它减少了复杂的编码工作、处理多智能体工作流,并自动化云资源管理等任务。

只需加上简单的 @tool 装饰器(decorator),就能将 Python 函数转换为智能体工具。

@tool(name="get_todays_date", description="撷取今天的日期以确保准确性")
def get_todays_date() -> str:
    return datetime.today().strftime('%Y-%m-%d')

智能体定义(Agent)

智能体具备采取行动的能力。

def financial_agent():
    agent = Agent(
        description="协助处理固定收益指数的实用智能体",
        model=BEDROCK_MODEL_ID,
        system_提示词="""
你是一位拥有 40 年经验的专业交易员。
请解读最近 3 个月的美国金融市场趋势。
并给出风险中立的市场观察与场景提醒。
""",
        tools=[get_mcp_tools(), current_time]  # 整合 Strands 社区的 current_time 工具功能
    )
    return agent

执行智能体

def main():
    agent = financial_agent()
    agent("根据最近 3 个月的金融市场趋势给出市场观察与风险提醒")

在 Bash 终端机中执行智能体:

uv run --project ~/environment/agents/a2a/agent agent
echo -e "\n\n***** 智能体响应结束 *****"

输出结果

Tool #1: current_time
Tool #2: get_forecast

市场目前的狂热依旧由 AI 主导,但外头嫉妒的债券收益率正紧盯着这一切。全球股市受到科技/半导体财报与 AI 资本支出的推动而走高,然而债券波动性与过高的估值仍是主要的潜在风险。请仅在关键移动平均线上方顺势操作;严格执行止损、做好头寸控制,并避免盲目追高跳空缺口。
  • 工具执行可见性:成功触发 Tool #1。
  • 多步骤推理:市场狂热 → 债券收益率/波动性 → 半导体财报 → AI 资本支出 → 建议使用止损、头寸控制并避免追高。

第三部分 — 智能体对智能体服务器与测试

![在 EKS 上构建生产环境就绪的信用与收益质押 AI 智能体](Building production-ready Credit & Yield Staking AI agents on EKS (5).png)

智能体对智能体(A2A)服务器

A2A 服务器可以让其他应用与服务进行访问。利用 Strands SDK 将您的智能体公开为网络服务。

def run_a2a_server():
    host = os.getenv("A2A_HOST", "0.0.0.0")
    port = int(os.getenv("A2A_PORT", "9000"))
    http_url = os.getenv("A2A_URL", os.getenv("AGENTCORE_RUNTIME_URL", f"http://localhost:{port}"))
    agent = financial_agent()  # 我们刚才构建的智能体
    应用 = FastAPI()  # 网页服务
    a2a_server = A2AServer(agent=agent, port=port, host=host, http_url=http_url, serve_at_root=True)

    # 将 A2A 服务器挂载到网页应用
    应用.mount("/", a2a_server.to_fastapi_应用())

    # 启动服务器
    uvicorn.run(应用, host=host, port=port)

测试 A2A 服务器

run_in_background 9000 uv run --project ~/environment/agents/a2a/agent agent-a2a-server
a2a_client_local http://localhost:9000 "能否提供收益质押的风险观察与监控重点?"

输出结果

原油是诱人的宏观经济触发点:每一次飙升都伴随着通膨的耳语。中东局势动荡推高了能源风险溢价,迫使市场重新评估通膨压力、中央银行的耐心以及经济增长风险。请密切监控布兰特原油(Brent)、损益平衡通膨率和 10 年期国债收益率;当原油波动加剧时,利用能源头寸进行对冲,或为股票多头头寸配置更紧密的移动止损。

能力发现(Capability Discovery)

客户端会自动发现 agent-card.json 端点。

  • 通讯协议:HTTP/JSON
  • 容器配置:绑定至 0.0.0.0:9000 以便在 Kubernetes 中部署。

容器化部署

将 A2A 服务器打包成 Docker 容器。Amazon EKS 提供完善的弹性调整、监控与服务发现。

Dockerfile 示例

ARG RUNTAG=latest
FROM cgr.dev/chainguard/python:latest-dev AS uv
WORKDIR /应用

# 安全的生产环境环境变量配置
# 预先编译 Python 字节码,缩短启动与汇入时间
ENV UV_COMPILE_BYTECODE=1

# 在 Docker 环境中通常使用 copy 较为安全
ENV UV_LINK_MODE=copy

# 强制使用系统内置的 Python 直译器
ENV UV_PYTHON_PREFERENCE=only-system

# 不允许更新 lockfile
ENV UV_FROZEN=true

开发阶段镜像 (uv)

![在 EKS 上构建生产环境就绪的信用与收益质押 AI 智能体](Building production-ready Credit & Yield Staking AI agents on EKS (6).png)

# 构建依赖缓存层
COPY pyproject.toml uv.lock ./
RUN --mount=type=cache,target=/root/.cache/uv \
    uv sync --no-install-project --no-dev --no-editable

# 构建代码缓存层
COPY *.py .
RUN --mount=type=cache,target=/root/.cache/uv \
    uv sync --no-dev --no-editable
  • --mount=type=cache:构建缓存机制以加速构建。
  • --no-dev --no-editable:仅安装生产环境所需的相依项目。

生产环境镜像

FROM cgr.dev/chainguard/python:${RUNTAG}
WORKDIR /应用
ENV PATH="/应用/.venv/bin:$PATH"
COPY --from=uv /应用/.venv .venv
  • ENV PATH:允许直接执行 pythonpip 等指令。
  • --from=uv:从名为 uv 的 Docker 构建阶段复制文件。

将编译好的容器镜像推送到 Amazon ECR:

docker build ~/environment/agents/a2a/agent/ -t ${ECR_REPO_FINANCIAL_AGENT_URI}:latest
docker push ${ECR_REPO_FINANCIAL_AGENT_URI}:latest

第四部分 — 在 Kubernetes 中部署金融智能体

![在 EKS 上构建生产环境就绪的信用与收益质押 AI 智能体](Building production-ready Credit & Yield Staking AI agents on EKS (7).png)

部署金融智能体

服务资源宣告:k8s.yaml

apiVersion: v1
kind: Service
metadata:
  name: financial-agent
  namespace: agents
  labels:
    应用.kubernetes.io/name: financial-agent
spec:
  selector:
    应用.kubernetes.io/name: financial-agent
  ports:
    - port: 9000
      targetPort: a2a
      name: a2a

服务发现 (Service Discovery)

通过标签选择器(Label selector)与内部 DNS 进行对接:

  • 标签选择器应用.kubernetes.io/name: financial-agent
  • 内部 DNS 网址http://financial-agent.agents/

部署资源宣告 (Deployment Resource)

![在 EKS 上构建生产环境就绪的信用与收益质押 AI 智能体](Building production-ready Credit & Yield Staking AI agents on EKS (8).png)

apiVersion: 应用s/v1
kind: Deployment
metadata:
  name: financial-agent
  namespace: agents
  labels:
    应用.kubernetes.io/name: financial-agent
spec:
  selector:
    matchLabels:
      应用.kubernetes.io/name: financial-agent
  template:
    metadata:
      labels:
        应用.kubernetes.io/name: financial-agent
    spec:
      serviceAccountName: financial-agent
      containers:
        - name: financial-agent
          image: ${ECR_REPO_FINANCIAL_AGENT_URI}:latest
          ports:
            - containerPort: 9000
              name: a2a
          env:
            - name: FINANCIAL_MCP_URL
              value: "http://financial-mcp.mcp-servers:8080/mcp"
            - name: A2A_URL
              value: "http://financial-agent.agents:9000"
          command: ["agent-a2a-server"]
          livenessProbe:
            tcpSocket:
              port: 9000

构建 Kubernetes 命名空间并部署:

# 构建命名空间
kubectl create namespace agents

# 替换环境变量并部署到 Kubernetes
envsubst < ~/environment/agents/a2a/agent/k8s.yaml | kubectl 应用ly -f -

# 等待 Pod 进入运行状态
kubectl rollout status --namespace agents deployment financial-agent

# 验证部署结果
kubectl get pods -n agents -l 应用.kubernetes.io/name=financial-agent

测试在 Kubernetes 中运行的智能体

kubectl run curl-test --image=curlimages/curl \
  --rm -it --restart=Never -- \
  curl -s -X GET http://financial-agent.agents:9000/.well-known/agent-card.json \
  | sed 's/pod "curl-test" deleted//' | jq -r .

A2A 智能体卡片(Agent Card)

A2A 智能体卡片详细描述了智能体的功能,让其他客户端能动态探索并了解该智能体可以执行的任务。

呼叫在 Kubernetes 中运行的智能体

a2a_client_in_k8s http://financial-agent.agents:9000 "Provide risk monitoring insights"

第五部分 — 多智能体系统与信用审查智能体

![在 EKS 上构建生产环境就绪的信用与收益质押 AI 智能体](Building production-ready Credit & Yield Staking AI agents on EKS (9).png)
![在 EKS 上构建生产环境就绪的信用与收益质押 AI 智能体](Building production-ready Credit & Yield Staking AI agents on EKS (10).png)

多智能体系统 (Multi-Agent Systems)

多个智能体分工合作来解决复杂的问题。

  • 信用智能体 (Credit Agent):针对收益质押投资提供信用审查。
  • 金融智能体 (Financial Agent):针对收益质押提供具体的市场观察与风险提醒。

请求分析流程

当用户提出请求时,信用智能体会分析该请求,并判定其需要更多实时的金融数据才能提供高质量的收益质押风险评估输出。

  • 核心优势:引进外部领域专家(其他智能体)能产生更高质量、更全面的安全响应。

Strands 中的多智能体编排

  • A2A 协议:发现并与其他智能体通讯。
  • 多智能体编排:协调多个智能体共同解决复杂问题。
  • A2A 客户端即智能体工具:将外部智能体封装为可供呼叫的函数工具。
def financial_agent_as_tool(request: str) -> str:
    remote_agent_a2a_url = os.getenv("FINANCIAL_A2A_SERVER_URL", "http://localhost:9000")
    a2a_tool_provider = A2AClientToolProvider(known_agent_urls=[remote_agent_a2a_url])
    tools = a2a_tool_provider.tools
    agent = Agent(
        model=BEDROCK_MODEL_ID,
        tools=tools,
        system_提示词="你是一个智能体界面。负责发现你可以使用的智能体与工具",
        callback_handler=None
    )
    try:
        response = agent(request)
        return str(response)
    except Exception as e:
        raise Exception(f"无法处理远程 A2A 智能体请求: {str(e)}")

构建信用审查智能体

构建一个专门评估收益质押投资风险的信用智能体。利用 A2A 客户端提供者工具来动态发现 A2A 智能体、委派任务并整合信息。

def credit_agent() -> Agent:
    agent = Agent(
        model=BEDROCK_MODEL_ID,
        description="""
信用审查智能体,负责从信用、交易对手、流动性、运营和风险控制的角度评估收益质押投资机会。
""",
        system_提示词="""
你是收益质押投资机会的信用审查智能体。
你的职责是评估拟议收益质押投资的信用与风险状况。
你**不提供**财务建议、投资推荐或收益保证。
你提供结构化的风险分析以支持人类决策。

请务必评估以下领域:
- 交易对手风险 (Counterparty risk)
- 协议或平台风险 (Protocol or platform risk)
- 资产质量与波动性风险
- 收益永续性 (Yield sustainability)
- 流动性与赎回风险
- 智慧合约与运营风险
- 托管与结算风险
- 法规与合规性考量
- 历史表现(若有)
- 集中度与风险敞口限制
- 上行/下行场景与压力测试风险

如果用户提供信息不足,请主动询问:
- 质押平台或协议名称
- 质押的资产
- 预期收益或 APY
- 锁定期限 (Lock-up period)
- 投资金额
- 司法管辖区
- 交易对手或托管机构详情
- 可用的文件、评级、审计或财务披露

请以清晰的信用审查格式输出:
- 执行摘要 (Executive summary)
- 核心优势
- 关键风险
- 必要尽职调查 (Required due diligence)
- 风险评级
- 信用隐忧
- 缓释因素 (Mitigating factors)
- 最终审查结论

适时使用可用工具或智能体来收集支持信息。清楚说明假设与限制。
切勿直接指示用户投资或不投资。
""",
        tools=[current_time, financial_agent_as_tool]
    )
    return agent

将多智能体系统公开为 A2A 服务器

def run_a2a_server():
    host = os.getenv("A2A_HOST", "0.0.0.0")
    port = int(os.getenv("A2A_PORT", "9000"))
    http_url = os.getenv("A2A_URL", os.getenv("CREDIT_AGENT_RUNTIME_URL", f"http://localhost:{port}"))
    agent = credit_agent()
    应用 = FastAPI()
    a2a_server = A2AServer(agent=agent, port=port, host=host, http_url=http_url, serve_at_root=True)
    应用.mount("/", a2a_server.to_fastapi_应用())
    uvicorn.run(应用, host=host, port=port)

测试多智能体 A2A 服务器

run_in_background 9000 uv run --project ~/environment/agents/a2a/multi-agent multi-agent-a2a-server
a2a_client_local http://localhost:9000 "能否针对未来 3 个月的收益质押投资提供信用审查?"

最终输出结果

利率则是能让派对随时结束的冷酷玩家。更高的主权债券收益率和期限溢价可能会压缩市盈率,特别是对于长久期的成长股。请在收益率向上突破时降低杠杆;资产配置上更倾向于拥有优质资产负债表、自由现金流充裕的标的,并持有短久期固定收益产品以保留备用资金。