[LLM] Dify Pluginの作り方

# Difyプラグインのデプロイ方法

## デプロイ方法は3つあります

### 1. 🏪 Marketplaceから公開(公式配布)
### 2. 🔗 GitHubリポジトリから配布
### 3. 📦 ローカルファイルとして配布

## 前提条件

### Dify CLIツールのインストール

プラグインをパッケージ化するには、Dify CLIツールが必要です。

#### macOS/Linuxの場合(Homebrew)

“`bash
brew tap langgenius/dify
brew install dify

# インストール確認
dify version
“`

#### Windows/Linux/macOSの場合(バイナリ)

1. [Dify Plugin CLI Tool リリースページ](https://github.com/langgenius/dify-plugin-daemon/releases)からバイナリをダウンロード
2. ダウンロードしたファイルに実行権限を付与(macOS/Linux)

“`bash
chmod +x ./dify-plugin-darwin-arm64
mv ./dify-plugin-darwin-arm64 ./dify
“`

3. グローバルに使用する場合は `/usr/local/bin` に移動

“`bash
sudo mv ./dify /usr/local/bin/
“`

## 📦 ステップ1: プラグインのパッケージ化

プラグインプロジェクトのディレクトリで以下のコマンドを実行します:

“`bash
# プラグインディレクトリに移動
cd /path/to/your/plugin

# プラグインをパッケージ化
dify plugin package
“`

これにより、`.difypkg` ファイルが生成されます。
例: `weather_plugin-0.0.1.difypkg`

### パッケージング時の注意点

– `manifest.yaml` にバージョン情報が正しく記載されているか確認
– `requirements.txt` に必要な依存関係がすべて記載されているか確認
– プラグインコードにエラーがないか確認

## 🚀 ステップ2: デプロイ方法を選択

### 方法1: ローカルファイルとしてアップロード(最も簡単)

これが最も簡単で、開発・テスト段階に最適な方法です。

#### 手順:

1. **Difyの管理画面にアクセス**
– Difyプラットフォームにログイン
– 右上の「Plugins」をクリック

2. **プラグインをアップロード**
– 「+ Install plugin」ボタンをクリック
– 「INSTALL FROM」→「Local Package File」を選択
– 生成した `.difypkg` ファイルを選択してアップロード

3. **プラグインのインストール**
– アップロード後、自動的にインストールが開始されます
– インストールが完了すると、Workspaceで使用可能になります

#### メリット:
– ✅ 最も簡単で素早い
– ✅ レビュー不要
– ✅ 社内・チーム内での配布に最適
– ✅ テスト環境に最適

#### デメリット:
– ❌ ファイルを手動で配布する必要がある
– ❌ 一般公開されない

### 方法2: GitHubリポジトリから配布

オープンソースプロジェクトや、バージョン管理が必要な場合に推奨されます。

#### 手順:

1. **GitHubリポジトリを作成**

“`bash
# GitHubで新しいリポジトリを作成
# 例: https://github.com/your-username/dify-weather-plugin
“`

2. **プラグインコードをプッシュ**

“`bash
git init
git add .
git commit -m “Initial commit: Weather plugin”
git remote add origin https://github.com/your-username/dify-weather-plugin.git
git push -u origin main
“`

3. **GitHubリリースを作成**

“`bash
# パッケージ化
dify plugin package

# GitHubのUIでリリースを作成
# 1. GitHubリポジトリ → Releases → Create a new release
# 2. Tag: v0.0.1(manifest.yamlのバージョンと一致させる)
# 3. Title: Weather Plugin v0.0.1
# 4. .difypkg ファイルをアセットとしてアップロード
“`

4. **Difyからインストール**

– Dify管理画面 → Plugins → + Install plugin
– 「INSTALL FROM」→「GitHub」を選択
– リポジトリURL(またはリポジトリ名)を入力
– 例: `your-username/dify-weather-plugin`
– インストール実行

#### メリット:
– ✅ バージョン管理が容易
– ✅ オープンソース化できる
– ✅ GitHubのリリース機能を活用可能
– ✅ 公式レビュー不要

#### デメリット:
– ❌ リポジトリの作成とリリース手順が必要

### 方法3: Dify Marketplaceで公開(公式)

多くのユーザーに使ってもらいたい場合や、公式プラグインとして配布したい場合。

#### 手順:

1. **プラグインの準備**

“`bash
# プラグインをパッケージ化
dify plugin package
“`

2. **プライバシーポリシーの作成**

`PRIVACY.md` ファイルを作成し、プラグインのプライバシーポリシーを記載します。

“`markdown
# Weather Plugin Privacy Policy

## Data Collection
This plugin does not collect any personal information.

## External APIs
This plugin makes requests to weather APIs…
“`

3. **manifest.yaml にプライバシーポリシーへのパスを追加**

“`yaml
privacy:
en_US: ./PRIVACY.md
ja_JP: ./PRIVACY_JP.md
“`

4. **dify-pluginsリポジトリをフォーク**

“`bash
# GitHubでフォーク
https://github.com/langgenius/dify-plugins
“`

5. **プラグインを配置**

“`bash
# フォークしたリポジトリをクローン
git clone https://github.com/YOUR_USERNAME/dify-plugins.git
cd dify-plugins

# 組織ディレクトリとプラグインディレクトリを作成
mkdir -p your-organization/weather_plugin

# ソースコードと.difypkgファイルをコピー
cp /path/to/your/plugin/* your-organization/weather_plugin/
cp /path/to/weather_plugin-0.0.1.difypkg your-organization/weather_plugin/

# README.mdを作成(連絡先情報とリポジトリURLを含める)
“`

6. **Pull Requestを作成**

“`bash
git add .
git commit -m “Add Weather Plugin v0.0.1”
git push origin main

# GitHubでPull Requestを作成
# PRテンプレートに従って記入
“`

7. **レビュー待ち**

– Difyチームがコードレビューを実施
– 承認されるとmainブランチにマージ
– 自動的にMarketplaceに公開されます

#### メリット:
– ✅ 公式Marketplaceに掲載
– ✅ 信頼性が高い
– ✅ 多くのユーザーにリーチ可能
– ✅ ワンクリックインストール

#### デメリット:
– ❌ 公式レビューが必要(時間がかかる)
– ❌ プライバシーポリシーなど追加ドキュメントが必要

## 🔧 デバッグ方法(リモートデバッグ)

開発中は、リモートデバッグ機能を使うと便利です。

### 手順:

1. **Dify管理画面でデバッグキーを取得**

– Plugins → デバッグアイコンをクリック
– デバッグキーとリモートサーバーアドレスを取得

2. **プラグインプロジェクトで.envファイルを設定**

`.env.example` をコピーして `.env` を作成:

“`bash
cp .env.example .env
“`

`.env` ファイルを編集:

“`bash
INSTALL_METHOD=remote
REMOTE_INSTALL_HOST=debug.dify.ai # または localhost(Docker環境の場合)
REMOTE_INSTALL_PORT=5003
REMOTE_INSTALL_KEY=****-****-****-****-****
“`

3. **プラグインを起動**

“`bash
python -m main
“`

4. **リアルタイムでテスト**

– コードを編集
– 保存すると自動的に反映される
– Difyの管理画面でプラグインが使用可能になる

## 📝 更新・再デプロイ

### ローカルファイルの場合:

1. バージョン番号を更新(`manifest.yaml`)
2. 再度パッケージ化: `dify plugin package`
3. 新しい `.difypkg` をアップロード

### GitHubの場合:

1. バージョン番号を更新(`manifest.yaml`)
2. 再度パッケージ化: `dify plugin package`
3. 新しいGitHubリリースを作成
4. 新しい `.difypkg` をリリースに添付

### Marketplaceの場合:

1. バージョン番号を更新(`manifest.yaml`)
2. 再度パッケージ化: `dify plugin package`
3. 新しい `.difypkg` ファイルのみをPRとして提出
4. README.mdに破壊的変更を記載

## ⚠️ トラブルシューティング

### 署名検証エラーが出る場合

Marketplace以外のプラグインをインストールする場合、署名検証を無効化する必要があります。

Docker環境の場合、`.env` ファイルに追加:

“`bash
FORCE_VERIFYING_SIGNATURE=false
“`

### オフライン環境でのインストール

オフライン環境では、依存関係を含めた完全なパッケージを作成する必要があります。

“`bash
# dify-plugin-repackaging ツールを使用
git clone https://github.com/langgenius/dify-plugin-repackaging.git
cd dify-plugin-repackaging

# Python 3.12+をセットアップ
./plugin_repackaging.sh local ./your-plugin.difypkg

# 出力されたオフライン対応パッケージをインストール
“`

## 🎉 まとめ

**開発・テスト段階**: ローカルファイル または リモートデバッグ
**チーム内配布**: ローカルファイル
**オープンソース公開**: GitHub
**公式配布**: Marketplace

それぞれの用途に応じて、最適なデプロイ方法を選択してください!

手動でアップロードできるようになるのね。なるほど。