Tạo hệ thống nhiều tác nhân bằng ADK, triển khai trong Agent Engine và bắt đầu bằng giao thức A2A

1. Mục tiêu của phòng thí nghiệm này

Trong lớp học thực hành này, bạn sẽ tạo một ứng dụng có nhiều tác nhân bằng ADK (Bộ công cụ phát triển tác nhân) . Ứng dụng này sẽ tạo một hình ảnh dựa trên câu lệnh của bạn và đánh giá hình ảnh đó dựa trên câu lệnh của bạn. Nếu hình ảnh không đáp ứng được các yêu cầu được mô tả trong câu lệnh, thì tác nhân sẽ liên tục tạo hình ảnh cho đến khi tạo được hình ảnh đáp ứng các yêu cầu của bạn. Mỗi tác nhân trong bài tập thực hành này đều có một mục đích duy nhất, các tác nhân hợp tác với nhau để đạt được mục tiêu chung. Bạn sẽ tìm hiểu cách kiểm thử ứng dụng cục bộ và triển khai trong Vertex AI Agent Engine.

Kiến thức bạn sẽ học được

2. Thiết lập dự án

  • Nếu chưa có dự án nào có thể sử dụng, bạn sẽ cần tạo một dự án mới trong Bảng điều khiển GCP.
  • Trong phòng thí nghiệm này, chúng ta sẽ sử dụng GCP Cloud Shell để thực hiện các nhiệm vụ. Mở Cloud Shell và thiết lập dự án bằng Cloud Shell.
  • Mở GCP Cloud Shell bằng cách nhấp vào đây, Cloud Shell . Nếu bạn thấy cửa sổ bật lên "Uỷ quyền cho Shell", hãy nhấp để uỷ quyền cho Cloud Shell Editor.
  • Bạn có thể kiểm tra xem dự án đã được xác thực hay chưa bằng lệnh sau trong thiết bị đầu cuối Cloud Shell.
gcloud auth list
  • Chạy lệnh sau trong Cloud Shell để xác nhận dự án của bạn
gcloud config list project
  • Sao chép mã dự án rồi dùng lệnh sau để đặt mã dự án
gcloud config set project <YOUR_PROJECT_ID>
  • Chúng ta cần bật một số dịch vụ để chạy phòng thí nghiệm này. Chạy lệnh sau trong Cloud Shell.
gcloud services enable aiplatform.googleapis.com
gcloud services enable cloudresourcemanager.googleapis.com

3. Giới thiệu về Agent Development Kit

Bộ công cụ phát triển tác nhân mang lại một số lợi ích chính cho nhà phát triển khi xây dựng các ứng dụng dựa trên tác nhân:

  1. Hệ thống nhiều tác nhân: Xây dựng các ứng dụng có tính mô-đun và khả năng mở rộng bằng cách kết hợp nhiều tác nhân chuyên biệt trong một hệ thống phân cấp. Cho phép phối hợp và uỷ quyền phức tạp.
  2. Hệ sinh thái công cụ đa dạng: Trang bị cho các đặc vụ nhiều chức năng: sử dụng các công cụ được tạo sẵn (Tìm kiếm, Thực thi mã, v.v.), tạo các hàm tuỳ chỉnh, tích hợp các công cụ từ khung đặc vụ của bên thứ ba (LangChain, CrewAI) hoặc thậm chí sử dụng các đặc vụ khác làm công cụ.
  3. Điều phối linh hoạt: Xác định quy trình bằng cách sử dụng các tác nhân quy trình (SequentialAgent, ParallelAgentLoopAgent) cho các quy trình có thể dự đoán hoặc tận dụng tính năng định tuyến động dựa trên LLM (LlmAgent chuyển) cho hành vi thích ứng.
  4. Trải nghiệm tích hợp cho nhà phát triển: Phát triển, kiểm thử và gỡ lỗi cục bộ bằng một CLI mạnh mẽ và giao diện người dùng tương tác dành cho nhà phát triển. Kiểm tra các sự kiện, trạng thái và bước thực thi của tác nhân từng bước.
  5. Đánh giá tích hợp: Đánh giá hiệu suất của tác nhân một cách có hệ thống bằng cách đánh giá cả chất lượng của câu trả lời cuối cùng và quỹ đạo thực thi từng bước dựa trên các trường hợp kiểm thử được xác định trước.
  6. Sẵn sàng triển khai: Đóng gói và triển khai các tác nhân của bạn ở bất cứ đâu – chạy cục bộ, mở rộng quy mô bằng Vertex AI Agent Engine hoặc tích hợp vào cơ sở hạ tầng tuỳ chỉnh bằng Cloud Run hoặc Docker.

