AWS Builder 文章

在 Amazon EKS 上建構生產環境就緒的信用與收益質押 AI 智能體

EKS 自動模式(Auto Mode)與 Karpenter 能為生產環境 AI 智能體提供彈性運算。配合 MCP、Strands SDK 與 A2A 協定,可建立可擴展、可協作、可部署的金融多智能體系統。

![在 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_prompt="""
你是一位擁有 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()  # 我們剛才建立的智能體
    app = FastAPI()  # 網頁服務
    a2a_server = A2AServer(agent=agent, port=port, host=host, http_url=http_url, serve_at_root=True)

    # 將 A2A 伺服器掛載到網頁應用程式
    app.mount("/", a2a_server.to_fastapi_app())

    # 啟動伺服器
    uvicorn.run(app, 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 /app

# 安全的生產環境環境變數設定
# 預先編譯 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 /app
ENV PATH="/app/.venv/bin:$PATH"
COPY --from=uv /app/.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:
    app.kubernetes.io/name: financial-agent
spec:
  selector:
    app.kubernetes.io/name: financial-agent
  ports:
    - port: 9000
      targetPort: a2a
      name: a2a

服務發現 (Service Discovery)

透過標籤選擇器(Label selector)與內部 DNS 進行對接:

  • 標籤選擇器app.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: apps/v1
kind: Deployment
metadata:
  name: financial-agent
  namespace: agents
  labels:
    app.kubernetes.io/name: financial-agent
spec:
  selector:
    matchLabels:
      app.kubernetes.io/name: financial-agent
  template:
    metadata:
      labels:
        app.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 apply -f -

# 等待 Pod 進入運行狀態
kubectl rollout status --namespace agents deployment financial-agent

# 驗證部署結果
kubectl get pods -n agents -l app.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_prompt="你是一個智能體介面。負責發現你可以使用的智能體與工具",
        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_prompt="""
你是收益質押投資機會的信用審查智能體。
你的職責是評估擬議收益質押投資的信用與風險狀況。
你**不提供**財務建議、投資推薦或收益保證。
你提供結構化的風險分析以支援人類決策。

請務必評估以下領域:
- 交易對手風險 (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()
    app = FastAPI()
    a2a_server = A2AServer(agent=agent, port=port, host=host, http_url=http_url, serve_at_root=True)
    app.mount("/", a2a_server.to_fastapi_app())
    uvicorn.run(app, 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 個月的收益質押投資提供信用審查?"

最終輸出結果

利率則是能讓派對隨時結束的冷酷玩家。更高的主權債券殖利率和期限溢價可能會壓縮本益比,特別是對於長天期的成長股。請在殖利率向上突破時降低槓桿;資產配置上更傾向於擁有優質資產負債表、自由現金流充裕的標的,並持有短天期固定收益產品以保留閒置資金。