Formato JSON para herramientas LLM

Una Forma Portable de Compartir Herramientas

Introducción

Compartir una herramienta de una manera que se pueda agregar rápidamente a un programa o editor de herramientas se mejoraría enormemente con una forma estándar de representar una herramienta y cómo usarla. Queremos habilitar características como las siguientes:

  • Un icono para representar visualmente la herramienta

  • Metadatos para el aviso:

    • Un nombre para la herramienta

    • Una descripción de la herramienta

    • Notas de uso para la herramienta

  • Parámetros de marcador de posición que se incluyen en la cadena de la herramienta

  • Salida esperada

  • Versiones y marcas de tiempo.

Especificación de Formato JSON

{
  "version": "cadena de texto o número entero",
  "model_prompt": "cadena de texto con marcadores de posición {{nombre_de_variable}}",
  "metadata": {
    "prompt_name": "cadena de texto",
    "description": "cadena de texto",
    "usage_notes": "cadena de texto",
    "model_version": ["cadena de texto", "cadena de texto", …],
    "creator": {
      "name": "cadena de texto",
      "email": "cadena de texto",
      "organization": "cadena de texto"
    },
    "parameters": {
      "temperature": "número fraccionado",
      "max_tokens": "número entero",
      "top_p": "número fraccionado",
      "frequency_penalty": "número fraccionado",
      "presence_penalty": "número fraccionado"
    },
    "variables": [
      {
        "name": "nombre de la variable 1",
        "type": "texto",
        "description": "cadena de texto",
        "default": "cadena de texto",
      },
      {
        "name": "nombre de la variable 2",
        "type": "selección-única",
        "description": "cadena de texto",
        "default": "valor1",
        "allowed_values": ["valor1", "valor2", "valor3"]
      },
      {
        "name": "nombre de la variable 3",
        "type": "selección-múltiple",
        "description": "cadena de texto",
        "default": ["valor1", "valor2"]
        "allowed_values": ["valor1", "valor2", "valor3"]
      },
      ...
    ],
    "expected_output": {
      "type": "cadena de texto (p. ej., texto, código, limitado)",
      "format": "cadena de texto (opcional, p. ej., JSON, XML, CSV)",
      "language": "cadena de texto (opcional, p. ej., Python, JavaScript)",
      "allowed_values": ["cadena de texto1", "cadena de texto2", ...] (opcional)
    },
    "avatar_type": "cadena de texto (p. ej., url, base64)",
    "avatar": "cadena de texto (URL o imagen codificada en base64), se recomienda 256x256 pixels",
    "timestamp": "cadena de texto (formato ISO 8601)"
  }
}

Puedes descargar nuestra muestra JSON aquí.

Descripción de los Campos

  • model_prompt: Una cadena que contiene el prompt del modelo GPT.

  • metadata: Un objeto que contiene información adicional sobre el prompt del modelo GPT, que incluye los siguientes subcampos:

    • model_version: Una cadena que indica la versión del modelo GPT utilizado.

    • creator: Un objeto que contiene información sobre el creador del prompt del modelo GPT, con los siguientes subcampos:

      • name: Una cadena que representa el nombre del creador.

      • email: Una cadena que representa el correo electrónico del creador.

      • organization: Una cadena que representa la organización a la que está afiliado el creador.

    • parameters: Un objeto que contiene información sobre los parámetros del modelo GPT, con los siguientes subcampos:

      • temperature: Un flotante que indica la temperatura utilizada para controlar la aleatoriedad de la salida.

      • max_tokens: Un entero que indica el número máximo de tokens en la respuesta generada.

      • top_p: Un flotante que representa el umbral de probabilidad de muestreo del núcleo.

      • frequency_penalty: Un flotante que representa la penalización aplicada a los tokens en función de su frecuencia en el conjunto de datos.

      • presence_penalty: Un flotante que representa la penalización aplicada a los nuevos tokens basada en su presencia en el prompt.

    • timestamp: Una cadena en formato ISO 8601 que representa la fecha y la hora en que se creó o modificó por última vez el prompt del modelo GPT.

    • expected_output (Opcional): Un objeto que contiene campos relacionados con la salida esperada del model_prompt, incluyendo los siguientes subcampos:

      • type: Una cadena que indica el tipo de salida esperada del model_prompt.

      • format (Opcional): Una cadena que representa el formato de la salida esperada si es aplicable.

      • language (Opcional): Una cadena que representa el lenguaje de programación de la salida esperada si el tipo es code.

      • allowed_values (Opcional): Un array de cadenas que contiene una lista de valores de salida permitidos si el tipo es limited.

    • variables (Opcional): Una lista que contiene variables que podrían insertarse en la cadena model_prompt en un estilo de f-string. Cada variable contiene los siguientes subcampos:

      • name: Una cadena que representa el nombre de la variable.

      • type: Una cadena que muestra el tipo de variable. Actualmente los valores posibles de type son text para la variable por defecto, y single-select o multi-select para las variables de selección.

      • description: Una cadena que muestra la descripción de la variable, incluyendo usos y ejemplos.

      • default: Un valor que muestra el valor por defecto de la variable. Este valor es una cadena si type es text o single-select, y un array de cadenas para multi-select.

      • allowed_values: Un array de cadenas que contiene una lista de valores permitidos si el tipo de variable es single-select o multi-select.

    • avatar (Opcional): Un objeto que contiene campos relacionados con la imagen gráfica que actúa como avatar o icono para el prompt, que incluye los siguientes subcampos:

      • avatar_type: Una cadena que especifica el tipo de datos del avatar incluido.

      • avatar: Una cadena que contiene el URL que apunta a la imagen si el avatar_type es url, o una cadena codificada en base64 que representa la imagen si el avatar_type es base64.

    • prompt_name (Opcional): Una cadena que representa el nombre del prompt.

    • description (Opcional): Una cadena que proporciona una breve descripción de la herramienta y su propósito.

    • usage_notes (Opcional): Una cadena que contiene notas de formato libre del creador sobre el uso o cualquier consideración específica relacionada con la herramienta.

Para especificar el formato de la salida esperada del model_prompt, puedes agregar un objeto expected_output dentro del objeto metadata. Dependiendo del tipo de salida esperada, puedes incluir los subcampos relevantes en el objeto expected_output.

Para incluir campos para variables que podrían insertarse en la cadena model_prompt en un estilo de f-string, puedes agregar una lista variables separada dentro del objeto metadata.

Para incluir una imagen gráfica que actúa como avatar o icono para el prompt, puedes agregar un campo avatar dentro del objeto metadata.

Incluir los campos expected_output, variables, avatar, prompt_name, description, y usage_notes dentro del objeto metadata ayuda a mantener toda la información contextual sobre el prompt en un solo lugar, lo que facilita su gestión y comprensión.

Puedes usar el campo version en el nivel superior del objeto JSON para rastrear explícitamente la versión de todo el archivo JSON.

Última actualización