Mặc dù các SDK hoặc khung tác nhân AI tạo sinh khác cũng cho phép bạn truy vấn các mô hình và thậm chí trang bị cho chúng các công cụ, nhưng việc phối hợp linh hoạt giữa nhiều mô hình đòi hỏi bạn phải bỏ ra một lượng công việc đáng kể.

Agent Development Kit cung cấp một khung cấp cao hơn so với những công cụ này, cho phép bạn dễ dàng kết nối nhiều tác nhân với nhau để tạo ra các quy trình làm việc phức tạp nhưng dễ duy trì.

e97ad3e26ceb7a2f.png

Hình 1: Vị trí của ADK (Agent Development Kit)

4. Giới thiệu về Vertex AI Agent Engine

Vertex AI Agent Engine là một dịch vụ được quản lý toàn diện để triển khai các tác nhân trong Google Cloud. Với Vertex AI Agent Engine, nhà phát triển có thể phát triển, tuỳ chỉnh, triển khai, phân phát, quản lý các tác nhân AI nguồn mở( ADK (Bộ công cụ phát triển tác nhân) , LangChain, LangGraph, CrewAI, AutoGen và nhiều tác nhân khác!) trên Vertex AI.

Agent Engine cũng cung cấp các dịch vụ để xử lý dữ liệu người dùng, còn được gọi là bộ nhớ của tác nhân. Hiện có 2 loại dịch vụ bộ nhớ.

  • Trí nhớ ngắn hạn: Với Phiên của công cụ tác nhân, bạn có thể lưu trữ, quản lý và truy xuất nhật ký trò chuyện đang diễn ra (trạng thái) trong một phiên duy nhất dưới dạng trí nhớ ngắn hạn.
  • Bộ nhớ dài hạn: Với Ngân hàng bộ nhớ của công cụ tác nhân, hãy lưu trữ, chuyển đổi và truy xuất các ký ức (trạng thái), đặc biệt là trong nhiều phiên dưới dạng ký ức dài hạn.

Bạn cũng có thể triển khai các Agent trong các dịch vụ khác của Google Cloud, chẳng hạn như Cloud Run hoặc GKE. Bạn nên cân nhắc sử dụng Vertex AI Agent Engine cho các trường hợp sử dụng sau.

  • Thời gian chạy được quản lý có trạng thái: Nếu cần một thời gian chạy có trạng thái và được quản lý hoàn toàn để triển khai tác nhân, thì Vertex AI Agent Engine là một lựa chọn phù hợp vì nó trừu tượng hoá các tác vụ phổ biến như quản lý phiên, tính liên tục cho các tác nhân AI.
  • Thực thi mã: Nếu cần thực thi mã được tạo động trong phiên người dùng, Agent Engine sẽ cung cấp một Sandbox an toàn để bạn có thể thực thi mã.
  • Bộ nhớ dài hạn linh hoạt: Nếu cần bộ nhớ dài hạn linh hoạt cho các tác nhân, thì Vertex AI Memory Bank có thể dùng với Vertex AI Agent Engine có thể cung cấp một cách linh hoạt để ghi nhớ thông tin về người dùng mà bạn có thể dùng trong các phiên.

Bạn cũng có thể kết hợp Vertex AI Agent Engine với các thời gian chạy khác như Cloud Run để tạo một cấu trúc ứng dụng linh hoạt. Dưới đây là ví dụ về một kiến trúc tham chiếu sử dụng nhiều dịch vụ để tạo một tác nhân.

d8eb74a6d8a055f9.png

Hình 2: Một kiến trúc tham chiếu mẫu để tạo các Đặc vụ bằng nhiều dịch vụ.

5. Giới thiệu về A2A

