mAi: #2 - phase 2 ComfyUI Go adapter, tests, config sample
internal/backend/comfyui.go implements the Backend interface against ComfyUI's /prompt + /history + /view HTTP API. Workflow is the canonical FLUX.1 schnell shape — UNETLoader + DualCLIPLoader (clip_l + t5xxl fp8) + VAELoader + ModelSamplingFlux + KSampler — assembled as a Go map per request so Width / Height / Seed / Steps / sampler / scheduler all flow into the right node inputs. Resilience: one retry on /prompt 5xx and transient network errors, no retry on 4xx. Connection-refused / timeouts surface a 'boot-whitetower mrock' hint. node_errors mentioning a missing unet point users at docs/setup-comfyui-mrock.md (matches both the 4xx and 200-with-errors shapes ComfyUI uses across versions). Result.Metadata carries model, seed_used, latency_ms, steps, sampler, scheduler, width, height, prompt_id, client_id, plus best-effort vram_used_mib pulled from /system_stats post-gen. Tests use httptest with poll interval squashed to 1ms — no real mRock dependency. Coverage: happy path, defaults, retry-once on 5xx, give-up after two 5xx, no-retry on 4xx, missing-model hint (both 4xx and 200+node_errors paths), history-error surfaced, /view 4xx, unreachable host, ctx cancel during poll, workflow-shape assertion, registration. Config sample: flux-schnell-local is now default_backend; the user-facing block names the unet file by basename (the mapping into models/unet/ is the server's convention, captured in docs/setup-comfyui-mrock.md from phase 1). Smoke verified end-to-end: imagen generate ... --backend flux-schnell-local --size 1024x1024 --output /tmp/cat-via-cli.png on mRock returned a 1024x1024 PNG of a cat in a fishbowl in 10.3s with a sidecar carrying seed + latency_ms + the rest of the metadata.
This commit is contained in:
@@ -95,7 +95,7 @@ const Sample = `# imagen.yaml — config for the imagen CLI.
|
||||
# implementing the Backend interface, registering its type name, and listing
|
||||
# an instance here.
|
||||
|
||||
default_backend: mock
|
||||
default_backend: flux-schnell-local
|
||||
|
||||
output:
|
||||
directory: ~/Pictures/imagen
|
||||
@@ -103,14 +103,18 @@ output:
|
||||
write_metadata_json: true
|
||||
|
||||
backends:
|
||||
mock:
|
||||
type: mock
|
||||
|
||||
flux-schnell-local:
|
||||
type: comfyui
|
||||
base_url: http://mrock:8188
|
||||
# Filename of the unet checkpoint inside the ComfyUI server's
|
||||
# models/unet/ directory. See docs/setup-comfyui-mrock.md.
|
||||
model: flux1-schnell.safetensors
|
||||
default_steps: 4
|
||||
default_sampler: euler
|
||||
default_scheduler: simple
|
||||
|
||||
mock:
|
||||
type: mock
|
||||
|
||||
flux-dev-replicate:
|
||||
type: replicate
|
||||
|
||||
Reference in New Issue
Block a user