虎の穴ラボ技術ブログ

虎の穴ラボ株式会社所属のエンジニアが書く技術ブログです

MENU

Dify は本当にノーコードで AI アプリを作れるのか試してみた!

Dify は本当にノーコードで AI アプリを作れるのか試してみた!
この記事は虎の穴ラボ Advent Calendar 2024の24日目の記事です。

明日で2024年アドベントカレンダーも最後ですね。

今年のアドベントカレンダーのラストを飾るのはT.Hさんです。

ご期待ください!

本記事のテーマは「Dify は本当にノーコードで AI アプリを作れるのか試してみた!」です!

1. 導入

こんにちは。

虎の穴ラボ株式会社のiwadyです。

開発者の皆さん、Pythonしてますか?

Python 3.13のリリースで界隈が盛り上がっていますね。3.13 では CPython の GIL を無効にしてインタープリターをスレッドセーフに起動できる free threaded mode (PEP703)や JIT コンパイラ(PEP744)など実験的な導入が行われました。

エラーメッセージは 3.12 に引き続き改善されており他にも様々な変更がありますので、興味がある方は是非 Python のリリースノートをご覧ください!

ますます面白くなりそうな Python 界隈ですが、 今回は巷で話題のノーコードで AIアプリが作れちゃうと噂の Dify を利用して AI アプリを作ってみようと思います。

2. Dify の紹介

DIfy はノーコードで AI アプリを開発できる OSS なプラットフォームです。

github.com

基本的にはワークフローを GUI で構築するため、視覚的に分かりやすいのが特徴です。

OpenAIAnthropic, Llama などの様々なモデルを使用できるので、用途や自分に合ったモデルを使えるのも魅力的ですね。

執筆時点(2024/11/29)の最新バージョンは0.12.1となっておりメジャーバージョンが 1 未満のため、破壊的変更などもまだまだあるかと思いますので注意しておきましょう。

公式ページ から Github または Google アカウントを使って SaaS 版を利用する事もできますので、「お試しで使ってみたい」、「ローカルで起動するのは面倒くさい」という方はそちらをご利用ください。

本記事ではローカルで起動する方法で試してみようと思います。

ローカルで起動する場合は DIfy の 公式 Github アカウントページ に最低限の実行環境として CPU >= 2 Core、RAM >= 4 GiB が必要なためご注意ください。

3. 実行環境

筆者の実行環境は以下になります。

デバイス : 2023 MacBookPro(M2)

macOS : Ventura13.6.7

メモリ : 32GB

利用するモデルプロバイダーの API Key は事前に取得済みです。

それでは実際にインストールしてみようと思います。

4. 開発

インストール

まず git コマンドで Dify リポジトリをクローンします。

git clone https://github.com/langgenius/dify.git

後は公式の README.md に記載がある通り、docker ディレクトリ内の .env ファイルを cp します。

cp .env.example .env

docker コマンドを使うので docker daemon の起動も忘れずに行っておきましょう。

最後に docker compose up で起動します。

docker compose up -d

http://localhost/install にアクセスして初期設定画面が表示されたら起動成功です。

管理者のメールアドレス、ID、パスワードを入力して初期設定を完了すると以下のログイン画面に遷移します。

初期設定時に入力したメールアドレスとパスワードでログインしましょう。

アプリ作成

それでは、実際に作成してみましょう。

「テンプレートから作成」ではワークフローやチャットボット、テキスト生成などについて多くのテンプレートをベースに開発することができます。

目的にも寄りますがテンプレートを活用して作る方が効率が良さそうです。

今回はテンプレートの「Text Summarization Workflow」をベースにカスタマイズして会話要約アプリを作成してみようかと思います。

「新しいアプリ」の「テンプレートから作成」を選択後、「Text Summarization Workflow」を選びます。

以下は「Text Summarization Workflow」を選択してテンプレートアプリを作成した直後の画面です。

ただ、これだけではテンプレートの実行ができません。

どのモデルプロバイダーを利用するかの設定が必要になります。

右上のアカウントアイコンをクリックし、「設定」を選択後「モデルプロバイダー」を選ぶと以下の画面になります。

今回は OpenAI を利用します。

一覧から OpenAI を選択し API Key を入力して、セットアップを完了しましょう。

カスタマイズ

折角ですので、幾つかカスタマイズしてみます。

「Text Summarization Workflow」テンプレートでは入力テキストの限界値が初期値200で設定されています。

会話要約アプリで入力テキスト長が200では少ないので、10000くらいにしておきましょう。

START リソースをクリック後、入力フィールド input に対して編集を行います。

画像のように最大長 200 を 10000 に変更します。

メインで使う LLM 2 のモデルも初期値の「gpt-3.5-turbo」から「gpt-4o」に変更します。

「Text Summarization Workflow」テンプレートでは、summaryStyle フィールドで「General Overview」と「Technical Summary」が選択できます。

「Technical Summary」を選択するとRAG(検索拡張生成)を使うことができ、Knowledge Retrieval リソースにナレッジを指定することでより専門的で精度の高い回答を行うことができるようになります。RAGのナレッジには「テキストファイル」、「Notion」「ウェブサイトから同期」を選択できます。

