Formato JSON para Herramientas LLM¶
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_prompten 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
typesontextpara la variable por defecto, 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 por defecto 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 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 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, 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.