yangtb24 commited on
Commit
3a2edd7
·
verified ·
1 Parent(s): 861a23a

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +140 -157
app.py CHANGED
@@ -840,39 +840,66 @@ def handsome_images_generations():
840
 
841
  response_data = {}
842
 
843
- if "stable-diffusion" in model_name or model_name in ["black-forest-labs/FLUX.1-schnell", "Pro/black-forest-labs/FLUX.1-schnell"]:
844
 
845
  siliconflow_data = {
846
  "model": model_name,
847
  "prompt": data.get("prompt"),
848
- "image_size": data.get("image_size", "1024x1024"), # Use 'image_size' directly
849
- "prompt_enhancement": data.get("prompt_enhancement", False),
850
  }
851
- seed = data.get("seed")
852
- if isinstance(seed, int) and 0 < seed < 9999999999:
853
- siliconflow_data["seed"] = seed
854
 
855
- if model_name not in ["black-forest-labs/FLUX.1-schnell", "Pro/black-forest-labs/FLUX.1-schnell"]:
856
- siliconflow_data["batch_size"] = data.get("n", 1)
857
- siliconflow_data["num_inference_steps"] = data.get("steps", 20)
858
- siliconflow_data["guidance_scale"] = data.get("guidance_scale", 7.5)
859
- siliconflow_data["negative_prompt"] = data.get("negative_prompt")
860
- if siliconflow_data["batch_size"] < 1:
861
- siliconflow_data["batch_size"] = 1
862
- if siliconflow_data["batch_size"] > 4:
863
- siliconflow_data["batch_size"] = 4
864
-
865
- if siliconflow_data["num_inference_steps"] < 1:
866
- siliconflow_data["num_inference_steps"] = 1
867
- if siliconflow_data["num_inference_steps"] > 50:
868
- siliconflow_data["num_inference_steps"] = 50
869
-
870
- if siliconflow_data["guidance_scale"] < 0:
871
- siliconflow_data["guidance_scale"] = 0
872
- if siliconflow_data["guidance_scale"] > 100:
873
- siliconflow_data["guidance_scale"] = 100
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
874
  # Validate image_size
875
- if siliconflow_data["image_size"] not in ["1024x1024", "512x1024", "768x512", "768x1024", "1024x576", "576x1024"]:
876
  siliconflow_data["image_size"] = "1024x1024"
877
 
878
  try:
@@ -1008,45 +1035,71 @@ def handsome_chat_completions():
1008
  siliconflow_data = {
1009
  "model": model_name,
1010
  "prompt": user_content,
1011
- "image_size": "1024x1024",
1012
- "batch_size": 1,
1013
- "num_inference_steps": 20,
1014
- "guidance_scale": 7.5,
1015
- "prompt_enhancement": False,
1016
  }
1017
-
1018
- if data.get("size"):
1019
- siliconflow_data["image_size"] = data.get("size")
1020
- if data.get("n"):
1021
- siliconflow_data["batch_size"] = data.get("n")
1022
- if data.get("steps"):
1023
- siliconflow_data["num_inference_steps"] = data.get("steps")
1024
- if data.get("guidance_scale"):
1025
- siliconflow_data["guidance_scale"] = data.get("guidance_scale")
1026
- if data.get("negative_prompt"):
1027
- siliconflow_data["negative_prompt"] = data.get("negative_prompt")
1028
- if data.get("seed"):
1029
- siliconflow_data["seed"] = data.get("seed")
1030
- if data.get("prompt_enhancement"):
1031
- siliconflow_data["prompt_enhancement"] = data.get("prompt_enhancement")
1032
-
1033
- if siliconflow_data["batch_size"] < 1:
 
 
 
 
 
 
 
 
 
1034
  siliconflow_data["batch_size"] = 1
1035
- if siliconflow_data["batch_size"] > 4:
1036
- siliconflow_data["batch_size"] = 4
1037
-
1038
- if siliconflow_data["num_inference_steps"] < 1:
1039
- siliconflow_data["num_inference_steps"] = 1
1040
- if siliconflow_data["num_inference_steps"] > 50:
1041
- siliconflow_data["num_inference_steps"] = 50
1042
 
1043
- if siliconflow_data["guidance_scale"] < 0:
1044
- siliconflow_data["guidance_scale"] = 0
1045
- if siliconflow_data["guidance_scale"] > 100:
1046
- siliconflow_data["guidance_scale"] = 100
1047
-
1048
- if siliconflow_data["image_size"] not in ["1024x1024", "512x1024", "768x512", "768x1024", "1024x576", "576x1024", "960x1280", "720x1440", "720x1280"]:
1049
- siliconflow_data["image_size"] = "1024x1024"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1050
 