Giao thức Agent2Agent (A2A) là một tiêu chuẩn mở được thiết kế để cho phép giao tiếp và cộng tác liền mạch và an toàn giữa các tác nhân AI tự trị từ nhiều khung, nhà cung cấp và miền.

  1. Khả năng tương tác phổ quát: A2A cho phép các tác nhân hoạt động cùng nhau bất kể công nghệ cơ bản của chúng, từ đó thúc đẩy một hệ sinh thái thực sự có nhiều tác nhân. Điều này có nghĩa là các tác nhân do nhiều công ty tạo trên nhiều nền tảng có thể giao tiếp và phối hợp với nhau.
  2. Khám phá các chức năng: Các tác nhân có thể quảng cáo chức năng của mình bằng "Thẻ tác nhân" (tài liệu JSON). Thẻ này mô tả danh tính, các tính năng A2A được hỗ trợ, kỹ năng và yêu cầu xác thực của tác nhân. Điều này cho phép các tác nhân khác khám phá và chọn tác nhân phù hợp nhất cho một nhiệm vụ nhất định.
  3. Bảo mật theo mặc định: Bảo mật là một nguyên tắc cốt lõi. A2A kết hợp các cơ chế xác thực và uỷ quyền cấp doanh nghiệp, sử dụng các tiêu chuẩn như HTTPS/TLS, JWT, OIDC và khoá API để đảm bảo các hoạt động tương tác an toàn và bảo vệ dữ liệu nhạy cảm.
  4. Không phụ thuộc vào phương thức: Giao thức này hỗ trợ nhiều phương thức giao tiếp, bao gồm cả văn bản, âm thanh và truyền phát video trực tuyến, cũng như các biểu mẫu tương tác và iframe được nhúng. Tính linh hoạt này cho phép các tác nhân trao đổi thông tin ở định dạng phù hợp nhất cho tác vụ và người dùng.
  5. Quản lý công việc có cấu trúc: A2A xác định các giao thức rõ ràng để uỷ quyền, giám sát và hoàn thành công việc. Nền tảng này hỗ trợ việc nhóm các tác vụ liên quan và quản lý các tác vụ đó trên nhiều tác nhân bằng cách sử dụng mã nhận dạng tác vụ duy nhất. Các việc cần làm có thể chuyển đổi qua các vòng đời đã xác định (ví dụ: đã gửi, đang thực hiện, đã hoàn tất).
  6. Thực thi mờ: Một tính năng quan trọng là các tác nhân không cần tiết lộ quy trình suy luận nội bộ, bộ nhớ hoặc các công cụ cụ thể cho các tác nhân khác. Chúng chỉ hiển thị các dịch vụ có thể gọi, giúp tăng tính mô-đun và quyền riêng tư.
  7. Dựa trên các tiêu chuẩn hiện có: A2A tận dụng các công nghệ web đã được thiết lập như HTTP, Sự kiện do máy chủ gửi (SSE) để truyền trực tuyến theo thời gian thực và JSON-RPC để trao đổi dữ liệu có cấu trúc, giúp bạn dễ dàng tích hợp với cơ sở hạ tầng CNTT hiện có.
  8. Giao tiếp không đồng bộ: Giao thức này được thiết kế với mục đích chính là giao tiếp không đồng bộ, tạo điều kiện cho tiến trình linh hoạt của tác vụ và cho phép thông báo đẩy để cập nhật ngay cả khi không duy trì kết nối liên tục.

6. Kiến trúc tác nhân

Trong lớp học này, bạn sẽ tạo một ứng dụng có nhiều tác nhân, ứng dụng này sẽ tạo hình ảnh theo quy cách của bạn và đánh giá hình ảnh đó trước khi trình bày cho bạn.

Hệ thống được cấu trúc với một tác nhân chính có tên là image_scoring (chấm điểm hình ảnh) để điều phối toàn bộ quy trình. Tác nhân chính này có một tác nhân phụ tên là image_generation_scoring_agent. Tác nhân này lại có các tác nhân phụ riêng cho những tác vụ cụ thể hơn. Điều này tạo ra mối quan hệ phân cấp, trong đó tác nhân chính uỷ quyền các tác vụ cho tác nhân phụ. bfed5e21e0b66d26.png

Hình 3: Luồng tổng thể của Agent.

Danh sách tất cả các nhân viên

Nhân viên hỗ trợ

Mục đích

Đại lý phụ

image_scoring (Tác nhân chính)

