Cómo crear tu primer agente con Google ADK usando Firebase Genkit
Como crear tu primer agente con Google ADK ?
Como crear tu primer agente con Google ADK ? La respuesta práctica hoy es usar Firebase Genkit: el framework code‑first de Google para construir, testear y desplegar agentes de IA en producción. Aquí tienes una guía técnica, paso a paso, pensada para desarrolladores y tech leads que quieren pasar de experimentos a agentes confiables y auditables.
Resumen rápido (lectores con prisa)
Firebase Genkit es un Agent Development Kit (ADK) que estructura agentes como Flows tipados, soporta tool calling y trazabilidad. Úsalo cuando necesites agentes mantenibles, testeables y auditables con deploy serverless. Funciona conectando Flows tipados con herramientas externas y desplegando como funciones HTTP.
Qué es: un framework code‑first para agentes de IA. Por qué: trazabilidad, tests y despliegue sencillo. Cómo: define Flows (Zod), añade Tools y despliega a Firebase/Cloud Run.
Ideas clave
- Flows tipados: entradas y salidas validadas con Zod para reducir errores y hallucinations.
- Tool calling: interfaz controlada a APIs/DBs que mejora seguridad y auditabilidad.
- Trazabilidad: traces con tokens, latencias y llamadas a tools para debugging y auditoría.
- Deploy serverless: exporta Flows como funciones HTTP y despliega con Firebase/Cloud Run.
Tabla de contenidos
- Como crear tu primer agente con Google ADK ?
- Resumen rápido (lectores con prisa)
- Ideas clave
- Qué es Google ADK (Genkit) y por qué usarlo
- Requisitos rápidos
- Paso 1 — Inicializa el scaffold (2–5 minutos)
- Paso 2 — Define el Flow: contrato y handler
- Paso 3 — Añade Tools (llamadas externas controladas)
- Paso 4 — Dev UI y pruebas automáticas
- Paso 5 — Deploy y orquestación
- Limitaciones y criterios para migrar
- Buenas prácticas operativas
- Conclusión
- Dominicode Labs
- FAQ
Qué es Google ADK (Genkit) y por qué usarlo
Firebase Genkit actúa como un “Agent Development Kit” real: estructura agentes como Flows tipados, soporta tool calling, ofrece trazabilidad (traces) y facilita deploy serverless en Firebase/Cloud Run. No es un playground: es ingeniería.
Beneficios clave
- Flows tipados (Zod) para entradas/salidas.
- Tools como interfaces a APIs o DBs.
- Trace UI para tokens, latencias y llamadas a herramientas.
- Deploy automático a Firebase Functions/Cloud Run.
Requisitos rápidos
- Node.js 20+
- Firebase CLI:
npm i -g firebase-toolsyfirebase login - Proyecto Google Cloud con facturación habilitada para Vertex AI (si usas Gemini)
- Opcional: Docker para ejecutar dev UI local
Referencias: Vertex AI, Genkit repo.
Paso 1 — Inicializa el scaffold (2–5 minutos)
Crea el proyecto y usa el inicializador de genkit:
mkdir mi-agente-genkit
cd mi-agente-genkit
npx genkit init
El asistente te pedirá TypeScript y proveedor de modelo (Vertex AI / Gemini). Genera estructura con src/ y genkit.config.ts. Guarda las claves de API en variables de entorno, nunca en el repo.
Paso 2 — Define el Flow: contrato y handler
En Genkit un agente es un Flow: entrada validada, salida validada, handler con lógica y llamadas a herramientas. Usa Zod para evitar parsing frágil.
Ejemplo mínimo
import { genkit } from '@genkit-ai/core';
import { z } from 'zod';
import { gemini15Flash } from '@genkit-ai/googleai';
const sdk = genkit({ /* config */ });
const In = z.object({ code: z.string(), language: z.enum(['typescript','python','go']) });
const Out = z.object({ suggestion: z.string(), risk: z.enum(['LOW','MEDIUM','HIGH']) });
export const codeRefactorAgent = sdk.defineFlow(
{ name: 'codeRefactor', inputSchema: In, outputSchema: Out },
async (input) => {
const prompt = `Actúa como Staff Engineer... analiza este código...`;
const resp = await sdk.generate({
model: gemini15Flash,
prompt,
output: { format: 'json', schema: Out }
});
return resp.output(); // validado por schema
}
);
Puntos técnicos
Usa output: { format: 'json', schema } para minimizar hallucinations estructurales; valida todo en entrada; añade timeouts/try‑catch.
Paso 3 — Añade Tools (llamadas externas controladas)
Tools son funciones que el LLM puede invocar para consultar docs, bases de datos o sistemas internos.
Ejemplo de tool para buscar en npm registry
const npmSearch = sdk.defineTool({
name: 'npmSearch',
inputSchema: z.object({ q: z.string() }),
outputSchema: z.object({ name: z.string(), version: z.string(), desc: z.string() }),
call: async ({ q }) => {
const r = await fetch(`https://registry.npmjs.org/-/v1/search?text=${q}`);
const json = await r.json();
return json.objects[0].package;
}
});
El modelo decide cuándo invocar la tool; Genkit ejecuta la función y retorna el resultado al LLM. Esto mantiene seguridad y auditabilidad.
Paso 4 — Dev UI y pruebas automáticas
Dev UI
Levanta la UI local: npx genkit start. En localhost:4000:
- Ejecuta flows con JSON.
- Inspecciona traces: prompt final, tool calls, tokens y latencia.
- Guarda artifacts (diffs, screenshots) para auditoría.
Pruebas automáticas
Integra tests unitarios: mockea respuestas de tools y valida que el Flow cumple output schema. Automatiza en CI.
Paso 5 — Deploy y orquestación
Exporta el Flow como función HTTP y despliega
firebase init functions- Importa y exporta el Flow en
functions/src/index.ts. firebase deploy --only functions
Orquestación empresarial
Para orquestación empresarial conecta el endpoint a n8n o un workflow manager: n8n → HTTP Request → parse → branch por riesgo.
Limitaciones y criterios para migrar
Usa Genkit cuando:
- Necesitas trazabilidad, tests y tool calling.
- Quieres despliegue serverless rápido.
Migra a código tradicional si
- La lógica es intensiva en CPU/GPU (procesamiento batch).
- Tienes requisitos de latencia estrictos o compliance que impiden servicios cloud gestionados.
- Coste por token/despliegue supera reescribir servicio en microservicios.
Métrica práctica: si tu agente supera 5–10k invocaciones/mes o la fricción en coste/latencia aumenta, planifica migración.
Buenas prácticas operativas
- Principio de menor privilegio para tools y claves.
- Versiona prompts como código y mantén changelogs.
- Define SLAs y monitorea latencia, tasa de errores y ratio de respuestas estructuradas válidas.
- Implementa fallback humano para casos de riesgo alto.
Conclusión
Saber cómo crear tu primer agente con Google ADK (Genkit) significa pensar en agentes como software: flujos tipados, herramientas controladas, pruebas y trazabilidad. Genkit transforma experimentos en sistemas desplegables y auditables; úsalo para prototipos robustos y como base técnica antes de escalar. Recursos y docs: Genkit, Vertex AI, repo.
Dominicode Labs
Si trabajas en automatización, agentes o workflows y buscas recursos prácticos y experimentos aplicados, revisa Dominicode Labs. Es una continuación lógica para prototipos técnicos y pruebas de integración.
FAQ
- ¿Qué es Firebase Genkit y cómo se diferencia de un playground?
- ¿Cuándo debo usar Genkit en lugar de microservicios tradicionales?
- ¿Qué requisitos de infraestructura necesito?
- ¿Cómo aseguro las claves y tools?
- ¿Cómo se gestionan las pruebas y CI para Flows?
- ¿Qué métricas debo monitorear en producción?
¿Qué es Firebase Genkit y cómo se diferencia de un playground?
Firebase Genkit es un framework code‑first para construir agentes de IA como Flows tipados, con soporte para tool calling y trazabilidad. A diferencia de un playground, está diseñado para ingeniería: testing, deploy serverless y auditoría, no solo experimentación interactiva.
¿Cuándo debo usar Genkit en lugar de microservicios tradicionales?
Usa Genkit cuando necesitas trazabilidad, tests y tool calling integrados rápidamente y cuando la lógica del agente beneficia de validación tipada. Considera migrar a microservicios si la carga crece a niveles donde coste/latencia o uso intensivo de GPU/CPU hacen más eficiente una implementación dedicada.
¿Qué requisitos de infraestructura necesito?
Node.js 20+, Firebase CLI (instala con npm i -g firebase-tools), y un proyecto Google Cloud con facturación habilitada para Vertex AI si usas Gemini. Docker es opcional para ejecutar la Dev UI local.
¿Cómo aseguro las claves y tools?
Aplica principio de menor privilegio para las claves y cuentas de servicio. Guarda credenciales en variables de entorno o secretos gestionados; nunca en el repositorio. Limita permisos de las tools a lo estrictamente necesario.
¿Cómo se gestionan las pruebas y CI para Flows?
Mockea respuestas de tools en tests unitarios y valida que los outputs cumplan el schema Zod. Automatiza esos tests en CI y añade pruebas de integración que revisen traces y artefactos relevantes.
¿Qué métricas debo monitorear en producción?
Monitorea latencia, tasa de errores, tokens consumidos y ratio de respuestas válidas según el schema. Define SLAs y habilita fallback humano para casos de riesgo alto.
