Ir al contenido

Agent Skills con Google ADK y DNS Agent

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.

# ── Python puro (skill_engine.py) ──────────────────────────────────────────
from skill_engine import SkillAgent
from 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, Runner
from google.adk.sessions import InMemorySessionService
from 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.

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

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

ADK usa asyncio. La función principal es async:

import asyncio
from 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"))
python examples/demo_dns_adk.py --demo # 3 escenarios pre-definidos
python examples/demo_dns_adk.py # modo interactivo
python examples/demo_dns_adk.py "tu solicitud" # modo directo

El output es equivalente al de demo_dns.py — mismos escenarios, mismo comportamiento.

Python puro (SkillAgent)Google ADK
DependenciasSolo google-genaigoogle-adk completo
Estado de sesiónNo persiste entre llamadasInMemorySessionService lo gestiona
Multi-agente / A2ANo nativoSoporte nativo con RemoteA2aAgent
Ideal paraScripts simples, demos rápidasSistemas de producción, integración A2A