The Three Trees, Bletchley
© Copyright Cameraman and licensed for reuse under this Creative Commons Licence.

 

 

「Difyについてーその3」では、まず、最近話題になっているRAG (Retrieval-Augmented Generation) についてClaude3に尋ね、RAGに関する技術動向を確認するとともに、RAGのあるべき姿についてClaude3と議論した模様を、見ていただきました。

そして、Dify.AIが提供する情報による、Difyをよく理解するためのRAGアプリ制作過程の説明に入ったのですが、長くなったので、RAG情報を用意するところまでで終了しました。

今回は、その続きで、用意したRAG情報をDifyに「ナレッジ」として登録し、Difyが用意してくれているRAGアプリ構築用のテンプレートを利用して、チャットボットアプリ「Difyのことなら何でも聞いてください」を動かしてみるまでをご覧いただきたいと思います。

 

とりあえず、前回定義したナレッジ「1-Welcome to Dify!」の情報を参照してDifyに関する情報提供を行うRAGアプリを作ってみましょう。

 

Difyのメニュー「探索」で表示されたテンプレートアプリのうち、「Knowledge Retriebal + Chatbot」の「+ワークスペースに追加」をクリックして、これをベースにテストアプリを作ってみましょう。

すると、次のダイアログボックスが表示されました。

このテストRAGアプリの名前と説明を入力して「作成」をクリックすると、

このように、Start(開始)⇒Knowledge Retrieval(RAG情報検索)⇒LLM(生成AI呼出し)⇒Answer(回答)の順にノードがリンクされた状態でテンプレートが表示されました。

 

Startのボックスをクリックすると、このStartノードの設定ができますが、テンプレートで、すでに入力フィールドとしてsys.queryが設定されているので、そのまま使います。

次に「Knowledge Retrieval」のボックスをクリックします。

「クエリ変数」として、Startノードの入力変数sys.queryがデフォルトで設定されているのが分かります。

その下「知識」の下の段に『ナレッジを追加するには「+」ボタンを押してください」とあるので、クリックすると、前回ナレッジとしてすでに登録してあったものが表示されます。

今回は「1-Welcome to Dify!」のみをクリックして選択し「追加」します。

これで、「知識」として「1-Welcome to Dify!」を参照するように設定ができました。

また、「出力変数」としてデフォルトでresultというArrayオブジェクトも定義されていることが分かります。

 

で、次に「LLM」のボックスをクリックします。

デフォルトの生成AIモデルが「gpt-3.5-turbo」なので、GPT-4oに変更したいと思います。

まず、モデル「gpt-3.5-turbo」 の横の①あたりをクリックすると、「MODEL gpt-3.5-turbo」の設定画面がポップアップするので、その②の部分をクリックすると、上図のようにモデルのリストが表示されるので、gpt-4o-2024-05-13を選びます。ついでにTemperatureの値をデフォルトの0.7から1にしました。逆でした。Temperatoreの値を大きくすると、生成結果のランダム性が増すので、0.1に訂正しました。

これで、「モデル」はGPT-4oに変更できましたが、その下の段の「コンテキスト」欄が空白なので、ここに、「Knowledge Retrieval」で設定した「1-Welcome to Dify!」を設定します。

「コンテキスト」の下段の「(x) 変数を設定」をクリックすると、設定できる変数のリスト(赤線枠内)が表示されるので、「Knowledge Retrieval」ノードの出力変数「result」を指定しました。

 

GPT-4oに渡すSYSTEMプロンプトは、テンプレートで

You are a helpful assistant.

Use the following context as your learned knowledge, inside <context> </context> XML tags.

<context>

{コンテキスト}

</context>

When answer to user:

– If you don’t know, just say that you don’t know.

– If you don’t know when you are not sure, ask for clarification.

Avoid mentioning that you obtained the information from the context.

And answer according to the language of the user’s question.

 

となっているので、「コンテキスト」欄に「Knowledge Retrieval」ノードの出力変数「result」を指定することにより、Startノードでの入力(sys.query)基づいて「1-Welcome to Dify!」でマッチした情報が「result」として生成AIに渡されることになります。

 

また、LLMの設定画面のさらに下の方を確認すると、下図の通り、①Startノードの入力データであるsys.queryが「USER」プロンプトとして生成AIに渡され、②生成AIの出力は、「出力変数」textに入れられることが分かります。

そして、③「Answer」ノードにLLMの出力であるtextが渡されることが確認できました。

 