Đây là tác nhân gốc quản lý quy trình làm việc tổng thể. Thao tác này sẽ chạy image_generation_scoring_agentchecker_agent nhiều lần trong một vòng lặp cho đến khi đạt được điều kiện kết thúc.

image_generation_scoring_agent
checker_agent_instance

image_generation_scoring_agent (Tác nhân phụ của image_scoring)

Tác nhân này chịu trách nhiệm về logic cốt lõi của việc tạo và tính điểm hình ảnh. Để đạt được mục tiêu này, công cụ này sẽ thực thi một chuỗi gồm 3 tác nhân phụ.

image_generation_prompt_agent
image_generation_agent
scoring_images_prompt

checker_agent_instance (Tác nhân phụ của image_scoring)

Tác nhân này kiểm tra xem quy trình tính điểm hình ảnh có nên tiếp tục hay kết thúc. Thao tác này sử dụng công cụ check_tool_condition để đánh giá điều kiện kết thúc.

checker_agent_instance (Tác nhân phụ của image_scoring)

Đây là một trợ lý chuyên tạo câu lệnh để tạo hình ảnh. Công cụ này lấy văn bản đầu vào và tạo ra một câu lệnh chi tiết phù hợp với mô hình tạo hình ảnh.

image_generation_prompt_agent (Đại lý phụ của image_generation_scoring_agent)

Đây là một trợ lý chuyên tạo câu lệnh để tạo hình ảnh. Công cụ này nhận văn bản đầu vào và tạo ra một câu lệnh chi tiết phù hợp với mô hình tạo hình ảnh.

scoring_images_prompt (Tác nhân phụ của image_generation_scoring_agent):

Đây là một đặc vụ chuyên đánh giá và chấm điểm hình ảnh dựa trên nhiều tiêu chí. Công cụ này sẽ lấy hình ảnh được tạo và gán điểm số cho hình ảnh đó.

Danh sách tất cả các công cụ đã dùng

Công cụ

Nội dung mô tả

Tác nhân người dùng

check_tool_condition

Công cụ này kiểm tra xem điều kiện kết thúc vòng lặp có được đáp ứng hay không hoặc số lần lặp tối đa đã đạt đến hay chưa. Nếu một trong hai điều kiện này là đúng, thì vòng lặp sẽ dừng.

checker_agent_instance

generate_images

Công cụ này tạo hình ảnh bằng mô hình Imagen 3. Bạn cũng có thể lưu hình ảnh đã tạo vào một bộ chứa Google Cloud Storage.

image_generation_agent

get_policy

Công cụ này tìm nạp một chính sách từ tệp JSON. Chính sách này được image_generation_prompt_agent sử dụng để tạo câu lệnh tạo hình ảnh và được scoring_images_prompt sử dụng để chấm điểm hình ảnh.

image_generation_agent

get_image

Công cụ này tải cấu phần phần mềm hình ảnh được tạo để có thể tính điểm.

scoring_images_prompt

set_score

Công cụ này đặt tổng điểm của hình ảnh được tạo trong trạng thái phiên.

scoring_images_prompt

7. Cài đặt ADK và thiết lập môi trường

Trong phần Thực hành này, chúng ta sẽ sử dụng Cloud Shell để thực hiện các nhiệm vụ.

Chuẩn bị thẻ Cloud Shell Editor

  1. Nhấp vào đường liên kết này để chuyển trực tiếp đến Cloud Shell Editor
  2. Nhấp vào Tiếp tục.
  3. Khi được nhắc cho phép Cloud Shell, hãy nhấp vào Cho phép.
  4. Trong phần còn lại của bài thực hành này, bạn có thể làm việc trong cửa sổ này với vai trò là IDE bằng Trình chỉnh sửa Cloud Shell và Cửa sổ dòng lệnh Cloud Shell.
  5. Mở một cửa sổ dòng lệnh mới bằng cách chọn Terminal>New Terminal (Cửa sổ dòng lệnh>Cửa sổ dòng lệnh mới) trong Trình chỉnh sửa Cloud Shell. Tất cả các lệnh dưới đây sẽ được chạy trên thiết bị đầu cuối này.

Tải xuống và cài đặt ADK cũng như mã mẫu cho phòng thí nghiệm này

  1. Thực thi các lệnh sau để sao chép nguồn cần thiết từ github và cài đặt các thư viện cần thiết. Chạy các lệnh trong cửa sổ dòng lệnh đã mở trong Cloud Shell Editor.
