Tworzenie systemu z wieloma agentami za pomocą ADK, wdrażanie w Agent Engine i rozpoczynanie pracy z protokołem A2A

1. Cel tego modułu

W tym praktycznym module utworzysz aplikację z wieloma agentami za pomocą pakietu ADK (Agent Development Kit) , która generuje obraz na podstawie prompta i ocenia go pod kątem zgodności z promptem. Jeśli obraz nie spełnia w zadowalający sposób wymagań opisanych w prompcie, agent będzie generować obrazy, dopóki nie powstanie obraz spełniający Twoje wymagania. Każdy z agentów w tym praktycznym przykładzie ma jeden cel, a agenci współpracują ze sobą, aby osiągnąć cel ogólny. Dowiesz się, jak testować aplikację lokalnie i wdrażać ją w Vertex AI Agent Engine.

Czego się nauczysz

2. Konfiguracja projektu

  • Jeśli nie masz jeszcze projektu, którego możesz użyć, musisz utworzyć nowy projekt w konsoli GCP.
  • W tym module do wykonania zadań użyjemy GCP Cloud Shell. Otwórz Cloud Shell i ustaw projekt za pomocą Cloud Shell.
  • Otwórz GCP Cloud Shell, klikając tutaj Cloud Shell . Jeśli pojawi się wyskakujące okienko „Autoryzuj Shell”, kliknij, aby autoryzować edytor Cloud Shell.
  • Aby sprawdzić, czy projekt jest już uwierzytelniony, użyj w terminalu Cloud Shell tego polecenia:
gcloud auth list
  • Aby potwierdzić projekt, uruchom w Cloud Shell to polecenie:
gcloud config list project
  • Skopiuj identyfikator projektu i użyj tego polecenia, aby go ustawić:
gcloud config set project <YOUR_PROJECT_ID>
  • Aby przeprowadzić to ćwiczenie, musimy włączyć niektóre usługi. Uruchom w Cloud Shell to polecenie:
gcloud services enable aiplatform.googleapis.com
gcloud services enable cloudresourcemanager.googleapis.com

3. Wprowadzenie do pakietu Agent Development Kit

Pakiet Agent Development Kit oferuje kilka kluczowych korzyści dla deweloperów tworzących aplikacje oparte na agentach:

  1. Systemy wieloagentowe: twórz modułowe i skalowalne aplikacje, łącząc w hierarchii wiele wyspecjalizowanych agentów. Umożliwia złożoną koordynację i delegowanie.
  2. Bogaty ekosystem narzędzi: wyposaż agentów w różne funkcje: korzystaj z gotowych narzędzi (wyszukiwanie, wykonywanie kodu itp.), twórz funkcje niestandardowe, integruj narzędzia z zewnętrznych platform agentów (LangChain, CrewAI) lub używaj innych agentów jako narzędzi.
  3. Elastyczna orkiestracja: definiuj przepływy pracy za pomocą agentów przepływu pracy (SequentialAgent, ParallelAgentLoopAgent) w przypadku przewidywalnych potoków lub korzystaj z dynamicznego kierowania opartego na LLM (LlmAgent przekazywanie) w celu dostosowywania działania.
  4. Zintegrowane środowisko programistyczne: lokalne tworzenie, testowanie i debugowanie za pomocą zaawansowanego interfejsu wiersza poleceń i interaktywnego interfejsu programistycznego. Sprawdzaj zdarzenia, stan i kroki wykonywania agenta.
  5. Wbudowana ocena: systematycznie oceniaj skuteczność agenta, sprawdzając zarówno jakość ostatecznej odpowiedzi, jak i trajektorię wykonania krok po kroku na podstawie predefiniowanych przypadków testowych.
  6. Gotowość do wdrożenia: konteneryzuj i wdrażaj agentów w dowolnym miejscu – uruchamiaj lokalnie, skaluj za pomocą Vertex AI Agent Engine lub integruj z infrastrukturą niestandardową za pomocą Cloud Run lub Dockera.

