Saltar a contenido

Formato JSON para herramientas LLM

Introducción

Compartir una herramienta de forma que pueda añadirse rápidamente a un programa o editor de herramientas mejoraría considerablemente si existiera una manera estándar de representar una herramienta y cómo utilizarla. Queremos habilitar funcionalidades como las siguientes:

  • Un icono para representar visualmente la herramienta
  • Metadatos para el prompt:
  • Un nombre para la herramienta
  • Una descripción de la herramienta
  • Notas de uso de la herramienta
  • Parámetros de sustitución que se incluyen en la cadena de la herramienta
  • Salida esperada
  • Control de versiones y marcas de tiempo.

Especificación del formato JSON

{
  "version": "string or integer",
  "model_prompt": "string with {{variable_name}} placeholders",
  "metadata": {
    "prompt_name": "string",
    "description": "string",
    "usage_notes": "string",
    "model_version": ["string", "string", ],
    "creator": {
      "name": "string",
      "email": "string",
      "organization": "string"
    },
    "parameters": {
      "temperature": "float",
      "max_tokens": "integer",
      "top_p": "float",
      "frequency_penalty": "float",
      "presence_penalty": "float"
    },
    "variables": [
      {
        "name": "variable name 1",
        "type": "text",
        "description": "string",
        "default": "string",
      },
      {
        "name": "variable name 2",
        "type": "single-select",
        "description": "string",
        "default": "value1",
        "allowed_values": ["value1", "value2", "value3"]
      },
      {
        "name": "variable name 3",
        "type": "multi-select",
        "description": "string",
        "default": ["value1", "value2"]
        "allowed_values": ["value1", "value2", "value3"]
      },
      ...
    ],
    "expected_output": {
      "type": "string (e.g., text, code, limited)",
      "format": "string (optional, e.g., JSON, XML, CSV)",
      "language": "string (optional, e.g., Python, JavaScript)",
      "allowed_values": ["string1", "string2", ...] (optional)
    },
    "avatar_type": "string (e.g., url, base64)",
    "avatar": "string (URL or base64-encoded image), 256x256 pixels recommended",
    "timestamp": "string (ISO 8601 format)"
  }
}

Puede descargar nuestro ejemplo de 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, incluidos 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 pertenece el creador.
  • parameters: Un objeto que contiene información sobre los parámetros del modelo GPT, con los siguientes subcampos:
    • temperature: Un número 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 número flotante que representa el umbral de probabilidad de muestreo del núcleo.
    • frequency_penalty: Un número flotante que representa la penalización aplicada a los tokens según su frecuencia en el conjunto de datos.
    • presence_penalty: Un número flotante que representa la penalización aplicada a los nuevos tokens según su presencia en el prompt.
  • timestamp: Una cadena en formato ISO 8601 que representa la fecha y 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, incluidos 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 corresponde.
    • 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 pueden insertarse en la cadena model_prompt al 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 predeterminada, 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 predeterminado 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 del prompt, incluidos los siguientes subcampos:
    • avatar_type: Una cadena que especifica el tipo de datos de avatar incluidos.
    • avatar: Una cadena que contiene la URL que apunta a la imagen si avatar_type es url, o una cadena codificada en base64 que representa la imagen si 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, puede agregar un objeto expected_output dentro del objeto metadata. Según el tipo de salida esperada, puede incluir los subcampos pertinentes en el objeto expected_output.

Para incluir campos de variables que pueden insertarse en la cadena model_prompt al estilo de f-string, puede agregar una lista variables separada dentro del objeto metadata.

Para incluir una imagen gráfica que actúe como avatar o icono del prompt, puede 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, facilitando su gestión y comprensión.

Puede usar el campo version en el nivel superior del objeto JSON para realizar un seguimiento explícito de la versión del archivo JSON completo.