Algomatic Tech Blog

Algomaticの開発チームによる Tech Blog です

社内で Dify ハッカソンを開催しました!

はじめに

はじめまして、Data Scientist の山内(@jof_5)です。

本記事では、先日、社内で開催した Dify ハッカソンの様子について紹介します。

Dify ハッカソン実施の背景

先日、LLM アプリケーションをノーコードで開発できる Dify という新しいツールが登場し、LLM アプリケーション開発を大幅に簡素化できると話題になっていました。

dify.ai

社内でも話題に上がっており、Dify の実用性について興味深い議論が巻き起こりました。「本当に使いやすいのか?」「どこまでの機能が実装可能か?」「実際の開発現場でどの程度有用か?」といった疑問が次々と浮上しました。

Dify 議論で興奮しすぎた横断CTOの南里さん

そこで、これらの疑問に答えるには、実際に手を動かして検証するのが一番だという結論に至り、Dify ハッカソン開催に至りました。

個人的に興味深かったのは、ハッカソン実施までのスピード全員の姿勢です。議論の翌日には日程がセットされ、翌週にはハッカソンを実施しました。また、エンジニアやセールスといった職種や、CxOといった職位関係なく、ハッカソンに取り組みました。迅速な行動力技術への熱意 Algomatic メンバーの特徴です。

開発したLLMアプリケーションのご紹介

それでは、開発した LLM アプリケーションをご紹介をいたします。

1. クラウドサービス見積もりくん

直面していた業務課題

  • クラウドサービスの複雑な価格体系による見積もり作成の非効率性が課題でした。多層的な料金構造変動要素の多さから、見積もり作成に膨大な時間を要していました。

LLMアプリケーション概要

  • 使用するクラウドサービス、アプリケーション概要、想定利用者数などの入力で、クラウドサービスの簡易見積もりを出してくれるアプリケーションをつくりました。
    概算見積もりを出してくれる(内容はイメージです)

工夫したところ

  • 検索機能を実装し、クラウドサービス名から最新の価格表を取得できるようにしました。これにより、最新の価格表に基づく、見積もりを計算できるようになりました。
  • プロンプトを調整し、バッファをある程度持たせた概算見積もりを出力してくれるようにしました。

2. Sales Lead Generator

直面していた業務課題

  • インサイドセールスからフィールドセールスへのリード情報共有に時間がかかっていました。個々の作業は単純でしたが、プロジェクト情報を適切に理解し整理する必要があり、担当者のマインドシェアを大きく奪っていました。

LLMアプリケーション概要

  • インサイドセールス時の顧客候補とのチャットベースのやりとりをフィールドセールスに必要な情報を自動生成するサービスを開発しました。ユーザーは情報を雑にコピーペーストし、会社プロジェクト名を記載するだけで、Notion の案件管理 DB にリード情報が自動作成され、Slack に通知が送られます。

顧客候補とのやり取りをコピペ(内容はイメージです)
Notion の DB に構造化データとして記載(内容はイメージです)

工夫したところ

  • HTTP の Request Body を JSON で送信する際の特定文字列のエスケープ処理の問題がありました。(これ自体はDifyアプリのバグの様ですハッカソンの限られた時間内で簡単に修正できる必要があったため、問題が起こった前のフローの出力データの整形を行いました。 Dify では、JSON のバリューとして、変数も参照できるのですが、JSON 自体を LLM に出力させることで、文字のエスケープ処理が適切に行われるプロンプトを組み込みました。これにより、Request Body の一部のデータ変形を Dify アプリ側で処理させず、予期せぬエスケープ処理を回避しました。

3. その他

上記以外にもいくつか LLM アプリケーションを開発しました。

アプリ名 直面していた業務課題 LLMアプリケーション概要 工夫したところ
会議後メール送付くん ・会議後にお礼メールをすぐに送りたいにも関わらず、打ち合わせ続きや移動なので作業ができない ・会社名とお礼メールでのアクションを選択すると自動で返信メールの下書きを作成してくれる。あとはポチッと送るだけ(スマホでもいける) Google App ScriptでAPIを作成し、それと連携させるワークフローを構築した
営業先企業調査エージェント ・営業前にお客様の情報を調べるのが大変 ・決算資料PDFのURLをいれると、企業調査をしてくれる ・difyはPDFをアップロードして読み込ませるというワークフローがまだ組めないので、Jina Readerというノードを使って、PDFのURLをテキストに変換した
業界の競合企業リサーチエージェント ・特定業界における複数プレイヤーの比較調査、調査結果をまとめた表の作成に時間がかかる ・与えられたカンタンな検索クエリを元に、適切なサイト群から情報を取得し表にまとめる プロンプトを工夫し以下を実現できるようにした
・特にサービスLPにありがちな画像内のテキストも読み込める
・比較サイトなどを除外し、公式サイトから情報取得できる
CSV, マークダウンによるテーブルなど扱いやすい複数の形式で出力する
おすすめランチ場所探してくれるbot ・あまり来たことない場所でのおいしそうなランチを探すのが大変 ・調べたいエリア名を入れるとおすすめランチをリストアップしてくれる ・iterationを定義して複数ページの結果をまとめられるようにした
記事の自動生成ワークフロー ・日々発信される生成AIニュースは膨大であるため最新ニュースを完全にキャッチアップするのは困難 ・任意のトピックに関する最新記事を複数取得し、各記事の要約文を自動生成してくれる ・プロンプトを工夫し参照元となったリンクを生成される記事に含める様にした。
・iterationを定義し、複数記事のまとめ記事を生成できるようにした

Dify ハッカソンを通じて得た学び

Dify の良かった点として、開発体験の良さが挙げられていました。

参加者の声

  • 非エンジニアでも使いやすかった
  • LLMネイティブなZapier感。よりLLMに特化して複数システムを簡単に連結出来る。
  • 自前環境ホスティング出来る。
  • 開発体験が良い。(自前コードを埋め込める・スタックトレースがある・各ワークフロー毎の実行ができるなど)
  • 簡易UIの提供とワークフローが可視化されている点は良かった。運用/微改修は非エンジニアでも可能
  • 直感的なUIで、どれが入力でどれが出力かをサクサク繋いで処理を描けるところ
    直感的に開発ができる

一方で、Dify によって開発は簡単になるものの、多少のコードを書く必要はあるため、Difyを使いこなすには、エンジニアリングのスキルが必要との声も多かったです。

参加者の声

  • 入出力制御の柔軟性は欠けるので、入出力整形のための簡単なコードは自分で書く必要がある
  • エラーが起きた時のデバッグがやりづらい
  • Google , MS 主要プロダクトとは全て簡単に連携できるモジュールがほしい(現在の GoogleSearch や WebScraper と同じように)
  • コードが書けないと出来ることに限界があるので、非エンジニアだとやりたいことが完全に実現するのが難しいことがある
  • Google アプリとの連携強化を求む!
  • 結局めっちゃコーディングする!運用は楽だが、構築はまだまだエンジニアリングが必要

今回の Dify ハッカソンは、参加者全員が Dify の実用性と可能性を直接体験し深く理解する良いきっかけになりました。

最後に

Algomatic では LLM を活用したプロダクト開発等を行っています。 LLM を活用したプロダクト開発に興味がある方は、下記リンクからカジュアル面談の応募ができるのでぜひお話ししましょう!