remiai3 commited on
Commit
7b86084
·
verified ·
1 Parent(s): bf8f7d5

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +27 -4
app.py CHANGED
@@ -1,6 +1,6 @@
1
  from flask import Flask, request, jsonify
2
  from flask_cors import CORS
3
- from diffusers import StableDiffusionPipeline, StableDiffusionXLPipeline, UniPCMultistepScheduler
4
  import torch
5
  import os
6
  from PIL import Image
@@ -23,9 +23,10 @@ CORS(app)
23
  logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')
24
  logger = logging.getLogger(__name__)
25
 
26
- # Log device and memory info
27
  logger.info(f"Device in use: {torch.device('cpu')}")
28
  logger.info(f"Available memory: {psutil.virtual_memory().available / (1024 ** 3):.2f} GB")
 
29
 
30
  # Model cache
31
  model_cache = {}
@@ -83,11 +84,33 @@ def serve_assets(filename):
83
  def generate():
84
  try:
85
  data = request.json
 
 
86
  model_id = data.get('model', 'ssd-1b')
87
  prompt = data.get('prompt', '')
88
  ratio = data.get('ratio', '1:1')
89
- num_images = min(int(data.get('num_images', 1)), 4)
90
- guidance_scale = float(min(max(data.get('guidance_scale', 7.5), 1.0), 20.0)) # Clamp guidance scale
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
91
 
92
  # Log input parameters
93
  logger.info(f"Generating with model: {model_id}, prompt: {prompt}, ratio: {ratio}, num_images: {num_images}, guidance_scale: {guidance_scale}")
 
1
  from flask import Flask, request, jsonify
2
  from flask_cors import CORS
3
+ from diffusers import StableDiffusionPipeline, StableDiffusionXLPipeline, UniPCMultistepScheduler, DPMSolverMultistepScheduler
4
  import torch
5
  import os
6
  from PIL import Image
 
23
  logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')
24
  logger = logging.getLogger(__name__)
25
 
26
+ # Log device, memory, and code version
27
  logger.info(f"Device in use: {torch.device('cpu')}")
28
  logger.info(f"Available memory: {psutil.virtual_memory().available / (1024 ** 3):.2f} GB")
29
+ logger.info("Running app.py version: 2025-07-16-fix-type-mismatch")
30
 
31
  # Model cache
32
  model_cache = {}
 
84
  def generate():
85
  try:
86
  data = request.json
87
+ logger.info(f"Received JSON payload: {data}")
88
+
89
  model_id = data.get('model', 'ssd-1b')
90
  prompt = data.get('prompt', '')
91
  ratio = data.get('ratio', '1:1')
92
+
93
+ # Handle num_images with type checking
94
+ num_images_raw = data.get('num_images', 1)
95
+ logger.info(f"Raw num_images: {num_images_raw} (type: {type(num_images_raw)})")
96
+ try:
97
+ num_images = int(num_images_raw)
98
+ num_images = min(num_images, 4)
99
+ if num_images < 1:
100
+ raise ValueError("num_images must be at least 1")
101
+ except (ValueError, TypeError):
102
+ logger.error(f"Invalid num_images value: {num_images_raw}")
103
+ return jsonify({"error": "num_images must be a valid integer"}), 400
104
+
105
+ # Handle guidance_scale with type checking
106
+ guidance_scale_raw = data.get('guidance_scale', 7.5)
107
+ logger.info(f"Raw guidance_scale: {guidance_scale_raw} (type: {type(guidance_scale_raw)})")
108
+ try:
109
+ guidance_scale = float(guidance_scale_raw)
110
+ guidance_scale = min(max(guidance_scale, 1.0), 20.0) # Clamp between 1.0 and 20.0
111
+ except (ValueError, TypeError):
112
+ logger.error(f"Invalid guidance_scale value: {guidance_scale_raw}")
113
+ return jsonify({"error": "guidance_scale must be a valid number"}), 400
114
 
115
  # Log input parameters
116
  logger.info(f"Generating with model: {model_id}, prompt: {prompt}, ratio: {ratio}, num_images: {num_images}, guidance_scale: {guidance_scale}")