Aplikacja wieloagentowa z ADK, Agent Engine i AlloyDB

Aplikacja wieloagentowa z ADK, Agent Engine i AlloyDB

Informacje o tym ćwiczeniu (w Codelabs)

subjectOstatnia aktualizacja: cze 16, 2025
account_circleAutorzy: Author: Abirami Sukumaran

1. Omówienie

Agent to autonomiczny program, który komunikuje się z modelem AI, aby wykonywać operacje oparte na celach, korzystając z dostępnych narzędzi i kontekstu. Jest też zdolny do autonomicznego podejmowania decyzji opartych na prawdzie.

Gdy aplikacja ma wielu agentów, którzy współpracują ze sobą autonomicznie i wspólnie, aby realizować jej szerszy cel, a każdy z nich ma niezależną wiedzę i odpowiada za określoną dziedzinę, aplikacja staje się systemem wieloagentowym.

Pakiet SDK agenta

Pakiet narzędzi do tworzenia agentów (ADK) to elastyczna i modułowa platforma do tworzenia i wdrażania agentów AI. ADK umożliwia tworzenie zaawansowanych aplikacji przez łączenie wielu różnych instancji agenta w system wieloagentowy (MAS).

W ADK system wieloagentowy to aplikacja, w której różne elementy, często tworzące hierarchię, współpracują lub koordynują swoje działania w celu osiągnięcia większego celu. Takie ustrukturyzowanie aplikacji niesie ze sobą wiele korzyści, w tym większą modularność, specjalizację, możliwość ponownego użycia, łatwość konserwacji oraz możliwość definiowania uporządkowanych przepływów sterowania za pomocą dedykowanych agentów przepływu pracy.

O czym należy pamiętać w przypadku systemu z wieloma agentami

Po pierwsze ważne jest, aby dobrze rozumieć specjalizację każdego agenta i wiedzieć, na czym polega. – „Czy wiesz, dlaczego potrzebujesz konkretnego podrzędnego agenta?” Najpierw odpowiedz na to pytanie.

Po drugie, jak połączyć je z usługą root, aby przekierować i zinterpretować każdą z odpowiedzi.

Po trzecie, w tej dokumentacji znajdziesz różne typy routingu agenta. Wybierz odpowiednią metodę dla swojej aplikacji. Dowiesz się też, jakich kontekstów i stanów potrzebujesz do kontroli przepływu w systemie wieloagentowym.

Co utworzysz

Zbudujmy system wieloagentowy do obsługi renowacji kuchni. Tak właśnie zrobimy. Stworzymy system z 3 agentami.

  1. Agent ds. propozycji renowacji
  2. Agent ds. zezwoleń i zgodności
  3. Agent sprawdzania stanu zamówienia

Renovation Proposal Agent (agent ds. propozycji renowacji), aby wygenerować dokument propozycji renowacji kuchni.

Agent ds. zezwoleń i zgodności, który zajmuje się zadaniami związanymi z zezwoleniami i zgodnością.

Agent sprawdzania stanu zamówienia, który umożliwia sprawdzanie stanu zamówienia materiałów za pomocą bazy danych zarządzania zamówieniami skonfigurowanej w AlloyDB.

Będziemy mieć agenta głównego, który będzie koordynował te agenty na podstawie wymagań.

Wymagania

  • przeglądarka, np. Chrome lub Firefox;
  • projekt Google Cloud z włączonymi płatnościami;

2. Zanim zaczniesz

Utwórz projekt

  1. W konsoli Google Cloud na stronie selektora projektu wybierz lub utwórz projekt Google Cloud.
  2. Sprawdź, czy w projekcie Cloud włączone są płatności. Dowiedz się, jak sprawdzić, czy w projekcie są włączone płatności .