1051
  try:
1052
  start_time = time.time()
@@ -1151,33 +1204,14 @@ def handsome_chat_completions():
1151
  "index": 0,
1152
  "delta": {
1153
  "role": "assistant",
1154
- "content": f"Error: {str(e)}"
1155
  },
1156
- "finish_reason": None
1157
- }
1158
- ]
1159
- }
1160
- yield f"data: {json.dumps(error_chunk_data)}\n\n".encode('utf-8')
1161
- end_chunk_data = {
1162
- "id": f"chatcmpl-{uuid.uuid4()}",
1163
- "object": "chat.completion.chunk",
1164
- "created": int(time.time()),
1165
- "model": model_name,
1166
- "choices": [
1167
- {
1168
- "index": 0,
1169
- "delta": {},
1170
  "finish_reason": "stop"
1171
  }
1172
  ]
1173
  }
1174
- yield f"data: {json.dumps(end_chunk_data)}\n\n".encode('utf-8')
1175
-
1176
- logging.info(
1177
- f"使用的key: {api_key}, "
1178
- f"使用的模型: {model_name}"
1179
- )
1180
- yield "data: [DONE]\n\n".encode('utf-8')
1181
  return Response(stream_with_context(generate()), content_type='text/event-stream')
1182
  else:
1183
  response.raise_for_status()
@@ -1246,15 +1280,11 @@ def handsome_chat_completions():
1246
  token_counts.append(0)
1247
 
1248
  return jsonify(response_data)
1249
- except requests.exceptions.RequestException as e:
1250
- logging.error(f"请求转发异常: {e}")
1251
- return jsonify({"error": str(e)}), 500
1252
  else:
1253
- # Handle text completion
1254
  try:
1255
  start_time = time.time()
1256
  response = requests.post(
1257
- TEST_MODEL_ENDPOINT,
1258
  headers=headers,
1259
  json=data,
1260
  timeout=120,
@@ -1262,45 +1292,16 @@ def handsome_chat_completions():
1262
  )
1263
 
1264
  if response.status_code == 429:
1265
- return jsonify(response.json()), 429
1266
-
1267
  if data.get("stream", False):
1268
  def generate():
1269
- first_chunk_time = None
1270
- full_response_content = ""
1271
  try:
1272
- for chunk in response.iter_lines(decode_unicode=True):
 
1273
  if chunk:
1274
- if first_chunk_time is None:
1275
- first_chunk_time = time.time()
1276
- try:
1277
- json_chunk = json.loads(chunk.lstrip("data: "))
1278
- if "choices" in json_chunk and json_chunk["choices"]:
1279
- delta = json_chunk["choices"][0].get("delta", {})
1280
- content = delta.get("content", "")
1281
- full_response_content += content
1282
- yield f"data: {json.dumps(json_chunk)}\n\n".encode('utf-8')
1283
- except json.JSONDecodeError:
1284
- logging.error(f"JSON解析失败: {chunk}")
1285
-
1286
- end_chunk_data = {
1287
- "id": f"chatcmpl-{uuid.uuid4()}",
1288
- "object": "chat.completion.chunk",
1289
- "created": int(time.time()),
1290
- "model": model_name,
1291
- "choices": [
1292
- {
1293
- "index": 0,
1294
- "delta": {},
1295
- "finish_reason": "stop"
1296
- }
1297
- ]
1298
- }
1299
- yield f"data: {json.dumps(end_chunk_data)}\n\n".encode('utf-8')
1300
-
1301
- with data_lock:
1302
- request_timestamps.append(time.time())
1303
- token_counts.append(0)
1304
  except requests.exceptions.RequestException as e:
1305
  logging.error(f"请求转发异常: {e}")
1306
  error_chunk_data = {
@@ -1313,40 +1314,21 @@ def handsome_chat_completions():
1313
  "index": 0,
1314
  "delta": {
1315
  "role": "assistant",
1316
- "content": f"Error: {str(e)}"
1317
  },
1318
- "finish_reason": None
1319
  }
1320
  ]
1321
- }
1322
  yield f"data: {json.dumps(error_chunk_data)}\n\n".encode('utf-8')