Inne pakiety SDK generatywnej AI lub platformy agentów również umożliwiają wysyłanie zapytań do modeli, a nawet udostępnianie im narzędzi, ale dynamiczna koordynacja między wieloma modelami wymaga znacznego nakładu pracy z Twojej strony.

Zestaw Agent Development Kit oferuje bardziej zaawansowane ramy niż te narzędzia, co pozwala łatwo łączyć ze sobą wiele agentów w celu tworzenia złożonych, ale łatwych w utrzymaniu procesów.

e97ad3e26ceb7a2f.png

Rysunek 1. Pozycjonowanie pakietu ADK (Agent Development Kit)

4. Wprowadzenie do Vertex AI Agent Engine

Vertex AI Agent Engine to w pełni zarządzana usługa wdrażania agentów w Google Cloud. Dzięki Vertex AI Agent Engine programiści mogą tworzyć, dostosowywać, wdrażać, obsługiwać i zarządzać agentami AI OSS( ADK (Agent Development Kit) , LangChain, LangGraph, CrewAI, AutoGen i inne) w Vertex AI.

Silnik agenta udostępnia też usługi do obsługi danych użytkownika, zwanych też pamięcią agenta. Obecnie dostępne są 2 rodzaje usług pamięci.

  • Pamięć krótkotrwała: dzięki sesjom w Agent Engine możesz przechowywać, zarządzać i pobierać historię bieżącej rozmowy (stan) w ramach jednej sesji jako pamięć krótkotrwałą.
  • Pamięć długotrwała: dzięki bankowi pamięci Agent Engine możesz przechowywać, przekształcać i pobierać wspomnienia (stan), zwłaszcza w wielu sesjach, jako wspomnienia długotrwałe.

Agenty możesz też wdrażać w innych usługach Google Cloud, takich jak Cloud Run czy GKE. W przypadku tych zastosowań warto użyć Vertex AI Agent Engine.

  • Stanowe zarządzane środowisko wykonawcze: jeśli potrzebujesz stanowego, w pełni zarządzanego środowiska wykonawczego do wdrożenia agenta, dobrym wyborem będzie Vertex AI Agent Engine, ponieważ upraszcza typowe zadania, takie jak zarządzanie sesjami i trwałość agentów AI.
  • Wykonywanie kodu: jeśli Twój agent musi wykonać kod, który jest generowany dynamicznie podczas sesji użytkownika, Agent Engine udostępnia bezpieczną piaskownicę, w której możesz go uruchomić.
  • Elastyczna pamięć długotrwała: jeśli potrzebujesz elastycznej pamięci długotrwałej dla swoich agentów, możesz skorzystać z Vertex AI Memory Bank, który można używać z Vertex AI Agent Engine. Zapewnia on elastyczny sposób zapamiętywania informacji o użytkowniku, które można wykorzystywać w różnych sesjach.

Możesz też połączyć Vertex AI Agent Engine z innymi środowiskami wykonawczymi, takimi jak Cloud Run, aby utworzyć elastyczną architekturę aplikacji. Poniżej znajdziesz przykład architektury referencyjnej, która wykorzystuje różne usługi do tworzenia agenta.

d8eb74a6d8a055f9.png

Ilustracja 2. Przykładowa architektura referencyjna do tworzenia agentów przy użyciu wielu usług.

5. Wprowadzenie do A2A

