1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Dify 1.0.0betaがリリースされたのでプラグイン開発する

Posted at

この記事について

Difyが1.0betaになり今までカスタムプロバイダーとして
Difyをクローンして自身で実装しないといけなかった機能の追加が
プラグインとして作成、共有することが可能になりました

このシリーズではMiiboの外部APIを利用してLLMモデルプラグインの作成をすることで学んでDifyのプラグイン作成を学びます

この記事ではプラグイン初期化などの基本操作について記述します

目次

1. 本ドキュメント

  1. まずお読みください
  2. プラグインプロジェクトの初期化
  3. プロジェクトの構成
  4. プラグインのパッケージ
  5. プロジェクトファイルの修正
  6. 参考リンク

2. プラグイン実行編(予定)

  1. Dify1.0.0beta1の導入
  2. プラグインのデバッグ

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

プラグイン名、著者、説明を入力します
1_dify_plugin_init.png

言語を指定します今回はPythonで実装します
2_dify_plugin_lang.png

llmを指定します
3_dify_plugin_select.png

今回はLLM Modelプロジェクトを作成するのでドキュメントに従って次の権限を付与します

このLLMプラグインには、次の権限を設定します。
- Models
- LLM
- Storage

矢印で移動、tabで選択の切り替え、エンターで決定です
4_dify_plugin_capability.png

  • モデルタイプ設定

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を参照ください

JP_HowTo.md 🔗

参考リンク

cshara1/dify-plugin-miibo-agent

開発環境のセットアップ

miibo.ai

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?