#create the project directory
mkdir ~/imagescoring
cd ~/imagescoring
#clone the code in the local directory
git clone https://github.com/haren-bh/multiagenthandson.git
  1. Chúng ta sẽ dùng uv để tạo môi trường Python (Chạy trong Cloud Shell Editor Terminal):
#Install uv if you do not have installed yet
pip install uv

#Create the virtual environment
uv venv .adkvenv

source .adkvenv/bin/activate

#go to the project directory
cd ~/imagescoring/multiagenthandson

#install dependencies
uv pip install -r pyproject.toml
  1. Nếu bạn chưa có bộ chứa lưu trữ đám mây, hãy tạo một bộ chứa mới trong Google Cloud Storage. Bạn cũng có thể tạo vùng chứa bằng lệnh gsutil. Cấp quyền truy cập Agent Engine vào Google Cloud Storage (Chạy trong cửa sổ dòng lệnh của Cloud Shell Editor).
# First, make sure your PROJECT_ID variable is set
PROJECT_ID=$(gcloud config get-value project)

# Now, create the bucket with a unique name
# We'll use the project ID to help ensure uniqueness
gsutil mb gs://${PROJECT_ID}-imagescoring-bucket

#Now lets give Agent Engine the permission to access Cloud Storage
# 1. Get the current Project ID (text) and Project Number (numeric)
PROJECT_ID=$(gcloud config get-value project)
PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")

# 2. Construct the Reasoning Engine Service Account email
SA_EMAIL="service-${PROJECT_NUMBER}@gcp-sa-aiplatform-re.iam.gserviceaccount.com"
# 3. Create Agent Engine Service account if not already created
gcloud beta services identity create --service=aiplatform.googleapis.com --project=${PROJECT_NUMBER}

# 3. Grant GCS Access
gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SA_EMAIL" --role="roles/storage.objectUser" --condition=None
  1. Trong trình chỉnh sửa, hãy chuyển đến mục View->Toggle hidden files (Xem->Chuyển đổi tệp ẩn). Trong thư mục image_scoring, hãy tạo một tệp .env có nội dung sau. Thêm các thông tin bắt buộc, chẳng hạn như tên dự án và bộ chứa lưu trữ đám mây (Chạy trong thiết bị đầu cuối của Cloud Shell Editor).
#go to image_scoring folder
cd ~/imagescoring/multiagenthandson/image_scoring
cat <<EOF>> .env
GOOGLE_GENAI_USE_VERTEXAI=1
GOOGLE_CLOUD_PROJECT=$(gcloud config get-value project)
GOOGLE_CLOUD_LOCATION=us-central1
GOOGLE_CLOUD_STORAGE_BUCKET=$(gcloud config get-value project)-imagescoring-bucket
GCS_BUCKET_NAME=$(gcloud config get-value project)-imagescoring-bucket
SCORE_THRESHOLD=40
IMAGEN_MODEL="imagen-3.0-generate-002"
GENAI_MODEL="gemini-2.5-flash"
EOF
  1. Xem cấu trúc tác nhân trong mã nguồn, bắt đầu từ agent.py . Tác nhân này chứa tác nhân gốc sẽ kết nối với các tác nhân khác.
  2. Quay lại thư mục trên cùng multiagenthandson trong cửa sổ dòng lệnh rồi thực thi lệnh sau để chạy tác nhân cục bộ (Chạy trong cửa sổ dòng lệnh của Cloud Shell Editor).
#go to the directory multiagenthandson
cd ~/imagescoring/multiagenthandson
# Run the following command to run agents locally
adk web

dfda0b40b44e9230.png

Hình 4

Nhấn Ctrl+Click (CMD+Click đối với MacOS) vào URL http:// xuất hiện trên thiết bị đầu cuối để mở ứng dụng GUI dựa trên trình duyệt của ADK. Nội dung này sẽ có dạng như Hình 2

  1. Chọn image_scoring trong trình đơn thả xuống ở phía trên bên trái (xem Hình 5). Bây giờ, hãy tạo một số hình ảnh! Bạn cũng sẽ thấy các hình ảnh này trong bộ chứa Google Cloud Storage. Hãy thử các câu lệnh sau hoặc câu lệnh của riêng bạn.
  2. Khung cảnh núi non thanh bình lúc hoàng hôn
  3. Một chú mèo đang đạp xe