Protokół Agent2Agent (A2A) to otwarty standard zaprojektowany z myślą o umożliwieniu płynnej i bezpiecznej komunikacji oraz współpracy między autonomicznymi agentami AI z różnych platform, od różnych dostawców i z różnych domen.

  1. Uniwersalna interoperacyjność: A2A umożliwia agentom współpracę niezależnie od ich technologii bazowych, tworząc prawdziwy ekosystem wieloagentowy. Oznacza to, że agenci utworzeni przez różne firmy na różnych platformach mogą się komunikować i koordynować działania.
  2. Odkrywanie możliwości: agenci mogą reklamować swoje możliwości za pomocą „kart agenta” (dokumentów JSON), które opisują ich tożsamość, obsługiwane funkcje A2A, umiejętności i wymagania dotyczące uwierzytelniania. Dzięki temu inne agenty mogą odkrywać i wybierać agenta najbardziej odpowiedniego do danego zadania.
  3. Bezpieczeństwo w standardzie: bezpieczeństwo to podstawowa zasada. A2A wykorzystuje mechanizmy uwierzytelniania i autoryzacji klasy korporacyjnej, które są zgodne ze standardami takimi jak HTTPS/TLS, JWT, OIDC i klucze API. Zapewnia to bezpieczne interakcje i chroni dane wrażliwe.
  4. Niezależność od typu treści: protokół obsługuje różne typy treści, w tym tekst, dźwięk i streaming wideo, a także interaktywne formularze i osadzone ramki iframe. Dzięki temu agenci mogą wymieniać informacje w formacie najbardziej odpowiednim dla danego zadania i użytkownika.
  5. Ustrukturyzowane zarządzanie zadaniami: A2A definiuje jasne protokoły delegowania, monitorowania i wykonywania zadań. Umożliwia grupowanie powiązanych zadań i zarządzanie nimi na różnych platformach za pomocą unikalnych identyfikatorów zadań. Zadania mogą przechodzić przez określone cykle życia (np. przesłane, w trakcie realizacji, ukończone).
  6. Nieprzejrzyste wykonywanie: ważną cechą jest to, że agenci nie muszą ujawniać innym agentom swoich wewnętrznych procesów rozumowania, pamięci ani konkretnych narzędzi. Udostępniają tylko usługi, które można wywołać, co zwiększa modułowość i prywatność.
  7. Oparte na istniejących standardach: A2A wykorzystuje sprawdzone technologie internetowe, takie jak HTTP, Server-Sent Events (SSE) do przesyłania strumieniowego w czasie rzeczywistym i JSON-RPC do wymiany uporządkowanych danych, co ułatwia integrację z istniejącą infrastrukturą IT.
  8. Komunikacja asynchroniczna: protokół został zaprojektowany z myślą o komunikacji asynchronicznej, co ułatwia elastyczne wykonywanie zadań i umożliwia wysyłanie powiadomień push o aktualizacjach nawet wtedy, gdy połączenie nie jest utrzymywane w sposób ciągły.

6. Architektura agenta

W tym module utworzysz aplikację z wieloma agentami, która wygeneruje obraz zgodnie z Twoimi specyfikacjami i oceni go, zanim go wyświetli.

System ma strukturę z głównym agentem o nazwie image_scoring, który koordynuje cały proces. Ten główny agent ma podrzędnego agenta o nazwie image_generation_scoring_agent, który z kolei ma własnych podrzędnych agentów do bardziej szczegółowych zadań. W ten sposób powstaje hierarchia, w której główny agent deleguje zadania do swoich podagentów. bfed5e21e0b66d26.png

Ilustracja 3. Ogólny przepływ pracy agenta.

Lista wszystkich agentów

Agent

Purpose

Podpośrednicy

ocena_zdjęć (główny agent)

Jest to agent główny, który zarządza całym przepływem pracy. W pętli wielokrotnie uruchamia image_generation_scoring_agentchecker_agent, aż zostanie spełniony warunek zakończenia.

image_generation_scoring_agent
checker_agent_instance

image_generation_scoring_agent (sub-agent usługi image_scoring)

Ten agent odpowiada za podstawową logikę generowania i oceniania obrazów. W tym celu wykonuje sekwencję 3 podagentów.

image_generation_prompt_agent
image_generation_agent
scoring_images_prompt

checker_agent_instance (podagent usługi image_scoring)

Ten agent sprawdza, czy proces oceniania obrazu powinien być kontynuowany, czy zakończony. Do oceny warunku zakończenia używa narzędzia check_tool_condition.

-

checker_agent_instance (podagent usługi image_scoring)

