1. Wprowadzenie
Ten moduł dotyczy implementacji i wdrażania usługi agenta klienta. Do utworzenia agenta AI, który korzysta ze zdalnych narzędzi, takich jak serwer MCP utworzony w laboratorium 1, użyjesz zestawu do tworzenia agentów (ADK). Kluczową zasadą architektury jest tu podział obowiązków, w którym odrębna warstwa wnioskowania (agent) komunikuje się z odrębną warstwą narzędzi (serwer MCP) za pomocą bezpiecznego interfejsu API.
W module 1 utworzyliśmy serwer MCP, który udostępnia dużym modelom językowym dane o zwierzętach w fikcyjnym zoo, np. podczas korzystania z interfejsu Gemini CLI. W tym module utworzymy agenta przewodnika po fikcyjnym zoo. Agent będzie korzystać z tego samego serwera MCP z laboratorium 1, aby uzyskać szczegółowe informacje o zwierzętach w zoo, a także z Wikipedii, aby zapewnić jak najlepsze wrażenia podczas zwiedzania.
Na koniec wdrożymy agenta przewodnika w Google Cloud Run, aby był dostępny dla wszystkich odwiedzających zoo, a nie tylko lokalnie.
Wymagania wstępne
- Działający serwer MCP w Cloud Run lub powiązany z nim adres URL usługi.
- Projekt Google Cloud z włączonymi płatnościami.
Czego się nauczysz
- Jak skonstruować projekt w Pythonie na potrzeby wdrożenia ADK.
- Jak wdrożyć agenta korzystającego z narzędzi za pomocą pakietu google-adk.
- Jak połączyć agenta ze zdalnym serwerem MCP w celu uzyskania dostępu do jego zestawu narzędzi.
- Jak wdrożyć aplikację w Pythonie jako bezserwerowy kontener w Cloud Run.
- Jak skonfigurować bezpieczne uwierzytelnianie między usługami za pomocą ról uprawnień.
- Jak usunąć zasoby w chmurze, aby uniknąć przyszłych kosztów.
Czego potrzebujesz
- Konto Google Cloud i projekt Google Cloud
- przeglądarka, np. Chrome;
2. Dlaczego warto wdrożyć aplikację w Cloud Run?
Cloud Run to świetny wybór do hostowania agentów ADK, ponieważ jest to platforma bezserwerowa, co oznacza, że możesz skupić się na kodzie, a nie na zarządzaniu bazową infrastrukturą. Zajmujemy się za Ciebie pracą operacyjną.
Można to porównać do sklepu typu pop-up: jest otwarty i korzysta z zasobów tylko wtedy, gdy pojawiają się klienci (żądania). Gdy nie ma klientów, sklep jest całkowicie zamykany i nie płacisz za pusty sklep.
Główne funkcje
Uruchamianie kontenerów w dowolnym miejscu:
- Dostarczasz kontener (obraz Dockera) z aplikacją.
- Cloud Run uruchamia go w infrastrukturze Google.
- Nie musisz się martwić instalowaniem poprawek systemu operacyjnego, konfigurowaniem maszyn wirtualnych ani skalowaniem.
Automatyczne skalowanie:
- Jeśli z aplikacji nie korzysta żadna osoba → uruchomionych jest 0 instancji (gdy aplikacja jest nieaktywna, nie płacisz za nią).
- Jeśli dotrze do niego 1000 żądań, utworzy on tyle kopii, ile będzie potrzebne.
Bezstanowe domyślnie:
- Każda prośba może być kierowana do innego wystąpienia.
- Jeśli musisz przechowywać stan, użyj usługi zewnętrznej, takiej jak Cloud SQL, Firestore lub Redis.
Obsługa dowolnego języka lub platformy:
- Dopóki działa w kontenerze Linux, Cloud Run nie ma znaczenia, czy jest to Python, Go, Node.js, Java czy .Net.
Płać za to, z czego korzystasz:
- Opłaty są naliczane za każde żądanie i czas obliczeń (z dokładnością do 100 ms).
- Nie płacisz za nieaktywne zasoby, jak w przypadku tradycyjnej maszyny wirtualnej.
3. Konfiguracja i wymagania
Samodzielne konfigurowanie środowiska
- Zaloguj się w konsoli Google Cloud i utwórz nowy projekt lub użyj istniejącego. Jeśli nie masz jeszcze konta Gmail lub Google Workspace, musisz je utworzyć.
- Nazwa projektu to wyświetlana nazwa uczestników tego projektu. Jest to ciąg znaków, który nie jest używany przez interfejsy API Google. Zawsze możesz ją zaktualizować.
- Identyfikator projektu jest unikalny we wszystkich projektach Google Cloud i nie można go zmienić po ustawieniu. Konsola Cloud automatycznie generuje unikalny ciąg znaków. Zwykle nie musisz się tym przejmować. W większości ćwiczeń z programowania musisz odwoływać się do identyfikatora projektu (zwykle oznaczanego jako
PROJECT_ID
). Jeśli wygenerowany identyfikator Ci się nie podoba, możesz wygenerować inny losowy identyfikator. Możesz też spróbować własnej nazwy i sprawdzić, czy jest dostępna. Po tym kroku nie można go zmienić i pozostaje on taki przez cały czas trwania projektu. - Warto wiedzieć, że istnieje trzecia wartość, numer projektu, której używają niektóre interfejsy API. Więcej informacji o tych 3 wartościach znajdziesz w dokumentacji.
- Następnie musisz włączyć rozliczenia w konsoli Cloud, aby korzystać z zasobów i interfejsów API Google Cloud. Wykonanie tego laboratorium nie będzie kosztować dużo, a może nawet nic. Aby wyłączyć zasoby i uniknąć naliczania opłat po zakończeniu tego samouczka, możesz usunąć utworzone zasoby lub projekt. Nowi użytkownicy Google Cloud mogą skorzystać z programu bezpłatnego okresu próbnego, w którym mają do dyspozycji środki w wysokości 300 USD.
Uruchamianie Cloud Shell
Otwórz edytor Cloud Shell.
Jeśli terminal nie pojawi się u dołu ekranu, otwórz go:
- Kliknij Terminal.
- Kliknij Nowy terminal.
W terminalu ustaw projekt za pomocą tego polecenia. Jeśli masz ukończone ćwiczenie 1, upewnij się, że używasz tego samego identyfikatora projektu:
gcloud config set project [YOUR-PROJECT-ID]
Jeśli nie pamiętasz identyfikatora projektu, możesz wyświetlić listę wszystkich identyfikatorów projektów za pomocą tego polecenia:
gcloud projects list | awk '/PROJECT_ID/{print $2}'
4. Jeśli pojawi się pytanie o autoryzację, kliknij Autoryzuj, aby przejść dalej.
5. Powinien wyświetlić się ten komunikat:
Updated property [core/project].
If you see a `WARNING` and are asked `Do you want to continue (Y/n)?`,
then you have likely entered the project ID incorrectly. Press `n`,
press `Enter`, and try to run the `gcloud config set project` command again.
4. Zanim zaczniesz
Włączanie interfejsów API i ustawianie zmiennych środowiskowych
Włącz wszystkie niezbędne usługi:
gcloud services enable \
run.googleapis.com \
artifactregistry.googleapis.com \
cloudbuild.googleapis.com \
aiplatform.googleapis.com \
compute.googleapis.com
Oczekiwane dane wyjściowe
Operation "operations/acat.p2-[GUID]" finished successfully.
Skonfiguruj domyślny region, aby używać modeli wektorów dystrybucyjnych Vertex AI. Więcej informacji o lokalizacjach, w których jest dostępna usługa Vertex AI W tym przykładzie używamy regionu europe-west1.
gcloud config set compute/region europe-west1
5. Pobieranie i instalowanie ADK oraz tworzenie folderu projektu
Utwórz katalogi projektu.
To polecenie tworzy główny folder laboratorium dla kodu źródłowego agenta.
cd && mkdir zoo_guide_agent && cd zoo_guide_agent
Utwórz środowisko wirtualne.
python3 -m venv .venv
Aktywuj środowisko wirtualne
source .venv/bin/activate
Utwórz plik requirements.txt
. Ten plik zawiera listę bibliotek Pythona, których potrzebuje Twój agent. To polecenie tworzy plik i wypełnia go.
cloudshell edit requirements.txt
google-adk==1.12.0
langchain-community
wikipedia
Polecenie należy uruchomić w głównym katalogu projektu, zoo_guide_agent
.
pip install -r requirements.txt
Ustaw zmienne dla bieżącego projektu, regionu i użytkownika. Jest to bardziej niezawodny sposób uruchamiania tych poleceń.
export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_REGION=$(gcloud config get-value compute/region)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")
export SERVICE_ACCOUNT="${PROJECT_NUMBER}-compute@developer.gserviceaccount.com"
Utwórz i otwórz plik .env
, aby uwierzytelnić agenta w katalogu zoo_guide_agent
.
cloudshell edit .env
Polecenie cloudshell edit otworzy plik .env
w edytorze nad terminalem. Wpisz w pliku .env
ten tekst i wróć do terminala.
MODEL="gemini-2.5-flash"
SERVICE_ACCOUNT="${PROJECT_NUMBER}-compute@developer.gserviceaccount.com"
Dodawanie URL-a serwera MCP. Jeśli moduł 1 został ukończony, wykonaj te czynności, aby użyć serwera MCP utworzonego w module 1:
- Przyznaj tożsamości usługi Cloud Run uprawnienia do wywoływania zdalnego serwera MCP.
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:$SERVICE_ACCOUNT" \
--role="roles/run.invoker"
- Zapisz adres URL serwera MCP z modułu 1 w zmiennej środowiskowej.
echo -e "\nMCP_SERVER_URL=https://zoo-mcp-server-${PROJECT_NUMBER}.europe-west1.run.app/mcp/" >> .env
Jeśli używasz publicznego linku do serwera MCP, wykonaj to polecenie, zastępując PROJECT_NUMBER
podanym ciągiem znaków.
echo -e "\nMCP_SERVER_URL=https://zoo-mcp-server-${PROJECT_NUMBER}.europe-west1.run.app/mcp/" >> .env
6. Tworzenie przepływu pracy agenta
Utwórz plik init.py
Utwórz plik init.py. Ten plik informuje Pythona, że katalog zoo_guide_agent jest pakietem.
cloudshell edit __init__.py
Powyższe polecenie otwiera edytor kodu. Dodaj do pliku __init__.py
ten kod:
from . import agent
Tworzenie głównego pliku agent.py
Utwórz główny plik agent.py. To polecenie tworzy plik Pythona i wkleja do niego cały kod systemu wieloagentowego.
cloudshell edit agent.py
Krok 1. Importowanie i konfiguracja początkowa
Pierwszy blok zawiera wszystkie niezbędne biblioteki z ADK i Google Cloud. Konfiguruje też rejestrowanie i wczytuje zmienne środowiskowe z pliku .env
, co jest kluczowe w przypadku dostępu do modelu i adresu URL serwera.
Dodaj do pliku agent.py ten kod:
import os
import logging
import google.cloud.logging
from dotenv import load_dotenv
from google.adk import Agent
from google.adk.agents import SequentialAgent
from google.adk.tools.mcp_tool.mcp_toolset import MCPToolset, StreamableHTTPConnectionParams
from google.adk.tools.tool_context import ToolContext
from google.adk.tools.langchain_tool import LangchainTool
from langchain_community.tools import WikipediaQueryRun
from langchain_community.utilities import WikipediaAPIWrapper
import google.auth
import google.auth.transport.requests
import google.oauth2.id_token
# --- Setup Logging and Environment ---
cloud_logging_client = google.cloud.logging.Client()
cloud_logging_client.setup_logging()
load_dotenv()
model_name = os.getenv("MODEL")
Krok 2. Określenie narzędzi (możliwości agenta)
Agent jest tak dobry, jak narzędzia, których może używać. W tej sekcji definiujemy wszystkie możliwości naszego agenta, w tym funkcję niestandardową do zapisywania danych, narzędzie MCP, które łączy się z naszym bezpiecznym serwerem MCP, oraz narzędzie Wikipedia.
Dodaj ten kod na końcu pliku agent.py:
# Greet user and save their prompt
def add_prompt_to_state(
tool_context: ToolContext, prompt: str
) -> dict[str, str]:
"""Saves the user's initial prompt to the state."""
tool_context.state["PROMPT"] = prompt
logging.info(f"[State updated] Added to PROMPT: {prompt}")
return {"status": "success"}
# Configuring the MCP Tool to connect to the Zoo MCP server
mcp_server_url = os.getenv("MCP_SERVER_URL")
if not mcp_server_url:
raise ValueError("The environment variable MCP_SERVER_URL is not set.")
def get_id_token():
"""Get an ID token to authenticate with the MCP server."""
target_url = os.getenv("MCP_SERVER_URL")
audience = target_url.split('/mcp/')[0]
request = google.auth.transport.requests.Request()
id_token = google.oauth2.id_token.fetch_id_token(request, audience)
return id_token
"""
# Use this code if you are using the public MCP Server and comment out the code below defining mcp_tools
mcp_tools = MCPToolset(
connection_params=StreamableHTTPConnectionParams(
url=mcp_server_url
)
)
"""
mcp_tools = MCPToolset(
connection_params=StreamableHTTPConnectionParams(
url=mcp_server_url,
headers={
"Authorization": f"Bearer {get_id_token()}",
},
),
)
# Configuring the Wikipedia Tool
wikipedia_tool = LangchainTool(
tool=WikipediaQueryRun(api_wrapper=WikipediaAPIWrapper())
)
Opis 3 narzędzi
add_prompt_to_state
📝
To narzędzie zapamiętuje pytania zadawane przez osoby odwiedzające zoo. Gdy gość zapyta „Gdzie są lwy?”, to narzędzie zapisze to konkretne pytanie w pamięci agenta, aby inni agenci w przepływie pracy wiedzieli, czego szukać.
Jak to działa: jest to funkcja Pythona, która zapisuje prompt użytkownika w udostępnionym słowniku tool_context.state
. Kontekst narzędzia reprezentuje pamięć krótkotrwałą agenta w przypadku pojedynczej rozmowy. Dane zapisane w stanie przez jednego agenta mogą być odczytane przez kolejnego agenta w przepływie pracy.
MCPToolset
🦁
Służy do łączenia agenta przewodnika z serwerem MCP zoo utworzonym w module 1. Ten serwer ma specjalne narzędzia do wyszukiwania konkretnych informacji o naszych zwierzętach, takich jak imię, wiek i wybieg.
Sposób: bezpiecznie łączy się z adresem URL prywatnego serwera zoo. Używa get_id_token
, aby automatycznie uzyskać bezpieczną „kartę dostępu” (token identyfikatora konta usługi) w celu potwierdzenia tożsamości i uzyskania dostępu.
LangchainTool
🌍
Dzięki temu agent przewodnik będzie miał ogólną wiedzę o świecie. Gdy odwiedzający zada pytanie, którego nie ma w bazie danych zoo, np. „Co jedzą lwy na wolności?”, to narzędzie umożliwia pracownikowi znalezienie odpowiedzi w Wikipedii.
Działanie: działa jako adapter, umożliwiając naszemu agentowi korzystanie z gotowego narzędzia WikipediaQueryRun z biblioteki LangChain.
Zasoby:
Krok 3. Określanie agentów specjalistycznych
Następnie zdefiniujemy agenta badawczego i agenta formatującego odpowiedzi. Agent badawczy jest „mózgiem” naszej operacji. Ten agent pobiera prompt użytkownika z udostępnionego State
, analizuje swoje zaawansowane narzędzia (narzędzie serwera MCP w zoo i narzędzie Wikipedii) i decyduje, których z nich użyć, aby znaleźć odpowiedź.
Rola agenta formatującego odpowiedź polega na prezentacji. Nie używa żadnych narzędzi do wyszukiwania nowych informacji. Zamiast tego pobiera surowe dane zebrane przez agenta Researcher (przekazywane za pomocą stanu) i wykorzystuje umiejętności językowe LLM, aby przekształcić je w przyjazną, konwersacyjną odpowiedź.
Dodaj ten kod na końcu pliku agent.py
:
# 1. Researcher Agent
comprehensive_researcher = Agent(
name="comprehensive_researcher",
model=model_name,
description="The primary researcher that can access both internal zoo data and external knowledge from Wikipedia.",
instruction="""
You are a helpful research assistant. Your goal is to fully answer the user's PROMPT.
You have access to two tools:
1. A tool for getting specific data about animals AT OUR ZOO (names, ages, locations).
2. A tool for searching Wikipedia for general knowledge (facts, lifespan, diet, habitat).
First, analyze the user's PROMPT.
- If the prompt can be answered by only one tool, use that tool.
- If the prompt is complex and requires information from both the zoo's database AND Wikipedia,
you MUST use both tools to gather all necessary information.
- Synthesize the results from the tool(s) you use into preliminary data outputs.
PROMPT:
{{ PROMPT }}
""",
tools=[
mcp_tools,
wikipedia_tool
],
output_key="research_data" # A key to store the combined findings
)
# 2. Response Formatter Agent
response_formatter = Agent(
name="response_formatter",
model=model_name,
description="Synthesizes all information into a friendly, readable response.",
instruction="""
You are the friendly voice of the Zoo Tour Guide. Your task is to take the
RESEARCH_DATA and present it to the user in a complete and helpful answer.
- First, present the specific information from the zoo (like names, ages, and where to find them).
- Then, add the interesting general facts from the research.
- If some information is missing, just present the information you have.
- Be conversational and engaging.
RESEARCH_DATA:
{{ research_data }}
"""
)
Krok 4. Agent przepływu pracy
Agent przepływu pracy pełni funkcję menedżera „back-office” wycieczki po zoo. Przyjmuje żądanie wyszukiwania i pilnuje, aby 2 zdefiniowane powyżej agenty wykonywały swoje zadania w odpowiedniej kolejności: najpierw wyszukiwanie, a potem formatowanie. Dzięki temu proces odpowiadania na pytania odwiedzających jest przewidywalny i niezawodny.
Jak: to SequentialAgent
, czyli specjalny typ agenta, który nie myśli samodzielnie. Jego jedynym zadaniem jest uruchamianie listy sub_agents
(badacza i formatującego) w ustalonej kolejności, automatyczne przekazywanie pamięci współdzielonej z jednego do drugiego.
Dodaj ten blok kodu na końcu pliku agent.py
:
tour_guide_workflow = SequentialAgent(
name="tour_guide_workflow",
description="The main workflow for handling a user's request about an animal.",
sub_agents=[
comprehensive_researcher, # Step 1: Gather all data
response_formatter, # Step 2: Format the final response
]
)
Ostatni krok: złożenie głównego przepływu pracy 
Ten agent jest oznaczony jako root_agent
, którego platforma ADK używa jako punktu wyjścia wszystkich nowych rozmów. Jego głównym zadaniem jest koordynowanie całego procesu. Pełni rolę początkowego kontrolera, który zarządza pierwszą turą rozmowy.
Dodaj ten ostatni blok kodu na końcu pliku agent.py
:
root_agent = Agent(
name="greeter",
model=model_name,
description="The main entry point for the Zoo Tour Guide.",
instruction="""
- Let the user know you will help them learn about the animals we have in the zoo.
- When the user responds, use the 'add_prompt_to_state' tool to save their response.
After using the tool, transfer control to the 'tour_guide_workflow' agent.
""",
tools=[add_prompt_to_state],
sub_agents=[tour_guide_workflow]
)
Plik agent.py
jest gotowy. Dzięki temu możesz zobaczyć, jak każdy komponent – narzędzia, agenci roboczy i agenci zarządzający – odgrywa określoną rolę w tworzeniu końcowego, inteligentnego systemu. Następny krok to wdrożenie.
7. Przygotowywanie aplikacji do wdrożenia
Gdy środowisko lokalne będzie gotowe, możesz przygotować projekt Google Cloud do wdrożenia. Obejmuje to ostateczne sprawdzenie struktury pliku agenta pod kątem zgodności z poleceniem wdrażania. Co ważniejsze, skonfigurujesz kluczowe uprawnienie IAM, które umożliwi wdrożonej usłudze Cloud Run działanie w Twoim imieniu i wywoływanie modeli Vertex AI. Wykonanie tego kroku gwarantuje, że środowisko chmury jest gotowe do prawidłowego uruchomienia agenta.
Załaduj zmienne do sesji powłoki, uruchamiając polecenie source.
source .env
Przyznaj kontu usługi rolę użytkownika Vertex AI, która umożliwia mu generowanie prognoz i wywoływanie modeli Google.
# Grant the "Vertex AI User" role to your service account
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:$SERVICE_ACCOUNT" \
--role="roles/aiplatform.user"
8. Wdrażanie agenta za pomocą interfejsu ADK CLI
Gdy lokalny kod jest gotowy, a projekt Google Cloud przygotowany, możesz wdrożyć agenta. Użyjesz polecenia adk deploy cloud_run
, czyli wygodnego narzędzia, które automatyzuje cały proces wdrażania. To jedno polecenie pakuje kod, tworzy obraz kontenera, przenosi go do Artifact Registry i uruchamia usługę w Cloud Run, dzięki czemu jest ona dostępna w internecie.
Tworzenie pliku .gcloudignore
Aby skrócić czas wdrażania, chcemy utworzyć plik .gcloudignore
. Aby to zrobić, uruchom te polecenia.
cloudshell edit .gcloudignore
Polecenie cloudshell edit otworzy plik .gcloudignore
w edytorze nad terminalem. Wpisz w pliku te informacje i go zapisz. Następnie wróć do terminala, aby uruchomić polecenia wdrażania w następnej sekcji.
.venv/
Wdróż
Aby wdrożyć agenta, uruchom te polecenia.
# Run the deployment command
adk deploy cloud_run \
--project=$PROJECT_ID \
--region=europe-west1 \
--service_name=zoo-tour-guide \
--with_ui \
.
gcloud run services update zoo-tour-guide \
--region=europe-west1 \
--update-labels=dev-tutorial=codelab-adk
Akceptowanie promptów
Możemy Cię poprosić o:
Deploying from source requires an Artifact Registry Docker repository to store built containers. A repository named [cloud-run-source-deploy] in region [europe-west1] will be created. Do you want to continue (Y/n)?
Wpisz Y i naciśnij ENTER.
Możemy Cię poprosić o:
Allow unauthenticated invocations to [your-service-name] (y/N)?.
Na potrzeby tego modułu chcemy zezwolić na nieuwierzytelnione wywołania, aby ułatwić testowanie. Wpisz y
i naciśnij Enter.
Pobieranie linku do wdrożenia
Po pomyślnym wykonaniu polecenia wyświetli się adres URL wdrożonej usługi Cloud Run. (Będzie on wyglądać mniej więcej tak: https://zoo-tour-guide-123456789.europe-west1.run.app). Skopiuj ten adres URL, aby użyć go w następnym zadaniu.
9. Testowanie wdrożonego agenta
Gdy agent będzie już działać w Cloud Run, przeprowadź test, aby sprawdzić, czy wdrożenie się powiodło i czy agent działa zgodnie z oczekiwaniami. Aby uzyskać dostęp do interfejsu internetowego ADK i interakcji z agentem, użyj publicznego adresu URL usługi (np. https://zoo-tour-guide-123456789.europe-west1.run.app/).
Otwórz publiczny adres URL usługi Cloud Run w przeglądarce. Ponieważ korzystasz z --with_ui flag
, powinien być widoczny interfejs dewelopera ADK.
W prawym górnym rogu włącz Token Streaming
.
Możesz teraz porozmawiać z agentem Zoo.
Wpisz hello
i naciśnij Enter, aby rozpocząć nową rozmowę.
Sprawdź wynik. Agent powinien szybko odpowiedzieć, witając użytkownika:
"Hello! I'm your Zoo Tour Guide. I can help you learn about the amazing animals we have here. What would you like to know or explore today?"
Wyjaśnienie przepływu agenta
System działa jak inteligentny zespół wielu agentów. Proces ten jest zarządzany przez jasną sekwencję, która zapewnia płynny i wydajny przepływ informacji od pytania użytkownika do ostatecznej, szczegółowej odpowiedzi.
1. Osoba witająca w zoo (stanowisko powitalne)
Cały proces rozpoczyna się od agenta witającego.
Jego zadanie: rozpoczęcie rozmowy. Jego instrukcja to powitanie użytkownika i zapytanie, o jakim zwierzęciu chce się dowiedzieć więcej.
Narzędzie: gdy użytkownik odpowie, Greeter użyje narzędzia add_prompt_to_state, aby zarejestrować jego dokładne słowa (np. „opowiedz mi o lwach”) i zapisywać je w pamięci systemu.
Przekazanie: po zapisaniu prompta natychmiast przekazuje on kontrolę do swojego podagenta, czyli tour_guide_workflow.
2. Wszechstronny badacz (superbadacz)
Jest to pierwszy krok w głównym procesie i „mózg” całej operacji. Zamiast dużego zespołu masz teraz jednego, wysoce wykwalifikowanego agenta, który ma dostęp do wszystkich dostępnych informacji.
Jego zadanie: analizowanie pytania użytkownika i tworzenie inteligentnego planu. Wykorzystuje zaawansowane możliwości modelu językowego w zakresie korzystania z narzędzi, aby określić, czy potrzebuje:
- Dane wewnętrzne z dokumentacji zoo (za pomocą serwera MCP).
- ogólna wiedza z internetu (za pomocą interfejsu Wikipedia API);
- W przypadku złożonych pytań możesz użyć obu tych metod.
Działanie: wykonuje niezbędne działania, aby zebrać wszystkie wymagane dane pierwotne. Na przykład na pytanie „Ile lat mają nasze lwy i co jedzą na wolności?” wywoła serwer MCP, aby uzyskać informacje o wieku, oraz narzędzie Wikipedia, aby uzyskać informacje o diecie.
3. The Response Formatter (The Presenter)
Gdy kompleksowy badacz zbierze wszystkie fakty, jest to ostatni agent, który zostanie uruchomiony.
Jego zadanie: być przyjaznym głosem przewodnika po zoo. Pobiera nieprzetworzone dane (które mogą pochodzić z jednego lub obu źródeł) i je przetwarza.
Działanie: syntezuje wszystkie informacje w jedną, spójną i angażującą odpowiedź. Zgodnie z instrukcjami najpierw podaje konkretne informacje o zoo, a potem dodaje ciekawe ogólne fakty.
Wynik końcowy: tekst wygenerowany przez tego agenta to pełna, szczegółowa odpowiedź, którą użytkownik widzi w oknie czatu.
Jeśli chcesz dowiedzieć się więcej o tworzeniu agentów, zapoznaj się z tymi materiałami:
10. Czyszczenie środowiska
gcloud run services delete zoo-tour-guide --region=europe-west1 --quiet
gcloud artifacts repositories delete cloud-run-source-deploy --location=europe-west1 --quiet
11. Gratulacje
Gratulujemy ukończenia ćwiczenia.
Omówione zagadnienia
- Jak skonstruować projekt w Pythonie do wdrożenia za pomocą interfejsu wiersza poleceń ADK.
- Jak wdrożyć przepływ pracy z udziałem wielu agentów za pomocą klas SequentialAgent i ParallelAgent.
- Jak połączyć się ze zdalnym serwerem MCP za pomocą MCPToolset, aby korzystać z jego narzędzi.
- Jak wzbogacać dane wewnętrzne przez integrację z narzędziami zewnętrznymi, takimi jak interfejs API Wikipedii.
- Jak wdrożyć agenta jako kontener bezserwerowy w Cloud Run za pomocą polecenia adk deploy.
12. Ankieta
Dane wyjściowe: