diffusers-workflow 0.4.0a3__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (171) hide show
  1. diffusers_workflow-0.4.0a3.dist-info/METADATA +310 -0
  2. diffusers_workflow-0.4.0a3.dist-info/RECORD +171 -0
  3. diffusers_workflow-0.4.0a3.dist-info/WHEEL +5 -0
  4. diffusers_workflow-0.4.0a3.dist-info/entry_points.txt +6 -0
  5. diffusers_workflow-0.4.0a3.dist-info/licenses/LICENSE +201 -0
  6. diffusers_workflow-0.4.0a3.dist-info/top_level.txt +1 -0
  7. dw/__init__.py +353 -0
  8. dw/arguments.py +906 -0
  9. dw/cache_blocks.json +16 -0
  10. dw/cache_blocks.py +145 -0
  11. dw/community_pipelines/pipeline_flux_rf_inversion.py +1184 -0
  12. dw/events.py +78 -0
  13. dw/hub_cache.py +289 -0
  14. dw/introspection.py +458 -0
  15. dw/log_setup.py +45 -0
  16. dw/pipeline_processors/chain.py +750 -0
  17. dw/pipeline_processors/config_objects.py +235 -0
  18. dw/pipeline_processors/pipeline.py +1687 -0
  19. dw/pipeline_processors/remote.py +18 -0
  20. dw/previous_results.py +259 -0
  21. dw/prompt_weighting.py +378 -0
  22. dw/repl.py +298 -0
  23. dw/repl_commands.py +808 -0
  24. dw/repl_worker.py +129 -0
  25. dw/result.py +850 -0
  26. dw/run.py +92 -0
  27. dw/schema.py +24 -0
  28. dw/security.py +379 -0
  29. dw/serve.py +70 -0
  30. dw/server/__init__.py +2 -0
  31. dw/server/app.py +588 -0
  32. dw/server/jobs.py +547 -0
  33. dw/server/ui/assets/abap-08VXUWAP.js +1 -0
  34. dw/server/ui/assets/apex-BWPQTe0t.js +1 -0
  35. dw/server/ui/assets/azcli-Bc_sGQ0U.js +1 -0
  36. dw/server/ui/assets/bat-i0X4ZdIN.js +1 -0
  37. dw/server/ui/assets/bicep-B5-_aFwp.js +2 -0
  38. dw/server/ui/assets/cameligo-DMUM7wLl.js +1 -0
  39. dw/server/ui/assets/clojure-Cm7r79vr.js +1 -0
  40. dw/server/ui/assets/codicon-Brq4_Ui5.ttf +0 -0
  41. dw/server/ui/assets/coffee-Ba7i2nA0.js +1 -0
  42. dw/server/ui/assets/cpp-C7h46wYY.js +1 -0
  43. dw/server/ui/assets/csharp-BKxtCVv1.js +1 -0
  44. dw/server/ui/assets/csp-bTuwJoIa.js +1 -0
  45. dw/server/ui/assets/css-DIMkf-bt.js +3 -0
  46. dw/server/ui/assets/css.worker-B3ciXF_0.js +93 -0
  47. dw/server/ui/assets/cssMode-CEh6hWi2.js +1 -0
  48. dw/server/ui/assets/cypher-CVaqCwHa.js +1 -0
  49. dw/server/ui/assets/dart-onAF5SnQ.js +1 -0
  50. dw/server/ui/assets/dockerfile-DZFCIeNp.js +1 -0
  51. dw/server/ui/assets/ecl-D05T4iGw.js +1 -0
  52. dw/server/ui/assets/editor-jjEx9u7D.css +1 -0
  53. dw/server/ui/assets/editor.api-CExg3_mM.js +847 -0
  54. dw/server/ui/assets/editor.worker-q-txB4vs.js +30 -0
  55. dw/server/ui/assets/elixir-6RTg0lbw.js +1 -0
  56. dw/server/ui/assets/flow9-C5_-GSwl.js +1 -0
  57. dw/server/ui/assets/freemarker2-DH6orYh2.js +3 -0
  58. dw/server/ui/assets/fsharp-C8Ef5oNN.js +1 -0
  59. dw/server/ui/assets/go-C-y9NEjX.js +1 -0
  60. dw/server/ui/assets/graphql-fmXr3nnJ.js +1 -0
  61. dw/server/ui/assets/handlebars-CbrMVW4Q.js +1 -0
  62. dw/server/ui/assets/hcl-CpzslTdj.js +1 -0
  63. dw/server/ui/assets/html-YDNPZw2M.js +1 -0
  64. dw/server/ui/assets/html.worker-C93Ht9o9.js +506 -0
  65. dw/server/ui/assets/htmlMode-B_zSGWO2.js +1 -0
  66. dw/server/ui/assets/index-B7-VcYS-.css +1 -0
  67. dw/server/ui/assets/index-D_EiPU3b.js +13 -0
  68. dw/server/ui/assets/ini-sBoK_t0W.js +1 -0
  69. dw/server/ui/assets/java-BEtHBSE6.js +1 -0
  70. dw/server/ui/assets/javascript-dYuBvioq.js +1 -0
  71. dw/server/ui/assets/json.worker-B2V3pomh.js +62 -0
  72. dw/server/ui/assets/jsonMode-CUqLM39V.js +7 -0
  73. dw/server/ui/assets/julia-Bri6UV-V.js +1 -0
  74. dw/server/ui/assets/kotlin-BOotOW0E.js +1 -0
  75. dw/server/ui/assets/less-B9JPFI3C.js +2 -0
  76. dw/server/ui/assets/lexon-CfSJPG6W.js +1 -0
  77. dw/server/ui/assets/liquid-D6vxBzMv.js +1 -0
  78. dw/server/ui/assets/lspLanguageFeatures-1WJ2palX.js +4 -0
  79. dw/server/ui/assets/lua-CsQS60Ue.js +1 -0
  80. dw/server/ui/assets/m3-D-oSqn_W.js +1 -0
  81. dw/server/ui/assets/markdown-Cimd5fb3.js +1 -0
  82. dw/server/ui/assets/mdx-SHQb6vmD.js +1 -0
  83. dw/server/ui/assets/mips-CIPQ_RoX.js +1 -0
  84. dw/server/ui/assets/monaco--ixms01u.css +1 -0
  85. dw/server/ui/assets/monaco-CP-s5rcP.js +56 -0
  86. dw/server/ui/assets/msdax-DauUninz.js +1 -0
  87. dw/server/ui/assets/mysql-SOo6toE5.js +1 -0
  88. dw/server/ui/assets/objective-c-FvmIjYaQ.js +1 -0
  89. dw/server/ui/assets/pascal-DrH0SRf2.js +1 -0
  90. dw/server/ui/assets/pascaligo-D-ptJ9y-.js +1 -0
  91. dw/server/ui/assets/perl-oz_6vUea.js +1 -0
  92. dw/server/ui/assets/pgsql-DTj74zXo.js +1 -0
  93. dw/server/ui/assets/php-nr791fC2.js +1 -0
  94. dw/server/ui/assets/pla-CopQ2nXW.js +1 -0
  95. dw/server/ui/assets/postiats-43DmfD33.js +1 -0
  96. dw/server/ui/assets/powerquery-D3hlyOfw.js +1 -0
  97. dw/server/ui/assets/powershell-DmHpPYUd.js +1 -0
  98. dw/server/ui/assets/protobuf-C531GsRP.js +2 -0
  99. dw/server/ui/assets/pug-Z5eAx3Zn.js +1 -0
  100. dw/server/ui/assets/python-x0_EGHq9.js +1 -0
  101. dw/server/ui/assets/qsharp-DkqhCAOL.js +1 -0
  102. dw/server/ui/assets/r-BwWrilGY.js +1 -0
  103. dw/server/ui/assets/razor-BZC4LQDP.js +1 -0
  104. dw/server/ui/assets/redis-ClamHrr6.js +1 -0
  105. dw/server/ui/assets/redshift-DT7zqm-g.js +1 -0
  106. dw/server/ui/assets/restructuredtext-BYgofb2h.js +1 -0
  107. dw/server/ui/assets/ruby-DezsRK8O.js +1 -0
  108. dw/server/ui/assets/rust-DdL9SqIa.js +1 -0
  109. dw/server/ui/assets/sb-CcwsVR0C.js +1 -0
  110. dw/server/ui/assets/scala-DHpiXF5c.js +1 -0
  111. dw/server/ui/assets/scheme-BeGwcela.js +1 -0
  112. dw/server/ui/assets/scss-gp-XZpBa.js +3 -0
  113. dw/server/ui/assets/shell-CC2rA5mh.js +1 -0
  114. dw/server/ui/assets/solidity-BEEn4gHE.js +1 -0
  115. dw/server/ui/assets/sophia-CRfGWb83.js +1 -0
  116. dw/server/ui/assets/sparql-D_Lu-MrJ.js +1 -0
  117. dw/server/ui/assets/sql-NEE52Syq.js +1 -0
  118. dw/server/ui/assets/st-DbInun42.js +1 -0
  119. dw/server/ui/assets/swift-Bxkupp3x.js +1 -0
  120. dw/server/ui/assets/systemverilog-Bz4Y3fRF.js +1 -0
  121. dw/server/ui/assets/tcl-DISqw1ZD.js +1 -0
  122. dw/server/ui/assets/ts.worker-D7T1-Ig5.js +67738 -0
  123. dw/server/ui/assets/tsMode-BTfA6SbD.js +11 -0
  124. dw/server/ui/assets/twig-De2hgUGE.js +1 -0
  125. dw/server/ui/assets/typescript-CWA4MsNk.js +1 -0
  126. dw/server/ui/assets/typespec-B8J7ngcE.js +1 -0
  127. dw/server/ui/assets/vb-DV3o63ZY.js +1 -0
  128. dw/server/ui/assets/wgsl-DpFanUEy.js +298 -0
  129. dw/server/ui/assets/workers-CWU0uvj5.js +1 -0
  130. dw/server/ui/assets/xml-KmfTm3rg.js +1 -0
  131. dw/server/ui/assets/yaml-nFO_dDS6.js +1 -0
  132. dw/server/ui/index.html +17 -0
  133. dw/settings.py +77 -0
  134. dw/step.py +132 -0
  135. dw/tasks/audio_utils.py +266 -0
  136. dw/tasks/background_remover.py +43 -0
  137. dw/tasks/borders.py +113 -0
  138. dw/tasks/concat_videos.py +80 -0
  139. dw/tasks/depth_estimator.py +54 -0
  140. dw/tasks/diffusion_upscale.py +109 -0
  141. dw/tasks/format_messages.py +24 -0
  142. dw/tasks/gather.py +139 -0
  143. dw/tasks/image_to_text.py +43 -0
  144. dw/tasks/image_utils.py +661 -0
  145. dw/tasks/interpolate_frames.py +227 -0
  146. dw/tasks/model_cache.py +39 -0
  147. dw/tasks/pair_audio.py +58 -0
  148. dw/tasks/qr_code.py +19 -0
  149. dw/tasks/restore_faces.py +175 -0
  150. dw/tasks/rife_model.py +192 -0
  151. dw/tasks/segment.py +121 -0
  152. dw/tasks/task.py +474 -0
  153. dw/tasks/tensor_image.py +57 -0
  154. dw/tasks/text_generation.py +168 -0
  155. dw/tasks/text_sections.py +80 -0
  156. dw/tasks/upscale.py +203 -0
  157. dw/tasks/video_utils.py +154 -0
  158. dw/tasks/zoe_depth.py +71 -0
  159. dw/teacache.py +376 -0
  160. dw/teacache_models.json +99 -0
  161. dw/test.py +29 -0
  162. dw/type_helpers.py +68 -0
  163. dw/validate.py +43 -0
  164. dw/variables.py +153 -0
  165. dw/worker.py +517 -0
  166. dw/workflow.py +553 -0
  167. dw/workflow_schema.json +1157 -0
  168. dw/workflows/augment_prompt.json +65 -0
  169. dw/workflows/describe_image.json +58 -0
  170. dw/workflows/h3_context_ir.json +57 -0
  171. dw/workflows/test.json +31 -0