Ten agent jest ekspertem w tworzeniu promptów do generowania obrazów. Otrzymuje on tekst wejściowy i generuje szczegółowy prompt odpowiedni dla modelu generującego obrazy.

-

image_generation_prompt_agent (podagent agenta image_generation_scoring_agent)

Ten agent jest ekspertem w tworzeniu promptów do generowania obrazów. Otrzymuje on tekst wejściowy i generuje szczegółowy prompt odpowiedni dla modelu generowania obrazów.

-

scoring_images_prompt (sub-agent usługi image_generation_scoring_agent):

Ten agent jest ekspertem w ocenianiu i punktowaniu obrazów na podstawie różnych kryteriów. Otrzymuje wygenerowany obraz i przypisuje mu ocenę.

-

Lista wszystkich użytych narzędzi

Narzędzie

Opis

Klient użytkownika

check_tool_condition

To narzędzie sprawdza, czy warunek zakończenia pętli został spełniony lub czy osiągnięto maksymalną liczbę iteracji. Jeśli któryś z tych warunków jest spełniony, pętla zostaje przerwana.

checker_agent_instance

generate_images

To narzędzie generuje obrazy przy użyciu modelu Imagen 3. Może też zapisywać wygenerowane obrazy w zasobniku Google Cloud Storage.

image_generation_agent

get_policy

To narzędzie pobiera zasady z pliku JSON. Zasady są używane przez image_generation_prompt_agent do tworzenia promptu generowania obrazów i przez scoring_images_prompt do oceniania obrazów.

image_generation_agent

get_image

To narzędzie wczytuje wygenerowany artefakt obrazu, aby można było go ocenić.

scoring_images_prompt

set_score

To narzędzie ustawia łączny wynik wygenerowanego obrazu w stanie sesji.

scoring_images_prompt

7. Instalowanie ADK i konfigurowanie środowiska

W tym praktycznym module użyjemy Cloud Shell do wykonania zadań.

Przygotowywanie karty edytora Cloud Shell

  1. Kliknij ten link, aby przejść bezpośrednio do edytora Cloud Shell.
  2. Kliknij Dalej.
  3. Gdy pojawi się prośba o autoryzację Cloud Shell, kliknij Autoryzuj.
  4. W dalszej części tego modułu możesz pracować w tym oknie jako środowisku IDE z edytorem Cloud Shell i terminalem Cloud Shell.
  5. Otwórz nowy terminal, klikając Terminal>New Terminal (Terminal>Nowy terminal) w edytorze Cloud Shell. Wszystkie poniższe polecenia będą uruchamiane w tym terminalu.

Pobieranie i instalowanie ADK oraz przykładowego kodu na potrzeby tego modułu

  1. Wykonaj te polecenia, aby sklonować potrzebne źródło z GitHub i zainstalować niezbędne biblioteki. Uruchom polecenia w terminalu otwartym w edytorze Cloud Shell.
#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. Do utworzenia środowiska Pythona użyjemy narzędzia uv (uruchom w terminalu edytora Cloud Shell):
#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. Jeśli nie masz zasobnika Cloud Storage, utwórz nowy w Google Cloud Storage. Zasobnik możesz też utworzyć za pomocą polecenia gsutil. Przyznaj Agent Engine dostęp do Google Cloud Storage (uruchom w terminalu edytora Cloud Shell).
# 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. W edytorze kliknij kolejno View (Widok) –> Toggle hidden files (Przełącz ukryte pliki). W folderze image_scoring utwórz plik .env o tej treści: Dodaj wymagane informacje, takie jak nazwa projektu i zasobnik Cloud Storage (uruchom w terminalu edytora Cloud Shell).
#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. Przyjrzyj się strukturze agenta w kodzie źródłowym, zaczynając od pliku agent.py . Ten agent zawiera agenta głównego, który będzie łączyć się z innymi agentami.
  2. Wróć do katalogu głównego multiagenthandson w terminalu i wykonaj to polecenie, aby uruchomić agenta lokalnie (uruchom w terminalu edytora Cloud Shell).