今回は会話要約アプリなので RAG は使いませんが、必要な場合は上記を使うと良いでしょう。

後は、出力形式にタイトルを追加するように変更して、不要なリソースも整理してみます。

最終的には以下のようなシンプルなリソースマップとなりました。

これくらいであればテンプレートを利用しなくても問題ありませんが、初めてアプリを作成する際には色々参考になりますので「テンプレート」を眺めてみる事をお勧めします。

実行

それでは実行してみます。

リソースマップの右上の「実行」を押して、以下の会議の議事録のダミーデータを入力してみます。

登場人物と会議内容は全て架空のものですのでご注意ください。

田中課長: 「本日はお忙しい中お集まりいただきありがとうございます。現在、我々はA社の天気予報システムを使用していますが、精度と費用の両面で課題があると認識しています。まず、鈴木さんから技術的な観点についてご説明いただけますか?」

鈴木さん: 「はい。A社のシステムは、データの更新頻度が1時間に1回で、短時間の予報において精度が不足しています。特に急な天候変化に対応しきれていません。一方で、B社のシステムは15分ごとのデータ更新が可能で、より精度の高い予報が期待できます。さらに、B社は最新の気象モデルを採用しており、特に局地的な予報に強みを持っています。これにより、私たちはより正確なデータに基づいて意思決定を行うことができます。」

佐藤さん: 「財務の観点から言いますと、A社のシステムは年間のランニングコストが高く、最近の予算を圧迫しています。B社のシステムは初期導入費用は若干高いものの、長期的にはコスト削減が見込めると試算しています。また、B社は柔軟な支払いプランを提供しており、我々のキャッシュフローに合わせた予算管理が可能です。これにより、財務的な負担を軽減しつつ、効率的な運用が実現できます。」

山田さん: 「営業の立場からすると、顧客からのフィードバックでも、予報の精度向上を求める声が増えています。B社のシステムに切り替えることで、顧客満足度の向上と新規顧客の獲得につながる可能性があります。さらに、我々の営業チームは、B社のシステムを活用した新しいサービスの提供を計画しており、これにより市場での競争力を高めることができます。」

木村さん: 「データ分析の観点では、B社のシステムはAIによる予測モデルが優れており、過去のデータを活用した精度の高い予測が可能です。これにより、我々の分析業務も効率化が期待できます。さらに、B社のシステムはカスタマイズ性が高く、我々のニーズに合わせたデータ分析が可能です。これにより、より深いインサイトを得ることができ、戦略的な意思決定をサポートします。」

田中課長: 「皆さん、貴重な意見をありがとうございます。総合的に見て、B社のシステムに切り替えることが我々の課題解決に繋がると考えられます。次回の会議までに、各自さらに詳細な分析と提案をまとめていただけますか?具体的には、技術面、財務面、営業面、そしてデータ分析面でのメリットをさらに深掘りし、それぞれの観点からのリスクも考慮した上での提案をお願いしたいと思います。」

全員: 「了解しました。次回の会議までに準備を整えます。」

出力結果は以下のようになりました。

Title: A社の予報システムからB社への切り替えに関する技術・財務・営業・データ分析

Summary: 田中課長は、A社の天気予報システムの問題点について話し合うための会議を開きました。鈴木さんは技術的な観点から、A社のシステムはデータ更新頻度が低く、短時間の予報精度に問題があることを指摘し、B社のシステムの方が最新の気象モデルを使用し、精度が高いと説明しました。佐藤さんは、財務的観点から、A社のシステムはランニングコストが高く、B社のシステムに切り替えることで長期的にコスト削減が見込めると述べました。山田さんは営業の視点から、顧客の要求に応えるためにB社のシステムへの切り替えが必要であると主張しました。木村さんはデータ分析の観点から、B社のシステムのAI予測モデルが優れており、より深いインサイトが得られると述べました。田中課長は、B社のシステムへの切り替えが課題解決につながると考え、次回の会議までに詳細な分析と提案を求めました。全員が次回の会議までに準備を進めることを確認しました。

ここまでコードらしいコードを書くことはなく、GUI と設定値の変更だけで「会話要約アプリ」を作成する事ができました。

5. まとめ

本記事では、ノーコードで AI アプリを作成できると噂の Dify を使って簡単な AI アプリを作ってみました。

本当にノーコードで作成できましたね、驚きました。

Difyは GUI で視覚的にワークフローを構築できる点、OpenAIやAnthropic等の様々なAIモデルが利用できる点、様々なテンプレートが存在する点など非常に取っ付きやすかったです。

プログラミングが苦手でも AI で何かを作ってみたい方は、ブラウザの SaaS 版を利用してみては如何でしょうか?

AI 開発界隈では Replit Agent も登場し、日進月歩で目覚ましい進化を遂げています。

今後も目が離せませんね。

採用情報

虎の穴では一緒に働く仲間を募集中です!

この記事を読んで、興味を持っていただけた方はぜひ弊社の採用情報をご覧下さい。

カジュアル面談やエンジニア向けイベントも随時開催中です。ぜひチェックしてみてください。 toranoana-lab.co.jp