
Οδηγός Google ADK: Δημιουργία AI Agents από το Μηδέν έως την Παραγωγή
Το Agent Development Kit (ADK) της Google είναι το framework που κάνει επιτέλους τα συστήματα πολλαπλών agents (multi-agent systems) να φαίνονται προσβάσιμα. Εάν έχετε κατασκευάσει AI agents χρησιμοποιώντας LangChain ή CrewAI και νιώθατε ότι παλεύατε περισσότερο με το framework παρά χτίζοντας με αυτό, αυτός ο οδηγός Google ADK σας καθοδηγεί σε όλα, από τον πρώτο σας agent μέχρι την ανάπτυξή του στο Cloud Run.
Τι είναι το Google ADK (και γιατί πρέπει να σας ενδιαφέρει);
Το Agent Development Kit (ADK) της Google είναι ένα open-source Python framework για τη δημιουργία, αξιολόγηση και ανάπτυξη AI agents. Κυκλοφόρησε το 2025 και είναι βελτιστοποιημένο για το Gemini, αλλά υποστηρίζει πάνω από 100 μοντέλα μέσω του LiteLLM. Το κορυφαίο χαρακτηριστικό του ADK είναι η εγγενής orchestration πολλαπλών agents, όπου οι agents αναθέτουν εργασίες σε άλλους agents χωρίς την ανάγκη για «κόλλες» κώδικα (glue code).
Αφού έχω κατασκευάσει agents με LangChain, CrewAI και τώρα με ADK, ecco τι ξεχωρίζει: Το ADK έχει σαφείς αρχές στα σωστά σημεία. Σας παρέχει μια δομή project, ένα ενσωματωμένο UI για developers και μια εντολή ανάπτυξης. Δεν χρειάζεται να συνδυάσετε πέντε διαφορετικές βιβλιοθήκες για να κάνετε έναν βασικό agent να λειτουργήσει.
Εάν το LangChain είναι ένα πολυεργαλείο γενικής χρήσης, το ADK είναι το ειδικά σχεδιασμένο toolkit της Google για workflows πολλαπλών agents. Το CrewAI είναι πιο κοντά φιλοσοφικά, με agents βασισμένους σε ρόλους που συνεργάζονται, αλλά το ADK πάει ένα βήμα παραπέρα με ενσωματωμένη αξιολόγηση, εγγενή βελτιστοποίηση για Gemini και ανάπτυξη στο Cloud Run με μία εντολή. Για μια πιο αναλυτική σύγκριση, δείτε την εμπεριστατωμένη σύγκρισή μας των frameworks agents.
Για кого είναι το ADK; Για developers Python που θέλουν δομημένα συστήματα πολλαπλών agents. Για ομάδες που χρησιμοποιούν ήδη το Google Cloud ή το Gemini. Για όποιον έχει κουραστεί να γράφει boilerplate κώδικα για orchestration.
Να πώς συγκρίνονται τα frameworks με μια ματιά:
| Χαρακτηριστικό | Google ADK | LangGraph | CrewAI |
|---|---|---|---|
| Εγγενής υποστήριξη Multi-agent | Ναι | Μέσω graph | Ναι |
| Υποστήριξη Μοντέλων | Gemini + 100+ via LiteLLM | Οποιοδήποτε | Οποιοδήποτε |
| Ενσωματωμένο UI | Ναι (adk web) | LangSmith | Όχι |
| Ανάπτυξη (Deployment) | Cloud Run, Vertex AI | Προσαρμοσμένη | Προσαρμοσμένη |
| Καμπύλη μάθησης | Χαμηλή-Μεσαία | Υψηλή | Χαμηλή |
| Open source | Ναι (Apache 2.0) | Ναι | Ναι |
Η σύντομη εκδοχή: εάν θέλετε τον ταχύτερο δρόμο από την «ιδέα» στο «αναπτυγμένο σύστημα πολλαπλών agents», το ADK είναι δύσκολο να νικηθεί αυτή τη στιγμή.
Προαπαιτούμενα και Εγκατάσταση Google ADK
Για να ξεκινήσετε με το Google ADK, χρειάζεστε Python 3.9+, ένα κλειδί API για Gemini (διαθέσιμο δωρεάν στο Google AI Studio) και το πακέτο google-adk. Εγκαταστήστε το με pip install google-adk, ορίστε το κλειδί API σας ως environment variable και είστε έτοιμοι να χτίσετε τον πρώτο σας agent σε λιγότερο από 5 λεπτά.
Ακολουθεί η λίστα ελέγχου setup:
- Python 3.9+ (προτείνεται 3.10+ για πλήρη υποστήριξη type hints)
- Ένα κλειδί API Gemini, αποκτήστε ένα δωρεάν στο aistudio.google.com. Το δωρεάν tier σας δίνει 15 αιτήματα ανά λεπτό, που είναι αρκετά για development.
- pip (ή
uvαν προτιμάτε ταχύτητα, λειτουργεί και τοuv pip install google-adk)
Εγκαταστήστε το πακέτο και ορίστε το κλειδί σας:
pip install google-adk
# Set your API key (add to .bashrc/.zshrc for persistence)
export GOOGLE_API_KEY="your-api-key-here"Το ADK αναμένει μια συγκεκριμένη δομή φακέλων. Κάθε agent βρίσκεται στον δικό του φάκελο package:
my_agent/
__init__.py # Exports root_agent
agent.py # Agent definition
.env # Optional: GOOGLE_API_KEY=your-keyΤο όνομα του φακέλου γίνεται το όνομα του package του agent σας, οπότε επιλέξτε κάτι περιγραφικό. Μην το ονομάσετε test ή agent, καθώς θα μπερδέψετε το σύστημα imports της Python.
Pro tip: Εάν χρησιμοποιείτε uv, δημιουργήστε πρώτα ένα virtual environment με uv venv && source .venv/bin/activate. Είναι αισθητά ταχύτερο από το κανονικό pip για την επίλυση εξαρτήσεων.
Δημιουργία του Πρώτου σας Agent με Google ADK
Ο πρώτος σας agent ADK χρειάζεται μόνο τρία πράγματα: ένα όνομα, ένα μοντέλο (όπως gemini-2.0-flash) και ένα string οδηγιών. Ορίστε το στο agent.py, τοποθετήστε το μέσα σε έναν φάκελο με ένα __init__.py και εκτελέστε adk web για να συνομιλήσετε μαζί του μέσω ενός browser UI. Όλη η ρύθμιση απαιτεί περίπου 10 γραμμές Python.
Δημιουργήστε έναν φάκελο με το όνομα my_agent και προσθέστε δύο αρχεία. Πρώτον, τον ορισμό του agent:
# 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"
)Στη συνέχεια, το αρχείο init που εξάγει τον agent σας:
# my_agent/__init__.py
from .agent import root_agentΑυτό το όνομα μεταβλητής έχει σημασία, το ADK αναζητά συγκεκριμένα το root_agent. Εάν το παραλείψετε, θα λάβετε ένα σφάλμα "agent not found" που δεν εξηγεί γιατί.
Τώρα εκτελέστε το. Έχετε δύο επιλογές:
# CLI mode -- chat in your terminal
adk run my_agent
# Web UI mode -- opens a browser interface
adk web my_agentΗ διεπαφή adk web είναι πραγματικά χρήσιμη. Σας δείχνει το πλήρες ίχνος συνομιλίας, ποια εργαλεία κάλεσε ο agent, τι έλαβε το μοντέλο και τι επέστρεψε. Σκεφτείτε το ως Chrome DevTools για τον agent σας. Όταν αρχίσετε να χτίζετε συστήματα πολλαπλών agents αργότερα, αυτό γίνεται απαραίτητο για την κατανόηση της ροής ανάθεσης εργασιών.
Δοκιμάστε να τροποποιήσετε τις οδηγίες για να δείτε πώς αλλάζει η συμπεριφορά. Κάντε τον πειρατή. Κάντε τον να απαντά μόνο σε haiku. Η απόκτηση μιας αίσθησης για το πώς οι οδηγίες διαμορφώνουν τη συμπεριφορά είναι η βάση για everything else σε αυτόν τον οδηγό.
Προσθήκη Προσαρμοσμένων Εργαλείων στον Agent σας με Google ADK
Οι agents ADK γίνονται χρήσιμοι όταν τους δίνετε εργαλεία. Ορίστε μια συνάρτηση Python με μια σαφή docstring και το ADK τη μετατρέπει αυτόματα σε ένα εργαλείο που μπορεί να καλέσει ο agent. Η docstring είναι κρίσιμη, καθώς λέει στο μοντέλο τι κάνει το εργαλείο και πότε να το χρησιμοποιήσει. Το ADK διαθέτει επίσης ενσωματωμένα εργαλεία όπως η Αναζήτηση Google και η εκτέλεση κώδικα.
Τα εργαλεία είναι τα «χέρια» ενός agent. Χωρίς αυτά, ο agent σας μπορεί μόνο να μιλά. Με αυτά, μπορεί να ελέγχει βάσεις δεδομένων, να καλεί APIs, να εκτελεί υπολογισμούς και να αλληλεπιδρά με εξωτερικά συστήματα. Εάν θέλετε να κατανοήσετε πώς λειτουργεί η κλήση συναρτήσεων κάτω από την επιφάνεια, έχουμε έναν ξεχωριστό εμπεριστατωμένο οδηγό γι' αυτό.
Προσαρμοσμένα Εργαλεία Συνάρτησης
Εδώ είναι ένα πρακτικό παράδειγμα, ένα εργαλείο που αναζητά τιμές μετοχών:
# 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"
)Παρατηρήστε τα type hints και την docstring. Δεν είναι προαιρετικές λεπτομέρειες, το ADK τα χρησιμοποιεί για να δημιουργήσει το schema του εργαλείου που βλέπει το μοντέλο. Παραλείψτε την docstring και το μοντέλο δεν θα ξέρει πότε να καλέσει τη συνάρτησή σας. Παραλείψτε τα type hints και θα λάβετε σφάλμα signature.
Ενσωματωμένα Εργαλεία (Αναζήτηση Google, Εκτέλεση Κώδικα)
Το ADK έρχεται με εργαλεία που μπορείτε να χρησιμοποιήσετε χωρίς να γράψετε κανένα κώδικα:
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 επιτρέπει στον agent να κάνει queries στο web σε πραγματικό χρόνο. Το code_execution του δίνει ένα sandboxed περιβάλλον Python για να εκτελεί υπολογισμούς. Αυτά τα δύο alone καλύπτουν έναν εκπληκτικό αριθμό use cases.
Συστήματα Πολλαπλών Agents: Πώς οι Agents του Google ADK Αναθέτουν Εργασίες
Το σύστημα πολλαπλών agents του ADK χρησιμοποιεί έναν root agent που αναθέτει εργασίες σε εξειδικευμένους sub-agents. Κάθε sub-agent χειρίζεται έναν τομέα, έρευνα, συγγραφή, coding. Ο root agent αποφασίζει ποιον sub-agent θα καλέσει based on το αίτημα του χρήστη. Μπορείτε επίσης να χρησιμοποιήσετε το pattern agent-as-tool, όπου ένας agent καλεί έναν άλλον σαν να ήταν συνάρτηση. Το επίσημο blog της Google για συστήματα πολλαπλών agents αναλύει βαθύτερα τα αρχιτεκτονικά patterns.
Σκεφτείτε το σαν έναν project manager που αναθέτει σε ειδικούς. Ο root agent διαβάζει το αίτημα του χρήστη, καταλαβαίνει ποιος ειδικός πρέπει να το χειριστεί και το δρομολογεί accordingly. Οι ειδικοί δεν γνωρίζουν ο ένας τον άλλον, απλά κάνουν τη δουλειά τους και αναφέρουν πίσω.
Pattern Root Agent + Sub-Agents
Εδώ είναι ένα λειτουργικό παράδειγμα με έναν root agent που αναθέτει σε έναν agent έρευνας και έναν agent συγγραφής:
from google.adk.agents import LlmAgent
from google.adk.tools import google_search
# Sub-agent 1: handles research
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"
)
# Sub-agent 2: handles writing
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"
)
# Root agent: delegates to the right sub-agent
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"
)Το πεδίο description σε κάθε sub-agent είναι ο τρόπος με τον οποίο ο root agent καταλαβαίνει τι μπορούν να κάνουν. Γράψτε καθαρές περιγραφές, οι ασαφείς οδηγούν σε κακές αποφάσεις δρομολόγησης.
Pattern Agent-as-Tool
Μερικές φορές θέλετε περισσότερο έλεγχο στο πώς ένας agent καλεί έναν άλλον. Το pattern agent-as-tool τυλίγει έναν sub-agent ως callable tool:
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"
)Χρησιμοποιήστε sub-agents όταν θέλετε ο root agent να αναθέσει πλήρως τον έλεγχο. Χρησιμοποιήστε agent-as-tool όταν θέλετε ο καλών agent να παραμείνει στο τιμόνι και απλά να χρησιμοποιήσει την έξοδο του sub-agent ως είσοδο. Εάν χτίζετε συστήματα όπου οι agents χρειάζονται κοινό context, δείτε τον ολοκληρωμένο οδηγό μας για αρχιτεκτονικές μνήμης agents.
Agents Workflow: Διαδοχικοί, Παράλληλοι και Loop
Πέρα από την ανάθεση που οδηγείται από LLM, το ADK προσφέρει τρεις τύπους workflow agents για deterministic orchestration: ο SequentialAgent εκτελεί sub-agents έναν μετά τον άλλον, ο ParallelAgent τους εκτελεί ταυτόχρονα και ο LoopAgent επαναλαμβάνει μια ακολουθία μέχρι να ικανοποιηθεί μια συνθήκη. Αυτά είναι χρήσιμα όταν χρειάζεστε προβλέψιμη σειρά εκτέλεσης αντί να αφήνετε το LLM να αποφασίζει.
Η διάκριση έχει σημασία. Η ανάθεση που οδηγείται από LLM (το pattern sub_agents παραπάνω) επιτρέπει στο μοντέλο να επιλέξει ποιον θα καλέσει. Οι workflow agents σας δίνουν προγραμματιστικό έλεγχο. Χρησιμοποιήστε workflow agents όταν η σειρά εκτέλεσης είναι γνωστή εξαρχής.
from google.adk.agents import SequentialAgent, ParallelAgent, LlmAgent
# Three agents that must run in order
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: research -> draft -> review
content_pipeline = SequentialAgent(
name="content_pipeline",
sub_agents=[research_agent, draft_agent, review_agent],
description="Runs a complete content creation pipeline"
)Για ανεξάρτητες εργασίες που μπορούν να εκτελεστούν ταυτόχρονα, ο ParallelAgent εξοικονομεί πραγματικό χρόνο:
# Three data fetchers that run concurrently
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"
)| Pattern | Τύπος Agent | Use Case | Παράδειγμα |
|---|---|---|---|
| Pipeline | SequentialAgent | Τα βήματα πρέπει να γίνουν με σειρά | Έρευνα -> Συγγραφή -> Αναθεώρηση |
| Fan-out | ParallelAgent | Ανεξάρτητες εργασίες | Λήψη δεδομένων από 3 APIs ταυτόχρονα |
| Iteration | LoopAgent | Επανάληψη μέχρι την επίτευξη ποιότητας | Πρόχειρο -> Αναθεώρηση -> Διόρθωση (loop) |
Διαχείριση State και Μνήμης
Το ADK διαχειρίζεται την κατάσταση του agent σε δύο επίπεδα: session state (δεδομένα μέσα σε μια συνομιλία, όπως προτιμήσεις χρήστη που συλλέγονται mid-chat) και υπηρεσίες μνήμης (δεδομένα που επιμένουν across conversations). Το session state είναι ένα απλό key-value store accessible via context.state. Η μνήμη χρησιμοποιεί υπηρεσίες όπως InMemoryMemoryService ή VertexAIMemoryBankService για production.
Το session state είναι το πιο απλό. Είναι ένα dictionary attached σε κάθε συνομιλία:
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"
)Για μνήμη across conversations, το είδος όπου ο agent σας θυμάται έναν χρήστη από την περασμένη Τρίτη, χρειάζεστε μια υπηρεσία μνήμης:
from google.adk.memory import InMemoryMemoryService
# For development (data lost on restart)
memory_service = InMemoryMemoryService()
# For production, use VertexAIMemoryBankService
# memory_service = VertexAIMemoryBankService(project="your-project")Πότε χρειάζεστε μνήμη vs session state; Εάν είναι within a single conversation (καλάθι αγορών, current task context), χρησιμοποιήστε session state. Εάν πρέπει να επιβιώσει μεταξύ συνομιλιών (προτιμήσεις χρήστη, past interactions), χρησιμοποιήστε μια υπηρεσία μνήμης. Δείτε τον ολοκληρωμένο οδηγό μας για αρχιτεκτονικές μνήμης agents για production patterns.
Callbacks: Έλεγχος Συμπεριφοράς Agent
Τα callbacks του ADK σας επιτρέπουν να intercept και να modify τη συμπεριφορά του agent σε τέσσερα σημεία: before_model_callback (πριν την κλήση LLM), after_model_callback (μετά την απόκριση LLM), before_tool_callback (πριν την εκτέλεση εργαλείου) και after_tool_callback (μετά το αποτέλεσμα εργαλείου). Χρησιμοποιήστε τα για validation εισόδου, safety filtering, logging ή τροποποίηση αποκρίσεων πριν φτάσουν στον χρήστη.
Τα callbacks είναι εκεί που προσθέτετε guardrails. Σκεφτείτε τα ως middleware για τον agent σας, κάθε αίτημα και απόκριση περνάει μέσα από αυτά και μπορείτε να inspect, modify ή block anything.
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():
# Return a response directly, skipping the model call
return {"blocked": True, "reason": "Request matched safety filter"}
# Return None to proceed normally
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 # Don't modify the result
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 είναι το πιο σημαντικό για production. Εκτελείται πριν από κάθε κλήση LLM, δίνοντάς σας την ευκαιρία να μπλοκάρετε prompt injections, να validate inputs ή να προσθέσετε system context. Εάν επιστρέψετε ένα response object, το ADK παρακάμπτει entirely το μοντέλο. Επιστρέψτε None για να αφήσετε το αίτημα να περάσει. Για περισσότερα patterns, δείτε βαθύτερα patterns για LLM safety guardrails.
Δοκιμή και Αξιολόγηση των ADK Agents σας
Το ADK περιλαμβάνει ένα ενσωματωμένο framework αξιολόγησης με δύο τύπους evaluators: ο ResponseEvaluator ελέγχει εάν η τελική απάντηση του agent είναι σωστή και ο TrajectoryEvaluator επαληθεύει εάν ο agent ακολούθησε τα σωστά βήματα, κάλεσε τα σωστά εργαλεία με τη σωστή σειρά. Γράψτε test cases ως αρχεία JSON και εκτελέστε τα με pytest για να catch regressions πριν την ανάπτυξη.
Γιατί να ασχοληθείτε με testing agents; Επειδή είναι non-deterministic. Η ίδια είσοδος μπορεί να παράγει διαφορετικές εξόδους και μια μικρή αλλαγή στην instruction σας μπορεί να break την κλήση εργαλείων με subtle ways. Σύμφωνα με την εμπειρία μας, οι agents που περνούν trajectory evaluation είναι πολύ πιο reliable σε production από αυτούς που δοκιμάζονται μόνο στην ποιότητα της τελικής εξόδου. Για broader evaluation strategies, δείτε τον οδηγό μας για στρατηγικές αξιολόγησης LLM.
Τα test cases σας μπαίνουν σε ένα αρχείο JSON:
[
{
"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"}}
]
}
]Στη συνέχεια εκτελέστε αξιολογήσεις με pytest. Το repository Python του ADK έχει την πλήρη αναφορά API αξιολόγησης:
# 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. Ορίστε τα thresholds σας based on criticality -- 80% accuracy απόκρισης μπορεί να είναι fine για έναν creative writing agent, αλλά θα θέλατε 95%+ για anything that handles financial data.
Ανάπτυξη του Google ADK Agent σας σε Production
Αναπτύξτε τον agent ADK σας στο Google Cloud Run με μία εντολή: adk deploy cloud_run --project YOUR_PROJECT --region us-central1. Το ADK πακετάρει τον κώδικά σας, χτίζει ένα container και lanzáει ένα serverless endpoint. Για managed hosting, χρησιμοποιήστε το Vertex AI Agent Engine. Για custom infrastructure, το ADK υποστηρίζει επίσης containerization Docker.
Έχουμε αναπτύξει agents ADK στο Cloud Run για internal tools και οι χρόνοι cold start είναι εκπληκτικά γρήγοροι, κάτω από 3 δευτερόλεπτα για έναν basic agent. Για production systems, consider pairing your deployment with monitoring tools for production agents.
Ανάπτυξη στο Cloud Run (Προτείνεται για τους Περισσότερους)
Το Cloud Run είναι ο απλούστερος δρόμος. Μία εντολή και ο agent σας είναι live με ένα HTTPS endpoint:
adk deploy cloud_run \
--project your-gcp-project-id \
--region us-central1 \
--service-name my-agent-service \
--with_uiΗ σημαία --with_ui αναπτύσσει τη διεπαφή ADK Web alongside τον agent σας, ώστε να έχετε ένα chat based on browser για testing σε production. Behind the scenes, το ADK χτίζει μια εικόνα container, την pushάρει στο Google Artifact Registry και δημιουργεί μια υπηρεσία Cloud Run. Η πλήρης ροή ανάπτυξης τεκμηριώνεται στο Google's Cloud Run quickstart for ADK.
Για custom infrastructure, εδώ είναι ένα minimal 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"]Εναλλακτική: Vertex AI Agent Engine
Για enterprise teams που χρειάζονται managed scaling, monitoring και versioning, το Vertex AI Agent Engine χειρίζεται entirely την infrastructure. Ανταλλάσσετε ευελιξία για convenience, no containers to manage, automatic scaling, built-in analytics.
Considerations Κόστους
Real numbers που πρέπει να γνωρίζετε:
- Free tier API Gemini: 15 αιτήματα ανά λεπτό, 1 εκατομμύριο tokens/ημέρα. Αρκετό για development και light demos.
- Gemini 2.0 Flash (paid): $0.10 per million input tokens, $0.40 per million output tokens. Αρκετά φθηνό για production.
- Free tier Cloud Run: 2 εκατομμύρια αιτήματα/μήνα, 360.000 GB-seconds compute. Ένας basic agent που χειρίζεται 1.000 αιτήματα/ημέρα μένει well within free tier.
- Tip βελτιστοποίησης: Χρησιμοποιήστε
gemini-2.0-flash(όχιgemini-2.0-pro) για sub-agents που κάνουν simple routing ή formatting. Reserve τα πιο capable models για agents που κάνουν complex reasoning.
Πώς η Techsy Προσεγγίζει την Ανάπτυξη AI Agents
Στην Techsy, έχουμε χτίσει συστήματα πολλαπλών agents για clients χρησιμοποιώντας ADK, LangGraph και CrewAI. Η επιλογή framework depends on your stack: εάν είστε already στο Google Cloud, το ADK eliminates a lot of integration friction. Εάν χρειάζεστε υποστήριξη LLM multi-provider από day one, το LangGraph σας δίνει περισσότερη ευελιξία.
Η τυπική μας engagement starts with architecture consulting, mapping your use case to the right agent patterns, followed by prototype development and Cloud Run deployment. Έχουμε διαπιστώσει ότι οι ομάδες εξοικονομούν 2-3 εβδομάδες getting the architecture right upfront instead of refactoring later.
Χτίζετε AI agents για την ομάδα σας; Λάβετε δωρεάν consultation, θα σας βοηθήσουμε να επιλέξετε το σωστό framework και strategy deployment.
Κοινά Σφάλματα και Αντιμετώπιση Προβλημάτων
Αυτά είναι τα σφάλματα που συναντάμε most often when getting started with ADK. Γλιτώστε τον χρόνο debugging:
| Σφάλμα | Αιτία | Λύση |
|---|---|---|
GOOGLE_API_KEY not set | Missing environment variable | export GOOGLE_API_KEY="your-key" ή προσθήκη στο .env |
Model not found | Λάθος string ονόματος μοντέλου | Χρησιμοποιήστε exact IDs: gemini-2.0-flash, όχι gemini-flash |
Tool function signature error | Missing type hints ή docstring | Προσθέστε type hints σε όλες τις παραμέτρους, προσθέστε μια descriptive docstring |
Agent not found | Λάθος δομή φακέλων ή missing export | Βεβαιωθείτε ότι το __init__.py εξάγει το root_agent με αυτό το exact όνομα |
Rate limit exceeded (429) | Too many API calls στο free tier | Upgrade σε paid tier Gemini ή προσθήκη exponential backoff |
ImportError: google-adk | Package not installed | Εκτελέστε pip install google-adk στο active virtual environment σας |
Debugging tip: Το adk web είναι ο καλύτερός σας φίλος εδώ. Δείχνει το full conversation trace, every model call, tool invocation και agent delegation, σε real time. Όταν κάτι πάει wrong σε ένα σύστημα πολλαπλών agents, το web UI σας δείχνει exactly where the chain broke.
FAQ
Τι είναι το Google ADK;
Το Agent Development Kit (ADK) της Google είναι ένα open-source Python framework για τη δημιουργία, αξιολόγηση και ανάπτυξη AI agents. Είναι βελτιστοποιημένο για τα μοντέλα Google Gemini αλλά υποστηρίζει πάνω από 100 LLMs μέσω integration LiteLLM. Η core strength του ADK είναι η εγγενής orchestration πολλαπλών agents με ενσωματωμένα εργαλεία, ένα dev UI και ανάπτυξη στο Cloud Run με μία εντολή.
Είναι δωρεάν η χρήση του Google ADK;
Ναι. Το ίδιο το ADK είναι open-source under the Apache 2.0 license. Χρειάζεστε ένα κλειδί API Gemini, το οποίο έχει ένα free tier offering 15 αιτήματα ανά λεπτό και 1 εκατομμύριο tokens per day. Τα κόστη cloud deployment depend on your hosting choice, το free tier του Cloud Run καλύπτει 2 εκατομμύρια αιτήματα per month.
Ποια είναι η διαφορά μεταξύ Google ADK και LangChain;
Το ADK είναι το opinionated framework της Google optimized for Gemini με εγγενή orchestration πολλαπλών agents και ενσωματωμένα εργαλεία deployment. Το LangChain είναι model-agnostic με broader third-party integrations αλλά significantly more complexity. Το ADK είναι better for Gemini-first teams wanting fast deployment; το LangChain suits multi-provider setups needing maximum flexibility.
Υποστηρίζει το Google ADK συστήματα πολλαπλών agents;
Ναι, και είναι το flagship feature του ADK. Δημιουργείτε έναν root agent που αναθέτει σε εξειδικευμένους sub-agents based on user requests. Το ADK προσφέρει επίσης SequentialAgent, ParallelAgent και LoopAgent για deterministic workflow orchestration. Το pattern agent-as-tool lets agents call other agents as callable functions.
Πώς αναπτύσσω έναν agent Google ADK;
Εκτελέστε adk deploy cloud_run --project YOUR_PROJECT --region us-central1 για serverless deployment στο Google Cloud Run. Προσθέστε --with_ui για να include the browser-based chat interface. Μπορείτε επίσης να αναπτύξετε στο Vertex AI Agent Engine για managed hosting ή να χτίσετε ένα Docker container για custom infrastructure.
Μπορεί το Google ADK να χρησιμοποιήσει μοντέλα άλλα από το Gemini;
Ναι. Το ADK υποστηρίζει 100+ μοντέλα μέσω integration LiteLLM, including Anthropic Claude, OpenAI GPT-4, Meta Llama και Mistral. Ορίστε την παράμετρο model στο LiteLLM model string, για παράδειγμα, litellm/anthropic/claude-3-sonnet ή litellm/openai/gpt-4o. Τα μοντέλα Gemini work natively without the LiteLLM prefix.
Τι είναι το ADK Web UI;
Ένα browser-based debugging interface launched with adk web your_agent_folder. Displays real-time conversation traces, tool calls, agent delegation chains και state changes as they happen. Το Web UI είναι essential για debugging multi-agent systems because it shows exactly which sub-agent handled each request.
Υποστηρίζει το Google ADK το MCP (Model Context Protocol);
Ναι. Το ADK έχει εγγενή υποστήριξη Model Context Protocol, allowing agents to connect to any MCP-compatible tool server for external tools and data sources. Αυτό makes ADK agents interoperable with the growing MCP ecosystem. Για background on the protocol, see our MCP guide.
Πώς δοκιμάζω agents ADK;
Το ADK ships with built-in evaluators: ResponseEvaluator για checking output quality against expected answers και TrajectoryEvaluator για verifying the agent called the right tools in the right order. Γράψτε test cases ως αρχεία JSON defining inputs, expected outputs και expected tool call sequences, then run them with pytest.
Ποια έκδοση Python απαιτεί το Google ADK;
Το ADK requires Python 3.9 or higher. Python 3.10+ is recommended for full type hinting support, which matters because ADK uses type hints to generate tool schemas. Python 3.11 or 3.12 also offer meaningful performance improvements for agent workloads. Install with pip install google-adk.