#go to the directory multiagenthandson
cd ~/imagescoring/multiagenthandson
# Run the following command to run agents locally
adk web

dfda0b40b44e9230.png

Ilustracja 4

Kliknij z naciśniętym klawiszem Ctrl (CMD w systemie MacOS) adres URL http:// wyświetlany w terminalu, aby otworzyć klienta GUI ADK w przeglądarce. Powinien wyglądać jak na rysunku 2.

  1. W menu u góry po lewej stronie wybierz image_scoring (patrz rysunek 5). Teraz wygenerujmy kilka obrazów. Obrazy powinny też znajdować się w zasobniku Google Cloud Storage. Wypróbuj te prompty lub własne.
  2. Spokojny górski krajobraz o zachodzie słońca
  3. Kot na rowerze

c159623ad45f37cf.png

Ilustracja 5. Przykładowe dane wyjściowe

8. Wdrażanie w Agent Engine

Teraz wdrażamy agenta w Agent Engine. Agent Engine to w pełni zarządzana usługa do wdrażania agentów w GCP. Agent Engine jest zgodny z ADK (Agent Development Kit), więc agenci utworzeni za pomocą ADK (Agent Development Kit) mogą być wdrażani w Agent Engine.

  1. Utwórz plik requirements.txt za pomocą narzędzia Poetry. Poetry użyje pliku pyproject.toml do utworzenia pliku requirements.txt. Po uruchomieniu polecenia sprawdź, czy utworzono plik requirements.txt (uruchom w terminalu edytora Cloud Shell).
# 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. Utwórz pakiet. Musimy spakować aplikację w pakiet Pythona .whl. Wykorzystamy do tego poezję. Po wykonaniu polecenia sprawdź, czy utworzono folder dist i czy zawiera on plik .whl (uruchom w terminalu edytora Cloud Shell).
# Go to the parent folder containing pyproject.toml file
cd ~/imagescoring/multiagenthandson

#Create python package, to create whl file
python3 -m poetry build
  1. Teraz przygotujemy skrypt wdrażania. Skrypt wdrożenia wdroży naszego agenta oceniającego obrazy lub usługę silnika agenta. Sprawdź, czy zawartość pliku deploy.py w folderze deploy jest zgodna z poniższą (aby znaleźć plik, użyj panelu bocznego edytora Cloud Shell).
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. Możemy teraz uruchomić skrypt wdrażania. Najpierw przejdź do folderu najwyższego poziomu multiagenthandson (uruchom w terminalu edytora Cloud Shell).
#go to multiagenthandson folder
cd ~/imagescoring/multiagenthandson

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

Po wdrożeniu powinna pojawić się informacja podobna do tej poniżej: 57d86995465cdcda.png

Rysunek 6. Przykładowe dane wyjściowe

  1. Teraz przetestujmy wdrożonego agenta. Aby przetestować zdalnie wdrożony silnik agenta, najpierw skopiuj lokalizację agenta z danych wyjściowych wdrożenia w terminalu. Powinien on wyglądać mniej więcej tak: projects/85469421903/locations/us-central1/reasoningEngines/7369674597261639680 .
     Przejdź do folderu testclient,otwórz plik remote_test.py w edytorze Cloud Shell i edytuj te wiersze:
REASONING_ENGINE_ID = "projects/xxx/locations/us-central1/reasoningEngines/xxx"  # TODO: Change this
  1. W głównym folderze multiagenthandson uruchom to polecenie. Wynik powinien wyglądać jak na rysunku 4. Po zakończeniu wykonania powinien być widoczny komunikat (Run in Cloud Shell Editor Terminal).
#go to multiagenthandson folder
cd ~/imagescoring/multiagenthandson

#execute remote_test.py
python3 -m testclient.remote_test

c612b8a79a7120ae.png

Ilustracja 7. Przykładowe dane wyjściowe

9. Tworzenie agenta A2A

