OSSよろずサポート担当の神﨑です。
今回は Dify についてソースコード、ドキュメント、検証を行った際の知見についてすでに公開されている弊社の記事と重ならない範囲で軽くまとめていきます。
Dify について
Difyの概要や全体像については、弊社エンジニアの解説記事がありますので、ご参照ください。
Dify の呼称について
上記記事に掲載されていない一口メモとして Dify の読み方について説明します。
Dify のことを筆者は最近まで「ディファイ」と呼んでいましたが、正式な呼称は「ディフィ」となっております。
参考:https://xtech.nikkei.com/atcl/nxt/column/18/03236/061200004/
Dify + Amazon Bedrock について
弊社では AzureAI を利用した Dify の記事が数多く公開されていますが、今回は AWS の Amazon Bedrock という LLM で検証しました。
Dify で Amazon Bedrock を設定するやり方についても、弊社エンジニアの解説記事をご確認ください。
弊社で公開しているチャット bot やワークフロー、 RAG を作成してみましたが、問題なく動作しました。
アプリケーションを作成するうえでの注意点
Amazon Bedrock 上で有効化したモデル以外を選択した場合、LLM ノードにおいてエラーが出力されてしまうため有効化したモデルを正しく選択する必要があることにご注意ください。
Dify のエラー処理
Dify の各ノードで出力されるエラーについてまとめていきます。
参考:エラー処理 – エラータイプ概要
- チャットフロー/ワークフロー
- システムエラー
サービスが正しく起動していない、ネットワーク問題など - 操作エラー
ノードの設定や操作に失敗した際のエラー
- システムエラー
- コードノード
- コードエラー(CodeNodeError)
開発者の設定したコード内にエラーがある場合に発生するエラー - サンドボックスのネットワーク問題(System Error)
ネットワークのトラフィックや 接続問題によって発生するエラー - ネスト制限エラー(DepthLimitError)
ノードのネスト構造が 5層以上の場合に発生するエラー - 出力検証エラー(OutputValidatioのnError)
出力変数の型が一致しない場合に発生するエラー
- コードエラー(CodeNodeError)
- LLM ノード
- 変数が見つからない(VariableNotFoundError)
指定された変数が見つからない場合に発生するエラー - コンテキスト構造の無効 (InvalidContextStructureError)
不正なデータ構造 (文字列以外) を受け取った場合に発生するエラー - 無効な変数タイプ(InvalidVariableTypeError)
システムプロンプトの形式が一般的なテキストや Jinja syntax でない場合に発生するエラー - モデルが存在しない(ModelNotExistError)
LLM ノードにモデルが設定されていない場合に発生するエラー - LLMの認証が必要(LLMModeRequiredError)
選択されたモデルに API キーが設定されていない場合に発生するエラー - プロンプトが見つからない(NoPromptFoundError)
LLM ノードのプロンプトが空の場合に発生するエラー
- 変数が見つからない(VariableNotFoundError)
- HTTPノード
- 認証設定エラー(AuthorizationConfigError)
認証情報が設定されていない場合に発生するエラー - ファイル取得エラー(FileFetchError)
ファイル変数が取得できない場合に発生するエラー - 不正なHTTPリクエストメソッド(InvalidHttpMethodError)
リクエストメソッドが GET、HEAD、POST、PUT、PATCH、DELETE のいずれにも該当しない場合に発生するエラー - レスポンスサイズ超過(ResponseSizeError)
- HTTPレスポンスコードエラー(HTTPResponseCodeError)
レスポンスコードが 200系以外(例:400、404、500など)の場合に発生するエラー
※例外処理が有効であれば、これらのステータスコードによるエラーが報告される
- 認証設定エラー(AuthorizationConfigError)
- ツールノード
- ツール実行エラー(ToolNodeError)
ツール自体の実行に問題があった場合に発生するエラー - ツールパラメータエラー(ToolParameterError)
ツールノードが要求するパラメータと異なる値が入力された場合に発生するエラー - ツールファイル処理エラー(ToolFileError)
ツールノードの処理に必要なファイルが見つからない場合に発生するエラー
- ツール実行エラー(ToolNodeError)