Cloud Run'da MCP sunucusu kullanan bir ADK aracısı oluşturma ve dağıtma

1. Giriş

Bu laboratuvarda, istemci aracısı hizmetinin uygulanması ve dağıtımı ü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 akıl yürütme 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 MCP sunucusunu kullanır ve en iyi tur rehberi deneyimini oluşturmak için Wikipedia'dan yararlanır.

f8d4423edbfe993d.png

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 bir pop-up mağaza gibi düşünebilirsiniz: Yalnızca müşteriler (istekler) geldiğinde açılır ve kaynakları kullanır. 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 gerçekleştirir.
  • İş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 (maliyet açısından avantajlı olan sıfır örneğe kadar ölçeklendirilir).
  • 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 Memorystore 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:

3. Kurulum ve Gereksinimler

Kendi hızınızda ortam kurulumu

  1. 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.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • 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.
  1. 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

Terminal ekranın alt kısmında görünmüyorsa açın:

  • Terminal'i tıklayın.
  • Yeni Terminal'i tıklayın.

d32c46fffa0a30a5.png

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.

6356559df3eccdda.png

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.

5. Proje klasörünü oluşturun

Proje dizinini 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

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 doldurur.

cloudshell edit requirements.txt
google-adk==1.14.0
langchain-community==0.3.27
wikipedia==1.4.0

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_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, .env dosyasını terminalin üstündeki düzenleyicide 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:

  1. 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. 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, modelinize ve sunucu URL'nize erişmek için çok önemli olan .env dosyanızdaki ortam değişkenlerini yükler ve günlük kaydını ayarlar.

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)

3eb9c6772576b906.jpeg

Bir aracı, yalnızca kullanabileceği araçlar kadar iyidir. Bu bölümde, aracımızın sahip olacağı tüm özellikleri tanımlıyoruz. Bunlar arasında veri kaydetmek için özel bir işlev, güvenli MCP sunucumuza bağlanan bir MCP Aracı ve bir Wikipedia Aracı yer alıyor.

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ı

  1. 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.

  1. 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.

  1. 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 çalışır? Adaptör 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

b8a9504b21920969.jpeg

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ıtlama konusunda ö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 1000b9d20f4e134b.jpeg

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 şu 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 ve 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.

Dağıt

Aracınızı dağıtmak için aşağıdaki komutları çalıştırın. uvx komutu, Python paketleri olarak yayınlanan komut satırı araçlarını bu araçların genel olarak yüklenmesini gerektirmeden çalıştırmanıza olanak tanır.

# Run the deployment command
uvx --from google-adk \
adk deploy cloud_run \
  --project=$PROJECT_ID \
  --region=europe-west1 \
  --service_name=zoo-tour-guide \
  --with_ui \
  . \
  -- \
  --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.

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.) Bu URL'yi sonraki görev için 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şim kurmak için herkese açık hizmet URL'sini (https://zoo-tour-guide-123456789.europe-west1.run.app/ gibi) 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şim kurabilirsiniz.

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?"

Temsilciye şu gibi sorular sorun:

Where can I find the polar bears in the zoo and what is their diet?

3244d2f6c3b03088.png e135694253b1be41.png

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 yerler?" diye sorulduğunda yaş bilgileri için MCP sunucusunu, beslenme bilgileri için ise 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.

İşlevi: 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 isterseniz aşağıdaki kaynaklara göz atın:

  1. ADK belgeleri
  2. ADK Temsilcileri İçin Özel Araçlar Oluşturma

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 tebrik ederiz.

İş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ış:

Bu eğitimi nasıl kullanacaksınız?

Sadece okuyun Okuyun ve alıştırmaları tamamlayın