🤖

AWS Bedrock Prompt FlowsとDifyを触った所感

2024/07/15に公開

初めまして。
BtoBマーケの領域でプロダクト開発をしているエンジニアです。
仕事ではGo、React、Google Cloudあたりを使っています。

つい先日、AWSのBedrockからAIのノーコードサービスであるPrompt Flowsがプレビューリリースされました。

https://aws.amazon.com/jp/bedrock/prompt-flows/

弊社でもAI導入の機運が高まっており、最近話題となっているDifyについて調査を進めていたのですが、ほぼ同様のサービスがAWSからリリースされたということで比較対象に上がっています。
(恐らくクラウドベンダーもノーコードサービスを出してくるだろうと予想はしていましたが...)

早速Prompt Flowsを使用してみたので、その感想をメモがてら記載していこうと思います。

Difyについて

DifyはAIアプリ作成のノーコードツールとして今最も注目を集めているサービスです。

https://dify.ai/jp

GitHubのスター数はlangchainに次いで二番目に多く、今もなお爆速で成長を続けている人気のツールです。ここではDifyについては細かく説明はしませんが、LLMやRAGの設定などをGUI上で簡単に設計できるサービスです。

上図はナレッジを取得しそれをLLMに渡す、という非常にシンプルなものです。これを実装しようとすると意外と面倒なのですが、DifyだとGUIの操作だけで30分もかからず作成可能です。

Difyではこのように、任意のブロック(上記「知識取得」「LLM」のようなカード)を組み合わせることでAIアプリを作成することができます。

他にも以下のような機能があります

  • 各種ブロック機能
    • ユーザーからの質問を分類するブロック、イテレーションを行うロジックブロックなど
  • ツール機能
    • Google検索を行う、GitHubから検索を行う、など外部への拡張ツール
  • 公開機能
    • 作成したアプリをクリック一つで公開するような機能

この他にも数え切れない機能が備わっていて、Difyさえあればほぼ何でもAIアプリを作れるのではないかと思えるほど柔軟性に富んだツールです。

なお、Difyはクラウド版とOSS版が提供されていて、クラウド版(いわゆるSaaS)を使用したくない場合は自分でOSS版をデプロイして使用することも可能です。

Bedrock Prompt Flowsについて

ここからが本題のPrompt Flowsについてですが、こちらはDifyとほぼ同様のサービスです。
既に概要を説明している記事も出回っています。

https://qiita.com/moritalous/items/a902f61093b112ba1bd7

使い方はDifyと大体同じで、Nodesというものを任意に組み合わせることでAIアプリを作成することができます。

まだプレビューリリースということもあり、Difyに比べると使用できるNodesが少ないなとは思いますが、ナレッジの設定や基本的なロジックの設定などは可能なので、複雑なAIアプリケーションを作成しない限り必要十分なのではないかと感じました。

DifyとBedrock Prompt Flowsの概要をとても簡単ですが説明したところで、次からは触ってみた所感について述べていきます。

Difyの方が良いと感じた点

まず、Difyの方が優れていると感じた点を記載します。

多機能性

これはDifyの特に優れた点だと感じました。
先ほどGoogle検索機能やGitHub検索機能について述べましたが、Difyはそれだけではなく、Notionとの連携やslackとの連携、WEBのクロール、画像生成など、様々なツールと連携させることができます。

また、ナレッジの作成もとても簡単に行うことができる上に、チャットのメモリ機能もLLMブロックに内包されています。Prompt Flowsでメモリ機能を実装しようとすると、恐らくAgents機能を別途用意しないといけないと思うので若干面倒です。

更に、Difyだと作成したアプリケーションを即公開でき、APIアクセスも用意されていますが、Prompt Flowsだと公開機能は持たず、APIでアクセスするのが前提のようです。

直感性と操作性

個人的にはDifyのUIと操作性が好きなので上げさせて頂いてますが、Difyの直感性は非常に優れていると感じます。

例えば、ユーザーの質問内容を分析し、意図した質問であればナレッジデータを元に回答させ、意図した質問でなければ普通にLLMに回答させる、といったシチュエーションを想定します。

Difyでは質問分類器を使って簡単に実装を行うことができます。

しかし、Prompt Flowsでこれを行うと、現状だと少し複雑になりそうです。
(もっと良い方法があれば是非教えてください...)

Prompt Flowsだと、質問分類器のような機能はないので、一回LLMに質問を分析させ、その後ロジックを挟んでどのNodesを実行するかを制御することで実現できそうですが、ワイヤーもいっぱい伸びているためやや見にくい印象があります。

この他にも、Prompt Flowsで保存したフロー図が次にアクセスした時に崩れていたりと、UI的な部分でも若干気になる点があり、直感性や操作面ではDifyの方が個人的には優れていると感じます。

Bedrock Prompt Flowsの方が良いと感じた点

次にPrompt Flowsを触っていて優れていると感じた点を記載します。

データベースの管理性

この点はAWSの強みが発揮されていると感じますが、BedrockではAWSが提供するデータベースを利用してナレッジデータを作成することができます(デフォルトではOpenSearchのようです)。従って、Prompt Flowsで使用するデータベースをAWSリソースとして管理することが可能です。

一方で、Difyのクラウド版ではナレッジデータに対するデータベースを管理することはできず、ある意味ブラックボックス化している側面があるように感じています。(データベースを考えなくても良い、という面では良い点だと思います)

プロダクトに導入していくことを考えると、データベースはある程度制御できていた方が良く、特にクラウドに統合されているデータベースをそのまま利用できるのは各種サービスとの連携性から考えてメリットは大きいのかなと感じます。

DifyのOSS版を利用した場合、外部のベクトルDBを使用できるようですが、やはりクラウドに統合されたDBと比較すると少しハードルが高く感じています。

AWSリソースとの連携性

こちらも先ほどの話の続きになりますが、やはり他のAWSリソースと直接連携させることができるのは強いと感じます。例えば、Prompt Flowsはlambdaと連携できるようですが、ユーザーからのメッセージをDynamoDBに保存するとか、ログをどこかの解析ツールに書き出すとか、色々な使い道ができそうかなと考えています。
(むしろDifyのように直接コードを記述したい気持ちはありますが...)

まとめ

今回は簡単ですが、DifyとBedrock Prompt Flowsを触ってみた所感について述べていきました。

操作性に関してはDifyの方が優れており、その使いやすさと汎用性は抜群だなと個人的には思います。

一方で、Prompt Flowsはクラウドベンダーということで、既存プロダクトとの連携や運用面のことを考えると親和性は高いのかなと感じます。(Google Cloudも同じようなサービスを出してきそうと考えています)

どちらが良いか悪いかというわけではなく、ユースケースによって使い分けるのがいいのかな...と考えています。

私も全ての機能を触り切ったわけではないのですが、また何か進展があったら執筆したいと思います。

Discussion