Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| import requests | |
| import json | |
| time | |
| # Configuration | |
| token = "YOUR_TOKEN" # Replace with your token if needed | |
| api_base_url = "https://api.comfyui.com" # Replace with the actual API base URL | |
| # Load the workflow JSON file | |
| def load_workflow_json(file_path): | |
| with open(file_path, "r") as file: | |
| return json.load(file) | |
| # Load the workflow | |
| workflow = load_workflow_json("workflow.json") | |
| # Function to queue a prompt for processing | |
| def queue_prompt(prompt): | |
| response = requests.post( | |
| f"{api_base_url}/prompt", | |
| headers={"Authorization": f"Bearer {token}"}, | |
| json={"prompt": prompt} | |
| ) | |
| return response.json() | |
| # Function to get the status of a queued prompt | |
| def get_prompt_status(prompt_id): | |
| response = requests.get( | |
| f"{api_base_url}/prompt/{prompt_id}", | |
| headers={"Authorization": f"Bearer {token}"} | |
| ) | |
| return response.json() | |
| # Function to generate an image | |
| def generate_image(positive_prompt, negative_prompt, cfg_scale, steps): | |
| # Update the workflow with the input parameters | |
| workflow["positive_prompt"] = positive_prompt | |
| workflow["negative_prompt"] = negative_prompt | |
| workflow["cfg_scale"] = cfg_scale | |
| workflow["steps"] = steps | |
| # Queue the prompt | |
| prompt_response = queue_prompt(workflow) | |
| prompt_id = prompt_response.get("id") | |
| # Wait for the prompt to be processed | |
| max_attempts = 30 # Reduced from 60 | |
| for _ in range(max_attempts): | |
| status_response = get_prompt_status(prompt_id) | |
| status = status_response.get("status") | |
| if status == "completed": | |
| # Retrieve the generated image | |
| image_url = status_response.get("result") | |
| return image_url | |
| time.sleep(0.5) # Reduced delay from 1 second | |
| return "Image generation timed out." | |
| # Gradio interface | |
| demo = gr.Interface( | |
| fn=generate_image, | |
| inputs=[ | |
| gr.inputs.Textbox(label="Positive Prompt"), | |
| gr.inputs.Textbox(label="Negative Prompt"), | |
| gr.inputs.Slider(minimum=1, maximum=20, default=7, label="CFG Scale"), | |
| gr.inputs.Slider(minimum=10, maximum=100, default=50, label="Steps") | |
| ], | |
| outputs=gr.outputs.Image(label="Generated Image") | |
| ) | |
| demo.launch() |