
Google ADK Eğitimi: Sıfırdan Üretime Yapay Zeka Ajanları Oluşturun
Google'ın Agent Development Kit (ADK), çoklu ajan sistemlerini sonunda erişilebilir hissettiren framework. LangChain veya CrewAI ile yapay zeka ajanları geliştirirken framework ile savaştığınızı hissettiyseniz, bu Google ADK eğitimi her şeyi başından sona anlatıyor: ilk ajanınızdan Cloud Run'a dağıtıma kadar.
Google ADK Nedir (Ve Neden Önemli)?
Google'ın Agent Development Kit (ADK), yapay zeka ajanları oluşturmak, değerlendirmek ve dağıtmak için geliştirilmiş açık kaynaklı bir Python framework'ü. 2025'te yayımlanan ADK, Gemini için optimize edilmiş olmakla birlikte LiteLLM aracılığıyla 100'den fazla modeli destekliyor. ADK'nın en güçlü özelliği ise yerel çoklu ajan orkestrasyonu -- ajanlar, ekstra bağlantı kodu yazmadan işleri başka ajanlara devredebiliyor.
LangChain, CrewAI ve ADK ile ajan geliştirdikten sonra şunu söyleyebilirim: ADK doğru yerlerde kararlı tercihler yapıyor. Size hazır bir proje yapısı, yerleşik bir geliştirme arayüzü ve tek bir dağıtım komutu sunuyor. Temel bir ajanı çalıştırmak için beş farklı kütüphaneyi bir araya getirmenize gerek kalmıyor.
LangChain genel amaçlı bir çakı gibiyse, ADK çoklu ajan iş akışları için Google'ın özelleştirilmiş araç seti. CrewAI felsefe açısından daha yakın -- iş birliği yapan rol tabanlı ajanlar -- ama ADK bunu yerleşik değerlendirme, yerel Gemini optimizasyonu ve tek komutla Cloud Run dağıtımıyla bir adım ileriye taşıyor. Daha ayrıntılı bir karşılaştırma için ajan framework'leri karşılaştırma rehberimize göz atabilirsiniz.
ADK kimin için uygun? Yapılandırılmış çoklu ajan sistemleri isteyen Python geliştiricileri. Google Cloud veya Gemini kullanan ekipler. Orkestrasyonu sıfırdan yazmaktan bıkmış herkes.
Framework'lerin bir bakışta karşılaştırması:
| Özellik | Google ADK | LangGraph | CrewAI |
|---|---|---|---|
| Yerel çoklu ajan | Evet | Graf üzerinden | Evet |
| Model desteği | Gemini + LiteLLM ile 100+ | Herhangi | Herhangi |
| Yerleşik arayüz | Evet (adk web) | LangSmith | Hayır |
| Dağıtım | Cloud Run, Vertex AI | Özel | Özel |
| Öğrenme eğrisi | Düşük-Orta | Yüksek | Düşük |
| Açık kaynak | Evet (Apache 2.0) | Evet | Evet |
Kısa özet: "fikir"den "dağıtılmış çoklu ajan sistemine" en hızlı yolu istiyorsanız, şu an ADK'nın önüne geçmek zor.
Gereksinimler ve Google ADK Kurulumu
Google ADK'ya başlamak için Python 3.9+, bir Gemini API anahtarı (Google AI Studio'da ücretsiz alabilirsiniz) ve google-adk paketi gerekiyor. pip install google-adk komutuyla kurulumu yapın, API anahtarınızı ortam değişkeni olarak ayarlayın; 5 dakikadan kısa sürede ilk ajanınızı yazmaya hazır olursunuz.
Kurulum kontrol listesi:
- Python 3.9+ (tam tür ipucu desteği için 3.10+ önerilir)
- Gemini API anahtarı -- aistudio.google.com adresinden ücretsiz alabilirsiniz. Ücretsiz katman dakikada 15 istek sunuyor; geliştirme için fazlasıyla yeterli.
- pip (veya hız tercih ediyorsanız
uv--uv pip install google-adkda çalışıyor)
Paketi kurun ve anahtarınızı ayarlayın:
pip install google-adk
# API anahtarınızı ayarlayın (kalıcı hale getirmek için .bashrc/.zshrc dosyasına ekleyin)
export GOOGLE_API_KEY="api-anahtariniz"ADK belirli bir klasör yapısı bekliyor. Her ajan kendi paket dizininde yaşıyor:
my_agent/
__init__.py # root_agent'ı dışa aktarır
agent.py # Ajan tanımı
.env # İsteğe bağlı: GOOGLE_API_KEY=anahtarinizKlasörün adı ajanın paket adı oluyor, bu yüzden açıklayıcı bir isim seçin. test veya agent gibi isimler Python'un içe aktarma sistemini karıştırabilir.
Profesyonel ipucu: uv kullanıyorsanız önce uv venv && source .venv/bin/activate ile bir sanal ortam oluşturun. Bağımlılık çözümlemesinde normal pip'e kıyasla belirgin biçimde daha hızlı.
İlk Google ADK Ajanınızı Oluşturmak
İlk ADK ajanınız için yalnızca üç şey gerekiyor: bir ad, bir model (örneğin gemini-2.0-flash) ve bir talimat dizesi. agent.py dosyasında tanımlayın, __init__.py ile birlikte bir klasöre koyun ve tarayıcı arayüzünde sohbet etmek için adk web komutunu çalıştırın. Tüm kurulum yaklaşık 10 satır Python ile tamamlanıyor.
my_agent adlı bir klasör oluşturun ve iki dosya ekleyin. Önce ajan tanımı:
# my_agent/agent.py
from google.adk.agents import LlmAgent
root_agent = LlmAgent(
name="my_assistant",
model="gemini-2.0-flash",
instruction="""You are a helpful coding assistant.
You explain concepts clearly and provide working code examples.
Keep responses concise but thorough.""",
description="A coding assistant that explains concepts and writes code"
)Ardından ajanı dışa aktaran init dosyası:
# my_agent/__init__.py
from .agent import root_agentBu değişken adı önemli -- ADK özellikle root_agent arıyor. Bunu atlarsanız nedenini açıklamayan "ajan bulunamadı" hatası alırsınız.
Şimdi çalıştırın. İki seçeneğiniz var:
# CLI modu -- terminalinizde sohbet
adk run my_agent
# Web arayüzü modu -- tarayıcı arayüzü açılır
adk web my_agentadk web arayüzü gerçekten kullanışlı. Tam konuşma izini, ajanın hangi araçları çağırdığını, modelin ne aldığını ve ne döndürdüğünü gösteriyor. Bunu Chrome DevTools'un ajanınız için versiyonu olarak düşünebilirsiniz. Çoklu ajan sistemleri geliştirmeye başladığınızda bu, delegasyon akışını anlamak için vazgeçilmez hale geliyor.
Talimatı değiştirerek davranışın nasıl değiştiğini görün. Bir korsan yapın. Yalnızca haiku ile yanıt vermesini sağlayın. Talimatların davranışı nasıl şekillendirdiğini kavramak, bu eğitimdeki her şeyin temelini oluşturuyor.
Google ADK Ajanınıza Özel Araçlar Eklemek
ADK ajanları, araç verdiğinizde işe yarayan sistemlere dönüşüyor. Net bir docstring ile bir Python fonksiyonu tanımlayın; ADK otomatik olarak onu ajanın çağırabileceği bir araca dönüştürüyor. Docstring kritik -- modele aracın ne işe yaradığını ve ne zaman kullanacağını anlatıyor. ADK ayrıca Google Arama ve kod çalıştırma gibi yerleşik araçlarla birlikte geliyor.
Araçlar bir ajanın elleri gibidir. Araçsız ajan yalnızca konuşabilir. Araçlarla veritabanlarını sorgulayabilir, API'leri çağırabilir, hesaplamalar yapabilir ve dış sistemlerle etkileşim kurabilir. Fonksiyon çağrısının perde arkasında nasıl çalıştığını merak ediyorsanız, bu konuda ayrı bir rehberimiz var.
Özel Fonksiyon Araçları
İşte pratik bir örnek -- hisse senedi fiyatlarını sorgulayan bir araç:
# my_agent/agent.py
from google.adk.agents import LlmAgent
def get_stock_price(ticker: str) -> dict:
"""Get the current stock price for a given ticker symbol.
Args:
ticker: The stock ticker symbol (e.g., 'AAPL', 'GOOGL', 'MSFT')
Returns:
A dictionary with the ticker and its current price.
"""
# In production, you'd call a real API here
mock_prices = {"AAPL": 198.50, "GOOGL": 175.20, "MSFT": 425.80}
price = mock_prices.get(ticker.upper(), None)
if price:
return {"ticker": ticker.upper(), "price": price, "currency": "USD"}
return {"error": f"Ticker {ticker} not found"}
root_agent = LlmAgent(
name="finance_assistant",
model="gemini-2.0-flash",
instruction="You help users check stock prices. Use the get_stock_price tool when asked about any stock.",
tools=[get_stock_price],
description="A financial assistant that looks up stock prices"
)Tür ipuçlarına ve docstring'e dikkat edin. Bunlar isteğe bağlı değil -- ADK, modelin gördüğü araç şemasını oluşturmak için bunları kullanıyor. Docstring'i atlarsanız model fonksiyonunuzu ne zaman çağıracağını bilemez. Tür ipuçlarını atlarsanız imza hatası alırsınız.
Yerleşik Araçlar (Google Arama, Kod Çalıştırma)
ADK, herhangi bir kod yazmadan kullanabileceğiniz hazır araçlarla birlikte geliyor:
from google.adk.agents import LlmAgent
from google.adk.tools import google_search, code_execution
root_agent = LlmAgent(
name="research_agent",
model="gemini-2.0-flash",
instruction="You research topics using Google Search and can run Python code to analyze data.",
tools=[google_search, code_execution],
description="A research agent with search and code execution capabilities"
)google_search ajanın gerçek zamanlı web araması yapmasını sağlıyor. code_execution ise hesaplamalar için izole bir Python ortamı sunuyor. Bu ikisi başlı başına çok sayıda kullanım senaryosunu karşılıyor.
Çoklu Ajan Sistemleri: Google ADK Ajanları İşleri Nasıl Devrediyor?
ADK'nın çoklu ajan sistemi, görevleri uzmanlaşmış alt ajanlara devreden bir kök ajan kullanıyor. Her alt ajan bir alanı yönetiyor -- araştırma, yazma, kodlama. Kök ajan, kullanıcının isteğine göre hangi alt ajanı çağıracağına karar veriyor. Ayrıca bir ajanın diğerini fonksiyon gibi çağırdığı ajan-araç olarak kalıbını da kullanabilirsiniz. Google'ın çoklu ajan sistemleri hakkındaki resmi blog yazısı mimari kalıpları daha ayrıntılı ele alıyor.
Bunu, proje yöneticisinin uzmanlara iş dağıtmasına benzetebilirsiniz. Kök ajan kullanıcının isteğini okur, hangi uzmanın uygun olduğunu belirler ve yönlendirir. Uzmanlar birbirini tanımaz -- sadece işini yapar ve geri bildirir.
Kök Ajan + Alt Ajanlar Kalıbı
İşte araştırma ve yazma ajanına devreden bir kök ajan örneği:
from google.adk.agents import LlmAgent
from google.adk.tools import google_search
# Alt ajan 1: araştırma yapar
research_agent = LlmAgent(
name="researcher",
model="gemini-2.0-flash",
instruction="You research topics thoroughly using Google Search. Return factual, well-sourced information.",
tools=[google_search],
description="Researches topics and returns factual information"
)
# Alt ajan 2: yazma yapar
writing_agent = LlmAgent(
name="writer",
model="gemini-2.0-flash",
instruction="You write clear, engaging content based on provided information. Focus on readability and accuracy.",
description="Writes polished content from research notes"
)
# Kök ajan: doğru alt ajana yönlendirir
root_agent = LlmAgent(
name="content_manager",
model="gemini-2.0-flash",
instruction="""You manage content creation.
- When the user wants information gathered, delegate to the researcher.
- When the user wants content written or edited, delegate to the writer.
- You can chain both: research first, then write.""",
sub_agents=[research_agent, writing_agent],
description="Manages content creation by delegating to research and writing specialists"
)Her alt ajandaki description alanı, kök ajanın onların ne yapabildiğini anlamasını sağlıyor. Açıklamaları net yazın -- belirsiz açıklamalar hatalı yönlendirmeye yol açar.
Ajan-Araç Olarak Kalıbı
Bazen bir ajanın diğerini nasıl çağırdığı üzerinde daha fazla kontrol istersiniz. Ajan-araç olarak kalıbı, alt ajanı çağrılabilir bir araç olarak sarmalıyor:
from google.adk.tools import agent_tool
research_tool = agent_tool.AgentTool(agent=research_agent)
root_agent = LlmAgent(
name="writer_with_research",
model="gemini-2.0-flash",
instruction="You write articles. Use the research tool to gather facts before writing.",
tools=[research_tool],
description="A writer that can research topics on demand"
)Kök ajanın kontrolü tamamen devretmesini istiyorsanız alt ajanları kullanın. Çağıran ajanın kontrolde kalmasını ve alt ajanın çıktısını girdi olarak kullanmasını istiyorsanız ajan-araç kalıbını tercih edin. Ajanların paylaşılan bağlam gerektirdiği sistemler kuruyorsanız kapsamlı ajan hafızası mimarileri rehberimize bakabilirsiniz.
İş Akışı Ajanları: Sıralı, Paralel ve Döngü
LLM güdümlü delegasyonun ötesinde ADK, deterministik orkestrasyon için üç iş akışı ajan türü sunuyor: SequentialAgent alt ajanları sırayla çalıştırır, ParallelAgent eş zamanlı çalıştırır, LoopAgent ise bir koşul sağlanana kadar diziyi tekrarlar. Bu türler, LLM'in kararına bırakmak yerine yürütme sırası önceden belirlendiğinde kullanışlıdır.
Bu ayrım önemli. LLM güdümlü delegasyon (yukarıdaki sub_agents kalıbı) modelin kimi çağıracağını seçmesine olanak tanır. İş akışı ajanları ise programatik kontrol sunar. Yürütme sırası önceden biliniyorsa iş akışı ajanlarını kullanın.
from google.adk.agents import SequentialAgent, ParallelAgent, LlmAgent
# Sırayla çalışması gereken üç ajan
research_agent = LlmAgent(name="researcher", model="gemini-2.0-flash",
instruction="Research the given topic.", description="Researches topics")
draft_agent = LlmAgent(name="drafter", model="gemini-2.0-flash",
instruction="Write a draft based on the research.", description="Writes drafts")
review_agent = LlmAgent(name="reviewer", model="gemini-2.0-flash",
instruction="Review the draft for accuracy and clarity.", description="Reviews content")
# Pipeline: araştırma -> taslak -> inceleme
content_pipeline = SequentialAgent(
name="content_pipeline",
sub_agents=[research_agent, draft_agent, review_agent],
description="Runs a complete content creation pipeline"
)Aynı anda çalışabilen bağımsız görevler için ParallelAgent gerçek zaman tasarrufu sağlıyor:
# Eş zamanlı çalışan üç veri çekici
fetch_news = LlmAgent(name="news_fetcher", model="gemini-2.0-flash",
instruction="Fetch latest tech news.", description="Fetches news")
fetch_stocks = LlmAgent(name="stock_fetcher", model="gemini-2.0-flash",
instruction="Fetch stock market summary.", description="Fetches stocks")
fetch_weather = LlmAgent(name="weather_fetcher", model="gemini-2.0-flash",
instruction="Fetch weather forecast.", description="Fetches weather")
morning_briefing = ParallelAgent(
name="morning_briefing",
sub_agents=[fetch_news, fetch_stocks, fetch_weather],
description="Gathers morning briefing data in parallel"
)| Kalıp | Ajan Türü | Kullanım Senaryosu | Örnek |
|---|---|---|---|
| Pipeline | SequentialAgent | Adımların sıralı olması | Araştır -> Yaz -> İncele |
| Fan-out | ParallelAgent | Bağımsız görevler | 3 API'den eş zamanlı veri çek |
| Tekrarlama | LoopAgent | Kalite sağlanana kadar tekrar | Taslak -> İnceleme -> Düzelt (döngü) |
Durum ve Hafızayı Yönetmek
ADK, ajan durumunu iki düzeyde yönetiyor: oturum durumu (bir konuşma içindeki veriler, örneğin sohbet sırasında toplanan kullanıcı tercihleri) ve hafıza servisleri (konuşmalar arasında kalıcı veriler). Oturum durumu, context.state üzerinden erişilen basit bir anahtar-değer deposudur. Hafıza ise üretim için InMemoryMemoryService veya VertexAIMemoryBankService gibi servisler kullanır.
Oturum durumu daha basit olanı. Her konuşmaya bağlı bir sözlük:
from google.adk.agents import LlmAgent
def save_preference(key: str, value: str, context) -> str:
"""Save a user preference to session state.
Args:
key: The preference name (e.g., 'language', 'theme')
value: The preference value
context: The ADK context object
Returns:
Confirmation message
"""
context.state[key] = value
return f"Saved preference: {key} = {value}"
def get_preference(key: str, context) -> str:
"""Retrieve a user preference from session state.
Args:
key: The preference name to look up
context: The ADK context object
Returns:
The preference value or a not-found message
"""
value = context.state.get(key, "Not set")
return f"{key} = {value}"
root_agent = LlmAgent(
name="personalized_assistant",
model="gemini-2.0-flash",
instruction="You remember user preferences. Save them when told, recall them when asked.",
tools=[save_preference, get_preference],
description="An assistant that remembers user preferences"
)Konuşmalar arası hafıza -- ajanın kullanıcıyı geçen haftadan hatırladığı tür -- için bir hafıza servisi gerekiyor:
from google.adk.memory import InMemoryMemoryService
# Geliştirme için (veriler yeniden başlatmada kaybolur)
memory_service = InMemoryMemoryService()
# Üretim için VertexAIMemoryBankService kullanın
# memory_service = VertexAIMemoryBankService(project="projeniz")Hafıza ile oturum durumunu ne zaman kullanmalısınız? Tek bir konuşma içindeyse (alışveriş sepeti, mevcut görev bağlamı) oturum durumunu kullanın. Konuşmalar arasında hayatta kalması gerekiyorsa (kullanıcı tercihleri, geçmiş etkileşimler) bir hafıza servisi kullanın. Üretim kalıpları için kapsamlı ajan hafızası mimarileri rehberimize göz atabilirsiniz.
Geri Çağrılar: Ajan Davranışını Kontrol Etmek
ADK geri çağrıları, ajan davranışını dört noktada ele geçirip değiştirmenizi sağlıyor: before_model_callback (LLM çağrısından önce), after_model_callback (LLM yanıtından sonra), before_tool_callback (araç çalıştırmadan önce) ve after_tool_callback (araç sonucundan sonra). Giriş doğrulama, güvenlik filtreleme, kayıt tutma veya yanıtları kullanıcıya ulaşmadan önce değiştirmek için kullanabilirsiniz.
Geri çağrılar güvenlik önlemlerini eklediğiniz yerdir. Bunları ajanınız için bir ara katman olarak düşünün -- her istek ve yanıt bunlardan geçiyor; istediğinizi inceleyebilir, değiştirebilir veya engelleyebilirsiniz.
from google.adk.agents import LlmAgent
def safety_filter(callback_context, llm_request):
"""Block requests containing harmful content patterns."""
user_message = str(llm_request)
blocked_patterns = ["ignore your instructions", "pretend you are"]
for pattern in blocked_patterns:
if pattern.lower() in user_message.lower():
# Yanıtı doğrudan döndür, model çağrısını atla
return {"blocked": True, "reason": "Request matched safety filter"}
# Normal devam için None döndür
return None
def log_tool_usage(callback_context, tool_name, tool_result):
"""Log every tool call for monitoring."""
print(f"[TOOL LOG] {tool_name}: {tool_result}")
return None # Sonucu değiştirme
root_agent = LlmAgent(
name="safe_assistant",
model="gemini-2.0-flash",
instruction="You are a helpful assistant.",
before_model_callback=safety_filter,
after_tool_callback=log_tool_usage,
description="A safety-filtered assistant with tool logging"
)before_model_callback üretim için en önemli olanı. Her LLM çağrısından önce çalışarak prompt enjeksiyonlarını engelleme, girdileri doğrulama veya sistem bağlamı ekleme fırsatı sunuyor. Bir yanıt nesnesi döndürürseniz ADK modeli tamamen atlıyor. Devam etmek için None döndürün. Daha fazla kalıp için LLM güvenlik önlemleri hakkındaki rehberimize bakabilirsiniz.
ADK Ajanlarınızı Test Etmek ve Değerlendirmek
ADK, iki değerlendirici türüyle birlikte yerleşik bir değerlendirme framework'ü içeriyor: ResponseEvaluator ajanın nihai yanıtının doğruluğunu kontrol eder, TrajectoryEvaluator ise ajanın doğru adımları attığını -- doğru araçları doğru sırada çağırdığını -- doğrular. Test senaryolarını JSON dosyaları olarak yazın ve dağıtım öncesinde regresyonları yakalamak için pytest ile çalıştırın.
Ajanları neden test etmeye değer? Çünkü deterministik değiller. Aynı girdi farklı çıktılar üretebilir ve talimattaki küçük bir değişiklik araç çağrısını beklenmedik şekillerde bozabilir. Deneyimlerimize göre, yörünge değerlendirmesini geçen ajanlar üretimde yalnızca nihai çıktı kalitesiyle test edilenlere kıyasla çok daha güvenilir. Daha geniş değerlendirme stratejileri için LLM değerlendirme rehberimize bakabilirsiniz.
Test senaryolarınız bir JSON dosyasına gidiyor:
[
{
"input": "What's the stock price of AAPL?",
"expected_output": "198.50",
"expected_trajectory": [
{"tool_name": "get_stock_price", "args": {"ticker": "AAPL"}}
]
},
{
"input": "Compare AAPL and GOOGL prices",
"expected_output": "AAPL.*198.*GOOGL.*175",
"expected_trajectory": [
{"tool_name": "get_stock_price", "args": {"ticker": "AAPL"}},
{"tool_name": "get_stock_price", "args": {"ticker": "GOOGL"}}
]
}
]Ardından pytest ile değerlendirmeleri çalıştırın. Tam değerlendirme API referansı için ADK Python deposuna bakabilirsiniz:
# test_agent.py
import pytest
from google.adk.evaluation import ResponseEvaluator, TrajectoryEvaluator
def test_stock_agent_response():
evaluator = ResponseEvaluator(agent=root_agent)
results = evaluator.evaluate("test_cases.json")
assert results.pass_rate >= 0.8, f"Response pass rate too low: {results.pass_rate}"
def test_stock_agent_trajectory():
evaluator = TrajectoryEvaluator(agent=root_agent)
results = evaluator.evaluate("test_cases.json")
assert results.pass_rate >= 0.9, f"Trajectory pass rate too low: {results.pass_rate}"pytest test_agent.py -v ile çalıştırın. Eşikleri kritikliğe göre belirleyin -- yaratıcı yazarlık ajanı için %80 yanıt doğruluğu yeterli olabilir, ancak finansal veri işleyen bir şey için %95+ istersiniz.
Google ADK Ajanınızı Üretime Dağıtmak
ADK ajanınızı tek bir komutla Google Cloud Run'a dağıtın: adk deploy cloud_run --project PROJE_ADINIZ --region us-central1. ADK kodunuzu paketler, bir konteyner oluşturur ve sunucusuz bir uç nokta başlatır. Yönetilen barındırma için Vertex AI Agent Engine'i kullanın. Özel altyapı için ADK ayrıca Docker konteynerizasyonunu destekliyor.
Dahili araçlar için ADK ajanlarını Cloud Run'a dağıttık ve soğuk başlatma süreleri şaşırtıcı derecede hızlı -- temel ajan için 3 saniyenin altında. Üretim sistemleri için dağıtımınızı üretim ajanları için izleme araçlarıyla eşleştirmeyi düşünebilirsiniz.
Cloud Run'a Dağıtım (Çoğu Kullanım için Önerilen)
Cloud Run en basit yol. Tek komut, HTTPS uç noktasıyla çalışan ajanınız hazır:
adk deploy cloud_run \
--project google-cloud-proje-id \
--region us-central1 \
--service-name my-agent-service \
--with_ui--with_ui bayrağı, ajanınızın yanında ADK Web arayüzünü de dağıtıyor; üretimde test için tarayıcı tabanlı bir sohbet elde ediyorsunuz. Perde arkasında ADK bir konteyner imajı oluşturur, Google Artifact Registry'e aktarır ve bir Cloud Run servisi yaratır. Tam dağıtım akışı Google'ın ADK için Cloud Run hızlı başlangıç rehberinde belgelenmiş.
Özel altyapı için minimal bir Dockerfile:
FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
EXPOSE 8080
CMD ["adk", "api_server", "--port", "8080", "my_agent"]Alternatif: Vertex AI Agent Engine
Yönetilen ölçekleme, izleme ve sürümleme isteyen kurumsal ekipler için Vertex AI Agent Engine altyapıyı tamamen hallediyor. Esneklikten vazgeçip rahatlık elde ediyorsunuz -- yönetilecek konteyner yok, otomatik ölçekleme, yerleşik analitik.
Maliyet Değerlendirmeleri
Bilmeniz gereken gerçek rakamlar:
- Gemini API ücretsiz katmanı: Dakikada 15 istek, günde 1 milyon token. Geliştirme ve hafif demolar için yeterli.
- Gemini 2.0 Flash (ücretli): 1 milyon girdi tokeni için 0,10 dolar, 1 milyon çıktı tokeni için 0,40 dolar. Üretim için oldukça uygun fiyatlı.
- Cloud Run ücretsiz katmanı: Aylık 2 milyon istek, 360.000 GB-saniye işlem. Günde 1.000 istek işleyen temel ajan ücretsiz katmanda rahatlıkla kalıyor.
- Optimizasyon ipucu: Basit yönlendirme veya biçimlendirme yapan alt ajanlar için
gemini-2.0-flashkullanın (pro değil). Daha yetenekli modelleri karmaşık akıl yürütme yapan ajanlar için saklayın.
Techsy'nin Yapay Zeka Ajan Geliştirmeye Yaklaşımı
Techsy olarak müşteriler için ADK, LangGraph ve CrewAI kullanarak çoklu ajan sistemleri geliştirdik. Framework seçimi stack'inize bağlı: zaten Google Cloud'dayasanız ADK entegrasyon maliyetini önemli ölçüde azaltıyor. Başından itibaren çoklu sağlayıcı LLM desteğine ihtiyaç duyuyorsanız LangGraph daha fazla esneklik sunuyor.
Tipik çalışmamız mimari danışmanlıkla başlıyor -- kullanım senaryonuzu doğru ajan kalıplarıyla eşleştirme -- ardından prototip geliştirme ve Cloud Run dağıtımı geliyor. Ekiplerin, mimariyi en baştan doğru kurarak sonradan yeniden yapılandırmak yerine 2-3 hafta tasarruf ettiğini gördük.
Ekibiniz için yapay zeka ajanları mı geliştiriyorsunuz? Ücretsiz danışmanlık alın -- doğru framework ve dağıtım stratejisini seçmenize yardımcı olalım.
Yaygın Hatalar ve Sorun Giderme
ADK'ya başlarken en sık karşılaştığımız hatalar bunlar. Kendinizi hata ayıklamaktan kurtarın:
| Hata | Neden | Çözüm |
|---|---|---|
GOOGLE_API_KEY not set | Eksik ortam değişkeni | export GOOGLE_API_KEY="anahtariniz" veya .env dosyasına ekleyin |
Model not found | Yanlış model adı dizesi | Tam ID kullanın: gemini-2.0-flash, gemini-flash değil |
Tool function signature error | Eksik tür ipuçları veya docstring | Tüm parametrelere tür ipuçları ekleyin, açıklayıcı docstring yazın |
Agent not found | Yanlış klasör yapısı veya eksik dışa aktarma | __init__.py dosyasının tam olarak root_agent adıyla dışa aktardığından emin olun |
Rate limit exceeded (429) | Ücretsiz katmanda çok fazla API çağrısı | Ücretli Gemini katmanına geçin veya üstel geri çekilme ekleyin |
ImportError: google-adk | Paket kurulmamış | Aktif sanal ortamınızda pip install google-adk çalıştırın |
Hata ayıklama ipucu: adk web burada en iyi dostunuz. Tam konuşma izini -- her model çağrısını, araç çağrısını ve ajan delegasyonunu -- gerçek zamanlı gösteriyor. Çoklu ajan sisteminde bir şeyler yanlış gittiğinde web arayüzü zincirin tam olarak nerede koptuğunu gösteriyor.
SSS
Google ADK Nedir?
Google'ın Agent Development Kit (ADK), yapay zeka ajanları oluşturmak, değerlendirmek ve dağıtmak için geliştirilmiş açık kaynaklı bir Python framework'üdür. Google Gemini modelleri için optimize edilmiş olmakla birlikte LiteLLM entegrasyonu aracılığıyla 100'den fazla LLM'i destekliyor. ADK'nın temel gücü; yerleşik araçlar, geliştirme arayüzü ve tek komutla Cloud Run dağıtımıyla birlikte gelen yerel çoklu ajan orkestrasyonudur.
Google ADK Ücretsiz mi?
Evet. ADK'nın kendisi Apache 2.0 lisansı altında açık kaynaktır. Dakikada 15 istek ve günde 1 milyon token sunan ücretsiz katmanlı bir Gemini API anahtarına ihtiyacınız var. Bulut dağıtım maliyetleri barındırma tercihinize göre değişiyor -- Cloud Run'ın ücretsiz katmanı aylık 2 milyon isteği kapsıyor.
Google ADK ile LangChain Arasındaki Fark Nedir?
ADK, yerel çoklu ajan orkestrasyonu ve yerleşik dağıtım araçlarıyla Gemini için optimize edilmiş, Google'ın kararlı tercihler yaptığı bir framework'tür. LangChain daha geniş üçüncü taraf entegrasyonlarıyla model bağımsızdır, ancak çok daha karmaşıktır. ADK, hızlı dağıtım isteyen Gemini odaklı ekipler için daha iyidir; LangChain ise maksimum esneklik gerektiren çoklu sağlayıcı kurulumları için uygundur.
Google ADK Çoklu Ajan Sistemlerini Destekliyor mu?
Evet, ve bu ADK'nın öne çıkan özelliği. Kullanıcı isteklerine göre uzmanlaşmış alt ajanlara devreden bir kök ajan oluşturuyorsunuz. ADK ayrıca deterministik iş akışı orkestrasyonu için SequentialAgent, ParallelAgent ve LoopAgent sunuyor. Ajan-araç olarak kalıbı, ajanların diğer ajanları çağrılabilir fonksiyonlar olarak kullanmasına olanak tanıyor.
Google ADK Ajanını Nasıl Dağıtabilirim?
Google Cloud Run'a sunucusuz dağıtım için adk deploy cloud_run --project PROJE_ADINIZ --region us-central1 komutunu çalıştırın. Tarayıcı tabanlı sohbet arayüzünü eklemek için --with_ui ekleyin. Yönetilen barındırma için Vertex AI Agent Engine'e de dağıtabilir veya özel altyapı için Docker konteyneri oluşturabilirsiniz.
Google ADK Gemini Dışında Model Kullanabilir mi?
Evet. ADK, LiteLLM entegrasyonu aracılığıyla Anthropic Claude, OpenAI GPT-4, Meta Llama ve Mistral dahil 100'den fazla modeli destekliyor. Model parametresini LiteLLM model dizesine ayarlayın -- örneğin litellm/anthropic/claude-3-sonnet veya litellm/openai/gpt-4o. Gemini modelleri LiteLLM öneki olmadan doğrudan çalışıyor.
ADK Web Arayüzü Nedir?
adk web ajan_klasor_adiniz komutuyla başlatılan tarayıcı tabanlı bir hata ayıklama arayüzüdür. Gerçek zamanlı konuşma izlerini, araç çağrılarını, ajan delegasyon zincirlerini ve durum değişikliklerini gerçekleştikçe gösteriyor. Web arayüzü çoklu ajan sistemlerini hata ayıklamak için vazgeçilmez; her isteği hangi alt ajanın işlediğini tam olarak gösteriyor.
Google ADK MCP'yi (Model Context Protocol) Destekliyor mu?
Evet. ADK, ajanların harici araçlar ve veri kaynakları için herhangi bir MCP uyumlu araç sunucusuna bağlanmasına olanak tanıyan yerel Model Context Protocol desteğine sahip. Bu, ADK ajanlarını büyüyen MCP ekosistemiyle birlikte çalışabilir kılıyor. Protokol hakkında arka plan için MCP rehberimize bakabilirsiniz.
ADK Ajanlarını Nasıl Test Edebilirim?
ADK yerleşik değerlendiricilerle birlikte geliyor: beklenen yanıtlara karşı çıktı kalitesini kontrol eden ResponseEvaluator ve ajanın doğru sırada doğru araçları çağırdığını doğrulayan TrajectoryEvaluator. Girdileri, beklenen çıktıları ve beklenen araç çağrısı dizilerini tanımlayan JSON dosyaları olarak test senaryoları yazın, ardından pytest ile çalıştırın.
Google ADK Hangi Python Sürümünü Gerektiriyor?
ADK, Python 3.9 veya üstünü gerektiriyor. ADK araç şemaları oluşturmak için tür ipuçlarını kullandığından, tam tür ipucu desteği için Python 3.10+ önerilir. Python 3.11 veya 3.12, ajan iş yükleri için anlamlı performans iyileştirmeleri de sunuyor. pip install google-adk ile kurabilirsiniz.