@@ -0,0 +1,65 @@
1
+ {
2
+ "variables": {
3
+ "prompt": "default"
4
+ },
5
+ "id": "augment_prompt_workflow",
6
+ "steps": [
7
+ {
8
+ "name": "prepare_messages",
9
+ "task": {
10
+ "command": "format_chat_message",
11
+ "arguments": {
12
+ "system_prompt": "You are a helpful AI assistant that creates prompts for text to image generative AI. When supplied input generate only the prompt.",
13
+ "user_message": "variable:prompt"
14
+ }
15
+ }
16
+ },
17
+ {
18
+ "name": "augment_prompt",
19
+ "pipeline": {
20
+ "configuration": {
21
+ "component_type": "transformers.pipeline",
22
+ "no_generator": true
23
+ },
24
+ "from_pretrained_arguments": {
25
+ "task": "text-generation"
26
+ },
27
+ "model": {
28
+ "configuration": {
29
+ "component_type": "transformers.AutoModelForCausalLM"
30
+ },
31
+ "from_pretrained_arguments": {
32
+ "model_name": "microsoft/Phi-3.5-mini-instruct",
33
+ "device_map": "auto",
34
+ "torch_dtype": "{auto}",
35
+ "trust_remote_code": true
36
+ }
37
+ },
38
+ "tokenizer": {
39
+ "configuration": {
40
+ "component_type": "transformers.AutoTokenizer"
41
+ },
42
+ "from_pretrained_arguments": {
43
+ "model_name": "microsoft/Phi-3.5-mini-instruct"
44
+ }
45
+ },
46
+ "arguments": {
47
+ "text_inputs": "previous_result:prepare_messages",
48
+ "max_new_tokens": 500,
49
+ "return_full_text": false,
50
+ "do_sample": false
51
+ }
52
+ }
53
+ },
54
+ {
55
+ "name": "return_generated_text",
56
+ "task": {
57
+ "command": "get_dict_value",
58
+ "arguments": {
59
+ "dict": "previous_result:augment_prompt",
60
+ "key": "generated_text"
61
+ }
62
+ }
63
+ }
64
+ ]
65
+ }
@@ -0,0 +1,58 @@
1
+ {
2
+ "variables": {
3
+ "image": {}
4
+ },
5
+ "id": "describe_image",
6
+ "steps": [
7
+ {
8
+ "name": "describe_image_processor",
9
+ "pipeline": {
10
+ "configuration": {
11
+ "component_type": "transformers.AutoProcessor",
12
+ "no_generator": true
13
+ },
14
+ "from_pretrained_arguments": {
15
+ "model_name": "microsoft/Florence-2-large",
16
+ "trust_remote_code": true
17
+ },
18
+ "arguments": {
19
+ "text": "<DETAILED_CAPTION>",
20
+ "images": "variable:image",
21
+ "return_tensors": "pt"
22
+ }
23
+ }
24
+ },
25
+ {
26
+ "name": "describe_image_model",
27
+ "pipeline": {
28
+ "configuration": {
29
+ "component_type": "transformers.AutoModelForCausalLM",
30
+ "no_generator": true,
31
+ "generate": true
32
+ },
33
+ "from_pretrained_arguments": {
34
+ "model_name": "microsoft/Florence-2-large",
35
+ "trust_remote_code": true
36
+ },
37
+ "arguments": {
38
+ "input_ids": "previous_result:describe_image_processor.input_ids",
39
+ "pixel_values": "previous_result:describe_image_processor.pixel_values",
40
+ "max_new_tokens": 4096,
41
+ "num_beams": 3,
42
+ "do_sample": false
43
+ }
44
+ }
45
+ },
46
+ {
47
+ "name": "decode_image_description",
48
+ "task": {
49
+ "command": "batch_decode_post_process",
50
+ "pipeline_reference": "describe_image_processor",
51
+ "arguments": {
52
+ "generated_ids": "previous_result:describe_image_model.generated_ids",
53
+ "task": "<DETAILED_CAPTION>"
54
+ }
55
+ }
56
+ }
57
+ ]
58
+ }
@@ -0,0 +1,57 @@
1
+ {
2
+ "id": "h3_context_ir",
3
+ "description": "Rewrites a user's video idea into a MiniMax-H3 Context-IR prompt. Ref2VA has no instruction block above its six sections, so a Ref2VA caller should pass keep_preamble false; the other tasks put a required instruction line there and keep it.",
4
+ "variables": {
5
+ "prompt": "Task: T2VA. Duration: 5.17 seconds. Idea: a red fox trotting through a snowy pine forest at dawn.",
6
+ "image": null,
7
+ "system_prompt": "You rewrite a user's video idea into a MiniMax-H3 Context-IR prompt. H3-Base is trained to consume this exact format and degrades on anything else. Output only the rewritten prompt - no preamble, no commentary, no markdown fences, no explanation of what you did.\n\nThe user message states the task (T2VA, I2VA, FL2VA, L2VA or Ref2VA), the duration in seconds, and the idea. It may also state a continuity mode - \"Continuity: standalone\" or \"Continuity: continuation\" - which is standalone when absent. Structure the output as an optional instruction block, one blank line, then the three core fields.\n\nINSTRUCTION BLOCK, by task:\n- T2VA: none. Begin directly with the core fields.\n- I2VA: exactly \"For the target video, at 0.00 seconds into the target video, <Picture 1> (from [Shot 1]) is fully referenced.\"\n- FL2VA: exactly \"How the reference pictures align with the target video - Picture 1 (from Shot 1) aligns with the 0.00-second mark of the target video; Picture 2 (from Shot N) aligns with the S.SS-second mark of the target video.\" where S.SS is the duration to two decimal places and N is the index of the final shot.\n- L2VA: exactly \"How the reference pictures align with the target video - <Picture 1> (from [Shot N]) aligns with the S.SS-second mark of the target video.\"\n- Ref2VA: none of the above. Ref2VA has its own six-section layout, given below.\n\nCORE FIELDS for T2VA, I2VA, FL2VA and L2VA, in this order, separated by blank lines:\nintegrated_multimodal_description: the timeline - visual style, initial composition, subject appearance and position, scene and key props, actions and reactions, shot changes, spoken language and synchronized diegetic sound.\noverall_soundscape: ambient sound, physical action sounds and non-verbal human sounds across the whole video.\nnon_diegetic_music: background score the audience hears and the characters cannot.\n\nREF2VA uses six sections instead, in this order, separated by blank lines:\nsubject_definitions: one line per referenced item. <Subject N> is reusable visible content - a person, animal, object, scene, costume, style, action. <Picture N> is a reference image acting as a keyframe or composition anchor; an image that only defines a subject is cited inside that subject's line instead of getting one of its own. <Video N> is a whole-video relationship - an edit source, a continuation point, or a temporal-structure reference. <Audio N> is an audio asset that is copied or referenced. A label keeps the same meaning in every later section. The references appear in the order the request passes them, and that order is what the labels number.\nsummary: the task type in square brackets followed by one short paragraph on the target video and its main reference relationships.\nretention_analysis: one line per referenced item, stating fully_preserved, partially_preserved, partially_copy, transferred or reference, and what that means for it.\ndetailed_description: the same shot-by-shot timeline the other tasks put in integrated_multimodal_description, as detailed and explicit as possible - composition, appearance, environment and lighting, actions, camera movement, sound, and the points where referenced content actually takes effect. Never reduce it to a plot summary or a list of reference relationships.\noverall_soundscape: as above.\nnon_diegetic_music: as above.\n\nCONTINUITY MODES, which decide how the clip opens:\n- standalone, the default: the clip is a complete piece. [Shot 1] establishes the scene, and when a reference image is supplied [Shot 1] opens on that image - its framing, lighting and style.\n- continuation: the clip is one segment cut out of a longer unbroken take, and a <Video N> reference holds the frames immediately before it. Write one continuous shot - no cuts, and no later timestamped shots. [Shot 1] opens already in progress, on the framing, shot size, camera position, pose and lighting that <Video N> ends on, and carries them on from there. A supplied reference image constrains subject identity, wardrobe, set and palette alone and leaves the opening composition to <Video N>; in retention_analysis the video reference is fully_preserved and a subject-only image reference is partially_copy. The clip begins mid-action and ends mid-action: it establishes nothing and resolves nothing. The stated duration is this segment's own, not that of the finished video it belongs to.\n\n\nRULES for the shot-by-shot body, whichever field carries it:\n- Open [Shot 1] with the overall style and initial composition, which in continuation mode is the one <Video N> ends on. Styles include Cinematic, live-action, 2D-animated, 3D CG, claymation, watercolor, vintage film. Derive it from the reference image when there is one, otherwise from the user's text.\n- Do not timestamp the first shot. Every later shot opens with a strictly increasing cut time inside the duration: \"[Shot 2] At 00:03.500, the camera cuts to ...\". A cut must introduce new information; when only framing or angle changes, use camera motion instead. FL2VA favours a single continuous shot unless the user asks otherwise, and continuation mode allows no cut at all.\n- Write camera motion as natural English inside the shot, as motion type plus optional amplitude and speed. Motion types: Zoom In, Zoom Out, Push In, Pull Out, Pan Left, Pan Right, Truck Left, Truck Right, Tilt Up, Tilt Down, Pedestal Up, Pedestal Down, Arc Shot, Tracking Shot, Static Shot, Shake Slightly, Shake Strongly, POV, Roll Clockwise, Roll Counterclockwise. Amplitude: \"with small amplitude\", \"with large amplitude\". Speed: \"at slow speed\", \"at fast speed\". Omit amplitude and speed when they are medium and normal.\n- Give every subject who speaks, sings or vocalises off-screen a stable ID - (S1), (S2), and (S1,S2) for unison - kept across shots. Characters who never vocalise get no ID. The first time a speaker appears, establish identity: character type, age, gender, on- or off-screen, pitch, timbre, speaking rate, accent.\n- Put spoken and sung content inside <d>[Language] ...</d> and nothing else. Identity, action and delivery stay outside the tag. Preserve the user's wording and punctuation verbatim; never translate or rewrite supplied lines. Invent dialogue only when the user asked for speech without supplying any.\n- Voiceover uses the exact phrase \"says in an off-screen voiceover\", and the text right after every voiceover <d> block states that the character's lips remain completely closed.\n- Use <scenetrans> at both connecting points of a line that continues across a cut, and <cutoff> when speech is truncated by the end of the video.\n- Put text actually visible on screen in double quotation marks, verbatim and untranslated.\n- When a reference image is supplied, the description must match what is actually in it - subject, setting, lighting and style - and in standalone mode [Shot 1] must open on that image's framing rather than on an invented scene; in continuation mode the opening framing is <Video N>'s and the image constrains the rest. Never describe content the image contradicts.\n- Every detail must be something visible or audible. No camera hardware specs, no artist names, no quality tags such as 8k or ultra-detailed, and no negative phrasing - H3 is guidance-distilled and has no negative prompt.",
8
+ "model_name": "Qwen/Qwen3-4B-Instruct-2507",
9
+ "max_new_tokens": 1200,
10
+ "device": "cpu",
11
+ "sections": [
12
+ "subject_definitions",
13
+ "summary",
14
+ "retention_analysis",
15
+ "detailed_description",
16
+ "integrated_multimodal_description",
17
+ "overall_soundscape",
18
+ "non_diegetic_music"
19
+ ],
20
+ "keep_preamble": true
21
+ },
22
+ "steps": [
23
+ {
24
+ "name": "context_ir",
25
+ "task": {
26
+ "command": "text_generation",
27
+ "arguments": {
28
+ "prompt": "variable:prompt",
29
+ "system_prompt": "variable:system_prompt",
30
+ "model_name": "variable:model_name",
31
+ "max_new_tokens": "variable:max_new_tokens",
32
+ "device": "variable:device",
33
+ "image": "variable:image"
34
+ }
35
+ },
36
+ "result": {
37
+ "content_type": "text/plain",
38
+ "save": false
39
+ }
40
+ },
41
+ {
42
+ "name": "trim",
43
+ "task": {
44
+ "command": "extract_sections",
45
+ "arguments": {
46
+ "text": "previous_result:context_ir",
47
+ "sections": "variable:sections",
48
+ "keep_preamble": "variable:keep_preamble"
49
+ }
50
+ },
51
+ "result": {
52
+ "content_type": "text/plain",
53
+ "save": false
54
+ }
55
+ }
56
+ ]
57
+ }
dw/workflows/test.json ADDED
@@ -0,0 +1,31 @@
1
+ {
2
+ "variables": {
3
+ "prompt": "an apple",
4
+ "num_images_per_prompt": 1
5
+ },
6
+ "id": "test_job",
7
+ "steps": [
8
+ {
9
+ "name": "main",
10
+ "pipeline": {
11
+ "configuration": {
12
+ "component_type": "StableDiffusionPipeline"
13
+ },
14
+ "from_pretrained_arguments": {
15
+ "model_name": "stable-diffusion-v1-5/stable-diffusion-v1-5",
16
+ "torch_dtype": "torch.float16"
17
+ },
18
+ "arguments": {
19
+ "prompt": "variable:prompt",
20
+ "num_inference_steps": 25,
21
+ "num_images_per_prompt": "variable:num_images_per_prompt"
22
+ }
23
+ },
24
+ "result": {
25
+ "content_type": "image/jpeg",
26
+ "embed_metadata": true,
27
+ "file_base_name": "test_image"
28
+ }
29
+ }
30
+ ]
31
+ }