> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mka1.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Crear una suite de evaluación

> Crea un conjunto de evaluación declarativo específico del equipo. Los archivos del conjunto de datos y del evaluador de Python deben cargarse por separado con el propósito 'evals'.



## OpenAPI

````yaml https://apigw.mka1.com/speakeasy.json?language=es post /api/v1/llm/evals/suites
openapi: 3.1.1
info:
  title: MKA1 API
  version: 1.1.0
  description: >-
    La API MKA1 es una API RESTful que proporciona acceso a la plataforma MKA1.
    Aprende cómo comenzar con la API y el SDK de TypeScript
    [aquí](https://mka1.apidocumentation.com/guides/getting-started).
  license:
    name: Propietario
servers:
  - url: https://apigw.mka1.com
    description: MKA1 API Gateway
  - url: /
    description: Relative server URL (configurable via SDK constructor)
security: []
tags:
  - name: Resource Authorization
    description: >-
      Gestiona permisos para recursos LLM. Crea recursos, otorga/revoca permisos
      y elimina recursos. Solo los propietarios de recursos pueden otorgar,
      revocar o eliminar permisos.
    x-displayName: Autorización de Recursos
  - name: Embeddings
    description: >-
      Puntos finales de la API de incrustación de texto para generar
      representaciones vectoriales del texto. Crea incrustaciones semánticas
      para búsqueda, agrupamiento y coincidencia de similitudes utilizando
      varios modelos de incrustación.
    x-displayName: Incrustaciones
  - name: Feedback
    description: >-
      API de retroalimentación del usuario para calificar y comentar sobre las
      completaciones de chat. Recopila calificaciones de pulgares arriba/abajo y
      comentarios detallados para mejorar las respuestas del modelo y rastrear
      la satisfacción del usuario.
    x-displayName: Retroalimentación
  - name: Images
    description: >-
      Puntos finales de la API de generación de imágenes para crear imágenes a
      partir de descripciones de texto. Genera imágenes con control sobre el
      tamaño, la calidad y el estilo.
    x-displayName: Imágenes
  - name: MCP Vault
    description: >-
      API de bóveda MCP para almacenar configuraciones de servidor MCP propiedad
      del usuario y credenciales encriptadas. Los agentes hacen referencia a los
      ID de la bóveda para que los secretos se resuelvan solo en el momento de
      la ejecución de la herramienta.
    x-displayName: Bóveda MCP
  - name: Speech
    description: >-
      Puntos finales de la API de voz para el procesamiento de audio. Convierte
      texto en habla natural (TTS) o transcribe el habla a texto (STT) en
      diferentes idiomas.
    x-displayName: Discurso
  - name: Usage
    description: >-
      API de seguimiento de uso y análisis para monitorear el consumo de tokens,
      la cantidad de solicitudes y el análisis de costos. Visualiza estadísticas
      detalladas por usuario, modelo y período de tiempo.
    x-displayName: Uso
  - name: Extract
    description: >-
      API de extracción de datos estructurados para extraer información de
      archivos. Define esquemas JSON para extraer datos estructurados de
      imágenes, PDFs y documentos. Soporta plantillas de esquemas reutilizables.
    x-displayName: Extracción
  - name: Text Classification
    description: >-
      API de clasificación de texto para categorizar texto en etiquetas
      predefinidas. Utilice modelos de IA para clasificar el contenido del texto
      para análisis de sentimientos, categorización de temas y moderación de
      contenido.
    x-displayName: Clasificación de Texto
  - name: Responses
    description: >-
      API de respuestas impulsadas por agentes para crear agentes de IA con uso
      autónomo de herramientas. Crea asistentes conversacionales que pueden
      utilizar búsqueda en la web, operaciones con archivos, generación de
      imágenes, ejecución de código, simulación de uso de computadoras e
      integraciones de MCP. Soporta procesamiento en segundo plano, transmisión
      y seguimiento de estado en tiempo real.
    x-displayName: Respuestas
  - name: Files
    description: >-
      API de gestión de archivos para cargar, almacenar y gestionar archivos con
      expiración automática e integración con S3. Carga archivos que se pueden
      usar con Asistentes, Almacenes Vectoriales y otras funciones. Los archivos
      se almacenan en S3 con metadatos rastreados en PostgreSQL. Soporta la
      limpieza automática de archivos expirados.
    x-displayName: Archivos
  - name: Vector Stores
    description: >-
      API de almacenamiento de vectores para almacenar y buscar documentos
      utilizando incrustaciones. Crea almacenes de vectores, sube archivos con
      fragmentación automática y generación de incrustaciones, y realiza
      búsquedas semánticas. Los archivos se procesan de forma asincrónica
      utilizando flujos de trabajo de Temporal para durabilidad. Soporta
      limpieza automática de almacenes caducados y LanceDB para almacenamiento
      eficiente de vectores.
    x-displayName: Almacenes de Vectores
  - name: Conversations
    description: >-
      API de gestión de conversaciones para almacenar y recuperar el estado de
      la conversación a través de llamadas a la API de respuesta. Crea
      conversaciones, añade elementos (mensajes de usuario, mensajes del
      asistente, mensajes del sistema) y mantiene el historial de la
      conversación. Soporta seguimiento de metadatos y gestión del estado del
      diálogo en múltiples turnos.
    x-displayName: Conversaciones
  - name: Guardrails
    description: >-
      API de salvaguardias de seguridad de IA para configurar la moderación de
      contenido y las políticas de seguridad. Configura listas de palabras
      prohibidas, detección de inyección de mensajes y prevención de filtración
      de mensajes del sistema. Las salvaguardias se aplican a todas las
      solicitudes de una cuenta y se pueden probar antes del despliegue.
    x-displayName: Barandillas
  - name: Models
    description: >-
      API de listado de modelos para descubrir modelos disponibles. Devuelve IDs
      de modelos, propiedad y metadatos para todos los modelos registrados en la
      puerta de enlace.
    x-displayName: Modelos
  - name: Skills
    description: >-
      API de habilidades para gestionar paquetes de instrucciones y archivos
      versionados siguiendo el estándar de Habilidades del Agente. Crea,
      versiona y descarga paquetes de habilidades reutilizables que incluyen
      manifiestos SKILL.md para entornos de agentes.
    x-displayName: Habilidades
  - name: Chat Completions
    description: >-
      **Obsoleto: Usa la API de Respuestas (`/api/v1/llm/responses`) en su
      lugar.** Puntos finales de completación de chat con soporte para
      transmisión, llamadas a herramientas y múltiples proveedores.
    x-deprecated: true
    x-displayName: Completaciones de Chat
  - name: Batches
    x-displayName: Lotes
  - name: Evals
    x-displayName: Evaluaciones
  - name: Fine-Tuning
    x-displayName: Ajuste fino
  - name: Memory Stores
    x-displayName: Almacenes de memoria
  - name: Prompts
    x-displayName: Sugerencias
  - name: Tables
    description: Gestionar esquemas de tablas, operaciones de datos, búsqueda e índices.
    x-displayName: Mesas
  - name: Text Store
    description: >-
      Gestiona almacenes de texto con búsqueda híbrida (vector + texto completo)
      y conjuntos de texto agrupados.
    x-displayName: Tienda de Texto
  - name: GraphRAG
    description: >-
      Construya y consulte gráficos de conocimiento livianos respaldados por
      Redis y LanceDB.
    x-displayName: GraphRAG
  - name: API Key
    x-displayName: Clave de API
  - name: Sessions
    description: Crear, inspeccionar, acceder y terminar sesiones de sandbox.
    x-displayName: Sesiones
  - name: Browser
    description: >-
      Conéctate a las sesiones del navegador a través del proxy del puerto de la
      puerta de enlace. Las sesiones del navegador exponen un punto final del
      Protocolo de DevTools de Chrome en el puerto 9222.
    x-displayName: Navegador
  - name: Execution
    description: >-
      Ejecutar comandos de shell y código dentro de una sesión de sandbox
      existente.
    x-displayName: Ejecución
  - name: Workspace
    description: >-
      Inspeccionar el manifiesto del espacio de trabajo, transferir archivos o
      archivos comprimidos, y descargar artefactos generados.
    x-displayName: Espacio de trabajo
  - name: Sandbox Usage
    x-displayName: Uso de Sandbox
  - name: Agents
    description: Crea y gestiona definiciones de agentes reutilizables.
    x-displayName: Agentes
  - name: Agent Versions
    description: >-
      Inspeccionar el historial de configuración de un agente y revertir a una
      versión anterior.
    x-displayName: Versiones de Agente
  - name: Agent Runs
    description: >-
      Ejecutar agentes guardados e inspeccionar los resultados de ejecución
      persistidos.
    x-displayName: Ejecuta Agentes
  - name: Agent Schedules
    description: >-
      Crea y gestiona ejecuciones de agentes programadas o recurrentes
      guardadas.
    x-displayName: Horarios de Agentes
  - name: schema-5_other
    x-displayName: otro
paths:
  /api/v1/llm/evals/suites:
    post:
      tags:
        - Evals
      summary: Crear una suite de evaluación
      description: >-
        Crea un conjunto de evaluación declarativo específico del equipo. Los
        archivos del conjunto de datos y del evaluador de Python deben cargarse
        por separado con el propósito 'evals'.
      operationId: createEvalSuite
      parameters:
        - name: X-On-Behalf-Of
          in: header
          required: false
          schema:
            type: string
          description: Optional external end-user identifier forwarded by the API gateway.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateEvalSuiteRequest'
            example:
              name: Multilingual QA smoke suite
              description: >-
                Tareas de evaluación declarativas respaldadas por archivos
                subidos o conjuntos de datos de Hugging Face y evaluadores de
                Python.
              manifest:
                schema_version: '2026-05-27'
                tasks:
                  - id: spanish_qa
                    type: custom
                    dataset:
                      source: huggingface
                      path: IIC/AQuAS
                      split: test
                    num_fewshot: 1
                    prompt_template: |-
                      Responde usando el contexto.

                      Contexto: {{context}}

                      Pregunta: {{question}}

                      Respuesta:
                    target_template: '{{answer}}'
                    preprocess:
                      type: python
                      source: |
                        def transform(row):
                            return row
                    grader:
                      type: python
                      contract: model_backed
                      model_access: mka1
                      file_id: file_grader123
                      timeout_seconds: 120
              metadata:
                owner: eval-team
      responses:
        '200':
          description: Está bien
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EvalSuiteObject'
              example:
                id: eval_suite_aa87e2b1112a455b8deabed784372198
                object: eval.suite
                name: Multilingual QA smoke suite
                description: >-
                  Declarative eval tasks backed by uploaded files or Hugging
                  Face datasets and Python graders.
                active_version: 1
                latest_version: 1
                metadata:
                  owner: eval-team
                created_at: 1704067200
                updated_at: 1704067200
      security:
        - bearerAuth: []
      x-codeSamples:
        - lang: python
          label: Python (SDK)
          source: |-
            from meetkai_mka1 import SDK


            with SDK(
                bearer_auth="<YOUR_BEARER_TOKEN_HERE>",
            ) as sdk:

                res = sdk.llm.evals.create_suite(name="Multilingual QA smoke suite", manifest={
                    "tasks": [
                        {
                            "id": "spanish_qa",
                            "type": "custom",
                            "dataset": {
                                "source": "huggingface",
                                "path": "IIC/AQuAS",
                                "split": "test",
                            },
                            "prompt_template": "Responde usando el contexto.\n\nContexto: {{context}}\n\nPregunta: {{question}}\n\nRespuesta:",
                            "target_template": "{{answer}}",
                            "grader": {
                                "type": "python",
                                "contract": "model_backed",
                                "model_access": "mka1",
                                "file_id": "file_grader123",
                            },
                            "preprocess": {
                                "type": "python",
                                "source": "def transform(row):\n    return row\n",
                            },
                            "num_fewshot": 1,
                        },
                    ],
                }, description="Declarative eval tasks backed by uploaded files or Hugging Face datasets and Python graders.", metadata={
                    "owner": "eval-team",
                })

                # Handle response
                print(res)
        - lang: typescript
          label: Typescript (SDK)
          source: |-
            import { SDK } from "@meetkai/mka1";

            const sdk = new SDK({
              bearerAuth: "<YOUR_BEARER_TOKEN_HERE>",
            });

            async function run() {
              const result = await sdk.llm.evals.createSuite({
                createEvalSuiteRequest: {
                  name: "Multilingual QA smoke suite",
                  description: "Declarative eval tasks backed by uploaded files or Hugging Face datasets and Python graders.",
                  manifest: {
                    tasks: [
                      {
                        id: "spanish_qa",
                        type: "custom",
                        dataset: {
                          source: "huggingface",
                          path: "IIC/AQuAS",
                          split: "test",
                        },
                        promptTemplate: "Responde usando el contexto.\n\nContexto: {{context}}\n\nPregunta: {{question}}\n\nRespuesta:",
                        targetTemplate: "{{answer}}",
                        grader: {
                          type: "python",
                          contract: "model_backed",
                          modelAccess: "mka1",
                          fileId: "file_grader123",
                        },
                        preprocess: {
                          type: "python",
                          source: "def transform(row):\n    return row\n",
                        },
                        numFewshot: 1,
                      },
                    ],
                  },
                  metadata: {
                    "owner": "eval-team",
                  },
                },
              });

              console.log(result);
            }

            run();
        - lang: csharp
          label: CSharp (SDK)
          source: >-
            using MeetKai.MKA1;

            using MeetKai.MKA1.Types.Components;

            using System.Collections.Generic;


            var sdk = new SDK(bearerAuth: "<YOUR_BEARER_TOKEN_HERE>");


            var res = await sdk.Llm.Evals.CreateSuiteAsync(body: new
            MeetKai.MKA1.Types.Components.CreateEvalSuiteRequest() {
                Name = "Multilingual QA smoke suite",
                Description = "Declarative eval tasks backed by uploaded files or Hugging Face datasets and Python graders.",
                Manifest = new EvalSuiteManifest() {
                    Tasks = new List<EvalTask>() {
                        new EvalTask() {
                            Id = "spanish_qa",
                            Type = EvalTaskType.Custom,
                            Dataset = new EvalDataset() {
                                Source = SourceEnum.Huggingface,
                                Path = "IIC/AQuAS",
                                Split = "test",
                            },
                            PromptTemplate = @"Responde usando el contexto.

                            Contexto: {{context}}

                            Pregunta: {{question}}

                            Respuesta:",
                            TargetTemplate = "{{answer}}",
                            Grader = new EvalPythonGrader() {
                                Contract = EvalPythonGraderContract.ModelBacked,
                                ModelAccess = EvalPythonGraderModelAccess.Mka1,
                                FileId = "file_grader123",
                            },
                            Preprocess = new EvalPythonPreprocessor() {
                                Source = @"def transform(row):
                                    return row
                                ",
                            },
                            NumFewshot = 1,
                        },
                    },
                },
                Metadata = new Dictionary<string, string>() {
                    { "owner", "eval-team" },
                },
            });


            // handle response
components:
  schemas:
    CreateEvalSuiteRequest:
      type: object
      properties:
        name:
          type: string
          minLength: 1
          maxLength: 255
        description:
          type: string
          maxLength: 10000
        manifest:
          $ref: '#/components/schemas/EvalSuiteManifest'
        metadata:
          type: object
          propertyNames:
            type: string
            maxLength: 64
          additionalProperties:
            type: string
            maxLength: 512
          default: {}
      required:
        - name
        - manifest
    EvalSuiteObject:
      type: object
      properties:
        id:
          type: string
        object:
          const: eval.suite
        name:
          type: string
        description:
          anyOf:
            - type: string
            - type: 'null'
        active_version:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
        latest_version:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
        metadata:
          type: object
          propertyNames:
            type: string
            maxLength: 64
          additionalProperties:
            type: string
            maxLength: 512
        created_at:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
        updated_at:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
      required:
        - id
        - object
        - name
        - description
        - active_version
        - latest_version
        - metadata
        - created_at
        - updated_at
    EvalSuiteManifest:
      type: object
      properties:
        schema_version:
          type: string
          default: '2026-05-27'
        tasks:
          type: array
          minItems: 1
          maxItems: 100
          items:
            $ref: '#/components/schemas/EvalTask'
        metadata:
          type: object
          propertyNames:
            type: string
          additionalProperties: {}
          default: {}
      required:
        - tasks
    EvalTask:
      type: object
      properties:
        id:
          type: string
          pattern: ^[A-Za-z0-9_.-]+$
        name:
          type: string
          maxLength: 255
        type:
          $ref: '#/components/schemas/EvalTaskType'
        dataset:
          $ref: '#/components/schemas/EvalDataset'
        prompt_template:
          type: string
          minLength: 1
        target_template:
          type: string
        choices:
          type: array
          items:
            type: string
        output_extraction:
          $ref: '#/components/schemas/EvalOutputExtraction'
          default:
            type: none
        metrics:
          type: array
          items:
            $ref: '#/components/schemas/EvalMetric'
        grader:
          $ref: '#/components/schemas/EvalPythonGrader'
        preprocess:
          $ref: '#/components/schemas/EvalPythonPreprocessor'
        fewshot:
          $ref: '#/components/schemas/EvalFewshotConfig'
        num_fewshot:
          type: integer
          minimum: 0
          maximum: 100
          description: Alias de estilo lm-eval para fewshot.count.
        metadata:
          type: object
          propertyNames:
            type: string
          additionalProperties: {}
          default: {}
      required:
        - id
        - type
        - dataset
        - prompt_template
        - grader
      description: Una tarea de evaluación declarativa.
    EvalTaskType:
      enum:
        - classification
        - multiple_choice
        - qa
        - summarization
        - semantic_similarity
        - llm_judge
        - numeric
        - math
        - custom
    EvalDataset:
      type: object
      properties:
        source:
          enum:
            - file
            - huggingface
          description: >-
            Fuente del conjunto de datos. Inferido del file_id o la ruta cuando
            se omite.
        file_id:
          type: string
          description: >-
            ID de archivo para un conjunto de datos JSONL o CSV subido con el
            propósito 'evals'.
        format:
          $ref: '#/components/schemas/EvalDatasetFormat'
          description: >-
            Formato del conjunto de datos. Inferido del nombre de archivo cuando
            se omite.
        path:
          type: string
          description: >-
            Ruta del conjunto de datos de Hugging Face, por ejemplo
            facebook/belebele.
        name:
          type: string
          description: Configuración/nombre del conjunto de datos de Hugging Face.
        split:
          type: string
          description: >-
            Hugging Face se dividió para cargar, por ejemplo, prueba,
            entrenamiento o validación.
        revision:
          type: string
          description: Revisión opcional del conjunto de datos de Hugging Face.
        data_files:
          anyOf:
            - type: string
            - type: array
              items:
                type: string
            - type: object
              propertyNames:
                type: string
              additionalProperties:
                anyOf:
                  - type: string
                  - type: array
                    items:
                      type: string
          description: >-
            Valor de data_files de Hugging Face opcional para conjuntos de datos
            estilo json/csv/parquet.
        dataset_kwargs:
          type: object
          propertyNames:
            type: string
          additionalProperties: {}
          description: >-
            Carga de argumentos adicionales para el conjunto de datos retenidos
            para la importación/metadata de paridad.
        max_rows:
          type: integer
          minimum: 1
          maximum: 1000000
          description: >-
            Tapa de seguridad opcional para la carga remota de conjuntos de
            datos.
      description: Conjunto de datos que respalda una tarea de evaluación.
    EvalOutputExtraction:
      anyOf:
        - type: object
          properties:
            type:
              const: none
          required:
            - type
        - type: object
          properties:
            type:
              const: take_first
            lines:
              type: integer
              minimum: 1
              maximum: 10
              default: 1
          required:
            - type
        - type: object
          properties:
            type:
              const: regex
            pattern:
              type: string
            group:
              anyOf:
                - type: integer
                  minimum: 0
                  maximum: 9007199254740991
                - type: string
              default: 1
            flags:
              type: string
          required:
            - type
            - pattern
        - type: object
          properties:
            type:
              const: regex_last
            pattern:
              type: string
            group:
              anyOf:
                - type: integer
                  minimum: 0
                  maximum: 9007199254740991
                - type: string
              default: 1
            flags:
              type: string
          required:
            - type
            - pattern
        - type: object
          properties:
            type:
              const: label_set
            labels:
              type: array
              minItems: 1
              items:
                type: string
            case_sensitive:
              type: boolean
              default: false
          required:
            - type
            - labels
        - type: object
          properties:
            type:
              const: number
          required:
            - type
      discriminator:
        propertyName: type
        mapping: {}
    EvalMetric: {}
    EvalPythonGrader:
      type: object
      properties:
        type:
          const: python
        contract:
          $ref: '#/components/schemas/EvalPythonGraderContract'
          default: sample
          description: >-
            Contrato de Python para ejecutar: calificación de muestra(muestra,
            ítem), calificación por lotes_calificar_lotes(muestras), o
            modelo_respaldo con ayudantes de modelo ctx.
        execution:
          $ref: '#/components/schemas/EvalPythonGraderExecution'
          description: >-
            Ya sea que el clasificadora se ejecute por muestra o una vez en el
            momento de agregación/finalización. Por defecto del contrato.
        model_access:
          $ref: '#/components/schemas/EvalPythonGraderModelAccess'
          description: >-
            Si el contexto de Python puede solicitar respuestas MKA1 o
            incrustaciones a través del puente de propiedad de la puerta de
            enlace.
        metric_id:
          type: string
          pattern: ^[A-Za-z0-9_.-]+$
          default: score
          description: >-
            Clave métrica predeterminada utilizada cuando la calificación
            devuelve un solo flotante.
        source:
          type: string
          minLength: 1
          description: >-
            Código fuente de Python en línea que define un contrato de
            evaluación de calificaciones soportado.
        file_id:
          type: string
          description: >-
            ID de archivo para un evaluador de Python subido con el propósito
            'evals'.
        timeout_seconds:
          type: integer
          minimum: 1
          maximum: 600
          default: 120
        max_model_calls:
          type: integer
          minimum: 0
          maximum: 500
          default: 64
      required:
        - type
    EvalPythonPreprocessor:
      type: object
      properties:
        type:
          const: python
        contract:
          enum:
            - row
            - batch
          default: row
          description: Ejecuta transform(row) por fila o transform_batch(rows) una vez.
        source:
          type: string
          minLength: 1
          description: >-
            Código Python en línea que transforma filas del conjunto de datos
            antes de la renderización del prompt.
        file_id:
          type: string
          description: >-
            ID de archivo para un preprocesador de Python subido con el
            propósito 'evals'.
        timeout_seconds:
          type: integer
          minimum: 1
          maximum: 600
          default: 120
      required:
        - type
    EvalFewshotConfig:
      type: object
      properties:
        count:
          type: integer
          minimum: 0
          maximum: 100
          default: 0
        dataset:
          description: >-
            Conjunto de datos separado opcional utilizado para ejemplos de pocos
            disparos.
        prompt_template:
          type: string
          description: >-
            Plantilla de aviso opcional para ejemplos de pocos disparos. Por
            defecto, se utiliza la plantilla de aviso de tarea.
        target_template:
          type: string
          description: >-
            Plantilla de destino opcional para ejemplos de few-shot. Por
            defecto, utiliza la plantilla de destino de la tarea.
        example_template:
          type: string
          default: |-
            {{prompt}}
            {{target}}
          description: Plantilla para un ejemplo de pocos disparos renderizado.
        separator:
          type: string
          default: |+


          description: Separador entre ejemplos de pocos disparos y el aviso evaluado.
        strategy:
          enum:
            - first
            - random
          default: first
        seed:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          default: 0
    EvalDatasetFormat:
      enum:
        - jsonl
        - csv
    EvalPythonGraderContract:
      enum:
        - sample
        - batch
        - model_backed
    EvalPythonGraderExecution:
      enum:
        - per_sample
        - aggregate
    EvalPythonGraderModelAccess:
      enum:
        - none
        - mka1
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API Key
      description: >-
        Gateway auth: send `Authorization: Bearer <mka1-api-key>`. For
        multi-user server-side integrations, you can also send `X-On-Behalf-Of:
        <external-user-id>`.

````