マニフェストは、yaml 仕様に準拠したファイルであり、プラグイン名、作成者、含まれるツール、モデルなどの情報を含む、プラグインの最も基本的な情報を定義します。プラグインの全体的なアーキテクチャについては、プラグイン開発の基本概念および開発者向けチートシートを参照してください。

このファイルの形式が間違っている場合、プラグインの解析とパッケージ化プロセスは失敗します。

コード例

以下は、マニフェストファイルの簡単な例です。各データの意味と役割については、後ほど説明します。他のプラグインのコードを参照する必要がある場合は、GitHub コードリポジトリを参照してください。

version: 0.0.1
type: "plugin"
author: "Yeuoly"
name: "neko"
label:
  en_US: "Neko"
created_at: "2024-07-12T08:03:44.658609186Z"
icon: "icon.svg"
resource:
  memory: 1048576
  permission:
    tool:
      enabled: true
    model:
      enabled: true
      llm: true
    endpoint:
      enabled: true
    app:
      enabled: true
    storage: 
      enabled: true
      size: 1048576
plugins:
  endpoints:
    - "provider/neko.yaml"
meta:
  version: 0.0.1
  arch:
    - "amd64"
    - "arm64"
  runner:
    language: "python"
    version: "3.10"
    entrypoint: "main"
privacy: "./privacy.md"

構造

  • version(version, 必須):プラグインのバージョン
  • type(type, 必須):プラグインタイプ。現在は plugin のみをサポートし、将来的には bundle をサポート予定です。
  • author(string, 必須):作成者。Marketplace では組織名として定義されます。
  • label(label, 必須):多言語名称
  • created_at(RFC3339, 必須):作成日時。Marketplace では、作成日時が現在時刻を超えてはなりません。
  • icon(asset, 必須):アイコンのパス
  • resource (object):申請が必要なリソース
    • memory (int64):最大メモリ使用量。主に SaaS 上の AWS Lambda リソース申請に関連し、単位はバイトです。
    • permission(object):権限申請
      • tool(object):ツールを逆呼び出しする権限
        • enabled (bool)
      • model(object):モデルを逆呼び出しする権限
        • enabled(bool)
        • llm(bool)
        • text_embedding(bool)
        • rerank(bool)
        • tts(bool)
        • speech2text(bool)
        • moderation(bool)
      • node(object):ノードを逆呼び出しする権限
        • enabled(bool)
      • endpoint(object):endpoint の登録を許可する権限
        • enabled(bool)
      • app(object):app を逆呼び出しする権限
        • enabled(bool)
      • storage(object):永続ストレージを申請する権限
        • enabled(bool)
        • size(int64):許可される永続メモリの最大サイズ。単位はバイトです。
  • plugins(object, 必須):プラグインが拡張する具体的な機能の yaml ファイルリスト。プラグインパッケージ内の絶対パスです。例えば、モデルを拡張する必要がある場合、openai.yaml のようなファイルを定義し、そのファイルパスをここに記入します。そのパス上のファイルは実際に存在しなければならず、そうでなければパッケージ化は失敗します。
    • 形式
      • tools(list[string]):プラグインが拡張するツールプロバイダー
      • models(list[string]):プラグインが拡張するモデルプロバイダー
      • endpoints(list[string]):プラグインが拡張する Endpoints プロバイダー
      • agent_strategies (list[string]):プラグインが拡張する Agent 戦略プロバイダー
    • 制限
      • ツールとモデルを同時に拡張することはできません
      • 拡張機能がまったくない状態は許可されません。
      • モデルと Endpoint を同時に拡張することはできません
      • 現在、各タイプの拡張は最大1つのプロバイダーのみサポートしています
  • meta(object)
    • version(version, 必須):manifest フォーマットバージョン。初期バージョンは 0.0.1 です。
    • arch(list[string], 必須):サポートされるアーキテクチャ。現在は amd64arm64 のみをサポートしています。
    • runner(object, 必須):ランタイム設定
      • language(string):現在は python のみをサポートしています。
      • version(string):言語のバージョン。現在は 3.12 のみをサポートしています。
      • entrypoint(string):プログラムのエントリポイント。python では main であるべきです。
  • privacy (string, オプション):オプション項目。プラグインのプライバシーポリシーファイルの相対パスまたは URL を指定します。例:"./privacy.md" または "https://your-web/privacy"。プラグインを Dify Marketplace に公開する予定がある場合、このフィールドは必須です。明確なユーザーデータの使用とプライバシーに関する声明を提供するために使用されます。詳細な記入ガイドラインについては、プラグインのプライバシーデータ保護ガイドラインを参照してください。

関連リソース