1323
- end_chunk_data = {
1324
- "id": f"chatcmpl-{uuid.uuid4()}",
1325
- "object": "chat.completion.chunk",
1326
- "created": int(time.time()),
1327
- "model": model_name,
1328
- "choices": [
1329
- {
1330
- "index": 0,
1331
- "delta": {},
1332
- "finish_reason": "stop"
1333
- }
1334
- ]
1335
- }
1336
- yield f"data: {json.dumps(end_chunk_data)}\n\n".encode('utf-8')
1337
- logging.info(
1338
- f"使用的key: {api_key}, "
1339
- f"使用的模型: {model_name}"
1340
- )
1341
- yield "data: [DONE]\n\n".encode('utf-8')
1342
  return Response(stream_with_context(generate()), content_type='text/event-stream')
1343
-
1344
  else:
1345
  response.raise_for_status()
1346
  end_time = time.time()
1347
  response_json = response.json()
1348
  total_time = end_time - start_time
1349
-
1350
  try:
1351
  choices = response_json.get("choices", [])
1352
  if choices and isinstance(choices[0], dict):
@@ -1406,20 +1388,21 @@ def handsome_chat_completions():
1406
  }
1407
  ]
1408
  }
1409
-
1410
  logging.info(
1411
- f"使用的key: {api_key}, "
1412
- f"总共用时: {total_time:.4f}秒, "
1413
- f"使用的模型: {model_name}"
1414
  )
 
1415
  with data_lock:
1416
- request_timestamps.append(time.time())
1417
- token_counts.append(0)
 
1418
  return jsonify(response_data)
1419
-
1420
  except requests.exceptions.RequestException as e:
1421
- logging.error(f"请求转发异常: {e}")
1422
- return jsonify({"error": str(e)}), 500
1423
 
1424
  if __name__ == '__main__':
1425
  import json
 
840
 
841
  response_data = {}
842
 
843
+ if "stable-diffusion" in model_name or model_name in ["black-forest-labs/FLUX.1-schnell", "Pro/black-forest-labs/FLUX.1-schnell","black-forest-labs/FLUX.1-dev", "black-forest-labs/FLUX.1-pro"]:
844
 
845
  siliconflow_data = {
846
  "model": model_name,
847
  "prompt": data.get("prompt"),
848
+
 
849
  }
 
 
 
850
 
851
+ if model_name == "black-forest-labs/FLUX.1-pro":
852
+ siliconflow_data["width"] = data.get("width", 1024)
853
+ siliconflow_data["height"] = data.get("height", 768)
854
+ siliconflow_data["prompt_upsampling"] = data.get("prompt_upsampling", False)
855
+ siliconflow_data["image_prompt"] = data.get("image_prompt")
856
+ siliconflow_data["steps"] = data.get("steps", 20)
857
+ siliconflow_data["guidance"] = data.get("guidance", 3)
858
+ siliconflow_data["safety_tolerance"] = data.get("safety_tolerance", 2)
859
+ siliconflow_data["interval"] = data.get("interval", 2)
860
+ siliconflow_data["output_format"] = data.get("output_format", "png")
861
+
862
+ if siliconflow_data["width"] < 256 or siliconflow_data["width"] > 1440 or siliconflow_data["width"] % 32 != 0:
863
+ siliconflow_data["width"] = 1024
864
+ if siliconflow_data["height"] < 256 or siliconflow_data["height"] > 1440 or siliconflow_data["height"] % 32 != 0:
865
+ siliconflow_data["height"] = 768
866
+
867
+ if siliconflow_data["steps"] < 1 or siliconflow_data["steps"] > 50:
868
+ siliconflow_data["steps"] = 20
869
+ if siliconflow_data["guidance"] < 1.5 or siliconflow_data["guidance"] > 5:
870
+ siliconflow_data["guidance"] = 3
871
+ if siliconflow_data["safety_tolerance"] < 0 or siliconflow_data["safety_tolerance"] > 6:
872
+ siliconflow_data["safety_tolerance"] = 2
873
+ if siliconflow_data["interval"] < 1 or siliconflow_data["interval"] > 4 :
874
+ siliconflow_data["interval"] = 2
875
+ else:
876
+ siliconflow_data["image_size"] = data.get("image_size", "1024x1024") # Use 'image_size' directly
877
+ siliconflow_data["prompt_enhancement"] = data.get("prompt_enhancement", False)
878
+ seed = data.get("seed")
879
+ if isinstance(seed, int) and 0 < seed < 9999999999:
880
+ siliconflow_data["seed"] = seed
881
+
882
+ if model_name not in ["black-forest-labs/FLUX.1-schnell", "Pro/black-forest-labs/FLUX.1-schnell"]:
883
+ siliconflow_data["batch_size"] = data.get("n", 1)
884
+ siliconflow_data["num_inference_steps"] = data.get("steps", 20)
885
+ siliconflow_data["guidance_scale"] = data.get("guidance_scale", 7.5)
886
+ siliconflow_data["negative_prompt"] = data.get("negative_prompt")
887
+ if siliconflow_data["batch_size"] < 1:
888
+ siliconflow_data["batch_size"] = 1
889
+ if siliconflow_data["batch_size"] > 4:
890
+ siliconflow_data["batch_size"] = 4
891
+
892
+ if siliconflow_data["num_inference_steps"] < 1:
893
+ siliconflow_data["num_inference_steps"] = 1
894
+ if siliconflow_data["num_inference_steps"] > 50:
895
+ siliconflow_data["num_inference_steps"] = 50
896
+
897
+ if siliconflow_data["guidance_scale"] < 0:
898
+ siliconflow_data["guidance_scale"] = 0
899
+ if siliconflow_data["guidance_scale"] > 100:
900
+ siliconflow_data["guidance_scale"] = 100
901
  # Validate image_size
