?ホーム ? ?機能 ? ?インストール ? ?使用法 ? ドキュメント ? API
✅要件 • CLI • ?Docker • ?制限事項
ComfyUI API を介して ComfyUI ワークフローをプログラムでスケジュールするための Python ライブラリ
支店 | ビルドステータス | 以降のコミット | 最後のコミット |
---|---|---|---|
マスター | |||
開発する |
ComfyUI API Endpoint <| <= Comfy Catapult <=> HTTP Server <| <= Public users
<| <|
<| Your python program <| Your Webui/JS frontend
<| <|
<| Your workflows <|
<| Your HTTP server <|
Comfy Catapult は、既存の API エンドポイントを介して、Python プログラムから ComfyUI ワークフローをスケジュールおよび実行するためのライブラリです。 ComfyUI は通常、ユーザー インターフェイス用にこの API エンドポイントをホストすることで機能します。
これにより、UI 経由でワークフローを作成し、プログラムから使用することが容易になります。
# Inside your environment:
# From pypi:
pip install comfy_catapult
# From git:
pip install git+https://github.com/realazthat/[email protected]
プロジェクト | ComfyUI API ラッパー | バックエンドをアウトソーシングする | 分散実行 | ラップワークフロー | スタジオ |
---|---|---|---|---|---|
クッシースタジオ | ? | ? | ? | ? | はい |
ComfyUI サービング ツールキット | × | ? | ? | はい | ? |
ComfyUI_NetDist | × | ? | はい | ? | ? |
ComfyUI スクリプトの例 | はい | いいえ | いいえ | いいえ | いいえ |
comfyui-python-api | ? | ? | ? | はい | ? |
comfyui-デプロイ | ? | ? | ? | はい | ? |
ComfyUI から Python への拡張 | ? | ? | ? | はい | ? |
コンフィスクリプト | ? | ? | ? | はい | ? |
ホーデリブ | ? | はい | ? | ? | ? |
快適クラウド | ? | はい | ? | ? | ? |
快適ランナー | ? | ? | ? | ? | ? |
ComfyUI-ComfyRun | ? | ? | ? | ? | ? |
comfy_catapult/catapult_base.py
から:
async def Catapult (
self ,
* ,
job_id : JobID ,
prepared_workflow : dict ,
important : Sequence [ APINodeID ],
use_future_api : Literal [ True ],
job_debug_path : Optional [ Path ] = None
) -> Tuple [ JobStatus , 'asyncio.Future[dict]' ]:
examples/sdxlturbo_example_catapulter.py
から:
class ExampleWorkflowInfo :
# Direct wrapper around the ComfyUI API.
client : ComfyAPIClientBase
# Job scheduler (the main point of this library).
catapult : ComfyCatapultBase
# Something to help with retrieving files from the ComfyUI storage.
remote : RemoteFileAPIBase
comfy_api_url : str
# This should be the workflow json as a dict.
workflow_template_dict : dict
# This should begin as a deep copy of the template.
workflow_dict : dict
# This will hold the node ids that we must have results for.
important : List [ APINodeID ]
# Make this any string unique to this job.
job_id : str
# When the job is complete, this will be the `/history` json/dictionary for
# this job.
job_history_dict : Optional [ dict ]
# These are inputs that modify this particular workflow.
ckpt_name : Optional [ str ]
positive_prompt : str
negative_prompt : str
# For this particular workflow, this will define the path to the output image.
output_path : Path
async def RunExampleWorkflow ( * , job_info : ExampleWorkflowInfo ):
# You have to write this function, to change the workflow_dict as you like.
await PrepareWorkflow ( job_info = job_info )
job_id : str = job_info . job_id
workflow_dict : dict = job_info . workflow_dict
important : List [ APINodeID ] = job_info . important
# Here the magic happens, the job is submitted to the ComfyUI server.
status , future = await job_info . catapult . Catapult (
job_id = job_id ,
prepared_workflow = workflow_dict ,
important = important ,
use_future_api = True )
# Wait for the job to complete.
while not future . done ():
status , _ = await job_info . catapult . GetStatus ( job_id = job_id )
print ( f'status: { status } ' , file = sys . stderr )
await asyncio . sleep ( 3 )
job_info . job_history_dict = await future
# Now that the job is done, you have to write something that will go and get
# the results you care about, if necessary.
await DownloadResults ( job_info = job_info )
ComfyUI Web インターフェイスの場合:
Enable Dev mode Options
。Save (API format)
をクリックします。 execute
オプション:
使用例:
python -m comfy_catapult.cli
execute --workflow-path ./test_data/sdxlturbo_example_api.json
3.8.0, 3.9.0, 3.10.0, 3.11.0, 3.12.0
、GitHub Actions ワークフロー (./.github/workflows/build-and-test.yml) でテスト済み。 Docker イメージは、タグごとに ghcr.io/realazthat/comfy-catapult に公開されます。
# Use the published images at https://ghcr.io/realazthat/comfy-catapult.
docker run --rm --tty ghcr.io/realazthat/comfy-catapult:v3.0.0 --help
# /data in the docker image is the working directory, so paths are simpler.
docker run --rm --tty
-v " ${PWD} :/data "
-e " COMFY_API_URL= ${COMFY_API_URL} "
ghcr.io/realazthat/comfy-catapult:v3.0.0
execute --workflow-path ./test_data/sdxlturbo_example_api.json
イメージを自分でビルドする場合は、リポジトリの Dockerfile を使用できます。
# Build the docker image.
docker build -t my-comfy-catapult-image .
# Print usage.
docker run --rm --tty my-comfy-catapult-image --help
# /data in the docker image is the working directory, so paths are simpler.
docker run --rm --tty
-v " ${PWD} :/data "
-e " COMFY_API_URL= ${COMFY_API_URL} "
my-comfy-catapult-image
execute --workflow-path ./test_data/sdxlturbo_example_api.json
pre.sh
(Linux に似た環境) を実行するため。
./.github/dependency.yml から。これは、すべての新規インストールを実行する GH アクションに使用されます。
bash : scripts.
findutils : scripts.
grep : tests.
xxd : tests.
git : scripts, tests.
xxhash : scripts (changeguard).
rsync : out-of-directory test.
jq : dependency for [yq](https://github.com/kislyuk/yq), which is used to generate
the README; the README generator needs to use `tomlq` (which is a part of `yq`)
to query `pyproject.toml`.
pyenv
、または ./.python-version のように完全に一致するバージョンの Python が必要です。
jq
、 (インストール) は yq に必要で、これ自体が./README.md
生成に必要であり、 tomlq
(yq パッケージから) を使用して ./pyproject.toml のバージョン文字列を含めます。
act (GH アクションをローカルで実行するため):
アニメーションを生成します。
docker (docker イメージの構築用)。
develop
ブランチをフォークします。git add path/to/file.py
。bash scripts/pre.sh
。これにより、コードがフォーマットされ、lint が実行され、テストされます。git status
何か変更があったかどうかを確認します (たとえば、 ./README.md
が生成されました)。変更されている場合は、 git add
、前の手順に戻ります。git commit -m "..."
。develop
ために PR を作成します (権利がある場合は開発をプッシュします)。 これらの手順はプロジェクトのメンテナー向けです。
develop
ブランチ: bash ./scripts/pre.sh
を実行して、すべてが正常であることを確認します。develop
ブランチ: セマンティック バージョニングの原則に従って、./pyproject.toml にバージョンを追加します。また、必要に応じて、 [tool.comfy_catapult-project-metadata]
テーブルのlast_release
およびlast_stable_release
を変更します。develop
ブランチ: 「リリース XYZ を準備します」のようなメッセージを使用してこれらの変更をコミットします。 (上記の貢献セクションを参照してください)。master
ブランチ: develop
ブランチをmaster
ブランチにマージします: git checkout master && git merge develop --no-ff
。master
ブランチ: リリースにタグを付ける: git tag -a vX.YZ -m "Version XYZ"
を使用して、リリースの git タグを作成します。bash ./scripts/utilities/deploy-to-pypi.sh
を使用してリリースを PyPI に公開します。git push
およびgit push --tags
を使用して、コミットとタグを GitHub にプッシュします。git checkout develop && git merge master
--no-ff
オプションは、マージのために master ブランチにコミットを追加するため、master ブランチから開発ブランチを再フォークします。git push origin develop
開発ブランチを GitHub にプッシュします。