Pythonであらゆるコンポーネントを手動で接続することなくLLMアプリやAIエージェントを構築したい場合、Flowiseは視覚的なキャンバスを提供します。これはオープンソースのローコードツールで、ノードをドラッグして接続するだけで、APIエンドポイントを持つ動作するAIワークフローを構築できます。このガイドでは、Flowiseとは何か、チャットフローとエージェントフローがどう違うのか、デプロイ方法、予測エンドポイントとフローが呼び出すAPIのテスト方法について説明します。LangGraphに関する弊社の説明記事を読んだことがあるなら、Flowiseはスペクトルの反対側に位置します。コードファーストではなく、ビジュアルファーストなのです。ソースコードについては、GitHubのプロジェクトREADMEを参照してください。
Flowiseとは
Flowiseは、AIエージェントとLLMワークフローを構築するためのオープンソースの生成AI開発プラットフォームです。Apache 2.0ライセンスの下でリリースされており、ローカルで実行したり、自己ホストしたり、フォークしたりできます。

核となるアイデアは、ノードベースのキャンバスです。各ノードはビルディングブロックであり、チャットモデル、ベクトルストア、ドキュメントローダー、メモリモジュール、リトリーバー、ツールなどがあります。これらをキャンバスにドラッグし、接続を描画することで、データの流れが定義されます。フローが完成すると、Flowiseはそれをどのアプリからでも呼び出せるREST APIとして公開します。
内部的には、FlowiseはLangChainやLlamaIndexのようなフレームワークのコンポーネントを接続します。そのため、これらのいずれかを使用したことがあれば、チェーン、エージェント、ベクトルストア、クエリエンジンといった抽象概念は馴染み深く感じるでしょう。違いは、クラスをインポートしてコンストラクタを呼び出す代わりに、クリックして接続することで組み立てる点です。これがFlowiseのトレードオフです。細かい制御の一部を諦める代わりに、スピードとチーム全体が理解できる共有の視覚モデルを獲得できます。
チャットフロー、エージェントフロー、およびアシスタント
Flowiseには3つのビルダータイプがあり、適切なものを選択することが重要です。
| ビルダータイプ | 最適な用途 | 範囲 |
|---|---|---|
| アシスタント | 初心者向け。指示に従い、ツールを使用し、アップロードされたファイルに対してRAGを行うチャットアシスタント | 最も狭く、最もガイドされる |
| チャットフロー | 単一エージェントシステム、チャットボット、よりシンプルなLLMフロー。Graph RAGとリランカーをサポート | 単一エージェント |
| エージェントフロー | ブランチ、ループ、ルーティングを備えたマルチエージェントシステムと複雑なオーケストレーション | 最も広く、チャットフローとアシスタントのスーパーセット |
チャットフローは、従来のFlowiseフローです。質問を受け取り、コンテキストを取得し、モデルを呼び出し、回答を返す、という一つの論理的なパイプラインを構築します。単一エージェントのチャットボットとRAGをうまく処理します。
エージェントフローは、より大きなキャンバスです。Flowiseでは、チャットフローとアシスタントのスーパーセットとして位置付けられています。ここでは、マルチエージェントシステムを構築したり、ブランチ間でルーティングしたり、ループしたり、より複雑なワークフローオーケストレーションを実行したりします。設計に複数のエージェントが互いに作業を引き渡す必要がある場合、エージェントフローが望ましいレイヤーです。
アシスタントは、最もガイドされるオプションです。指示を与え、ツールをアタッチし、取得のためにファイルを指定します。グラフ構造を考えることなく、役立つものを素早く手に入れるための最も速い方法です。
キャンバス上でフローがどのように構築されるか
Flowiseでの構築は次のようになります。チャットフローを開始し、左側のパネルからノードを追加します。
- チャットモデルノードをドロップし、プロバイダー(OpenAI、Anthropic、ローカルモデルなど)を選択します。
- 取得が必要な場合は、ドキュメントローダーとベクトルストアを追加します。
- フローが会話を記憶するようにメモリノードを追加します。
- コンテキストがモデルに流れるように出力を入力に接続します。
- 保存後、チャットパネルを開いてライブでテストします。
ビジュアルエディターは、式、カスタムコードノード、分岐、ループ、ルーティングロジックをサポートしています。そのため、制約されることはありません。あなたのケースに合うノードが存在しない場合は、小さなカスタム関数ノードを記述し、残りの部分は視覚的に保つことができます。
FlowiseとREST予測エンドポイントのデプロイ
Flowiseは、デフォルトでポート3000でNodeアプリとして実行されます。最も簡単な開始方法はnpmです。
npm install -g flowise
npx flowise start
# open http://localhost:3000
再現可能なデプロイにはDockerを使用します。
docker run -d --name flowise -p 3000:3000 flowiseai/flowise
Flowiseは自己ホスト型およびエアギャップデプロイメントもサポートしており、データがネットワーク外に出られない場合に重要です。
フローが保存されると、FlowiseはそれをREST APIに変換します。公式の予測ドキュメントには、完全なリクエスト形式が記載されています。すべてのチャットフローとエージェントフローは独自の予測エンドポイントを持ちます。
POST /api/v1/prediction/{id}
{id}はフローのIDです。少なくともquestionフィールドを含むJSONボディを送信すると、フローの応答が返されます。最小限の呼び出しは次のようになります。
curl -X POST http://localhost:3000/api/v1/prediction/<flow-id> \
-H "Content-Type: application/json" \
-d '{"question": "What are your store hours?"}'
リクエストボディは質問以外にも多くのものをサポートしています。streamingを渡してトークンをストリーミングしたり、overrideConfigでリクエストごとにフロー設定を変更したり、historyで以前のターンをシードしたり、uploadsで画像や音声を送ったりできます。ストリーミングがオンの場合、Flowiseはstart、token、metadataなどのイベントを発行し、最後にendイベントを発行します。Flowiseは、このエンドポイントをラップする公式のPythonおよびTypeScript SDKも提供しています。
この単一のエンドポイントが、Flowiseとスタックの残りの部分との間の契約です。フロントエンド、バックエンド、その他のサービスはすべて、それを通じてフローと通信します。まさにそのため、慎重にテストする価値があります。
ローコードが適する場合とコードファーストが優勢な場合
Flowiseは、スピード、共有ビジュアルモデル、迅速なイテレーションが必要な場合に適しています。プロトタイプ、社内チャットボット、ドキュメントセットに対するRAGアシスタント、デモなどはすべて迅速に構築できます。チームの非エンジニアでもキャンバスを読み解き、エージェントが何をするかを理解できます。これはPythonファイルからでは難しいことです。
コードファーストフレームワークは、厳密な制御が必要な場合に優位に立ちます。Gitでエージェントロジックを完全な差分付きでバージョン管理したり、各ステップに対して密な単体テストを作成したり、珍しいステートマシンを構築したりする場合、LangGraphやGoogle Agent Development Kitのようなライブラリの方が自由度が高くなります。カスタムツール呼び出しに依存するエージェントの場合、OpenAI Agents SDKにも同じことが当てはまります。多くのチームは両方を使用しています。Flowiseでプロトタイプを作成し、要件が安定したら実証済みの設計をコードに移植します。
正直なところ、これは二択ではありません。FlowiseにはAPI、CLI、SDKアクセス、トレーシング、評価、ヒューマン・イン・ザ・ループ機能があり、おもちゃよりもさらに拡張可能です。しかし、ロジックが実際のソフトウェアに似てくるほど、コードファーストのスタックがより報われます。
予測エンドポイントとフローが呼び出すAPIのテスト
Flowiseで構築されたエージェントは、その背後にあるAPIと同じくらい信頼性があります。フローはLLM APIを呼び出し、通常は外部ツールやREST APIも呼び出します。これらは本番環境で障害が発生する可能性のある部分であり、まさにApidogでテストできるものです。
まず予測エンドポイント自体から始めます。POST /api/v1/prediction/{id}を他のRESTエンドポイントと同じように扱います。Apidogでは、URLを設定し、questionペイロードを送信し、応答の形状とキーフィールドをチェックするAPIアサーションを記述します。これを自動テストとして実行することで、契約を破るフローの変更がアプリに影響を与える前に検出されます。
次に、フローが依存する基盤となるAPIをテストします。LLMプロバイダーとすべてのツールエンドポイントは直接ヒットできます。トークンを消費したりレート制限に引っかかったりすることなくLLMに対して開発したい場合は、フローを、事前定義された現実的な応答を返すモックAPIに接続します。同じトリックは不安定なサードパーティツールAPIにも適用できます。モックし、フローが形状を処理することを確認し、テストスイートを決定的に保ちます。詳細なウォークスルーは、AIエージェントテストハーネスガイドにあります。
Apidogは、退屈だが重要な部分も処理します。プロバイダーキーを環境ごとに保存できるため、開発フローではテストキーを、本番環境では実際のキーを使用してもコード変更は不要です。Apidogをダウンロードしてこれをセットアップするのに数分かかります。
よくある質問
Flowiseは無料ですか、オープンソースですか?
はい。FlowiseはApache 2.0ライセンスの下でオープンソースであり、npmまたはDockerで自己ホストすることで無料で実行できます。インフラを管理したくない場合は、ホスト型クラウドオプションもあります。プライベートまたはエアギャップ設定の場合、自己ホスト型ルートはすべてをネットワーク内に保ちます。
FlowiseはLangChainを使用していますか?
FlowiseはLangChainとLlamaIndexの両方のコンポーネントを接続します。キャンバス上のノードは、これらのフレームワークの馴染みのある概念(チェーン、エージェント、ベクトルストア、リトリーバー、クエリエンジン)にマッピングされます。手動で接着コードを書くことなく、同じビルディングブロックを利用できます。
チャットフローとエージェントフローの違いは何ですか?
チャットフローは、単一エージェントシステム、チャットボット、およびよりシンプルなLLMパイプライン向けに構築されています。エージェントフローはスーパーセットであり、分岐、ループ、ルーティングを備えたマルチエージェントシステムと複雑なオーケストレーションを処理します。簡単なアシスタントにはチャットフローから始め、複数のエージェントが連携する必要がある場合はエージェントフローに移行します。
FlowiseフローのAPIをテストするにはどうすればよいですか?
questionを含むJSONボディで、予測エンドポイントPOST /api/v1/prediction/{id}を呼び出します。これはcurl、公式SDK、または専用ツールで実行できます。Apidogでは、リクエストを送信し、応答をアサートし、フローが呼び出すLLMおよびツールAPIをモックし、それらすべてをCIで実行します。LLMエンドポイントに特有の認証とストリーミングの詳細は、ApidogでChatGPT APIをテストする方法に関するガイドを参照してください。
まとめ
Flowiseは、LLMアプリとAIエージェントへのローコードパスです。ノードキャンバス上で構築し、チャットフロー、エージェントフロー、アシスタントの中から選択し、手動でオーケストレーションを記述することなくREST予測エンドポイントを出荷します。プロトタイプやチームが読みやすいフローに非常に適しており、深い制御が必要な場合は依然としてコードファーストフレームワークが優れています。どのパスを選択しても、フローは呼び出すAPIによって存続が決まります。その予測エンドポイントをテストし、Apidogでその背後にあるLLMおよびツールAPIをモックすれば、エージェントはキャンバス上と同じように本番環境でも動作するでしょう。
