1. Giriş
Bu laboratuvarda, istemci aracısı hizmetinin uygulanması ve dağıtılması üzerinde durulmaktadır. 1. Laboratuvar'da oluşturulan MCP sunucusu gibi uzak araçları kullanan bir yapay zeka aracısı oluşturmak için Aracı Geliştirme Kiti'ni (ADK) kullanacaksınız. Gösterilen temel mimari ilke, endişelerin ayrılmasıdır. Bu ilkeye göre, ayrı bir muhakeme katmanı (aracı), güvenli bir API aracılığıyla ayrı bir araç katmanıyla (MCP sunucusu) iletişim kurar.
1. laboratuvarda, kurgusal bir hayvanat bahçesindeki hayvanlarla ilgili verileri LLM'lere sağlayan bir MCP sunucusu oluşturmuştunuz (ör. Gemini CLI kullanılırken). Bu laboratuvarda, kurgusal hayvanat bahçesi için bir tur rehberi aracısı oluşturacağız. Aracı, hayvanat bahçesindeki hayvanlarla ilgili ayrıntılara erişmek için 1. laboratuvardaki aynı MCP sunucusunu kullanacak ve en iyi tur rehberi deneyimini oluşturmak için Wikipedia'dan yararlanacak.
Son olarak, tur rehberi aracısını Google Cloud Run'a dağıtacağız. Böylece, yalnızca yerel olarak çalışmak yerine tüm hayvanat bahçesi ziyaretçileri tarafından erişilebilir.
Ön koşullar
- Cloud Run'da çalışan bir MCP sunucusu veya ilişkili hizmet URL'si.
- Faturalandırmanın etkin olduğu bir Google Cloud projesi.
Neler öğreneceksiniz?
- ADK dağıtımı için Python projesi nasıl yapılandırılır?
- google-adk ile araç kullanan bir aracı nasıl uygulayabilirsiniz?
- Bir aracıyı, araç seti için uzak bir MCP sunucusuna bağlama
- Python uygulamasını Cloud Run'a sunucusuz container olarak dağıtma
- IAM rollerini kullanarak güvenli, hizmetten hizmete kimlik doğrulama yapılandırma.
- Gelecekteki maliyetlerden kaçınmak için Cloud kaynaklarını silme
Gerekenler
- Google Cloud hesabı ve Google Cloud projesi
- Chrome gibi bir web tarayıcısı
2. Neden Cloud Run'a dağıtmalısınız?
Cloud Run, sunucusuz bir platform olduğundan ADK aracılarını barındırmak için mükemmel bir seçimdir. Bu sayede temel altyapıyı yönetmek yerine kodunuza odaklanabilirsiniz. Operasyonel işleri sizin için biz hallederiz.
Bunu, yalnızca müşteriler (istekler) geldiğinde açılan ve kaynakları kullanan bir pop-up mağaza gibi düşünebilirsiniz. Müşteri olmadığında tamamen kapanır ve boş bir mağaza için ödeme yapmazsınız.
Temel Özellikler
Her Yerde Kapsayıcı Çalıştırma:
- Uygulamanızın bulunduğu bir container (Docker görüntüsü) getirirsiniz.
- Cloud Run, bu işlemi Google'ın altyapısında çalıştırır.
- İşletim sistemi yaması, sanal makine kurulumu veya ölçeklendirme ile ilgili sorunlar yok.
Otomatik Ölçeklendirme:
- Uygulamanızı kullanan kişi sayısı 0 ise → 0 örnek çalıştırılır (boşta olduğunda 0 ABD doları ödersiniz).
- 1.000 istek gelirse → gerektiği kadar kopya oluşturur.
Varsayılan olarak durum bilgisi yok:
- Her istek farklı bir örneğe gidebilir.
- Durumu depolamanız gerekiyorsa Cloud SQL, Firestore veya Redis gibi harici bir hizmet kullanın.
Herhangi bir dili veya çerçeveyi destekler:
- Cloud Run, Linux kapsayıcısında çalıştığı sürece Python, Go, Node.js, Java veya .Net olup olmadığını önemsemez.
Kullandığınız Kadar Ödeyin:
- İstek başına + işlem süresi (100 ms'ye kadar) faturalandırılır.
- Geleneksel bir sanal makinede olduğu gibi, boşta duran kaynaklar için ödeme yapmazsınız.
3. Kurulum ve Gereksinimler
Kendi hızınızda ortam kurulumu
- Google Cloud Console'da oturum açın ve yeni bir proje oluşturun veya mevcut bir projeyi yeniden kullanın. Gmail veya Google Workspace hesabınız yoksa oluşturmanız gerekir.
- Proje adı, bu projenin katılımcıları için görünen addır. Google API'leri tarafından kullanılmayan bir karakter dizesidir. Bu bilgiyi istediğiniz zaman güncelleyebilirsiniz.
- Proje kimliği, tüm Google Cloud projelerinde benzersizdir ve sabittir (ayarlandıktan sonra değiştirilemez). Cloud Console, benzersiz bir dizeyi otomatik olarak oluşturur. Genellikle bu dizenin ne olduğuyla ilgilenmezsiniz. Çoğu codelab'de proje kimliğinize (genellikle
PROJECT_ID
olarak tanımlanır) başvurmanız gerekir. Oluşturulan kimliği beğenmezseniz başka bir rastgele kimlik oluşturabilirsiniz. Dilerseniz kendi adınızı deneyerek kullanılabilir olup olmadığını kontrol edebilirsiniz. Bu adım tamamlandıktan sonra değiştirilemez ve proje süresince geçerli kalır. - Bazı API'lerin kullandığı üçüncü bir değer olan Proje Numarası da vardır. Bu üç değer hakkında daha fazla bilgiyi belgelerde bulabilirsiniz.
- Ardından, Cloud kaynaklarını/API'lerini kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir. Bu codelab'i tamamlamak neredeyse hiç maliyetli değildir. Bu eğitimin ötesinde faturalandırılmayı önlemek için kaynakları kapatmak üzere oluşturduğunuz kaynakları veya projeyi silebilirsiniz. Yeni Google Cloud kullanıcıları 300 ABD doları değerinde ücretsiz deneme programından yararlanabilir.
Cloud Shell'i başlatma
Cloud Shell Düzenleyici'ye gidin.
Terminal ekranın alt kısmında görünmüyorsa açın:
- Terminal'i tıklayın.
- Yeni Terminal'i tıklayın.
Terminalde şu komutla projenizi ayarlayın. 1. laboratuvarı tamamladıysanız aynı proje kimliğini kullandığınızdan emin olun:
gcloud config set project [YOUR-PROJECT-ID]
Proje kimliğinizi hatırlamıyorsanız tüm proje kimliklerinizi şu komutla listeleyebilirsiniz:
gcloud projects list | awk '/PROJECT_ID/{print $2}'
4. Yetkilendirmeniz istenirse devam etmek için Yetkilendir'i tıklayın.
5. Şu mesajı görmeniz gerekir:
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. Başlamadan önce
API'leri etkinleştirme ve ortam değişkenlerini ayarlama
Gerekli tüm hizmetleri etkinleştirin:
gcloud services enable \
run.googleapis.com \
artifactregistry.googleapis.com \
cloudbuild.googleapis.com \
aiplatform.googleapis.com \
compute.googleapis.com
Beklenen çıktı
Operation "operations/acat.p2-[GUID]" finished successfully.
Vertex AI yerleştirme modellerini kullanmak için varsayılan bölgenizi yapılandırın. Vertex AI'ın kullanılabildiği yerler hakkında daha fazla bilgi edinin. Örnekte europe-west1 bölgesi kullanılmaktadır.
gcloud config set compute/region europe-west1
5. ADK'yı indirip yükleme ve proje klasörü oluşturma
Proje dizinlerini oluşturun.
Bu komut, aracının kaynak kodu için laboratuvarla ilgili ana klasörü oluşturur.
cd && mkdir zoo_guide_agent && cd zoo_guide_agent
Sanal ortam oluşturun.
python3 -m venv .venv
Sanal ortamı etkinleştirin.
source .venv/bin/activate
requirements.txt
dosyasını oluşturun. Bu dosya, aracınızın ihtiyaç duyduğu Python kitaplıklarını listeler. Aşağıdaki komut dosyayı oluşturur ve dosyayı doldurur.
cloudshell edit requirements.txt
google-adk==1.12.0
langchain-community
wikipedia
Komutu ana proje dizininizden (zoo_guide_agent
) çalıştırmanız gerekir.
pip install -r requirements.txt
Mevcut projeniz, bölgeniz ve kullanıcınız için değişkenler ayarlayın. Bu, komutları çalıştırmanın daha sağlam bir yoludur.
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"
.env
dosyası oluşturup açarak zoo_guide_agent
dizinindeki aracının kimliğini doğrulayın.
cloudshell edit .env
Cloudshell edit komutu, terminalin üstündeki düzenleyicide .env
dosyasını açar. .env
dosyasına aşağıdakileri girin ve terminale geri dönün.
MODEL="gemini-2.5-flash"
SERVICE_ACCOUNT="${PROJECT_NUMBER}-compute@developer.gserviceaccount.com"
MCP sunucu URL'sini ekleyin. 1. laboratuvarı tamamladıysanız 1. laboratuvarda oluşturduğunuz MCP sunucusunu kullanmak için aşağıdaki adımları uygulayın:
- Cloud Run hizmet kimliğine, uzak MCP sunucusunu çağırma izni verme
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:$SERVICE_ACCOUNT" \
--role="roles/run.invoker"
- 1. laboratuvardaki MCP sunucusu URL'sini bir ortam değişkenine kaydedin.
echo -e "\nMCP_SERVER_URL=https://zoo-mcp-server-${PROJECT_NUMBER}.europe-west1.run.app/mcp/" >> .env
Herkese açık bir MCP sunucu bağlantısı kullanıyorsanız aşağıdakileri çalıştırın ve PROJECT_NUMBER
yerine sağlanan bilgileri girin.
echo -e "\nMCP_SERVER_URL=https://zoo-mcp-server-${PROJECT_NUMBER}.europe-west1.run.app/mcp/" >> .env
6. Aracı İş Akışı Oluşturma
init.py dosyası oluşturma
init.py dosyasını oluşturun. Bu dosya, Python'a zoo_guide_agent dizininin bir paket olduğunu bildirir.
cloudshell edit __init__.py
Yukarıdaki komut, kod düzenleyiciyi açar. Aşağıdaki kodu __init__.py
dosyasına ekleyin:
from . import agent
Ana agent.py dosyasını oluşturma
Ana agent.py dosyasını oluşturun. Bu komut, Python dosyasını oluşturur ve çok agent'lı sisteminizin kodunu yapıştırır.
cloudshell edit agent.py
1. adım: İçe aktarma işlemleri ve ilk kurulum
Bu ilk blok, ADK ve Google Cloud'dan gerekli tüm kitaplıkları getirir. Ayrıca, günlük kaydını ayarlar ve .env
dosyanızdaki ortam değişkenlerini yükler. Bu, modelinize ve sunucu URL'nize erişmek için çok önemlidir.
agent.py dosyanıza aşağıdaki kodu ekleyin:
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")
2. adım: Araçları tanımlama (Agent'ın yetenekleri)
Bir temsilcinin başarısı, kullanabileceği araçlara bağlıdır. Bu bölümde, aracımızın sahip olacağı tüm özellikleri (veri kaydetmek için özel bir işlev, güvenli MCP sunucumuza bağlanan bir MCP Aracı ve bir Wikipedia Aracı dahil) tanımlıyoruz.
Aşağıdaki kodu agent.py dosyasının en altına ekleyin:
# 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())
)
Üç Araç Açıklaması
add_prompt_to_state
📝
Bu araç, hayvanat bahçesi ziyaretçilerinin sorduklarını hatırlar. Bir ziyaretçi "Aslanlar nerede?" diye sorduğunda bu araç, söz konusu soruyu temsilcinin belleğine kaydeder. Böylece iş akışındaki diğer temsilciler neyi araştırmaları gerektiğini bilir.
Nasıl çalışır? Ziyaretçinin istemini paylaşılan tool_context.state
sözlüğüne yazan bir Python işlevidir. Bu araç bağlamı, aracının tek bir görüşmedeki kısa süreli belleğini temsil eder. Bir temsilci tarafından duruma kaydedilen veriler, iş akışındaki bir sonraki temsilci tarafından okunabilir.
MCPToolset
🦁
Bu, tur rehberi aracısını 1. laboratuvarda oluşturulan hayvanat bahçesi MCP sunucusuna bağlamak için kullanılır. Bu sunucuda, hayvanlarımızla ilgili adları, yaşları ve bulundukları yer gibi belirli bilgileri aramak için özel araçlar bulunur.
Nasıl: Hayvanat bahçesinin özel sunucu URL'sine güvenli bir şekilde bağlanır. Kimliğini kanıtlamak ve erişim elde etmek için güvenli bir "anahtar kartı" (hizmet hesabı kimlik jetonu) almak üzere otomatik olarak get_id_token
kullanılır.
LangchainTool
🌍
Bu, tur rehberi aracısına genel dünya bilgisi verir. Bir ziyaretçi, hayvanat bahçesinin veritabanında bulunmayan bir soru sorduğunda (ör. "Aslanlar vahşi doğada ne yer?") bu araç, temsilcinin Wikipedia'da yanıtı aramasına olanak tanır.
Nasıl: Bir bağdaştırıcı görevi görerek aracımızın LangChain kitaplığındaki önceden oluşturulmuş WikipediaQueryRun aracını kullanmasına olanak tanır.
Kaynaklar:
3. adım: Uzman temsilcileri tanımlama
Ardından, araştırmacı aracısını ve yanıt biçimlendirici aracısını tanımlayacağız. Araştırmacı aracı, operasyonumuzun "beynidir". Bu aracı, paylaşılan State
istemini alır, güçlü araçlarını (Zoo'nun MCP Sunucu Aracı ve Wikipedia Aracı) inceler ve yanıtı bulmak için hangilerini kullanacağına karar verir.
Yanıt biçimlendirici aracısının rolü sunumdur. Yeni bilgi bulmak için herhangi bir araç kullanmaz. Bunun yerine, Araştırmacı aracısı tarafından toplanan ham verileri (State üzerinden iletilir) alır ve LLM'nin dil becerilerini kullanarak bunları samimi ve sohbet tarzında bir yanıta dönüştürür.
Aşağıdaki kodu agent.py
dosyasının en altına ekleyin:
# 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 }}
"""
)
4. adım: İş akışı aracısı
İş akışı aracısı, hayvanat bahçesi turunun "arka ofis" yöneticisi olarak görev yapar. Araştırma isteğini alır ve yukarıda tanımladığımız iki aracının görevlerini doğru sırada (önce araştırma, sonra biçimlendirme) yapmasını sağlar. Bu sayede, ziyaretçilerin sorularını yanıtlamak için öngörülebilir ve güvenilir bir süreç oluşturulur.
Nasıl: SequentialAgent
, kendi başına düşünmeyen özel bir aracı türüdür. Tek görevi, sub_agents
(araştırmacı ve biçimlendirici) listesini sabit bir sırayla çalıştırmak ve paylaşılan belleği otomatik olarak birinden diğerine aktarmaktır.
Bu kod bloğunu agent.py
dosyasının en altına ekleyin:
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
]
)
Son Adım: Ana İş Akışını Birleştirme 
Bu Temsilci, ADK çerçevesinin tüm yeni görüşmeler için başlangıç noktası olarak kullandığı root_agent
olarak belirlenir. Birincil rolü, genel süreci yönetmektir. İlk kontrolör olarak hareket eder ve görüşmenin ilk dönüşünü yönetir.
agent.py
dosyasının en altına aşağıdaki son kod bloğunu ekleyin:
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]
)
agent.py
dosyanız tamamlandı. Bu şekilde oluşturarak her bileşenin (araçlar, çalışan aracıları ve yönetici aracıları) nihai, akıllı sistemi oluşturmada nasıl belirli bir role sahip olduğunu görebilirsiniz. Sıradaki adım: Dağıtım
7. Uygulamayı dağıtıma hazırlama
Yerel ortamınız hazır olduğunda bir sonraki adım, Google Cloud projenizi dağıtıma hazırlamaktır. Bu adımda, dağıtım komutuyla uyumlu olduğundan emin olmak için temsilcinizin dosya yapısı son bir kez kontrol edilir. Daha da önemlisi, dağıtılan Cloud Run hizmetinizin sizin adınıza işlem yapmasına ve Vertex AI modellerini çağırmasına olanak tanıyan kritik bir IAM izni yapılandırırsınız. Bu adımı tamamladığınızda bulut ortamının aracınızı başarıyla çalıştırmaya hazır olduğundan emin olursunuz.
Kaynak komutunu çalıştırarak değişkenleri kabuk oturumunuza yükleyin.
source .env
Hizmet hesabına Vertex AI Kullanıcısı rolünü verin. Bu rol, hizmet hesabına tahmin yapma ve Google'ın modellerini çağırma izni verir.
# 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. ADK CLI'yı kullanarak aracı dağıtma
Yerel kodunuz hazır ve Google Cloud projeniz hazırlanmış durumdayken aracı dağıtma zamanı gelmiştir. Tüm dağıtım iş akışını otomatikleştiren kullanışlı bir araç olan adk deploy cloud_run
komutunu kullanacaksınız. Bu tek komut, kodunuzu paketler, bir container görüntüsü oluşturur, bu görüntüyü Artifact Registry'ye gönderir ve hizmeti Cloud Run'da başlatarak web'de erişilebilir hale getirir.
.gcloudignore dosyası oluşturma
Dağıtım süremizi kısaltmak için bir .gcloudignore
dosyası oluşturmak istiyoruz. Bu işlemi yapmak için aşağıdaki komutları çalıştırın. Aracınızı dağıtmak için aşağıdaki komutları çalıştırın.
cloudshell edit .gcloudignore
Cloudshell edit komutu, terminalin üstündeki düzenleyicide .gcloudignore
dosyasını açar. Dosyaya aşağıdakileri yazıp kaydedin. Ardından, sonraki bölümde dağıtım komutlarını çalıştırmak için terminale geri dönün.
.venv/
Dağıt
Aracınızı dağıtmak için aşağıdaki komutları çalıştırın.
# 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
İstemleri Kabul Etme
Aşağıdaki istemlerle karşılaşabilirsiniz:
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)?
Y yazıp ENTER tuşuna basın.
Aşağıdaki istemlerle karşılaşabilirsiniz:
Allow unauthenticated invocations to [your-service-name] (y/N)?.
Bu laboratuvarda kolay test için kimliği doğrulanmamış çağrılara izin vermek istiyoruz. y
yazıp Enter tuşuna basın.
Dağıtım bağlantısını alma
Başarılı bir şekilde yürütüldüğünde komut, dağıtılan Cloud Run hizmetinin URL'sini sağlar. (https://zoo-tour-guide-123456789.europe-west1.run.app gibi görünür.) Bir sonraki görev için bu URL'yi kopyalayın.
9. Dağıtılan temsilciyi test etme
Temsilciniz artık Cloud Run'da yayında olduğuna göre, dağıtımın başarılı olduğunu ve temsilcinin beklendiği gibi çalıştığını onaylamak için bir test yapacaksınız. ADK'nın web arayüzüne erişmek ve aracıyla etkileşimde bulunmak için herkese açık hizmet URL'sini (ör. https://zoo-tour-guide-123456789.europe-west1.run.app/) kullanırsınız.
Herkese açık Cloud Run hizmeti URL'sini web tarayıcınızda açın. --with_ui flag
kullandığınız için ADK geliştirici kullanıcı arayüzünü görmeniz gerekir.
Sağ üstteki Token Streaming
simgesini açın.
Artık Zoo temsilcisiyle etkileşimde bulunabilirsiniz.
Yeni bir görüşme başlatmak için hello
yazıp Enter tuşuna basın.
Sonucu inceleyin. Aracı, selamlama mesajıyla hızlı bir şekilde yanıt vermelidir:
"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?"
Temsilci Akışı Açıklaması
Sisteminiz akıllı, çok görevli bir ekip olarak çalışır. Süreç, kullanıcının sorusundan nihai ve ayrıntılı cevaba kadar sorunsuz ve verimli bir akış sağlamak için net bir sırayla yönetilir.
1. Hayvanat Bahçesi Karşılama Görevlisi (Karşılama Masası)
Tüm süreç, karşılama temsilcisiyle başlar.
Görevi: Sohbeti başlatmak. Talimatı, kullanıcıyı selamlamak ve hangi hayvan hakkında bilgi edinmek istediğini sormaktır.
Its Tool: Kullanıcı yanıtladığında Karşılayıcı, kullanıcının tam olarak ne söylediğini (ör. "Aslanlar hakkında bilgi ver") ve bunları sistemin belleğine kaydeder.
Devretme: Talimat kaydedildikten sonra kontrol hemen alt aracısı olan tour_guide_workflow'a geçer.
2. The Comprehensive Researcher (The Super-Researcher)
Bu, ana iş akışının ilk adımı ve operasyonun "beyni"dir. Artık büyük bir ekibiniz yerine, mevcut tüm bilgilere erişebilen tek bir yüksek vasıflı temsilciniz var.
Görevi: Kullanıcının sorusunu analiz edip akıllı bir plan oluşturmak. Aşağıdaki durumlarda dil modelinin güçlü araç kullanma özelliğinden yararlanır:
- Hayvanat bahçesinin kayıtlarındaki (MCP sunucusu aracılığıyla) dahili veriler.
- Web'den (Wikipedia API aracılığıyla) genel bilgi
- Karmaşık sorular için ise her ikisi de kullanılabilir.
İşlemi: Gerekli tüm ham verileri toplamak için gerekli araçları çalıştırır. Örneğin, "Aslanlarımız kaç yaşında ve vahşi doğada ne yiyorlar?" diye sorulduğunda yaş bilgileri için MCP sunucusunu, beslenme bilgileri için Wikipedia aracını çağırır.
3. Yanıt Biçimlendirici (Sunucu)
Kapsamlı Araştırmacı tüm bilgileri topladıktan sonra çalıştırılacak son aracıdır.
Görevi: Hayvanat Bahçesi Tur Rehberi'nin samimi sesi olarak hareket etmek. Bu özellik, ham verileri (bir veya iki kaynaktan alınmış olabilir) alıp düzenler.
İşlemi: Tüm bilgileri tek, tutarlı ve ilgi çekici bir yanıtta birleştirir. Talimatlarına uyarak önce belirli hayvanat bahçesi bilgilerini sunuyor, ardından ilginç genel bilgileri ekliyor.
Sonuç: Bu aracı tarafından oluşturulan metin, kullanıcının sohbet penceresinde gördüğü eksiksiz ve ayrıntılı yanıttır.
Aracı oluşturma hakkında daha fazla bilgi edinmek istiyorsanız aşağıdaki kaynaklara göz atın:
10. Ortamı temizleme
gcloud run services delete zoo-tour-guide --region=europe-west1 --quiet
gcloud artifacts repositories delete cloud-run-source-deploy --location=europe-west1 --quiet
11. Tebrikler
Codelab'i tamamladığınız için tebrikler.
İşlediğimiz konular
- ADK komut satırı arayüzüyle dağıtım için Python projesi nasıl yapılandırılır?
- SequentialAgent ve ParallelAgent kullanarak çoklu temsilci iş akışı uygulama.
- Araçlarını kullanmak için MCPToolset'i kullanarak uzak bir MCP sunucusuna nasıl bağlanacağınız.
- Wikipedia API gibi harici araçları entegre ederek dahili verileri zenginleştirme
- adk deploy komutunu kullanarak bir aracı Cloud Run'a sunucusuz container olarak dağıtma
12. Anket
Çıkış: