Vai al contenuto

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_prompt in 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 type sono text per la variabile predefinita, e single-select o multi-select per 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 è text o single-select, e un array di stringhe per multi-select.
    • allowed_values: Un array di stringhe contenente un elenco di valori consentiti se il tipo di variabile è single-select o multi-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.