見出し画像

【ComfyUI】ComfyUIをサービスに組み込む - API活用のすすめ

ComfyUIを直接操作して画像生成するのも良いですが、アプリのバックエンドとしても利用したいですよね。今回は、ComfyUIをAPIとして使用してみたいと思います。


1. ComfyUIの起動

まず、通常通りにComfyUIを起動します。起動は、notebookからでもコマンドからでも、どちらでも構いません。
ComfyUIは、起動した段階でAPIとして使用することができます。ベースURLは、"http://[IPアドレス]:[ポート番号]"になります。エンドポイントには、以下の種類があります。

  • /ws: WebSocketオブジェクトを返し、ステータスと実行メッセージを送信

  • /prompt: ワークフローにプロンプトをキューに入れる

  • /history/{prompt_id}: 指定されたprompt_idのキューまたは出力を返す

  • /view: 指定されたファイル名、サブフォルダ、タイプの画像を返す

  • /upload/image: ComfyUIに画像をアップロードする

2. workflowの準備

ComfyUIのAPIでは、workflowをpromptとして入力することで生成を実行します。まず、UI上でworkflowを作成し、それをAPI用のworkflowとして保存します。

API用のworkflowを保存するには、ComfyUIをdevmodeにします。devmodeにするには、コントローラの右上にある歯車マークをクリックし、コンフィグ画面を表示し、その中の[Enable Dev mode Options]にチェックを入れます。すると、コントローラに[Save (API Format)]が表示されるので、ここからAPI用のworkflow.jsonを手に入れます。これをコード内で使用します。

コントローラの歯車マークをクリック
[Enable Dev mode Options]にチェックを入れる
[Save (API Format)]が追加される

3. コードの準備

ComfyUIで用意している参考コードを利用したいと思います。以下のリンクからbasic_api_example.pyをダウンロードしてください。

basic_api_example.pyを改造して、workflowをjsonファイルから読み込むように変更しました。

import json
from urllib import request, parse
import random
import os

# ComfyUIのサーバーアドレスを設定
SERVER_ADDRESS = "127.0.0.1:6006"

# workflowへのパス
WORKFLOW_PATH = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'workflow_api.json')

# workflow_api.jsonファイルを読み込む
with open(WORKFLOW_PATH, 'r') as file:
    prompt = json.load(file)

def queue_prompt(prompt):
    p = {"prompt": prompt}
    data = json.dumps(p).encode('utf-8')
    req = request.Request(f"http://{SERVER_ADDRESS}/prompt", data=data)
    request.urlopen(req)

# プロンプトの内容を変更する例
# CLIPTextEncodeノードのテキストを変更
prompt["6"]["inputs"]["text"] = "masterpiece best quality man"

# KSamplerノードのシードを変更
prompt["3"]["inputs"]["seed"] = random.randint(1, 1000000)

queue_prompt(prompt)

4. APIの実行

先ほど作成したコードを以下のコマンドで実行してみます。

python3 basic_api_example.py

ComfyUIのログを見ると、プロンプトを受け取って生成を実行していることが分かります。outputフォルダにも生成結果がしっかり保存されていました。

API経由でのComfyUIの実行ログ

今回は、promptというエンドポイントのみを使用した簡単なプログラムにしましたが、応用すればサービスに組み込んで使用することができます。他のエンドポイントも利用してみましょう!


この記事でご紹介したAI技術の応用方法について、もっと詳しく知りたい方や、実際に自社のビジネスにAIを導入したいとお考えの方、私たちは、企業のAI導入をサポートするAIコンサルティングサービスを提供しています。以下のようなニーズにお応えします。

  • AIを使った業務効率化の実現

  • データ分析に基づくビジネス戦略の立案

  • AI技術の導入から運用までの全面サポート

  • 専門家によるカスタマイズされたAIソリューションの提案

初回相談無料ですので、お気軽にご相談ください。以下のリンクからお問い合わせください。

この記事が気に入ったらサポートをしてみませんか?