Jeśli czytasz ten artykuł i chcesz otrzymać środki, które pomogą Ci zacząć korzystać z Google Cloud i z ADK, kliknij ten link, aby je wykorzystać. Aby go wykorzystać, postępuj zgodnie z instrukcjami podanymi tutaj. Pamiętaj, że ten link jest ważny tylko do końca maja.

  1. Aby aktywować Cloud Shell, kliknij ten link. Możesz przełączać się między terminalem Cloud Shell (do uruchamiania poleceń w chmurze) a edytorem (do kompilowania projektów) przez kliknięcie odpowiedniego przycisku w Cloud Shell.
  2. Po połączeniu z Cloud Shell sprawdź, czy jesteś już uwierzytelniony i czy projekt jest ustawiony na identyfikator Twojego projektu, używając tego polecenia:
gcloud auth list
  1. Aby sprawdzić, czy polecenie gcloud zna Twój projekt, uruchom w Cloud Shell to polecenie:
gcloud config list project
  1. Jeśli projekt nie jest ustawiony, użyj tego polecenia:
gcloud config set project <YOUR_PROJECT_ID>
  1. Upewnij się, że masz zainstalowany Python w wersji 3.9 lub nowszej.
  2. Włącz te interfejsy API, wykonując te polecenia:
gcloud services enable artifactregistry.googleapis.com \cloudbuild.googleapis.com \run.googleapis.com \aiplatform.googleapis.com
  1. Informacje o poleceniach i użytkowaniu gcloud znajdziesz w dokumentacji.

3. Prototyp

Możesz pominąć ten krok, jeśli zdecydujesz się użyć w projekcie modelu Gemini 2.5 Pro.

Otwórz Google AI Studio. Zacznij pisać prompt. Oto prompt:

I want to renovate my kitchen, basically just remodel it. I don't know where to start. So I want to use Gemini to generate a plan. For that I need a good prompt. Give me a short yet detailed prompt that I can use.

Aby uzyskać optymalną odpowiedź, dostosuj i skonfiguruj parametry po prawej stronie.

Na podstawie tego prostego opisu Gemini stworzył niezwykle szczegółowy prompt, który pomógł mi rozpocząć remont. W efekcie używamy Gemini, aby uzyskać jeszcze lepsze odpowiedzi z AI Studio i naszych modeli. Możesz też wybrać różne modele do użycia w zależności od przypadku użycia.

Wybraliśmy Gemini 2.5 Pro. Jest to model myślący, co oznacza, że otrzymujemy jeszcze więcej tokenów wyjściowych, w tym przypadku do 65 tys. tokenów, na potrzeby długich analiz i szczegółowych dokumentów. Po włączeniu Gemini 2.5 Pro, który ma natywne funkcje wnioskowania i może obsługiwać długie zapytania o kontekst, pojawi się okno myślenia Gemini.

Poniżej znajdziesz fragment odpowiedzi:

a80d4bad4b3864f7.png

AI Studio przeanalizowało moje dane i wygenerowało wszystkie te elementy, takie jak szafki, blaty, okładziny ścienne, podłogi, umywalki, spójność, paleta kolorów i wybór materiałów. Gemini podaje nawet źródła!

Powtarzaj te czynności z różnymi modelami, aż uzyskasz zadowalający wynik. Ale po co przechodzić przez to wszystko, skoro masz Gemini 2.5? :)

Teraz spróbuj zobaczyć, jak pomysł nabiera kształt dzięki innemu promptowi:

Add flat and circular light accessories above the island area for my current kitchen in the attached image.

Załącz link do zdjęcia swojej obecnej kuchni (lub dowolnego przykładowego zdjęcia kuchni). Zmień model na „Gemini 2.0 Flash Preview Image Generation”, aby mieć dostęp do generowania obrazów.

Otrzymałem(-am) te dane wyjściowe:

b5b1e83fcada28f5.png

To jest właśnie potęga Gemini.

Od rozumienia filmów po generowanie obrazów natywnych i uzyskiwanie prawdziwych informacji za pomocą wyszukiwarki Google – są rzeczy, które można tworzyć tylko za pomocą Gemini.

W Vertex AI Studio możesz pobrać ten prototyp, uzyskać klucz interfejsu API i skalować go do pełnej aplikacji z użyciem interfejsu Vertex AI ADK.

4. Konfiguracja ADK

  1. Tworzenie i aktywowanie środowiska wirtualnego (zalecane)

W terminalu Cloud Shell utwórz środowisko wirtualne:

