Ir al contenido

Detalles de la especificación

La especificación principal (v1/spec.yaml) define el vocabulario estándar que comparten todos los manifiestos de proveedores y tiempos de ejecución.

Estos parámetros tienen un significado consistente en todos los proveedores:

ParameterTypeDescription
temperaturefloatControl de aleatoriedad (0.0 – 2.0)
max_tokensintegerMáximo de tokens de respuesta
top_pfloatUmbral de muestreo por núcleo
streambooleanHabilitar respuesta en streaming
stopstring[]Secuencias de parada
toolsobject[]Definiciones de herramientas/funciones
tool_choicestring/objectModo de selección de herramientas
response_formatobjectFormato de salida estructurada

Los manifiestos de proveedores mapean estos nombres estándar a nombres de parámetros específicos del proveedor. Por ejemplo, OpenAI usa max_completion_tokens mientras que Anthropic usa max_tokens.

La especificación define tipos de eventos de streaming unificados que emiten los tiempos de ejecución:

EventDescription
PartialContentDeltaFragmento de contenido de texto
ThinkingDeltaBloque de razonamiento/pensamiento (modelos de pensamiento extendido)
ToolCallStartedComienza la invocación de función/herramienta
PartialToolCallStreaming de argumentos de llamada a herramienta
ToolCallEndedInvocación de herramienta completa
StreamEndFlujo de respuesta completo
StreamErrorError a nivel de flujo
MetadataEstadísticas de uso, información del modelo

Los manifiestos de proveedores declaran reglas basadas en JSONPath que mapean eventos específicos del proveedor a estos tipos estándar.

V2 define 13 códigos de error estandarizados. Los errores específicos del proveedor se mapean a estos códigos para un manejo consistente entre tiempos de ejecución:

CodeNameCategoryRetryableFallbackable
E1001invalid_requestClientNoNo
E1002authenticationClientNoYes
E1003permission_deniedClientNoNo
E1004not_foundClientNoNo
E1005request_too_largeClientNoNo
E2001rate_limitedRateYesYes
E2002quota_exhaustedRateNoYes
E3001server_errorServerYesYes
E3002overloadedServerYesYes
E3003timeoutServerYesYes
E4001conflictOperationalYesNo
E4002cancelledOperationalNoNo
E9999unknownUnknownNoNo
  • Retryable — Los tiempos de ejecución pueden reintentar la solicitud (con backoff) ante fallos transitorios
  • Fallbackable — Los tiempos de ejecución pueden probar un proveedor o modelo alternativo en una cadena de fallback

La especificación define estrategias de reintento estándar:

retry_policy:
strategy: "exponential_backoff"
max_retries: 3
initial_delay_ms: 1000
max_delay_ms: 30000
backoff_multiplier: 2.0
retryable_errors:
- "rate_limited"
- "overloaded"
- "server_error"
- "timeout"

Razones de finalización normalizadas para la completación de la respuesta:

ReasonDescription
end_turnFinalización natural
max_tokensSe alcanzó el límite de tokens
tool_useEl modelo quiere llamar a una herramienta
stop_sequenceSe encontró secuencia de parada
content_filterFiltrado por política de contenido

Los proveedores se categorizan en familias de API para evitar confusión de formato de solicitud/respuesta:

  • openai — APIs compatibles con OpenAI (también usado por Groq, Together, DeepSeek, etc.)
  • anthropic — API de mensajes Anthropic
  • gemini — API Google Gemini
  • custom — Formato específico del proveedor