本稿では、プラグイン開発で一般的に使用される構造について簡単に説明します。開発プロセス中は、全体のアーキテクチャをよりよく理解するために、プラグイン開発の基本概念および開発者向けチートシートと合わせてお読みになることを強くお勧めします。

パスの仕様

Manifestファイルまたは任意のYAMLファイルにファイルパスを記入する際、ファイルの種類に応じて以下の2つの仕様に従ってください:

  • 対象ファイルが画像や動画などのマルチメディアファイルである場合(例:プラグインの icon を記入する場合)、これらのファイルをプラグインのルートディレクトリにある _assets フォルダに配置する必要があります。
  • 対象ファイルが .py.yaml などの通常のテキストファイル(コードファイル)である場合、プラグインプロジェクト内でのそのファイルの絶対パスを記入する必要があります。

一般的な構造

プラグインを定義する際、ツール、モデル、Endpoint間で共有できるいくつかのデータ構造があります。ここでは、これらの共通構造を定義します。

I18nObject

I18nObjectは、IETF BCP 47標準に準拠した国際化構造であり、現在サポートされている4つの言語は次のとおりです。

  • en_US
  • zh_Hans
  • ja_Jp
  • pt_BR

ProviderConfig

ProviderConfigは、ToolおよびEndpointに適用可能な汎用的なプロバイダー設定フォーム構造です。

  • name(string):フォーム項目の名前
  • label(I18nObject, 必須):IETF BCP 47に準拠
  • type(provider_config_type, 必須):フォームタイプ
  • scope(provider_config_scope):オプションの範囲、typeによって変動
  • required(bool):必須(空にできません)
  • default(any):デフォルト値、基本型 float int string のみをサポート
  • options(list[provider_config_option]):オプション項目、typeが select の場合のみ使用
  • helper(object):ヘルプドキュメントリンクのラベル、IETF BCP 47に準拠
  • url (string):ヘルプドキュメントリンク
  • placeholder(object):IETF BCP 47に準拠

ProviderConfigOption(object)

  • value(string, 必須):値
  • label(object, 必須):IETF BCP 47に準拠

ProviderConfigType(string)

  • secret-input (string):設定情報は暗号化されます
  • text-input(string):通常のテキスト
  • select(string):ドロップダウンリスト
  • boolean(bool):スイッチ
  • model-selector(object):モデル設定情報、プロバイダー名、モデル名、モデルパラメータなどを含む
  • app-selector(object):アプリID
  • tool-selector(object):ツール設定情報、ツールプロバイダー、名前、パラメータなどを含む
  • dataset-selector(string):未定

ProviderConfigScope(string)

  • typemodel-selector の場合
    • all
    • llm
    • text-embedding
    • rerank
    • tts
    • speech2text
    • moderation
    • vision
  • typeapp-selector の場合
    • all
    • chat
    • workflow
    • completion
  • typetool-selector の場合
    • all
    • plugin
    • api
    • workflow

ModelConfig

  • provider (string): plugin_idを含むモデルプロバイダー名。形式はlanggenius/openai/openaiのようになります。
  • model (string): 具体的なモデル名。
  • model_type (enum): モデルタイプの列挙型。モデル設計規則ドキュメントを参照できます。

NodeResponse

  • inputs (dict): 最終的にノードに入力される変数。
  • outputs (dict): ノードの出力結果。
  • process_data (dict): ノード実行中に生成されるデータ。

ToolSelector

  • provider_id (string): ツールプロバイダー名
  • tool_name (string): ツール名
  • tool_description (string): ツールの説明
  • tool_configuration (dict[str, Any]): ツールの設定情報
  • tool_parameters (dict[str, dict]): LLMによる推論が必要なパラメータ
    • name (string): パラメータ名
    • type (string): パラメータタイプ
    • required (bool): 必須かどうか
    • description (string): パラメータの説明
    • default (any): デフォルト
    • options(list[string]): オプション項目

関連リソース