python -m venv .venv

Aktywowanie środowiska wirtualnego:

source .venv/bin/activate
  1. Instalowanie pakietu ADK
pip install google-adk

5. Struktura projektu

  1. W terminalu Cloud Shell utwórz katalog w wybranej lokalizacji projektu.
mkdir agentic-apps
cd agentic
-apps
mkdir renovation
-agent
  1. Otwórz Edytor Cloud Shell i utwórz następującą strukturę projektu, tworząc pliki (na początku puste):
renovation-agent/
        __init__
.py
        agent
.py
       
.env
        requirements
.txt

6. Kod źródłowy

  1. Otwórz plik „init.py” i wpisz w nim następujący kod:
from . import agent
  1. Otwórz plik agent.py i zaktualizuj go, używając tych danych:
https://github.com/AbiramiSukumaran/adk-renovation-agent/blob/main/agent.py

W pliku agent.py importujemy niezbędne zależności, pobieramy parametry konfiguracji z pliku .env i definiujemy root_agent, który koordynuje 3 podrzędne procesy agenta, które tworzymy w ramach tej aplikacji. Istnieje kilka narzędzi, które pomagają w głównych i pomocniczych funkcjach tych podrzędnych usług.

  1. Upewnij się, że masz zasobnik Cloud Storage

Służy do przechowywania dokumentu oferty wygenerowanego przez agenta. Utwórz go i pozwalaj na dostęp do niego systemowi wieloagentowemu utworzonemu za pomocą Vertex AI. Oto jak to zrobić:

https://cloud.google.com/storage/docs/creating-buckets#console

