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_promptal 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
typesontextpara la variable predeterminada, ysingle-selectomulti-selectpara 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
typeestextosingle-select, y un array de cadenas paramulti-select. - allowed_values: Un array de cadenas que contiene una lista de valores permitidos si el tipo de variable es
single-selectomulti-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 esbase64.
- 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.