W tym kroku utworzymy prostego agenta A2A na podstawie agenta utworzonego w poprzednich krokach. Obecnych agentów ADK (Agent Development Kit) można publikować w ramach protokołu A2A. Oto najważniejsze informacje, które poznasz w tym kroku.

  • Poznaj podstawy protokołu A2A.
  • Dowiedz się, jak protokoły ADK i A2A współpracują ze sobą.
  • Dowiedz się, jak korzystać z protokołu A2A.

W tym ćwiczeniu praktycznym użyjemy kodu z folderu image_scoring_adk_a2a_server. Zanim rozpoczniesz zadanie, zmień katalog na ten folder (uruchom w terminalu edytora Cloud Shell).

#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. Tworzenie karty agenta A2A

Protokół A2A wymaga karty agenta, która zawiera wszystkie informacje o agencie, takie jak jego możliwości, przewodnik po korzystaniu z niego itp. Po wdrożeniu agenta A2A kartę agenta można wyświetlić za pomocą linku „.well-known/agent-card.json”. Klienci mogą korzystać z tych informacji, aby wysyłać prośby do agentów.

W folderze remote_a2a/image_scoring sprawdź, czy znajduje się w nim plik agents.json o tej zawartości, korzystając z edytora Cloud Shell.

{
 "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. Tworzenie agenta A2A

W folderze głównym image_scoring_adk_a2a_server sprawdź, czy w panelu bocznym edytora Cloud Shell znajduje się plik a2a_agent.py, który jest punktem wejścia dla agenta A2A. Powinien zawierać te informacje:

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. Uruchom agenta A2A

Możemy teraz uruchomić agenta. Aby uruchomić agenta, wykonaj to polecenie w głównym folderze image_scoring_adk_a2a_server (uruchom w terminalu edytora Cloud Shell).

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

4. Testowanie agenta A2A

Gdy agent będzie działać, możemy go przetestować. Najpierw sprawdźmy kartę agenta. Otwórz nowy terminal, wybierając Terminal> New Terminal (Nowy terminal), i uruchom to polecenie (uruchom je w nowo otwartym terminalu edytora Cloud Shell).

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

Wykonanie powyższego polecenia powinno spowodować wyświetlenie karty agenta A2A, która zawiera głównie treść pliku agent.json utworzonego w poprzednim kroku.

Teraz wyślijmy prośbę do agenta. Możemy użyć curl, aby wysłać żądanie do agenta (uruchom w nowo otwartym terminalu edytora Cloud Shell):

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"
      }
    }
  }'

W powyższym żądaniu możesz zmienić prompt, modyfikując wiersz „Utwórz obraz kota”. Po uruchomieniu polecenia możesz sprawdzić obraz wyjściowy w określonej usłudze Google Cloud Storage.

10. Czyszczenie danych

Teraz posprzątajmy to, co właśnie utworzyliśmy.

  1. Usuń utworzony przed chwilą serwer Vertex AI Agent Engine. Otwórz Vertex AI, wpisując „Vertex AI” na pasku wyszukiwania w konsoli Google Cloud. Po lewej stronie kliknij Silnik agenta.Aby usunąć agenta, kliknij Usuń. 98e8aac9efc8e32a.png

Rysunek 8

  1. Usuwanie plików w Cloud Shell
#Execute the following to delete the files
cd ~
rm -R ~/imagescoring
  1. Usuń zasobnik. W konsoli GCP wybierz kolejno Cloud Storage i usuń zasobnik. 913625e5969c9104.png

Ilustracja 9. Usuwanie zasobnika

11. Podsumowanie

Gratulacje! Udało Ci się wdrożyć aplikację z wieloma agentami ADK (Agent Development Kit) w Vertex AI Agent Engine. To ważne osiągnięcie, które obejmuje podstawowy cykl życia nowoczesnej aplikacji natywnej dla chmury i zapewnia solidną podstawę do wdrażania własnych złożonych systemów opartych na agentach.

Podsumowanie

W tym module nauczyliśmy się:

Przydatne materiały