Nazwij zasóbnik „next-demo-store”. Jeśli nadasz mu inną nazwę, pamiętaj, aby zaktualizować wartość zmiennej STORAGE_BUCKET w pliku .env (w kroku konfiguracji zmiennych środowiskowych).

  1. Aby skonfigurować dostęp do zasobnika, otwórz konsolę Cloud Storage i przejdź do zasobnika Cloud Storage (w naszym przypadku jego nazwa to „next-demo-storage”: https://console.cloud.google.com/storage/browser/next-demo-storage).

Kliknij Uprawnienia -> Wyświetl podmioty zabezpieczeń -> Przyznaj dostęp. W polu „Podmioty zabezpieczeń” wybierz „allUsers”, a w polu „Rola” – „Użytkownik obiektów Cloud Storage”.

Make sure to not enable "prevent public access". Since this is a demo/study application we are going with a public bucket. Remember to configure permission settings appropriately when you are building your application.
  1. Tworzenie listy zależności

Wymień wszystkie zależności w pliku requirements.txt. Możesz go skopiować z repozytorium.

Wyjaśnienie kodu źródłowego systemu wieloagentowego

Plik agent.py definiuje strukturę i zachowanie systemu wieloagentowego remontu kuchni za pomocą pakietu narzędzi dla deweloperów agentów (ADK). Omówmy kluczowe elementy:

Definicje agenta

RenovationProposalAgent

Ten agent jest odpowiedzialny za tworzenie dokumentu z ofertą na remont kuchni. Opcjonalnie przyjmuje parametry wejściowe, takie jak rozmiar kuchni, pożądany styl, budżet i preferencje klientów. Na podstawie tych informacji korzysta z dużego modelu językowego (LLM) Gemini 2.5, aby wygenerować szczegółową propozycję. Wygenerowana propozycja jest następnie przechowywana w zasobniku Google Cloud Storage.

PermitsAndComplianceCheckAgent

Ten agent zapewnia, że projekt remontu jest zgodny z lokalnymi przepisami i regulacjami budowlanymi. Otrzymuje informacje o zaproponowanej renowacji (np. zmiany konstrukcyjne, prace elektryczne, modyfikacje instalacji wodno-kanalizacyjnej) i korzysta z LLM do sprawdzania wymagań dotyczących pozwolenia i zasad zgodności. Agent korzysta z informacji z bazy wiedzy (którą możesz dostosować, aby uzyskać dostęp do zewnętrznych interfejsów API i pozyskiwać odpowiednie przepisy).

OrderingAgent

Ten agent (możesz go skomentować, jeśli nie chcesz go wdrażać teraz) sprawdza stan zamówienia materiałów i sprzętu potrzebnego do remontu. Aby ją włączyć, musisz utworzyć funkcję Cloud Run zgodnie z instrukcjami w sekcji konfiguracji. Następnie agent wywoła tę funkcję Cloud Run, która wchodzi w interakcję z bazą danych AlloyDB zawierającą informacje o zamówieniu. Przykład integracji z systemem bazy danych do śledzenia danych w czasie rzeczywistym

Identyfikator root agent (aranżer)

Usługa root_agent działa jako centralny aranżer systemu wieloagentowego. Otrzymuje ono początkowe żądanie renowacji i określa, które podrzędne elementy ma wywołać na podstawie potrzeb żądania. Jeśli na przykład żądanie wymaga sprawdzenia wymagań dotyczących pozwoleń, wywołuje funkcję PermitsAndComplianceCheckAgent. Jeśli użytkownik chce sprawdzić stan zamówienia, wywołuje interfejs OrderingAgent (jeśli jest włączony).

Następnie root_agent zbiera odpowiedzi od podrzędnych agentów i łączy je, aby zapewnić użytkownikowi kompleksową odpowiedź. Może to obejmować podsumowanie propozycji, wyszczególnienie wymaganych zezwoleń i przesyłanie aktualizacji stanu zamówienia.

Przepływ danych i kluczowe pojęcia

Użytkownik inicjuje żądanie za pomocą interfejsu ADK (terminalu lub interfejsu internetowego).

  1. Żądanie jest odbierane przez root_agent.
  2. root_agent analizuje żądanie i przekierowuje je do odpowiednich podrzędnych agentów.
  3. Podrzędne usługi przetwarzania danych korzystają z LLM, baz wiedzy, interfejsów API i baz danych, aby przetwarzać żądania i generować odpowiedzi.
  4. Podrzędne elementy zwracają swoje odpowiedzi do elementu root_agent.
  5. Element root_agent łączy odpowiedzi i przekazuje użytkownikowi ostateczny wynik.

LLM (duże modele językowe)

Używają oni dużych modeli językowych do generowania tekstu, odpowiadania na pytania i wykonywania zadań wymagających rozumowania. LLM to „mózg” agentów, który umożliwia im zrozumienie żądań użytkowników i na nie reagowanie. W tej aplikacji używamy Gemini 2.5.

Google Cloud Storage

służy do przechowywania wygenerowanych dokumentów propozycji renowacji; Musisz utworzyć zasobnik i przyznać agentom niezbędne uprawnienia dostępu.

Cloud Run (opcjonalnie)

Usługa OrderingAgent korzysta z funkcji Cloud Run do komunikacji z AlloyDB. Cloud Run udostępnia środowisko bezserwerowe do wykonywania kodu w odpowiedzi na żądania HTTP.

AlloyDB

Jeśli używasz usługi OrderingAgent, musisz skonfigurować bazę danych AlloyDB, aby przechowywać informacje o zamówieniu. Szczegóły tej konfiguracji znajdziesz w następnej sekcji „Konfiguracja bazy danych”.

plik.env

Plik .env przechowuje informacje poufne, takie jak klucze interfejsu API, dane logowania do bazy danych i nazwy zasobników. Pamiętaj, aby chronić ten plik i nie przekazywać go do repozytorium. Zawiera też ustawienia konfiguracji agentów i Twojego projektu Google Cloud. Z tego pliku zwykle odczytują wartości funkcja root_agent lub funkcje pomocnicze. Sprawdź, czy wszystkie wymagane zmienne są prawidłowo ustawione w pliku .env. Obejmuje to nazwę zasobnika Cloud Storage.

7. Konfiguracja bazy danych

W jednym z narzędzi używanych przez proces ordering_agent, o nazwie „check_status”, uzyskujemy dostęp do bazy danych zamówień AlloyDB, aby poznać stan zamówień. W tej sekcji skonfigurujemy klaster i instancję bazy danych AlloyDB.

Tworzenie klastra i instancji

  1. Otwórz stronę AlloyDB w konsoli Cloud. Najłatwiej znaleźć większość stron w Cloud Console jest za pomocą paska wyszukiwania w konsoli.
  2. Na tej stronie wybierz UTWÓRZ KLASTER:

f76ff480c8c889aa.png

  1. Zobaczysz ekran podobny do tego poniżej. Utwórz klaster i instancję z tymi wartościami (upewnij się, że wartości są takie same, jeśli klonujesz kod aplikacji z repozytorium):
  • Identyfikator klastra:vector-cluster
  • password: "alloydb"
  • PostgreSQL 15 / najnowsza zalecana wersja
  • Region: "us-central1"
  • Networking: „default

538dba58908162fb.png

  1. Po wybraniu sieci domyślnej zobaczysz ekran podobny do tego poniżej.

Wybierz SKONFIGUROWANIE POŁĄCZENIA.
7939bbb6802a91bf.png

  1. Następnie wybierz „Użyj automatycznie przydzielonego zakresu adresów IP” i kliknij Dalej. Po sprawdzeniu informacji wybierz UTWÓRZ POŁĄCZENIE. 768ff5210e79676f.png
  2. Po skonfigurowaniu sieci możesz kontynuować tworzenie klastra. Kliknij UTWÓRZ KLASTER, aby zakończyć konfigurowanie klastra, jak pokazano poniżej:

e06623e55195e16e.png

Pamiętaj, aby zmienić identyfikator instancji (który możesz znaleźć w momencie konfigurowania klastra lub instancji) na

vector-instance. Jeśli nie możesz go zmienić, pamiętaj, aby użyć identyfikatora instancji we wszystkich kolejnych odwołaniach.

Pamiętaj, że utworzenie klastra zajmie około 10 minut. Po zakończeniu procesu powinien wyświetlić się ekran z ogólnymi informacjami o kreatorzym utworzonym klastrze.

Pozyskiwanie danych

Teraz dodaj tabelę z danymi o sklepie. Przejdź do AlloyDB, wybierz klaster główny, a następnie AlloyDB Studio:

847e35f1bf8a8bd8.png

Możesz musieć poczekać na utworzenie instancji. Gdy to zrobisz, zaloguj się w AlloyDB, używając danych logowania utworzonych podczas tworzenia klastra. Do uwierzytelniania w PostgreSQL użyj tych danych:

  • Nazwa użytkownika: „postgres
  • Baza danych: „postgres
  • Hasło: „alloydb

Gdy uwierzytelnisz się w AlloyDB Studio, polecenia SQL są wpisywane w Edytorze. Możesz dodać większą liczbę okien Edytora, klikając plus po prawej stronie ostatniego okna.

91a86d9469d499c4.png

Polecenia AlloyDB wpisujesz w oknach edytora, korzystając w razie potrzeby z opcji Uruchom, Formatuj i Wyczyść.

Tworzenie tabeli

W AlloyDB Studio możesz utworzyć tabelę za pomocą poniższego polecenia DDL:

-- Table DDL for Procurement Material Order Status

CREATE TABLE material_order_status (
    order_id VARCHAR(50) PRIMARY KEY,
    material_name VARCHAR(100) NOT NULL,
    supplier_name VARCHAR(100) NOT NULL,
    order_date DATE NOT NULL,
    estimated_delivery_date DATE,
    actual_delivery_date DATE,
    quantity_ordered INT NOT NULL,
    quantity_received INT,
    unit_price DECIMAL(10, 2) NOT NULL,
    total_amount DECIMAL(12, 2),
    order_status VARCHAR(50) NOT NULL, -- e.g., "Ordered", "Shipped", "Delivered", "Cancelled"
    delivery_address VARCHAR(255),
    contact_person VARCHAR(100),
    contact_phone VARCHAR(20),
    tracking_number VARCHAR(100),
    notes TEXT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    quality_check_passed BOOLEAN,  -- Indicates if the material passed quality control
    quality_check_notes TEXT,        -- Notes from the quality control check
    priority VARCHAR(20),            -- e.g., "High", "Medium", "Low"
    project_id VARCHAR(50),          -- Link to a specific project
    receiver_name VARCHAR(100),        -- Name of the person who received the delivery
    return_reason TEXT,               -- Reason for returning material if applicable
    po_number VARCHAR(50)             -- Purchase order number
);

Wstawianie rekordów

Skopiuj instrukcję zapytania insert ze wspomnianego wyżej skryptu database_script.sql do edytora.

Kliknij Wykonaj.

Teraz, gdy zbiór danych jest gotowy, utwórz aplikację Java Cloud Run Functions, aby wyodrębnić stan.

Tworzenie funkcji Cloud Run w Javie w celu wyodrębniania informacji o stanie zamówienia

  1. Utwórz funkcję Cloud Run tutaj: https://console.cloud.google.com/run/create?deploymentType=function
  2. Nazwij funkcję „check-status” i jako środowisko uruchomieniowe wybierz „Java 17”.
  3. Ponieważ jest to aplikacja demonstracyjna, możesz ustawić uwierzytelnianie na „Zezwalaj na nieuwierzytelnione wywołania”.
  4. Wybierz Java 17 jako środowisko uruchomieniowe i Edytor wbudowany dla kodu źródłowego.
  5. W tym momencie kod zastępczy wygeneruje się w edytorze.

Zastępowanie kodu symboli zastępczych

  1. Zmień nazwę pliku Java na „ProposalOrdersTool.java”, a nazwę klasy na „ProposalOrdersTool”.
  2. Zastąp kod obiektu zastępczego w pliku ProposalOrdersTool.java i pom.xml kodem z odpowiednich plików w folderze „Cloud Run Function” w tym repozytorium.
  3. W pliku ProposalOrdersTool.java odszukaj ten wiersz kodu i zastąp wartości zastępcze wartościami z konfiguracji:
String ALLOYDB_INSTANCE_NAME = "projects/<<YOUR_PROJECT_ID>>/locations/us-central1/clusters/<<YOUR_CLUSTER>>/instances/<<YOUR_INSTANCE>>";
  1. Kliknij Utwórz.
  2. Funkcja Cloud Run zostanie utworzona i wdrożona.

WAŻNY KROK:

Po wdrożeniu, aby umożliwić funkcji Cloud Functions dostęp do instancji bazy danych AlloyDB, utworzymy łącznik VPC.

Po wdrożeniu funkcje powinny być widoczne w konsoli Google Cloud Run Functions. Odszukaj nowo utworzoną funkcję (check-status), kliknij ją, a następnie kliknij EDYTUJ I WDROŻ NOWE WERSJE (ikona EDYTUJ (pisak) u góry konsoli Cloud Run Functions) i zmień te ustawienia:

  1. Otwórz kartę Sieci:

828cd861864d99ea.png

  1. Kliknij „Łączyć się z siecią VPC w przypadku ruchu wychodzącego”, a następnie „Używaj oprogramowania sprzęgającego bezserwerowego dostępu do VPC”.
  2. W menu sieci kliknij menu sieci i wybierz opcję „Dodaj nowy łącznik VPC” (jeśli nie skonfigurowano jeszcze domyślnego), a następnie postępuj zgodnie z instrukcjami wyświetlanymi w wyskakującym oknie:

6559ccfd10e597f2.png

  1. Podaj nazwę oprogramowania sprzęgającego VPC i upewnij się, że region jest taki sam jak w przypadku instancji. Pozostaw wartość sieci jako domyślną, a w polu „Subnetwork” (Podsieci) ustaw „Custom IP Range” (Niestandardowy zakres adresów IP) z zakresem adresów 10.8.0.0 lub podobnym, który jest dostępny.
  2. Rozwiń opcję POKAZ USTAWIENIA SKALOWANIA i upewnij się, że konfiguracja jest ustawiona dokładnie tak:

199b0ccd80215004.png

  1. Kliknij UTWÓRZ. Ten łącznik powinien teraz być widoczny w ustawieniach wyjścia.
  2. Wybierz nowo utworzone złącze.
  3. Wybierz opcję kierowania całego ruchu przez to oprogramowanie sprzęgające VPC.
  4. Kliknij DALEJ, a potem WDRÓŻ.
  5. Po wdrożeniu zaktualizowanej funkcji w Cloud Functions powinien zostać wygenerowany punkt końcowy.
  6. Możesz ją przetestować, klikając przycisk TESTUJ u góry konsoli funkcji Cloud Run i wynikowe polecenie w terminalu Cloud Shell.
  7. Rozmieszczony punkt końcowy to adres URL, który musisz zaktualizować w zmiennej .env CHECK_ORDER_STATUS_ENDPOINT.

8. Konfiguracja modelu

Umiejętność agenta do rozumienia próśb użytkowników i generowania odpowiedzi jest obsługiwana przez duży model językowy (LLM). Twój pracownik musi wykonywać bezpieczne wywołania do tej zewnętrznej usługi LLM, która wymaga danych uwierzytelniających. Bez prawidłowego uwierzytelnienia usługa LLM odrzuca żądania agenta, który nie może wtedy działać.

  1. Uzyskaj klucz interfejsu API w Google AI Studio.
  2. W następnym kroku, w którym skonfigurujesz plik .env, zastąp <<your API KEY>> rzeczywistą wartością klucza API.

9. Konfiguracja zmiennych środowiskowych

  1. Ustaw wartości parametrów w szablonie pliku .env w tym repozytorium. W moim przypadku plik .env zawiera te zmienne:
GOOGLE_GENAI_USE_VERTEXAI=FALSE
GOOGLE_API_KEY=<<your API KEY>>
GOOGLE_CLOUD_LOCATION=us-central1 <<or your region>>
GOOGLE_CLOUD_PROJECT=<<your project id>>
PROJECT_ID=<<your project id>>
GOOGLE_CLOUD_REGION=us-central1 <<or your region>>
STORAGE_BUCKET=next-demo-store <<or your storage bucket name>>
CHECK_ORDER_STATUS_ENDPOINT=<<YOUR_ENDPOINT_TO_CLOUD FUNCTION_TO_READ_ORDER_DATA_FROM_ALLOYDB>>

Zastąp obiekty zastępcze swoimi wartościami.

10. Uruchamianie agenta

  1. W terminalu przejdź do katalogu nadrzędnego projektu agenta:
cd renovation-agent
  1. Instalowanie wszystkich zależności
pip install -r requirements.txt
  1. Aby uruchomić agenta, w terminalu Cloud Shell uruchom to polecenie:
adk run .
  1. Aby uruchomić go w interfejsie internetowym obsługiwanym przez ADK:
adk web
  1. Przeprowadź testy, korzystając z tych promptów:
user>> 

Hello. Generate Proposal Document for the kitchen remodel requirement. I have no other specification.

12. Wdrażanie w silniku agenta

Teraz, gdy sprawdzisz, że system wieloagentowy działa prawidłowo, skonfiguruj go jako system bezserwerowy i udostępnij w chmurze, aby każdy użytkownik lub aplikacja mógł z niego korzystać. Odkomentuj poniższy fragment kodu w pliku agent.py z repozytorium i wdrożyć system wieloagentowy:

# Agent Engine Deployment:
# Create a remote app for our multiagent with agent Engine.
# This may take 1-2 minutes to finish.
# Uncomment the below segment when you're ready to deploy.

app = AdkApp(
    agent=root_agent,
    enable_tracing=True,
)

vertexai.init(
    project=PROJECT_ID,
    location=GOOGLE_CLOUD_LOCATION,
    staging_bucket=STAGING_BUCKET,
)

remote_app = agent_engines.create(
    app,
    requirements=[
        "google-cloud-aiplatform[agent_engines,adk]>=1.88",
        "google-adk",
        "pysqlite3-binary",
        "toolbox-langchain==0.1.0",
        "pdfplumber",
        "google-cloud-aiplatform",
        "cloudpickle==3.1.1",
        "pydantic==2.10.6",
        "pytest",
        "overrides",
        "scikit-learn",
        "reportlab",
        "google-auth",
        "google-cloud-storage",
    ],
)
# Deployment to Agent Engine related code ends

Ponownie uruchom plik agent.py z folderu projektu za pomocą tego polecenia:

>> cd adk-renovation-agent

>> python agent.py

Wykonanie tego kodu może potrwać kilka minut. Gdy to zrobisz, otrzymasz punkt końcowy o takiej postaci:

'projects/123456789/locations/us-central1/reasoningEngines/123456'

Możesz przetestować wdrożonego agenta, dodając nowy plik „test.py”.

import vertexai
from vertexai.preview import reasoning_engines
from vertexai import agent_engines
import os
import warnings
from dotenv import load_dotenv
load_dotenv()


GOOGLE_CLOUD_PROJECT = os.environ["GOOGLE_CLOUD_PROJECT"]
GOOGLE_CLOUD_LOCATION = os.environ["GOOGLE_CLOUD_LOCATION"]
GOOGLE_API_KEY = os.environ["GOOGLE_API_KEY"]
GOOGLE_GENAI_USE_VERTEXAI=os.environ["GOOGLE_GENAI_USE_VERTEXAI"]
AGENT_NAME = "adk_renovation_agent"
MODEL_NAME = "gemini-2.5-pro-preview-03-25"
warnings.filterwarnings("ignore")
PROJECT_ID = GOOGLE_CLOUD_PROJECT

reasoning_engine_id = "<<YOUR_DEPLOYED_ENGINE_ID>>"

vertexai.init(project=PROJECT_ID, location="us-central1")
agent = agent_engines.get(reasoning_engine_id)
print("**********************")
print(agent)
print("**********************")


for event in agent.stream_query(
   
user_id="test_user",
   
message="I want you to check order status.",
):
   
print(event)

W powyższym kodzie zastąp wartość zastępczego tekstu „<<YOUR_DEPLOYED_ENGINE_ID>>” i uruchom polecenie „python test.py”. Po wykonaniu tych czynności możesz wchodzić w interakcje z systemem wieloagentowym, który jest częścią Agent Engine i który może Ci pomóc w remoncie kuchni.

13. Opcje wdrażania w jednym wierszu

Po przetestowaniu wdrożonego systemu wieloagentowego poznaj prostsze metody, które abstrahują od kroku wdrożenia wykonanego w poprzednim kroku. OPCJE ROZWIĄZANIA W JEDNYM LINII:

  1. Do Cloud Run:

Składnia:

adk deploy cloud_run \
--project=<<YOUR_PROJECT_ID>> \
--region=us-central1 \
--service_name=<<YOUR_SERVICE_NAME>> \
--app_name=<<YOUR_APP_NAME>> \
--with_ui \
./<<YOUR_AGENT_PROJECT_NAME>>

W tym przypadku:

adk deploy cloud_run \
--project=<<YOUR_PROJECT_ID>> \
--region=us-central1 \
--service_name=renovation-agent \
--app_name=renovation-app \
--with_ui \
./renovation-agent

Możesz używać wdrożonego punktu końcowego do dalszych integracji.

  1. Do silnika agenta:

Składnia:

adk deploy agent_engine \
  --project <your-project-id> \
  --region us-central1 \
  --staging_bucket gs://<your-google-cloud-storage-bucket> \
  --trace_to_cloud \
  path/to/agent/folder

W tym przypadku:

adk deploy agent_engine --project <<YOUR_PROJECT_ID>> --region us-central1 --staging_bucket gs://<<YOUR_BUCKET_NAME>> --trace_to_cloud renovation-agent

interfejsie Agent Engine w konsoli Google Cloud powinien pojawić się nowy agent. Więcej informacji znajdziesz w tym poście na blogu.

14. Czyszczenie danych

Aby uniknąć obciążenia konta Google Cloud opłatami za zasoby wykorzystane w tym poście, wykonaj te czynności:

  1. W konsoli Google Cloud otwórz stronę Zarządzanie zasobami.
  2. Na liście projektów wybierz projekt do usunięcia, a potem kliknij Usuń.
  3. W oknie wpisz identyfikator projektu i kliknij Wyłącz, aby usunąć projekt.

15. Gratulacje

Gratulacje! Udało Ci się utworzyć pierwszego agenta i nawiązać z nim kontakt za pomocą ADK.