c159623ad45f37cf.png

Hình 5: Đầu ra mẫu

8. Triển khai cho Agent Engine

Bây giờ, chúng ta sẽ triển khai tác nhân này cho Agent Engine. Agent Engine là một dịch vụ được quản lý toàn diện để triển khai các tác nhân trong GCP. Agent Engine tương thích với ADK (Agent Development Kit), vì vậy, các tác nhân được tạo bằng ADK (Agent Development Kit) có thể được triển khai trong Agent Engine.

  1. Tạo tệp requirements.txt bằng poetry. Poetry sẽ dùng pyproject.toml để tạo tệp requirements.txt. Sau khi chạy lệnh, hãy kiểm tra xem tệp requirements.txt đã được tạo hay chưa (Chạy trong Cloud Shell Editor Terminal).
# Go to the parent folder containing pyproject.toml file
cd ~/imagescoring/multiagenthandson

# install poetry-plugin-export
uv pip install poetry-plugin-export

#Create requirements.txt file
python3 -m poetry export -f requirements.txt --output requirements.txt --without-hashes
  1. Tạo gói. Chúng ta cần đóng gói ứng dụng của mình thành một gói python .whl. Chúng ta sẽ dùng poetry để làm việc đó. Sau khi bạn thực thi lệnh, hãy đảm bảo rằng một thư mục dist được tạo và thư mục đó chứa tệp .whl (Chạy trong Terminal của Cloud Shell Editor).
# Go to the parent folder containing pyproject.toml file
cd ~/imagescoring/multiagenthandson

#Create python package, to create whl file
python3 -m poetry build
  1. Bây giờ, chúng ta sẽ chuẩn bị tập lệnh triển khai. Tập lệnh triển khai sẽ triển khai dịch vụ tác nhân hoặc công cụ tác nhân chấm điểm hình ảnh của chúng tôi. Vui lòng xác nhận nội dung của deploy.py bên trong thư mục deploy như bên dưới (Sử dụng ngăn bên của Trình chỉnh sửa Cloud Shell để tìm tệp).
import vertexai
from image_scoring.agent import root_agent
import os
import glob # To easily find the wheel file
from dotenv import load_dotenv

# Load environment variables from image_scoring/.env
env_path = os.path.join(os.path.dirname(__file__), "..", "image_scoring", ".env")
load_dotenv(env_path)

PROJECT_ID = os.getenv("GOOGLE_CLOUD_PROJECT")
LOCATION = os.getenv("GOOGLE_CLOUD_LOCATION", "us-central1")
STAGING_BUCKET = f"gs://{os.getenv('GOOGLE_CLOUD_STORAGE_BUCKET')}"

from vertexai import agent_engines

client=vertexai.Client(
    project=PROJECT_ID,
    location=LOCATION,
)
remote_app = client.agent_engines.create(
    agent=root_agent,
    config={
        "display_name": "image-scoring",
        "staging_bucket": STAGING_BUCKET,
        "requirements": open(os.path.join(os.getcwd(), "requirements.txt")).readlines() + ["./dist/image_scoring-0.1.0-py3-none-any.whl"],
        "extra_packages": [
            "./dist/image_scoring-0.1.0-py3-none-any.whl",
        ],     "env_vars":{"GCS_BUCKET_NAME":os.getenv('GOOGLE_CLOUD_STORAGE_BUCKET')}
    }
)
print(f"DEBUG: AgentEngine attributes: {dir(remote_app)}")
try:
    print(remote_app.api_resource.name)
except AttributeError:
    print("Could not find resource_name, check DEBUG output above.")
  1. Giờ đây, chúng ta có thể chạy tập lệnh triển khai. Trước tiên, hãy chuyển đến thư mục trên cùng multiagenthandson (Chạy trong thiết bị đầu cuối của Trình chỉnh sửa Cloud Shell).
#go to multiagenthandson folder
cd ~/imagescoring/multiagenthandson

#run deploy script from the parent folder containing deploy.py
python3 -m deploy.deploy

