Agent Skills con Google ADK y DNS Agent
Mismo agente, distinto framework
Sección titulada «Mismo agente, distinto framework»examples/demo_dns_adk.py implementa exactamente el mismo DNS Agent con los mismos 6 skills, pero usando Google ADK en lugar de SkillAgent. El comportamiento es idéntico — la diferencia está en la infraestructura del framework.
Comparativa: Python puro vs ADK
Sección titulada «Comparativa: Python puro vs ADK»# ── Python puro (skill_engine.py) ──────────────────────────────────────────from skill_engine import SkillAgentfrom dns_skills import list_dns_records, create_dns_record, ...
agent = SkillAgent( skills=[list_dns_records, create_dns_record, find_dns_record, update_dns_record, validate_dns, check_propagation], instructions="Eres un agente DNS...", name="DNS Agent")agent.run("Crea api.tudominio.com apuntando a 203.0.113.50")
# ── Google ADK (demo_dns_adk.py) ────────────────────────────────────────────from google.adk import Agent, Runnerfrom google.adk.sessions import InMemorySessionServicefrom dns_skills import list_dns_records, create_dns_record, ...
agent = Agent( name="dns_agent", model="gemini-2.5-flash", tools=[list_dns_records, create_dns_record, find_dns_record, update_dns_record, validate_dns, check_propagation], instruction="Eres un agente DNS...")
session_service = InMemorySessionService()runner = Runner(agent=agent, session_service=session_service, app_name="dns_demo")Los skills (dns_skills.py) son exactamente las mismas funciones Python en ambos casos — no hay que reescribir nada.
Componentes de ADK
Sección titulada «Componentes de ADK»Define el agente: modelo, tools e instrucciones.
agent = Agent( name="dns_agent", model="gemini-2.5-flash", tools=[...], # Las mismas funciones Python de dns_skills.py instruction="..." # System prompt — Capa 1)Orquesta la ejecución: conecta el agente con el session service y gestiona el ciclo de conversación.
runner = Runner( agent=agent, session_service=session_service, app_name="dns_demo")InMemorySessionService
Sección titulada «InMemorySessionService»Mantiene el historial de conversación en memoria. ADK lo gestiona automáticamente.
session_service = InMemorySessionService()session = session_service.create_session(app_name="dns_demo", user_id="user")Ejecución asíncrona
Sección titulada «Ejecución asíncrona»ADK usa asyncio. La función principal es async:
import asynciofrom google.genai import types
async def run_agent(user_message: str): content = types.Content( role="user", parts=[types.Part(text=user_message)] ) async for event in runner.run_async( user_id="user", session_id=session.id, new_message=content ): if event.is_final_response(): print(event.content.parts[0].text)
asyncio.run(run_agent("Crea api.tudominio.com apuntando a 203.0.113.50"))Correr la demo
Sección titulada «Correr la demo»python examples/demo_dns_adk.py --demo # 3 escenarios pre-definidospython examples/demo_dns_adk.py # modo interactivopython examples/demo_dns_adk.py "tu solicitud" # modo directoEl output es equivalente al de demo_dns.py — mismos escenarios, mismo comportamiento.
Cuándo usar ADK vs Python puro
Sección titulada «Cuándo usar ADK vs Python puro»Python puro (SkillAgent) | Google ADK | |
|---|---|---|
| Dependencias | Solo google-genai | google-adk completo |
| Estado de sesión | No persiste entre llamadas | InMemorySessionService lo gestiona |
| Multi-agente / A2A | No nativo | Soporte nativo con RemoteA2aAgent |
| Ideal para | Scripts simples, demos rápidas | Sistemas de producción, integración A2A |