?Beranda • ?Fitur • ?Instalasi • ?Penggunaan • Dokumentasi • ?API
✅Persyaratan • CLI • ?Docker • ?Batasan
Pustaka Python untuk menjadwalkan alur kerja ComfyUI secara terprogram melalui API ComfyUI
Cabang | Membangun Status | Berkomitmen Sejak | Komit Terakhir |
---|---|---|---|
Menguasai | |||
Mengembangkan |
ComfyUI API Endpoint <| <= Comfy Catapult <=> HTTP Server <| <= Public users
<| <|
<| Your python program <| Your Webui/JS frontend
<| <|
<| Your workflows <|
<| Your HTTP server <|
Comfy Catapult adalah perpustakaan untuk menjadwalkan dan menjalankan alur kerja ComfyUI dari program Python, melalui titik akhir API yang ada. ComfyUI biasanya bekerja dengan menghosting titik akhir API ini untuk antarmuka penggunanya.
Hal ini memudahkan Anda membuat alur kerja melalui UI, dan kemudian menggunakannya dari suatu program.
# Inside your environment:
# From pypi:
pip install comfy_catapult
# From git:
pip install git+https://github.com/realazthat/[email protected]
Proyek | Pembungkus API UI yang Nyaman | Backend Outsourcing | Distribusikan Eksekusi | Bungkus Alur Kerja | Studio |
---|---|---|---|---|---|
Studio Nyaman | ? | ? | ? | ? | Ya |
Perangkat-Pelayanan-UI yang Nyaman | X | ? | ? | Ya | ? |
NyamanUI_NetDist | X | ? | Ya | ? | ? |
Script_examples UI yang nyaman | Ya | TIDAK | TIDAK | TIDAK | TIDAK |
nyamanui-python-api | ? | ? | ? | Ya | ? |
penerapan nyaman | ? | ? | ? | Ya | ? |
Ekstensi UI-ke-Python yang Nyaman | ? | ? | ? | Ya | ? |
Skrip Nyaman | ? | ? | ? | Ya | ? |
gerombolan | ? | Ya | ? | ? | ? |
nyamanui-cloud | ? | Ya | ? | ? | ? |
nyaman_pelari | ? | ? | ? | ? | ? |
ComfyUI-ComfyRun | ? | ? | ? | ? | ? |
Dari 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]' ]:
Dari 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 )
Di antarmuka web ComfyUI:
Enable Dev mode Options
.Save (API format)
. opsi execute
:
Contoh penggunaan:
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
, diuji dalam alur kerja GitHub Actions (./.github/workflows/build-and-test.yml). Gambar Docker dipublikasikan ke ghcr.io/realazthat/comfy-catapult di setiap tag.
# 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
Jika Anda ingin membuat image sendiri, Anda dapat menggunakan Dockerfile di repositori.
# 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
Untuk menjalankan pre.sh
(lingkungan mirip Linux).
Dari ./.github/dependencies.yml, yang digunakan untuk Aksi GH untuk melakukan instalasi baru semuanya:
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`.
Memerlukan pyenv
, atau versi python yang sama persis seperti pada ./.python-version.
jq
, (instalasi) diperlukan untuk yq, yang juga diperlukan untuk generasi ./README.md
kami, yang menggunakan tomlq
(dari paket yq) untuk menyertakan string versi dari ./pyproject.toml.
bertindak (untuk menjalankan Aksi GH secara lokal):
Hasilkan animasi:
buruh pelabuhan (untuk membangun gambar buruh pelabuhan).
develop
.git add path/to/file.py
.bash scripts/pre.sh
, ini akan memformat, menyaring, dan menguji kode.git status
periksa apakah ada yang berubah (misalnya ./README.md
), jika demikian, git add
perubahannya, dan kembali ke langkah sebelumnya.git commit -m "..."
.develop
(atau dorong untuk berkembang jika Anda punya hak). Instruksi ini ditujukan untuk pengelola proyek.
develop
cabang: Jalankan bash ./scripts/pre.sh
untuk memastikan semuanya beres.develop
cabang: Bump versi di ./pyproject.toml, mengikuti prinsip pembuatan versi semantik. Ubah juga last_release
dan last_stable_release
di tabel [tool.comfy_catapult-project-metadata]
sesuai kebutuhan.develop
: Lakukan perubahan ini dengan pesan seperti "Siapkan rilis XYZ". (Lihat bagian kontribusi di atas).master
: Gabungkan cabang develop
ke dalam cabang master
: git checkout master && git merge develop --no-ff
.master
: Tandai rilis: Buat tag git untuk rilis dengan git tag -a vX.YZ -m "Version XYZ"
.bash ./scripts/utilities/deploy-to-pypi.sh
.git push
dan git push --tags
.git checkout develop && git merge master
Opsi --no-ff
menambahkan komit ke cabang master untuk penggabungan, jadi refork cabang pengembangan dari cabang master.git push origin develop
Dorong cabang pengembangan ke GitHub.