Sau khi triển khai, bạn sẽ thấy nội dung tương tự như bên dưới, 57d86995465cdcda.png

Hình 6: Đầu ra mẫu

  1. Bây giờ, hãy kiểm thử tác nhân đã triển khai. Để kiểm thử công cụ tác nhân được triển khai từ xa, trước tiên hãy sao chép vị trí của tác nhân từ đầu ra triển khai trong thiết bị đầu cuối. Đường dẫn này sẽ có dạng như sau: projects/85469421903/locations/us-central1/reasoningEngines/7369674597261639680 .
    Chuyển đến thư mục testclient,mở tệp remote_test.py trong Cloud Shell Editor rồi chỉnh sửa các dòng sau.
REASONING_ENGINE_ID = "projects/xxx/locations/us-central1/reasoningEngines/xxx"  # TODO: Change this
  1. Từ thư mục trên cùng multiagenthandson, hãy chạy lệnh sau. Bạn sẽ nhận được kết quả như trong Hình 4. Sau khi quá trình thực thi hoàn tất, bạn sẽ thấy (Run in Cloud Shell Editor Terminal) [Chạy trong cửa sổ dòng lệnh của Trình chỉnh sửa Cloud Shell].
#go to multiagenthandson folder
cd ~/imagescoring/multiagenthandson

#execute remote_test.py
python3 -m testclient.remote_test

c612b8a79a7120ae.png

Hình 7: Đầu ra mẫu

9. Tạo một tác nhân A2A

Trong bước này, chúng ta sẽ tạo một tác nhân A2A đơn giản dựa trên tác nhân mà chúng ta đã tạo ở các bước trước. Bạn có thể xuất bản các tác nhân ADK (Agent Development Kit) hiện có theo giao thức A2A. Đây là những điều chính mà bạn sẽ học được trong bước này.

  • Tìm hiểu thông tin cơ bản về giao thức A2A.
  • Tìm hiểu cách ADK và giao thức A2A hoạt động với nhau.
  • Tìm hiểu cách tương tác với giao thức A2A.

Trong phần thực hành này, chúng ta sẽ sử dụng mã trong thư mục image_scoring_adk_a2a_server. Trước khi bắt đầu tác vụ, vui lòng thay đổi thư mục của bạn thành thư mục này (Chạy trong Terminal của Cloud Shell Editor).

#change directory to image_scoring_adk_a2a_server
cd ~/imagescoring/multiagenthandson/image_scoring_adk_a2a_server

#copy the env file
cp ~/imagescoring/multiagenthandson/image_scoring/.env remote_a2a/image_scoring

1. Tạo thẻ nhân viên hỗ trợ A2A

Giao thức A2A yêu cầu phải có thẻ đại lý chứa tất cả thông tin về đại lý, chẳng hạn như các chức năng của đại lý, hướng dẫn sử dụng đại lý, v.v. Sau khi triển khai đại lý A2A, bạn có thể xem thẻ đại lý bằng cách sử dụng đường liên kết ".well-known/agent-card.json". Khách hàng có thể tham khảo thông tin này để gửi yêu cầu cho nhân viên.

Trong thư mục remote_a2a/image_scoring, hãy xác nhận rằng có agents.json bằng Cloud Shell Editor với nội dung sau.

{
 "name": "image_scoring",
 "description": "Agent that generates images based on user prompts and scores their adherence to the prompt.",
 "url": "http://localhost:8001/a2a/image_scoring",
 "version": "1.0.0",
 "defaultInputModes": ["text/plain"],
 "defaultOutputModes": ["image/png", "text/plain"],
 "capabilities": {
   "streaming": true,
   "functions": true
 },
 "skills": [
   {
     "id": "generate_and_score_image",
     "name": "Generate and Score Image",
     "description": "Generates an image from a given text prompt and then evaluates how well the generated image adheres to the original prompt, providing a score.",
     "tags": ["image generation", "image scoring", "evaluation", "AI art"],
     "examples": [
       "Generate an image of a futuristic city at sunset",
       "Create an image of a cat playing a piano",
       "Show me an image of a serene forest with a hidden waterfall"
     ]
   }
 ]
}

2. Tạo nhân viên hỗ trợ A2A