902
+ if "image_size" in siliconflow_data and siliconflow_data["image_size"] not in ["1024x1024", "512x1024", "768x512", "768x1024", "1024x576", "576x1024","960x1280", "720x1440", "720x1280"]:
903
  siliconflow_data["image_size"] = "1024x1024"
904
 
905
  try:
 
1035
  siliconflow_data = {
1036
  "model": model_name,
1037
  "prompt": user_content,
1038
+
 
 
 
 
1039
  }
1040
+ if model_name == "black-forest-labs/FLUX.1-pro":
1041
+ siliconflow_data["width"] = data.get("width", 1024)
1042
+ siliconflow_data["height"] = data.get("height", 768)
1043
+ siliconflow_data["prompt_upsampling"] = data.get("prompt_upsampling", False)
1044
+ siliconflow_data["image_prompt"] = data.get("image_prompt")
1045
+ siliconflow_data["steps"] = data.get("steps", 20)
1046
+ siliconflow_data["guidance"] = data.get("guidance", 3)
1047
+ siliconflow_data["safety_tolerance"] = data.get("safety_tolerance", 2)
1048
+ siliconflow_data["interval"] = data.get("interval", 2)
1049
+ siliconflow_data["output_format"] = data.get("output_format", "png")
1050
+
1051
+ if siliconflow_data["width"] < 256 or siliconflow_data["width"] > 1440 or siliconflow_data["width"] % 32 != 0:
1052
+ siliconflow_data["width"] = 1024
1053
+ if siliconflow_data["height"] < 256 or siliconflow_data["height"] > 1440 or siliconflow_data["height"] % 32 != 0:
1054
+ siliconflow_data["height"] = 768
1055
+
1056
+ if siliconflow_data["steps"] < 1 or siliconflow_data["steps"] > 50:
1057
+ siliconflow_data["steps"] = 20
1058
+ if siliconflow_data["guidance"] < 1.5 or siliconflow_data["guidance"] > 5:
1059
+ siliconflow_data["guidance"] = 3
1060
+ if siliconflow_data["safety_tolerance"] < 0 or siliconflow_data["safety_tolerance"] > 6:
1061
+ siliconflow_data["safety_tolerance"] = 2
1062
+ if siliconflow_data["interval"] < 1 or siliconflow_data["interval"] > 4 :
1063
+ siliconflow_data["interval"] = 2
1064
+ else:
1065
+ siliconflow_data["image_size"] = "1024x1024"
1066
  siliconflow_data["batch_size"] = 1
1067
+ siliconflow_data["num_inference_steps"] = 20
1068
+ siliconflow_data["guidance_scale"] = 7.5
1069
+ siliconflow_data["prompt_enhancement"] = False
 
 
 
 
1070
 
