Google Gemini y Anthropic Claude
Integración de modelos fundacionales de alto rendimiento con Google Gemini REST v1beta y Anthropic Claude Messages API.
Google Gemini y Anthropic Claude representan dos de las familias de modelos de frontera más potentes para flujos de trabajo basados en agentes. chatflow-agent proporciona motores dedicados y nativos para ambos proveedores, optimizados para baja latencia, cero dependencia cautiva de SDKs y ejecución fiable de llamadas a herramientas.
Motor Google Gemini
GeminiEngine se comunica directamente con la API para desarrolladores de Gemini (v1beta) para ejecutar conversaciones de múltiples turnos y llamadas a funciones.
Variante de API de Gemini Soportada
GeminiEngine es compatible con la API de desarrolladores de Gemini (claves de API de Google AI Studio). Google Cloud Vertex AI no está soportado por este motor.
Autenticación y Credenciales
El motor lee las credenciales desde las siguientes fuentes, en orden de prioridad:
api_keypasado directamente aGeminiEngine(api_key="...")oAgent(api_key="...").- Variable de entorno
GEMINI_API_KEY. - Variable de entorno
GOOGLE_API_KEY.
Por defecto, la clave de API se transmite a través de la cabecera HTTP segura x-goog-api-key. Pasar api_key_in_query=True transmite la clave como parámetro de consulta ?key=:
import os
from chatflow_agent import Agent, Runner
from chatflow_agent.core.engines.gemini import GeminiEngine
# Recomendado: Autenticación segura mediante cabecera HTTP
gemini_engine = GeminiEngine(
api_key=os.environ.get("GEMINI_API_KEY"),
timeout_seconds=30.0,
max_retries=3,
)
assistant = Agent(
name="GeminiAssistant",
model="gemini-2.5-flash",
engine=gemini_engine,
instructions="Provide concise, accurate answers.",
)Pool de Conexiones y Arquitectura sin Dependencias de SDK
La implementación de Gemini experimentó una evolución arquitectónica entre versiones:
- En
v0.3.4(Estable): El motor importaba el SDK oficialgoogle-genaide Google (from google import genai), requiriendo la instalación de la biblioteca cliente externa. - En
v0.4.0rc1(Pre-lanzamiento): El motor fue rediseñado íntegramente utilizandohttpxasíncrono nativo contrahttps://generativelanguage.googleapis.com/v1beta. Esto elimina dependencias pesadas y habilita un pool de conexiones reutilizables entre turnos de agentes:
# [no-exec: requires real gemini api key]
import asyncio
from chatflow_agent import Agent, Runner
agent = Agent(name="Assistant", model="gemini-2.5-flash")
runner = Runner(starting_agent=agent)
async def main():
# En v0.3.x, ejecuta turnos asíncronos directamente sobre el runner
res1 = await runner.run_async("session-1", "What is quantum computing?")
res2 = await runner.run_async("session-1", "Summarize in 3 bullet points.")
print(res2.text)
asyncio.run(main())Configuración de Proxies Personalizados
Para enrutar peticiones de Gemini a través de una pasarela o proxy corporativo, define la variable de entorno GOOGLE_GEMINI_BASE_URL:
export GOOGLE_GEMINI_BASE_URL="https://gemini-proxy.internal.corp"El motor añade automáticamente /v1beta a la URL base.
Motor Anthropic Claude
AnthropicEngine proporciona integración nativa con Claude 3.5 Sonnet, Claude 3.5 Haiku y Claude 3 Opus de Anthropic a través de la Messages API.
Autenticación y Cabeceras
Las peticiones a Anthropic requieren la cabecera x-api-key y la cabecera anthropic-version (por defecto "2023-06-01").
El motor lee las credenciales de:
api_keypasado explícitamente aAnthropicEngine(api_key="...")oAgent(api_key="...").- Variable de entorno
ANTHROPIC_API_KEY.
Regla de Seguridad de Credenciales
Al igual que OpenAIEngine, AnthropicEngine solo transmite ANTHROPIC_API_KEY al endpoint oficial https://api.anthropic.com/v1. Si especificas un base_url personalizado, debes suministrar api_key de forma explícita.
import os
from chatflow_agent import Agent
from chatflow_agent.core.engines.anthropic import AnthropicEngine
claude_engine = AnthropicEngine(
api_key=os.environ.get("ANTHROPIC_API_KEY"),
timeout=60.0,
)
editor = Agent(
name="Editor",
model="claude-3-5-sonnet-20241022",
engine=claude_engine,
instructions="Edit and refine technical documentation.",
)Reintentos Automáticos y Retroceso con Jitter
AnthropicEngine gestiona automáticamente los límites de tasa (429 Too Many Requests) y errores temporales de pasarela (500, 502, 503, 504) mediante retroceso exponencial:
- Reintentos Máximos: 3 intentos.
- Demora Base: 1.0 segundo.
- Demora Máxima: 10.0 segundos.
Si una respuesta 429 incluye la cabecera Retry-After, el motor respeta el retraso solicitado por el proveedor antes de reintentar.
Colaboración Multimodelo entre Agentes
Una ventaja clave de chatflow-agent es componer enjambres donde distintos agentes emplean diferentes modelos fundacionales según sus fortalezas:
from chatflow_agent import Agent, Runner
from chatflow_agent.core.engines.gemini import GeminiEngine
from chatflow_agent.core.engines.anthropic import AnthropicEngine
gemini = GeminiEngine()
claude = AnthropicEngine()
researcher = Agent(
name="Researcher",
model="gemini-2.5-flash",
engine=gemini,
instructions="Gather facts quickly using Gemini's high-throughput processing.",
)
synthesizer = Agent(
name="Synthesizer",
model="claude-3-5-sonnet-20241022",
engine=claude,
instructions="Synthesize gathered facts into clear, well-structured prose.",
)
# Conectar agentes mediante handoffs
researcher.add_handoff(synthesizer)
synthesizer.add_handoff(researcher)
runner = Runner(starting_agent=researcher)En este enjambre:
- El Investigador se ejecuta sobre Gemini 2.5 Flash para ingestión y búsqueda de alto rendimiento.
- Una vez recopilados los datos, la sesión se transfiere al Sintetizador sobre Claude 3.5 Sonnet.
- Los mensajes históricos y los IDs de llamadas a herramientas se normalizan automáticamente, evitando incompatibilidades de formato entre proveedores.