JSON-Format für LLM-Werkzeuge

Eine tragbare Art, Tools zu teilen

Einleitung

Das Teilen eines Tools auf eine Weise, die schnell zu einem Programm oder Tool-Editor hinzugefügt werden könnte, wäre mit einer standardisierten Methode zur Repräsentation eines Tools und seiner Nutzung erheblich verbessert. Wir möchten Funktionen wie die folgenden ermöglichen:

  • Ein Icon zur visuellen Darstellung des Tools

  • Metadaten für die Aufforderung:

    • Ein Name für das Tool

    • Eine Beschreibung des Tools

    • Anwendungshinweise für das Tool

  • Platzhalterparameter, die in die Tool-Zeichenkette aufgenommen werden

  • Erwartete Ausgabe

  • Versionierung und Zeitstempel.

Spezifikation des JSON-Formats

{
  "version": "String oder Integer",
  "model_prompt": "String mit {{Variablenname}} Platzhalter",
  "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": "Variablenname 1",
        "type": "Text",
        "description": "String",
        "default": "String",
      },
      {
        "name": "Variablenname 2",
        "type": "Einzel-Auswahl",
        "description": "String",
        "default": "Wert1",
        "allowed_values": ["Wert1", "Wert2", "Wert3"]
      },
      {
        "name": "Variablenname 3",
        "type": "Mehrfach-Auswahl",
        "description": "String",
        "default": ["Wert1", "Wert2"]
        "allowed_values": ["Wert1", "Wert2", "Wert3"]
      },
      ...
    ],
    "expected_output": {
      "type": "String (z.B., Text, Code, begrenzt)",
      "format": "String (optional, z.B., JSON, XML, CSV)",
      "language": "String (optional, z.B., Python, JavaScript)",
      "allowed_values": ["String1", "String2", ...] (optional)
    },
    "avatar_type": "String (z.B., url, base64)",
    "avatar": "String (URL oder base64-kodiertes Bild), empfohlen sind 256x256 Pixel",
    "timestamp": "String (ISO 8601 Format)"
  }
}

Unser Beispiel JSON kann hier heruntergeladen werden.

Feldbeschreibung

  • model_prompt: Ein String, der den GPT-Modellprompt enthält.

  • metadata: Ein Objekt, das zusätzliche Informationen über den GPT-Modell-Prompt enthält, einschließlich der folgenden Unterfelder:

    • model_version: Ein String, der die Version des verwendeten GPT-Modells angibt.

    • creator: Ein Objekt, das Informationen über den Ersteller des GPT-Modell-Prompts enthält, mit den folgenden Unterfeldern:

      • name: Ein String, der den Namen des Erstellers darstellt.

      • email: Ein String, der die E-Mail des Erstellers darstellt.

      • organization: Ein String, der die Organisation darstellt, mit der der Ersteller verbunden ist.

    • parameters: Ein Objekt, das Informationen über die Parameter des GPT-Modells enthält, mit den folgenden Unterfeldern:

      • temperature: Eine Gleitkommazahl, die die für die Steuerung der Zufälligkeit der Ausgabe verwendete Temperatur angibt.

      • max_tokens: Eine ganze Zahl, die die maximale Anzahl von Tokens in der generierten Antwort angibt.

      • top_p: Eine Gleitkommazahl, die die Nukleussampling-Wahrscheinlichkeitsschwelle darstellt.

      • frequency_penalty: Eine Gleitkommazahl, die die auf Token angewendete Strafe anhand ihrer Häufigkeit im Datensatz darstellt.

      • presence_penalty: Eine Gleitkommazahl, die die auf neue Token angewendete Strafe anhand ihrer Präsenz im Eingabeaufforderung darstellt.

    • timestamp: Ein String im ISO 8601-Format, der das Datum und die Uhrzeit darstellt, wann der GPT-Modell-Prompt erstellt oder zuletzt geändert wurde.

    • expected_output (Optional): Ein Objekt, das Felder enthält, die mit der erwarteten Ausgabe aus dem model_prompt zusammenhängen, einschließlich der folgenden Unterfelder:

      • type: Ein String, der den Typ der erwarteten Ausgabe aus dem model_prompt anzeigt.

      • format (Optional): Ein String, der das Format der erwarteten Ausgabe darstellt, falls zutreffend.

      • language (Optional): Ein String, der die Programmiersprache der erwarteten Ausgabe darstellt, wenn der Typ code ist.

      • allowed_values (Optional): Ein Array von Strings, das eine Liste der zulässigen Ausgabewerte enthält, wenn der Typ limited ist.

    • variables (Optional): Eine Liste, die Variablen enthält, die möglicherweise im model_prompt String in einem f-string-Stil eingefügt werden. Jede Variable enthält die folgenden Unterfelder:

      • name: Ein String, der den Variablennamen darstellt.

      • type: Ein String, der den Variablentyp anzeigt. Derzeit sind die möglichen Werte von type text für Standardvariable und single-select oder multi-select für Auswahlvariablen.

      • description: Ein String, der die Beschreibung der Variable darstellt, einschließlich Verwendungen und Beispielen.

      • default: Ein Wert, der den Standardwert der Variable anzeigt. Dieser Wert ist ein String, wenn type text oder single-select ist, und ein Array von Strings für multi-select.

      • allowed_values: Ein Array von Strings, das eine Liste der zulässigen Werte enthält, wenn der Variablentyp single-select oder multi-select ist.

    • avatar (Optional): Ein Objekt, das Felder in Bezug auf das grafische Bild enthält, das als Avatar oder Icon für die Eingabeaufforderung fungiert, einschließlich der folgenden Unterfelder:

      • avatar_type: Ein String, der den Typ der enthaltenen Avatar-Daten angibt.

      • avatar: Ein String, der die URL enthält, die auf das Bild zeigt, wenn der avatar_type url ist, oder ein base64-codierter String, der das Bild darstellt, wenn der avatar_type base64 ist.

    • prompt_name (Optional): Ein String, der den Namen der Eingabeaufforderung darstellt.

    • description (Optional): Ein String, der eine kurze Beschreibung des Tools und seines Zwecks gibt.

    • usage_notes (Optional): Ein String, der freie Anmerkungen des Erstellers über die Nutzung oder spezielle Überlegungen in Bezug auf das Tool enthält.

Um das Format der erwarteten Ausgabe aus dem model_prompt anzugeben, können Sie ein expected_output Objekt innerhalb des metadata Objekts hinzufügen. Abhängig von der Art der erwarteten Ausgabe können Sie die relevanten Unterfelder in das expected_output Objekt einschließen.

Um Felder für Variablen einzuschließen, die möglicherweise im model_prompt String in einem f-string-Stil eingefügt werden, können Sie eine separate variables Liste innerhalb des metadata Objektes hinzufügen.

Um ein grafisches Bild einschließlich, das als Avatar oder Icon für die Eingabeaufforderung fungiert, können Sie ein avatar Feld innerhalb des metadata Objekts hinzufügen.

Das Einschließen der expected_output, variables, avatar, prompt_name, description und usage_notes Felder innerhalb des metadata Objektes hilft, alle kontextuellen Informationen über die Eingabeaufforderung an einem Ort zu behalten, was die Verwaltung und das Verständnis erleichtert.

Sie können das version Feld auf der obersten Ebene des JSON-Objekts verwenden, um explizit die Version der gesamten JSON-Datei zu verfolgen.

Last updated