CreaRack-SL

Handler CF Workers: ai-eval/run — Endpoint de evaluación multi-provider

Handler CF Workers: ai-eval/run

Identificación

CampoValor
Rutafunctions/api/tools/ai-eval/run.ts
TipoCloudflare Pages Function (handler HTTP)
MétodoPOST /api/tools/ai-eval/run
AutenticaciónAPI keys por provider, enviadas en el body (cliente)
RuntimeCloudflare Workers (edge)

Schemas principales

Candidate

interface Candidate {
  provider: 'gemini' | 'anthropic' | 'openai' | 'openrouter';
  model: string;    // ej: 'claude-haiku-4-5', 'gpt-5.4-mini'
  label?: string;
}

EvalCase

interface EvalCase {
  id: string;
  prompt: string;
  system_instruction?: string;
  temperature?: number;
  max_tokens?: number;
  response_json?: boolean;
  image_b64?: string;           // Imagen PNG en base64 para vision
}

CellResult

interface CellResult {
  answer: string;
  latency_ms: number;
  tokens_in?: number;
  tokens_out?: number;
  error?: string;
}

RunBody (request body)

interface RunBody {
  candidates: Candidate[];
  cases: EvalCase[];
  api_keys: {
    gemini?: string;
    anthropic?: string;
    openai?: string;
    openrouter?: string;
  };
  notes?: string;
}

Funciones de provider

FunciónProviderAPI BaseAuth
callGeminiGoogle AIgenerativelanguage.googleapis.comquery param key
callAnthropicAnthropicapi.anthropic.com/v1/messagesheader x-api-key
callOpenAIOpenAIapi.openai.com/v1/chat/completionsAuthorization: Bearer
callOpenRouterOpenRouteropenrouter.ai/api/v1/chat/completionsAuthorization: Bearer

callAnthropic — detalles

  • Versión de API fijada: anthropic-version: 2023-06-01
  • Vision: content array con bloques { type: 'image', source: { type: 'base64' } }
  • system_instruction → campo system de nivel superior (no en messages)
  • max_tokens por defecto: 2048

callOpenAI — detalles

  • Usa max_completion_tokens (compatible GPT-4o y GPT-5+)
  • Guard o-series: regex /^o\d/i detecta modelos de razonamiento y omite temperature
  • Vision: bloque image_url con data URI data:image/png;base64,...
  • JSON mode: response_format: { type: 'json_object' } cuando EvalCase.response_json

Enrutador runCell

async function runCell(c, ec, keys): Promise<CellResult>

Guard explícito por provider: si la key correspondiente está ausente, devuelve error inmediato sin llamada de red. El fall-through devuelve error: 'Provider desconocido: <x>'.


Historial de cambios relevantes

CommitFechaCambio
3ad21cc2026-04-27Añade callAnthropic y callOpenAI; extiende Candidate.provider y RunBody.api_keys

Véase también

  • [[feature—workspace—ai-eval-providers]]