Bỏ qua để đến nội dung

Trang Web React đến AgentCore Gateway

Trình tạo connection có thể kết nối một trang web React với các agent được đặt phía trước bởi một AgentCore Gateway được tạo với protocol: http.

Trình duyệt chỉ giao tiếp với Gateway — các yêu cầu đến <gatewayUrl>/<targetName>/invocations được proxy đến runtime của agent phía sau nó. Vì trang web không bao giờ cần truy cập trực tiếp vào các runtime, các agent có thể được triển khai bên trong VPC, với Gateway là điểm vào duy nhất được quản lý cung cấp xác thực và khả năng quan sát.

Trước khi sử dụng trình tạo này, hãy đảm bảo bạn có:

  1. Một dự án trang web React
  2. Một dự án agentcore-gateway được tạo với protocol: http
  3. Ít nhất một agent AG-UI hoặc HTTP được gắn vào Gateway thông qua trình tạo kết nối Gateway đến agent

Trình tạo tạo một client trang web cho mỗi agent AG-UI hoặc HTTP được gắn vào Gateway (các target A2A bị bỏ qua — chúng sử dụng JSON-RPC agent-to-agent, không phải giao thức trình duyệt). Nó tạo ra các client giống như khi kết nối trang web trực tiếp với từng agent (AG-UI/CopilotKit cho các agent AG-UI, một client OpenAPI cho các agent Python HTTP), được định tuyến qua Gateway thay vì tại runtime.

  1. Cài đặt Nx Console VSCode Plugin nếu bạn chưa cài đặt
  2. Mở Nx Console trong VSCode
  3. Nhấp Generate (UI) trong phần "Common Nx Commands"
  4. Tìm kiếm @aws/nx-plugin - connection
  5. Điền các tham số bắt buộc
    • Nhấp Generate

    Chọn dự án trang web làm nguồn và dự án Gateway làm đích.

    Tham sốKiểuMặc địnhMô tả
    sourceProject Bắt buộcstring-Dự án nguồn
    targetProject Bắt buộcstring-Dự án đích để kết nối tới
    sourceComponent string-Component nguồn để kết nối từ đó (tên component, đường dẫn tương đối so với thư mục gốc của dự án nguồn, hoặc generator id). Sử dụng '.' để chọn rõ ràng dự án làm nguồn.
    targetComponent string-Component đích để kết nối tới (tên component, đường dẫn tương đối so với thư mục gốc của dự án đích, hoặc generator id). Sử dụng '.' để chọn rõ ràng dự án làm đích.
    preferInstallDependencies booleantrueCó nên cài đặt các dependencies sau khi generator chạy hay không. Đặt thành false để trì hoãn việc cài đặt khi chạy nhiều generator liên tiếp (việc cài đặt vẫn sẽ chạy nếu cần thiết để các generator tiếp theo có thể tính toán Nx project graph); cài đặt một lần vào cuối.

    Đối với mỗi agent AG-UI được đặt phía trước, các tệp giống như kết nối React đến agent AG-UI được tạo ra (một AguiProvider, một hook useAgui<Agent> và một module component CopilotKit có chủ đề), với hook đọc URL của Gateway từ cấu hình runtime:

    • Thư mụcpackages/<website>/src
      • Thư mụccomponents
        • AguiProvider.tsx CopilotKit provider đăng ký mỗi agent
        • Thư mụccopilot/ Các component chat có chủ đề
      • Thư mụchooks
        • useAgui<Agent>.tsx Kết nối với agent thông qua route /<targetName>/invocations của Gateway

    Đối với mỗi agent Python HTTP được đặt phía trước, các tệp giống như kết nối React đến agent Python được tạo ra (một client OpenAPI an toàn kiểu, các hook và một provider), với URL cơ sở của client được định tuyến qua Gateway.

    URL của Gateway được đăng ký trong namespace connection.gateways.<GatewayClassName> của Runtime Configuration, do đó nó được xuất bản vào runtime-config.json của trang web.

    Cấp quyền truy cập cho người dùng trang web

    Phần tiêu đề “Cấp quyền truy cập cho người dùng trang web”

    Đối với IAM Gateway, cấp cho người dùng đã xác thực của trang web quyền gọi nó (Cognito Gateway không cần cấp quyền — trình duyệt xác thực bằng JWT bearer token thay thế):

    packages/infra/src/stacks/application-stack.ts
    const identity = new UserIdentity(this, 'UserIdentity');
    new Website(this, 'Website');
    const myGateway = new MyGateway(this, 'MyGateway');
    myGateway.addAgent(myAgent);
    myGateway.grantInvokeAccess(identity.identityPool.authenticatedRole);

    Target dev của trang web có thêm phụ thuộc vào target dev của dự án Gateway, target này khởi động gateway cục bộ cùng với mọi agent được gắn vào. Cấu hình runtime của trang web được ghi đè trong chế độ local-dev để trỏ URL của Gateway đến gateway cục bộ, do đó trình duyệt thực thi các route /<targetName>/invocations giống nhau ở cục bộ:

    Terminal window
    pnpm nx dev <website-name>

    Trình tạo kết nối trang web với các agent được gắn vào Gateway tại thời điểm nó chạy. Sau khi gắn thêm một agent khác vào Gateway, hãy chạy lại trình tạo kết nối để tạo client trang web của nó — các client hiện có không bị ảnh hưởng.