> ## 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 versión de la suite de evaluación

> Crea una versión inmutable de la suite. Usa este endpoint para editar una suite de evaluación existente.



## OpenAPI

````yaml https://apigw.mka1.com/speakeasy.json?language=es post /api/v1/llm/evals/suites/{suite_id}/versions
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/{suite_id}/versions:
    post:
      tags:
        - Evals
      summary: Crear una versión de la suite de evaluación
      description: >-
        Crea una versión inmutable de la suite. Usa este endpoint para editar
        una suite de evaluación existente.
      operationId: createEvalSuiteVersion
      parameters:
        - name: suite_id
          in: path
          required: true
          schema:
            type: string
          example: eval_suite_aa87e2b1112a455b8deabed784372198
        - 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/CreateEvalSuiteVersionRequest'
            example:
              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
              make_active: true
      responses:
        '200':
          description: Está bien
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  object:
                    const: eval.suite.version
                  suite_id:
                    type: string
                  version:
                    type: integer
                    minimum: -9007199254740991
                    maximum: 9007199254740991
                  manifest:
                    type: object
                    properties:
                      schema_version:
                        type: string
                        default: '2026-05-27'
                      tasks:
                        type: array
                        minItems: 1
                        maxItems: 100
                        items:
                          anyOf:
                            - description: One declarative eval task.
                            - type: 'null'
                      metadata:
                        type: object
                        propertyNames:
                          type: string
                        additionalProperties: {}
                        default: {}
                    required:
                      - tasks
                  dataset_file_ids:
                    type: array
                    items:
                      type: string
                  metadata:
                    type: object
                    propertyNames:
                      type: string
                      maxLength: 64
                    additionalProperties:
                      type: string
                      maxLength: 512
                  created_at:
                    type: integer
                    minimum: -9007199254740991
                    maximum: 9007199254740991
                required:
                  - id
                  - object
                  - suite_id
                  - version
                  - manifest
                  - dataset_file_ids
                  - metadata
                  - created_at
      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_version(suite_id="eval_suite_aa87e2b1112a455b8deabed784372198", 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,
                        },
                    ],
                }, make_active=True)

                # 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.createSuiteVersion({
                suiteId: "eval_suite_aa87e2b1112a455b8deabed784372198",
                createEvalSuiteVersionRequest: {
                  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,
                      },
                    ],
                  },
                },
              });

              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.CreateSuiteVersionAsync(
                suiteId: "eval_suite_aa87e2b1112a455b8deabed784372198",
                body: new MeetKai.MKA1.Types.Components.CreateEvalSuiteVersionRequest() {
                    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,
                            },
                        },
                    },
                }
            );

            // handle response
components:
  schemas:
    CreateEvalSuiteVersionRequest:
      type: object
      properties:
        manifest:
          $ref: '#/components/schemas/EvalSuiteManifest'
        metadata:
          type: object
          propertyNames:
            type: string
            maxLength: 64
          additionalProperties:
            type: string
            maxLength: 512
          default: {}
        make_active:
          type: boolean
          default: true
      required:
        - manifest
    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>`.

````