AI Image Generation Pipeline with LangGraph and MCP
AI Image Generation Pipeline with LangGraph and MCP について
AI 画像生成ワークフローを示す LangGraph と MCP 統合プロジェクトです。プロンプト生成を含み、人間参加フィードバックと Open WebUI パイプライン統合をサポートします。
主な機能
- 01LangGraph 関数型・グラフ API
- 02人間参加フィードバック
- 03AI 画像生成ワークフロー
- 04Open WebUI パイプライン統合
活用シーン
- 01AI 画像生成アプリケーション
- 02インタラクティブワークフロー開発
- 03Open WebUI 拡張
MCP 対応
LangGraph ワークフロー内で Comfy MCP サービスを使用して AI 画像プロンプトと画像を生成するクライアントプロジェクト。
詳細
LangGraph と MCP を使用した AI 画像生成パイプライン
このプロジェクトは、Model Context Protocol (MCP) を LangGraph と組み合わせて使用し、与えられたトピックに基づいてプロンプトと AI 生成画像を生成するワークフローを作成する方法を示しています。このプロジェクトは 3 つのメインファイルで構成されています:app.py、graph.py、ai-image-gen-pipeline.py。各ファイルは、LangGraph Functional API、Graph API、および Open WebUI Pipelines との統合を含む、MCP と LangGraph の使用のさまざまな側面を紹介しています。これらのスクリプトは、Comfy MCP Server を使用して AI 画像プロンプトと AI 画像を生成します。
ファイル
app.py
このスクリプトは、LangGraph Functional API と Human-in-the-Loop (HIL) インタラクションを使用して、与えられたトピックに基づいてプロンプトと AI 生成画像を生成する方法を示しています。ワークフローには、対応する画像を生成する前に生成されたプロンプトを承認するためのユーザーフィードバックが含まれています。
主要なコンポーネント:
- 依存関係:
aiosqlite、langgraph、langgraph-checkpoint-sqlite、mcp[cli]。 - 関数:
run_tool(tool: str, args: dict) -> str: MCP サーバーを使用してツールを実行します。generate_prompt(topic: str) -> str: 与えられたトピックのプロンプトを生成します。generate_image(prompt: str) -> str: 与えられたプロンプトに基づいて画像を生成します。get_feedback(topic: str, prompt: str) -> str: 生成されたプロンプトに関するユーザーフィードバックを収集します。workflow_func(saver): チェックポイント機能付きのワークフロー関数を定義します。
- メイン関数:
- コマンドライン引数を解析してスレッド ID、およびオプションでトピックとフィードバックを取得します。
- ワークフローを初期化して、提供された入力に基づいて実行します。
graph.py
このスクリプトは、LangGraph Graph API と Human-in-the-Loop (HIL) インタラクションを使用して、与えられたトピックに基づいてプロンプトと AI 生成画像を生成する方法を示しています。ワークフローには、対応する画像を生成する前に生成されたプロンプトを承認するためのユーザーフィードバックが含まれています。
主要なコンポーネント:
- 依存関係:
aiosqlite、langgraph、langgraph-checkpoint-sqlite、mcp[cli]。 - 関数:
run_tool(tool: str, args: dict) -> str: MCP サーバーを使用してツールを実行します。generate_prompt(state: State) -> State: 与えられたトピックのプロンプトを生成し、状態を更新します。generate_image(state: State) -> State: 与えられたプロンプトに基づいて画像を生成し、状態を更新します。prompt_feedback(state: State) -> State: 生成されたプロンプトに関するユーザーフィードバックを収集します。process_feedback(state: State) -> str: ユーザーフィードバックを処理して、ワークフローの次のステップを決定します。
- メイン関数:
- コマンドラインに引数を解析してスレッド ID、トピック、フィードバックを取得します。
- 状態グラフを初期化して、提供された入力に基づいて実行します。
ai-image-gen-pipeline.py
このスクリプトは、Open WebUI Pipelines 内で LangGraph API と Human-in-the-Loop (HIL) の統合を示しています。プロンプト生成、フィードバック処理、画像生成のノードを含む、MCP を使用してプロンプトと画像を生成するためのパイプラインを定義しています。
主要なコンポーネント:
- 依存関係:
aiosqlite、langgraph、langgraph-checkpoint-sqlite、mcp[cli]。 - クラス:
Pipeline: プロンプト生成、フィードバック処理、画像生成用のノードを持つパイプラインを定義します。Valves(BaseModel): MCP サーバー設定用の環境変数を含みます。
- 関数:
inlet(body: dict, user: dict) -> dict: 受信メッセージを処理します。outlet(body: dict, user: dict) -> dict: 送信メッセージを処理します。pipe(user_message: str, model_id: str, messages: List[dict], body: dict) -> Union[str, Generator, Iterator]: メインパイプラインロジックを定義します。run_tool(tool: str, args: dict) -> str: MCP サーバーを使用してツールを実行します。generate_prompt(state: State) -> State: 指定されたトピックのプロンプトを生成し、状態を更新します。generate_image(state: State) -> State: 指定されたプロンプトに基づいて画像を生成し、状態を更新します。prompt_feedback(state: State) -> State: 生成されたプロンプトに関するユーザーフィードバックを収集します。process_feedback(state: State) -> str: ユーザーフィードバックを処理して、ワークフロー内の次のステップを決定します。
使用方法
-
依存関係のインストール: 必要な依存関係がインストールされていることを確認してください。
pip install aiosqlite langgraph langgraph-checkpoint-sqlite mcp[cli] comfy-mcp-server -
アプリケーションの実行:
-
app.pyの場合:python app.py --topic "Your topic here" -
graph.pyの場合:python graph.py --thread_id "your-thread-id" --topic "Your topic here"フィードバックの場合:
python graph.py --thread_id "your-thread-id" --feedback "y/n"
-
-
uvユーティリティの使用: uv ユーティリティを使用してapp.pyとgraph.pyを起動することもできます。このユーティリティは Python バージョンと依存関係管理を処理するため、依存関係を事前にインストールする必要はありません。-
app.pyの場合:uv run app.py --topic "Your topic here" -
graph.pyの場合:uv run graph.py --thread_id "your-thread-id" --topic "Your topic here"フィードバックの場合:
uv run graph.py --thread_id "your-thread-id" --feedback "y/n"
-
-
環境変数: MCP サーバー設定用の必要な環境変数を設定します。
export COMFY_URL="comfy-url" export COMFY_URL_EXTERNAL="comfy-url-external" export COMFY_WORKFLOW_JSON_FILE="path-to-workflow-json-file" export PROMPT_NODE_ID="prompt-node-id" export OUTPUT_NODE_ID="output-node-id" export OLLAMA_API_BASE="ollama-api-base" export PROMPT_LLM="prompt-llm"
貢献
プルリクエストまたはイシューを送信することで、このプロジェクトへの貢献をお気軽にしてください。変更がよく文書化され、テストされていることを確認してください。
ライセンス
このプロジェクトは MIT ライセンスの下でライセンスされています。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。