OpenAI y Endpoints Compatibles
Configuración, preajustes, pasarelas personalizadas y políticas de seguridad para OpenAI, Groq, DeepSeek y xAI Grok.
OpenAIEngine proporciona soporte para modelos que implementan el protocolo estándar /chat/completions de OpenAI. Más allá de los modelos oficiales de OpenAI (como GPT-4o y o3-mini), este motor universal se conecta directamente con xAI Grok, DeepSeek, Groq, servidores locales de inferencia (vLLM, LM Studio) y pasarelas de API corporativas.
Preajustes Integrados de Proveedores
Para reducir la configuración manual de endpoints, chatflow-agent incluye preajustes verificados para los principales proveedores compatibles con OpenAI:
| Clave de Proveedor | Endpoint Oficial (base_url) | Variable de Entorno | Modelo Predeterminado |
|---|---|---|---|
"openai" | https://api.openai.com/v1 | OPENAI_API_KEY | gpt-4o-mini |
"grok" / "xai" | https://api.x.ai/v1 | XAI_API_KEY | grok-2 |
"deepseek" | https://api.deepseek.com/v1 | DEEPSEEK_API_KEY | deepseek-chat |
"groq" | https://api.groq.com/openai/v1 | GROQ_API_KEY | llama-3.3-70b-versatile |
"ollama" | http://localhost:11434/v1 | OLLAMA_API_KEY | gemma2:9b |
Configuración de Modelos Oficiales de OpenAI
Para utilizar modelos de OpenAI, proporciona tu clave de API mediante la variable de entorno OPENAI_API_KEY o directamente en el constructor del agente o motor:
import os
from chatflow_agent import Agent, Runner
from chatflow_agent.core.engines.openai_compatible import OpenAIEngine
# Opción 1: Resolución implícita mediante el prefijo del nombre del modelo
analyst = Agent(
name="Analyst",
model="gpt-4o",
instructions="Analyze structured operational data.",
)
# Opción 2: Asignación explícita del proveedor
writer = Agent(
name="Writer",
provider="openai",
model="gpt-4o-mini",
instructions="Draft concise summaries.",
)
# Opción 3: Instanciación explícita del motor con parámetros personalizados
custom_engine = OpenAIEngine(
api_key=os.environ.get("OPENAI_API_KEY"),
provider="openai",
timeout=45.0,
)
senior_agent = Agent(
name="SeniorAgent",
model="gpt-4o",
engine=custom_engine,
instructions="Review critical business decisions.",
)Proveedores de Terceros: Groq, DeepSeek y xAI Grok
Conectarse a proveedores de inferencia de ultra alta velocidad o modelos de razonamiento especializados solo requiere especificar el atributo provider o el prefijo de modelo estándar:
import os
from chatflow_agent import Agent
from chatflow_agent.core.engines.openai_compatible import OpenAIEngine
# Requiere la variable de entorno GROQ_API_KEY
groq_engine = OpenAIEngine(
provider="groq",
api_key=os.environ.get("GROQ_API_KEY"),
)
speed_agent = Agent(
name="SpeedAgent",
model="llama-3.3-70b-versatile",
engine=groq_engine,
instructions="Provide real-time triage responses.",
)Endpoints Personalizados y Pasarelas Privadas
Al conectarse a instancias privadas (vLLM, LM Studio, Azure OpenAI proxy o LiteLLM), proporciona un base_url personalizado:
from chatflow_agent import Agent
from chatflow_agent.core.engines.openai_compatible import OpenAIEngine
# Pasarela corporativa de inferencia personalizada
gateway_engine = OpenAIEngine(
base_url="https://ai-gateway.internal.corp/v1",
api_key="internal-gateway-token",
timeout=60.0,
)
internal_agent = Agent(
name="InternalAssistant",
model="custom-llama-3",
engine=gateway_engine,
instructions="Answer queries using internal compliance guidelines.",
)Regla de Seguridad: Prevención de Fugas de Credenciales
Credenciales Explícitas Obligatorias en Hosts Personalizados
chatflow-agent verifica estrictamente el host de destino antes de transmitir tokens de API:
- La clave de entorno (ej.
OPENAI_API_KEY) solo se envía al endpoint oficial (https://api.openai.com/v1). - Si se pasa un
base_urlpersonalizado sin unapi_keyexplícito,OpenAIEnginegenera unValueErroren lugar de reenviar tu clave de la nube a un host ajeno. - Si tu proxy local o interno no requiere autenticación, pasa
api_key=""de forma explícita.
# [INCORRECTO] Genera ValueError para proteger tu OPENAI_API_KEY de fugas accidentales:
# engine = OpenAIEngine(base_url="https://untrusted-proxy.example.com/v1")
# [CORRECTO] Suministra credenciales explícitamente para hosts personalizados:
engine = OpenAIEngine(
base_url="https://proxy.example.com/v1",
api_key="proxy-secret-token",
)
# [CORRECTO] Servidor interno no autenticado:
open_engine = OpenAIEngine(
base_url="http://192.168.1.100:8000/v1",
api_key="",
)Restricciones y Normalización de IDs de Llamadas a Herramientas
OpenAI impone una longitud máxima estricta de 40 caracteres en el tool_call_id de las respuestas de llamadas a funciones. En entornos multi-agente donde los agentes transfieren sesiones entre diferentes proveedores (por ejemplo, herramientas de Anthropic Claude que generan IDs superiores a 40 caracteres), chatflow-agent garantiza la compatibilidad del protocolo:
- Truncamiento y Hashing: Si un mensaje histórico existente contiene un ID de llamada a herramienta superior a 40 caracteres,
OpenAIEnginelo sustituye de forma segura por un identificador determinista derivado mediante SHA-256 (call_+ 24 caracteres hexadecimales). - Normalización de Tipos de Esquema: El motor normaliza automáticamente los tipos de parámetros JSON Schema (
_lowercase_schema_types) preservando al mismo tiempo esquemas de propiedades personalizadas, garantizando la compatibilidad entre distintas versiones de modelos de OpenAI.
Resolución de Problemas
| Error | Causa | Resolución |
|---|---|---|
ValueError: A custom or unofficial base_url was provided ... without an explicit api_key | La protección de seguridad detectó un base_url personalizado sin haber suministrado un api_key explícito. | Pasa api_key="tu-clave" o api_key="" explícitamente para confirmar el host de destino. |
ProviderError: 401 Unauthorized | Clave de API inválida o expirada. | Verifica OPENAI_API_KEY, GROQ_API_KEY o DEEPSEEK_API_KEY en tu entorno. |
ProviderError: 429 Too Many Requests | Límite de tasa excedido o cuota agotada. | Implementa limitación de tasa, amplía tu plan o utiliza un preajuste de proveedor alternativo. |
Visión General de Proveedores de LLM
Arquitectura de motores, resolución dinámica de proveedores, políticas de seguridad y ejecución multimodelo en chatflow-agent.
Google Gemini y Anthropic Claude
Integración de modelos fundacionales de alto rendimiento con Google Gemini REST v1beta y Anthropic Claude Messages API.