Formato JSON per gli strumenti LLM¶
Introduzione¶
Condividere uno strumento in modo che possa essere aggiunto rapidamente a un programma o a un editor di strumenti sarebbe notevolmente migliorato da un metodo standard per rappresentare uno strumento e le istruzioni per il suo utilizzo. Vogliamo abilitare funzionalità come le seguenti:
- Un'icona per rappresentare visivamente lo strumento
- Metadati per il prompt:
- Un nome per lo strumento
- Una descrizione dello strumento
- Note d'uso per lo strumento
- Parametri segnaposto inclusi nella stringa dello strumento
- Output atteso
- Versioning e timestamp.
Specifica 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)"
}
}
È possibile scaricare il nostro esempio JSON qui.
Descrizione dei campi¶
- model_prompt: Una stringa contenente il prompt del modello GPT.
- metadata: Un oggetto contenente informazioni aggiuntive sul prompt del modello GPT, inclusi i seguenti sottocampi:
- model_version: Una stringa che indica la versione del modello GPT utilizzato.
- creator: Un oggetto contenente informazioni sul creatore del prompt del modello GPT, con i seguenti sottocampi:
- name: Una stringa che rappresenta il nome del creatore.
- email: Una stringa che rappresenta l'indirizzo e-mail del creatore.
- organization: Una stringa che rappresenta l'organizzazione a cui è affiliato il creatore.
- parameters: Un oggetto contenente informazioni sui parametri del modello GPT, con i seguenti sottocampi:
- temperature: Un numero in virgola mobile che indica la temperatura utilizzata per controllare la casualità dell'output.
- max_tokens: Un intero che indica il numero massimo di token nella risposta generata.
- top_p: Un numero in virgola mobile che rappresenta la soglia di probabilità del campionamento del nucleo.
- frequency_penalty: Un numero in virgola mobile che rappresenta la penalità applicata ai token in base alla loro frequenza nel set di dati.
- presence_penalty: Un numero in virgola mobile che rappresenta la penalità applicata ai nuovi token in base alla loro presenza nel prompt.
- timestamp: Una stringa in formato ISO 8601 che rappresenta la data e l'ora di creazione o ultima modifica del prompt del modello GPT.
- expected_output (Facoltativo): Un oggetto contenente campi relativi all'output atteso dal model_prompt, inclusi i seguenti sottocampi:
- type: Una stringa che indica il tipo di output atteso dal model_prompt.
- format (Facoltativo): Una stringa che rappresenta il formato dell'output atteso, se applicabile.
- language (Facoltativo): Una stringa che rappresenta il linguaggio di programmazione dell'output atteso se il tipo è
code. - allowed_values (Facoltativo): Un array di stringhe contenente un elenco di valori di output consentiti se il tipo è
limited.
- variables (Facoltativo): Un elenco contenente variabili che potrebbero essere inserite nella stringa
model_promptin stile f-string. Ogni variabile contiene i seguenti sottocampi:- name: Una stringa che rappresenta il nome della variabile.
- type: Una stringa che indica il tipo di variabile. Attualmente i valori possibili di
typesonotextper la variabile predefinita, esingle-selectomulti-selectper le variabili di selezione. - description: Una stringa che mostra la descrizione della variabile, inclusi usi ed esempi.
- default: Un valore che mostra il valore predefinito della variabile. Questo valore è una stringa se
typeètextosingle-select, e un array di stringhe permulti-select. - allowed_values: Un array di stringhe contenente un elenco di valori consentiti se il tipo di variabile è
single-selectomulti-select.
- avatar (Facoltativo): Un oggetto contenente campi relativi all'immagine grafica che funge da avatar o icona per il prompt, inclusi i seguenti sottocampi:
- avatar_type: Una stringa che specifica il tipo di dati avatar inclusi.
- avatar: Una stringa contenente l'URL che punta all'immagine se avatar_type è
url, oppure una stringa codificata in base64 che rappresenta l'immagine se avatar_type èbase64.
- prompt_name (Facoltativo): Una stringa che rappresenta il nome del prompt.
- description (Facoltativo): Una stringa che fornisce una breve descrizione dello strumento e del suo scopo.
- usage_notes (Facoltativo): Una stringa contenente note in formato libero del creatore sull'utilizzo o su qualsiasi considerazione specifica relativa allo strumento.
Per specificare il formato dell'output atteso dal model_prompt, è possibile aggiungere un oggetto expected_output all'interno dell'oggetto metadata. A seconda del tipo di output atteso, è possibile includere i sottocampi pertinenti nell'oggetto expected_output.
Per includere campi per le variabili che potrebbero essere inserite nella stringa model_prompt in stile f-string, è possibile aggiungere un elenco variables separato all'interno dell'oggetto metadata.
Per includere un'immagine grafica che funge da avatar o icona per il prompt, è possibile aggiungere un campo avatar all'interno dell'oggetto metadata.
L'inclusione dei campi expected_output, variables, avatar, prompt_name, description e usage_notes all'interno dell'oggetto metadata aiuta a mantenere tutte le informazioni contestuali sul prompt in un unico posto, facilitandone la gestione e la comprensione.
È possibile utilizzare il campo version al livello superiore dell'oggetto JSON per tenere traccia esplicita della versione dell'intero file JSON.