1071
+ if data.get("size"):
1072
+ siliconflow_data["image_size"] = data.get("size")
1073
+ if data.get("n"):
1074
+ siliconflow_data["batch_size"] = data.get("n")
1075
+ if data.get("steps"):
1076
+ siliconflow_data["num_inference_steps"] = data.get("steps")
1077
+ if data.get("guidance_scale"):
1078
+ siliconflow_data["guidance_scale"] = data.get("guidance_scale")
1079
+ if data.get("negative_prompt"):
1080
+ siliconflow_data["negative_prompt"] = data.get("negative_prompt")
1081
+ if data.get("seed"):
1082
+ siliconflow_data["seed"] = data.get("seed")
1083
+ if data.get("prompt_enhancement"):
1084
+ siliconflow_data["prompt_enhancement"] = data.get("prompt_enhancement")
1085
+
1086
+ if siliconflow_data["batch_size"] < 1:
1087
+ siliconflow_data["batch_size"] = 1
1088
+ if siliconflow_data["batch_size"] > 4:
1089
+ siliconflow_data["batch_size"] = 4
1090
+
1091
+ if siliconflow_data["num_inference_steps"] < 1:
1092
+ siliconflow_data["num_inference_steps"] = 1
1093
+ if siliconflow_data["num_inference_steps"] > 50:
1094
+ siliconflow_data["num_inference_steps"] = 50
1095
+
1096
+ if siliconflow_data["guidance_scale"] < 0:
1097
+ siliconflow_data["guidance_scale"] = 0
1098
+ if siliconflow_data["guidance_scale"] > 100:
1099
+ siliconflow_data["guidance_scale"] = 100
1100
+
1101
+ if siliconflow_data["image_size"] not in ["1024x1024", "512x1024", "768x512", "768x1024", "1024x576", "576x1024", "960x1280", "720x1440", "720x1280"]:
1102
+ siliconflow_data["image_size"] = "1024x1024"
1103
 
1104
  try:
1105
  start_time = time.time()
 
1204
  "index": 0,
1205
  "delta": {
1206
  "role": "assistant",
1207
+ "content": "Failed to process image data"
1208
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1209
  "finish_reason": "stop"
1210
  }
1211
  ]
1212
  }
1213
+ yield f"data: {json.dumps(error_chunk_data)}\n\n".encode('utf-8')
1214
+ yield "data: [DONE]\n\n".encode('utf-8')
 
 
 
 
 
1215
  return Response(stream_with_context(generate()), content_type='text/event-stream')
1216
  else:
1217
  response.raise_for_status()
 
1280
  token_counts.append(0)
1281
 
1282
  return jsonify(response_data)
 
 
 
1283
  else:
 
1284
  try:
1285
  start_time = time.time()
1286
  response = requests.post(
1287
+ "https://api.siliconflow.cn/v1/chat/completions",
1288
  headers=headers,
1289
  json=data,
1290
  timeout=120,
 
1292
  )
1293
 
1294
  if response.status_code == 429:
1295
+ return jsonify(response.json()), 429
1296
+
1297
  if data.get("stream", False):
1298
  def generate():
 
 
1299
  try:
1300
+ response.raise_for_status()
1301
+ for chunk in response.iter_lines():
1302
  if chunk:
1303
+ chunk = chunk.decode('utf-8')
1304
+ yield f"{chunk}\n\n".encode('utf-8')
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1305
  except requests.exceptions.RequestException as e:
1306
  logging.error(f"请求转发异常: {e}")
1307
  error_chunk_data = {
 
1314
  "index": 0,
1315
  "delta": {
1316
  "role": "assistant",
1317
+ "content": "Failed to process data"
1318
  },
1319
+ "finish_reason": "stop"
1320
  }
1321
  ]
1322
+ }
1323
  yield f"data: {json.dumps(error_chunk_data)}\n\n".encode('utf-8')
1324
+ yield "data: [DONE]\n\n".encode('utf-8')
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1325
  return Response(stream_with_context(generate()), content_type='text/event-stream')
 
1326
  else:
1327
  response.raise_for_status()
1328
  end_time = time.time()
1329
  response_json = response.json()
1330
  total_time = end_time - start_time
1331
+
1332
  try:
1333
  choices = response_json.get("choices", [])
1334
  if choices and isinstance(choices[0], dict):
 
1388
  }
1389
  ]
1390
  }
1391
+
1392
  logging.info(
1393
+ f"使用的key: {api_key}, "
1394
+ f"总共用时: {total_time:.4f}秒, "
1395
+ f"使用的模型: {model_name}"
1396
  )
1397
+
1398
  with data_lock:
1399
+ request_timestamps.append(time.time())
1400
+ token_counts.append(0)
1401
+
1402
  return jsonify(response_data)
 
1403
  except requests.exceptions.RequestException as e:
1404
+ logging.error(f"请求转发异常: {e}")
1405
+ return jsonify({"error": str(e)}), 500
1406
 
1407
  if __name__ == '__main__':
1408
  import json