この記事について
Difyが1.0betaになり今までカスタムプロバイダーとして
Difyをクローンして自身で実装しないといけなかった機能の追加が
プラグインとして作成、共有することが可能になりました
このシリーズではMiiboの外部APIを利用してLLMモデルプラグインの作成をすることで学んでDifyのプラグイン作成を学びます
この記事ではプラグイン初期化などの基本操作について記述します
目次
1. 本ドキュメント
2. プラグイン実行編(予定)
- Dify1.0.0beta1の導入
- プラグインのデバッグ
3. プラグイン実装編(予定)
まずお読みください
Miibo 🔗はAgent型のAPIを提供しているサービスです
一般的なLLMモデルとは違いAgent側で状態を保持します
AgentのAPIのラッパーとしてプラグインLLMモデルを利用する
方法を解説していきます
プラグインプロジェクトの初期化
https://github.com/langgenius/dify-plugin-daemon/releases
から対象の環境のdify-pluginをダウンロードし
必要であれば権限を付与
chmod +x dify-plugin-darwin-arm64
パッケージの実行
./dify-plugin-darwin-arm64 init
今回はLLM Modelプロジェクトを作成するのでドキュメントに従って次の権限を付与します
このLLMプラグインには、次の権限を設定します。
- Models
- LLM
- Storage
- モデルタイプ設定
predefined-model 定義済みモデルを選択
miibo_agentというフォルダが作成されています
プロジェクトの構成
.
├── GUIDE.md
├── PRIVACY.md
├── README.md
├── _assets ・・・・・・・・・・・・・・・・・・・iconなどのアセットフォルダ
│ └── icon.svg
├── main.py ・・・・・・・・・・・・・・・・・・・ main関数が定義されています
├── manifest.yaml ・・・・・・・・・・・・・・ プラグインのメタ情報
├── provider
│ ├── miibo_agent.py ・・・・・・・ プロバイダの実装、credientialsの扱いなど
│ └── miibo_agent.yaml ・・・・・・ プロバイダの定義ファイル
├── models
│ └── llm
│ ├── llm.py ・・・・・・・・・・ LLMモデルの実装、エントリポイント
│ └── llm.yaml ・・・・・・・・・ LLMモデル定義
└── requirements.txt プラグインインストール時にpip installされる
上記コマンドはmacOSの場合です
環境に合わせて実行してください
公式のドキュメントはこちらになります
プラグインのパッケージ
次のコマンドを実行します
./dify-plugin-darwin-arm64 plugin package {対象のフォルダ}
カレントディレクトリにdifypkgファイルが作成されます
プロジェクトファイルの修正
プロバイダについてはドキュメントに詳しくあります
この記事では実際に変更した内容について記述します
1. manifest.yaml 🔗
-
version
ヴァージョンの定義が含まれているのでバージョン変更時には修正します
-
label
-
description
日本語表示などが必要であればja_JPを修正します
-
icon
アイコンを_assetsフォルダに指定しているものに変更します
画像ファイルであれば形式はなんでも良さそうです
2. provider/miibo_agent.yaml 🔗
- label
- description
- help
を変更します
helpはCredentialsの入力で表示されるものです
APIキー取得先のURLを指定します
ja_JPで日本語の指定もできます
label:
en_US: MiiboAgent
description:
en_US: Unofficial model provider for miibo
zh_Hans: MiiboAgent 提供的模型。
ja_JP: Miibo Agentのモデルプラグイン非公式実装
help:
title:
en_US: Get your API key from miibo
zh_Hans: 从 miibo 获取 API Key
url:
en_US: https://miibo.dev/admin/externalServices/api
- icon_small
- icon_large
アイコンを変更します
_assetsフォルダ内に画像ファイルを設置して
カスタムプロバイダーの場合なくても動作したのですがプラグインでは
今の所(1.0.0beta1現在)必要なようです
small, largeの仕様は既存では
icon_small:
en_US: miibo_icon.png
icon_large:
en_US: miibo_icon.webp
background: "#FFF6F2"
- provider_credential_schema
- model_credential_schema
プロバイダ内もしくはモデルで指定できるcredential keyの定義ができます
今回はAPI Key, Agent IDをそれぞれ指定します
API Keyは入力をマスクします
provider_credential_schema:
credential_form_schemas:
- variable: api_key
required: true
label:
en_US: API Key
type: secret-input
placeholder:
zh_Hans: 在此输入您的 API Key
en_US: Enter your API Key
- variable: agent_id
required: true
label:
en_US: Agent ID
type: text-input
placeholder:
zh_Hans: 在此输入您的 Agent ID
en_US: Enter your Agent ID
以上がパッケージの作成、設定内容の修正になります
最終的なファイルはリンク先 🔗を確認してください
次回は、Dify 1.0.0beta1でプラグインが動作する環境を作ります
お急ぎの方はgithubにあるmdを参照ください