コンテンツにスキップ

LLM ツールの JSON フォーマット

はじめに

ツールをプログラムやツールエディターにすばやく追加できる形式で共有するには、ツールとその使用方法を表す標準的な方法があれば大幅に改善されます。私たちは以下のような機能を実現したいと考えています:

  • ツールを視覚的に表すアイコン
  • プロンプトのメタデータ:
  • ツールの名前
  • ツールの説明
  • ツールの使用上の注意
  • ツール文字列に含まれるプレースホルダーパラメーター
  • 期待される出力
  • バージョン管理とタイムスタンプ。

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)"
  }
}

サンプル JSON はこちらからダウンロードできます。

フィールドの説明

  • model_prompt: GPT モデルのプロンプトを含む文字列。
  • metadata: GPT モデルのプロンプトに関する追加情報を含むオブジェクトで、以下のサブフィールドを含みます:
  • model_version: 使用する GPT モデルのバージョンを示す文字列。
  • creator: GPT モデルのプロンプト作成者に関する情報を含むオブジェクトで、以下のサブフィールドを持ちます:
    • name: 作成者の名前を表す文字列。
    • email: 作成者のメールアドレスを表す文字列。
    • organization: 作成者が所属する組織を表す文字列。
  • parameters: GPT モデルのパラメーターに関する情報を含むオブジェクトで、以下のサブフィールドを持ちます:
    • temperature: 出力のランダム性を制御するために使用される温度を示す浮動小数点数。
    • max_tokens: 生成されるレスポンスの最大トークン数を示す整数。
    • top_p: 核サンプリングの確率閾値を表す浮動小数点数。
    • frequency_penalty: データセット内のトークンの頻度に基づいて適用されるペナルティを表す浮動小数点数。
    • presence_penalty: プロンプト内のトークンの存在に基づいて新しいトークンに適用されるペナルティを表す浮動小数点数。
  • timestamp: GPT モデルのプロンプトが作成または最終更新された日時を表す ISO 8601 形式の文字列。
  • expected_output(オプション): model_prompt からの期待される出力に関連するフィールドを含むオブジェクトで、以下のサブフィールドを含みます:
    • type: model_prompt からの期待される出力のタイプを示す文字列。
    • format(オプション): 該当する場合、期待される出力のフォーマットを表す文字列。
    • language(オプション): タイプが code の場合、期待される出力のプログラミング言語を表す文字列。
    • allowed_values(オプション): タイプが limited の場合、許可された出力値のリストを含む文字列の配列。
  • variables(オプション): f-string スタイルで model_prompt 文字列に挿入される可能性のある変数を含むリスト。各変数には以下のサブフィールドが含まれます:
    • name: 変数名を表す文字列。
    • type: 変数のタイプを示す文字列。現在、type の可能な値は、デフォルト変数の場合は text、選択変数の場合は single-select または multi-select です。
    • description: 使用法や例を含む変数の説明を示す文字列。
    • default: 変数のデフォルト値を示す値。typetext または single-select の場合は文字列、multi-select の場合は文字列の配列です。
    • allowed_values: 変数タイプが single-select または multi-select の場合に許可された値のリストを含む文字列の配列。
  • avatar(オプション): プロンプトのアバターまたはアイコンとして機能するグラフィック画像に関連するフィールドを含むオブジェクトで、以下のサブフィールドを含みます:
    • avatar_type: 含まれるアバターデータのタイプを指定する文字列。
    • avatar: avatar_type が url の場合は画像を指す URL を含む文字列、avatar_type が base64 の場合は画像を表す base64 エンコードされた文字列。
  • prompt_name(オプション): プロンプトの名前を表す文字列。
  • description(オプション): ツールとその目的の簡単な説明を提供する文字列。
  • usage_notes(オプション): 使用方法やツールに関連する特定の考慮事項についての作成者による自由形式のメモを含む文字列。

model_prompt からの期待される出力のフォーマットを指定するには、metadata オブジェクト内に expected_output オブジェクトを追加できます。期待される出力のタイプに応じて、expected_output オブジェクト内に関連するサブフィールドを含めることができます。

f-string スタイルで model_prompt 文字列に挿入される可能性のある変数のフィールドを含めるには、metadata オブジェクト内に別途 variables リストを追加できます。

プロンプトのアバターまたはアイコンとして機能するグラフィック画像を含めるには、metadata オブジェクト内に avatar フィールドを追加できます。

metadata オブジェクト内に expected_outputvariablesavatarprompt_namedescriptionusage_notes のフィールドを含めることで、プロンプトに関するすべてのコンテキスト情報を一か所にまとめることができ、管理と理解が容易になります。

JSON オブジェクトの最上位にある version フィールドを使用して、JSON ファイル全体のバージョンを明示的に追跡できます。