Trong thư mục gốc image_scoring_adk_a2a_server, hãy xác nhận rằng có một tệp a2a_agent.py bằng cách sử dụng ngăn bên của Cloud Shell Editor. Đây là điểm truy cập cho tác nhân A2A. Nội dung của tệp này phải có dạng như sau:

from google.adk.agents.remote_a2a_agent import RemoteA2aAgent

root_agent = RemoteA2aAgent(
   name="image_scoring",
   description="Agent to give interesting facts.",
   agent_card="http://localhost:8001/a2a/image_scoring/.well-known/agent.json",
  
   # Optional configurations
   timeout=300.0,          # HTTP timeout (seconds)
   httpx_client=None,      # Custom HTTP client
)

3. Chạy tác nhân A2A

Giờ thì chúng ta đã sẵn sàng chạy tác nhân! Để chạy tác nhân, hãy thực thi lệnh sau từ bên trong thư mục trên cùng image_scoring_adk_a2a_server (Chạy trong Cloud Shell Editor Terminal).

#following command runs the ADK agent as a2a agent
adk api_server --a2a --port 8001 remote_a2a

4. Kiểm thử nhân viên hỗ trợ A2A

Sau khi nhân viên hỗ trợ đang chạy, chúng ta có thể chuyển sang bước kiểm thử nhân viên hỗ trợ. Trước hết, hãy kiểm tra thẻ nhân viên hỗ trợ. Mở một cửa sổ dòng lệnh mới bằng cách chọn Terminal>New Terminal (Cửa sổ dòng lệnh>Cửa sổ dòng lệnh mới) rồi chạy lệnh sau (Chạy trong cửa sổ dòng lệnh của Cloud Shell Editor vừa mở).

#Execute the following 
curl http://localhost:8001/a2a/image_scoring/.well-known/agent.json

Việc thực thi lệnh trên sẽ cho thấy thẻ tác nhân cho tác nhân A2A của chúng ta, chủ yếu là nội dung của agent.json mà chúng ta đã tạo ở bước trước.

Bây giờ, hãy gửi yêu cầu đến tác nhân. Chúng ta có thể dùng curl để gửi yêu cầu đến tác nhân (Chạy trong Cloud Shell Editor Terminal vừa mở),

curl -X POST   http://localhost:8001/a2a/image_scoring   -H 'Content-Type: application/json'   -d '{
    "id": "uuid-123",
    "params": {
      "message": {
        "messageId": "msg-456",
        "parts": [{"text": "Create an image of a cat"}],
        "role": "user"
      }
    }
  }'

Trong yêu cầu ở trên, bạn có thể thay đổi câu lệnh bằng cách thay đổi dòng "Tạo hình ảnh về một chú mèo". Sau khi chạy lệnh, bạn có thể kiểm tra hình ảnh đầu ra trong bộ nhớ đám mây của Google đã chỉ định.

10. Dọn dẹp

Bây giờ, hãy dọn dẹp những gì chúng ta vừa tạo.

  1. Xoá máy chủ Vertex AI Agent Engine mà chúng ta vừa tạo. Chuyển đến Vertex AI bằng cách nhập "Vertex AI" vào thanh tìm kiếm của Google Cloud Console. Nhấp vào Agent Engine (Công cụ nhân viên hỗ trợ) ở bên trái.Bạn có thể xoá Nhân viên hỗ trợ bằng cách nhấp vào biểu tượng xoá. 98e8aac9efc8e32a.png

Hình 8

  1. Xoá các tệp trong Cloud Shell
#Execute the following to delete the files
cd ~
rm -R ~/imagescoring
  1. Xoá bộ chứa. Bạn có thể chuyển đến bảng điều khiển GCP->Cloud Storage , chọn và xoá bộ chứa của mình. 913625e5969c9104.png

Hình 9: Xoá bộ chứa

11. Kết luận

Xin chúc mừng! Bạn đã triển khai thành công một ứng dụng ADK (Bộ công cụ phát triển tác nhân) có nhiều tác nhân cho Vertex AI Agent Engine. Đây là một thành tựu đáng kể bao gồm vòng đời cốt lõi của một ứng dụng hiện đại dựa trên đám mây, mang đến cho bạn nền tảng vững chắc để triển khai các hệ thống đại lý phức tạp của riêng mình.

Tóm tắt

Trong phòng thực hành này, bạn đã học được cách:

Tài nguyên hữu ích