では、「デバッグとプレビュー」ボタンをクリックして表示される「デバッグとプレビュー」画面の下段(チャットボットのデバッグを開始するには、以下のボックスにコンテンツを入力してください)の下の入力欄に「Difyを一言で説明してください」と入力し、送信アイコンをクリックすると以下が表示されました。

回答部分:Difyは、生成AIアプリケーションを迅速に開発するためのオープンソースプラットフォームです。

また、「Difyがどういうものか、詳しく教えてください。」と入力すると以下のように詳しい説明が返されました(長すぎて、何度かに分けて出力されました)。

 

回答部分:Difyは、生成AIアプリケーションを迅速に開発するためのオープンソースの大規模言語モデル(LLM)アプリケーション開発プラットフォームです。以下の特徴があります:

  1. バックエンドとLLMOpsの融合: Difyは、Backend-as-a-Service(BaaS)とLLMOpsの概念を組み合わせており、これにより開発者が迅速に生成AIアプリケーションを制作できるようになります。

  2. 高い生産性: 技術的な専門知識がなくても、AIアプリケーションの定義やデータ運用に参加できます。この点で技術者だけでなく、ノンテクニカルなユーザーも利用しやすい設計となっています。

  3. 総合的な技術スタック: 数百のモデルをサポートし、直感的なプロンプトオーケストレーションインターフェース、高品質なRAGエンジン、柔軟なエージェントフレームワークなどを統合。開発者はこれらを利用して、再発明に時間を浪費することなくイノベーションやビジネスニーズに集中できます。

  4. オープンソース: Difyはオープンソースであり、プロのフルタイムチームとコミュニティによって共同制作されています。このため、データ管理やセキュリティの柔軟性を持ちながら、簡単に使えるインターフェースを提供します。

  5. 多様な用途:

    • スタートアップ: アイデアを迅速に形にし、成功や失敗を加速させます。
    • 既存ビジネスへの統合: 現在のアプリケーションにLLMを組み込み、その機能を強化します。
    • エンタープライズLLMインフラ: 大企業が内部のLLMゲートウェイとしてDifyを導入し、GenAI技術の採用を加速します。
    • 技術探求: テックエンスージアストがプロンプト工学やエージェント技術を簡単に実践できる環境を提供します。これまでに60,000人以上の開発者がDifyを用いて最初のアプリを作成しています。

      主な技術的特徴

      1. 高頻度のリリース: 毎週平均して1回のリリースを行っており、迅速な機能追加や改善が期待できます。

      2. モデルサポート: OpenAIやAnthropicなどの商用モデルを含む10以上のモデルをサポートし、新しい主流モデルを48時間以内にオンボードします。

      3. マルチモーダル機能: 音声認識(ASR)モデルやGPT-4Vなどのリッチテキストモデルをサポート。

      4. プロンプトオーケストレーション: ビジュアルなオーケストレーションインターフェースを提供し、プロンプトの修正や効果のプレビューを一箇所で行えるため、開発プロセスが効率化されます。

      5. 柔軟なエージェントフレームワーク: Simple、Assistant、Flow、Multi-Agentのオーケストレーションモードがあり、様々なユースケースに対応可能(2024年Q2にグループ機能が追加予定)。

      6. ローカルモデル推論ランタイム: Xoribits、OpenLLM、LocalAI、ChatGLM、Ollama、NVIDIA TISなど、複数のランタイムをサポート。

      7. オープンAIインターフェースの標準化: 無限のモデル統合をサポートし、企業や開発者がカスタマイズしたLMAを統合しやすくします。

      8. RESTful API: プロンプトとビジネスロジックを分離するためのAPIを提供し、アプリケーションの管理やデータ、コスト、使用状況の追跡を容易にします。

      Difyは、定義(Define)と改良(Modify)の概念を基に、AIアプリケーションを継続的に改善できるよう設計されています。以下にさらに詳しい情報を提供します:

      採用事例

      概念を基に、AIアプリケーションを継続的に改善できるよう設計されています。以下にさらに詳しい情報を提供します:

      • スタートアップ: 複数のスタートアップチームがDifyを使用して最小限の実行可能製品(MVP)を迅速に作成し、資金調達や顧客獲得に成功しています。このように、スピーディーなプロトタイピングが可能です。

      • 既存ビジネスへの統合: 既存のアプリケーションにLLMを統合することで、その機能を大幅に向上させることができます。DifyのRESTful APIを使用することで、プロンプトとビジネスロジックをデカップルしやすくなります。

      • エンタープライズ向け: 一部の銀行やインターネット企業は、内部のLLMゲートウェイとしてDifyを導入しています。これにより、GenAI技術の採用が迅速化され、中央集権的なガバナンスが可能となります。

      コミュニティとオープンソース

      • コミュニティの貢献: Difyはオープンソースであり、120人以上のコミュニティ貢献者がいます。これにより、技術が広く共有され、革新が促進されます。

      • 透明性と信頼性: プロダクトスペックに関しては透明性を重視し、意思決定が完全な理解に基づいて行われるようにしています。これにより、技術選定が容易になり、コミュニティ内での積極的な貢献が促進されます。

      技術スタックとサポート

      • バックエンド技術: Python、Flask、PostgreSQLといった安定した技術基盤を採用。
      • フロントエンド技術: Next.jsを使用しており、モダンで高性能なWebアプリケーションの開発が可能。
      • コードベース: 130,000行以上の規模なコードベースがあり、その結果、多機能で信頼性の高いプラットフォームとなっています。

      リリースとサポート

      • 定期リリース: 平均で週に一度のリリースが行われており、頻繁に新機能追加やバグ修正が行われます。これにより、常に最新の技術や機能を利用できる環境が整っています。

      • 多種多様なモデルサポート:

        • 商用モデル: OpenAI、Anthropicなど10以上の商用モデルをサポートしており、新しい主流モデルが市場に登場すると、48時間以内にサポートが追加されます。
        • MaaSプロバイダー: Hugging Face、Replicate、AWS Bedrock、NVIDIA、GroqCloud、together.ai、OpenRouterなど7つのMaaS(モデル-as-a-Service)ベンダーをサポートしています。
      • ローカルモデルの推論ランタイム: Xoribits、OpenLLM、LocalAI、ChatGLM、Ollama、NVIDIA TISなど、ローカルでのモデル推論を可能にする6つのランタイムがサポートされています。

      • マルチモーダル機能:

        • 音声認識(ASR): 音声認識モデルを統合し、音声からテキストへの変換が可能。
        • リッチテキストモデル: GPT-4Vなどの高度なリッチテキストモデルをサポートしています。

      プロンプトオーケストレーション

      • ビジュアルインターフェース: プロンプトの作成、修正、プレビューを一つのインターフェースで行うことができ、開発プロセスが大幅に効率化されます。

      • 多様なオーケストレーションモード:

        • シンプルオーケストレーション: 基本的なプロンプト管理に適しています。
        • アシスタントオーケストレーション: AIアシスタントのための詳細なプロンプト管理が可能。
        • **フローオーケストレーション**: 複雑なワークフローを管理するためのプロンプトオーケストレーションが可能です。
        • マルチエージェントオーケストレーション(2024年第2四半期予定): 複数のエージェントを統合し、より高度なAIアプリケーションの開発が可能になります。

      インフラと管理ツール

      • RESTful API: プロンプトとビジネスロジックを分離するためのAPIが提供されており、アプリケーション管理が容易になります。
      • データ管理とコスト追跡: Difyの管理インターフェースを利用することで、アプリケーションの使用状況やコスト、データのパフォーマンスを追跡し、継続的な改善が行えます。

      エンタープライズと企業展開

      • エンタープライズLLMインフラ: 一部の銀行やインターネット企業がDifyを内部のLLMゲートウェイとして導入しており、これによりGenAI技術の迅速な採用と中央集権的なガバナンスが可能になります。

      デベロッパーエクスペリエンス

      • 簡単なプロンプト工学: プログラミング初心者でもプロンプトエンジニアリングやエージェント技術を簡単に学べる環境が整っており、技術探求がしやすくなっています。
      • 豊富なコミュニティリソース: 多くのコミュニティメンバーやオープンソースのリソースがあり、学習とサポートを受けることができます。

そして、Difyに関係のない「明日は何曜日ですか?」という質問に関しては、「1-Welcome to Dify!」に関連情報がないため、以下の「わからない」との回答がGPT-4oから返されました。

回答部分:申し訳ありませんが、私は現在の日付を知ることができないため、明日が何曜日になるかをお答えすることはできません。現在の日付を教えていただけると、そこから計算してお答えできます。

ちなみに、Difyからではなく、OpenAIのChatGPT-4oに同じ質問をすると、以下の通り、ちゃんと答えてくれました。

 

長くなってしまいましたので、一旦終わりにします。

 

終わり