smgc commited on
Commit
fab1a10
1 Parent(s): b735536

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +21 -38
app.py CHANGED
@@ -3,24 +3,22 @@ import requests
3
  import json
4
  import time
5
  import random
6
- import logging
7
 
8
  app = Flask(__name__)
9
 
10
- # 配置日志
11
- logging.basicConfig(level=logging.INFO)
12
- logger = logging.getLogger(__name__)
13
-
14
- # 添加 StreamHandler 以实时输出日志到控制台
15
- console_handler = logging.StreamHandler()
16
- console_handler.setLevel(logging.INFO)
17
- formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
18
- console_handler.setFormatter(formatter)
19
- logger.addHandler(console_handler)
20
 
21
  @app.route('/')
22
  def index():
23
- return "flux2api with siliconflow", 200
24
 
25
  @app.route('/ai/v1/chat/completions', methods=['POST'])
26
  def handle_request():
@@ -29,13 +27,11 @@ def handle_request():
29
  model = body.get('model')
30
  messages = body.get('messages')
31
  stream = body.get('stream', False)
32
-
33
  if not model or not messages or len(messages) == 0:
34
  return jsonify({"error": "Bad Request: Missing required fields"}), 400
35
-
36
  prompt = messages[-1]['content']
37
  new_url = f'https://api.siliconflow.cn/v1/{model}/text-to-image'
38
-
39
  new_request_body = {
40
  "prompt": prompt,
41
  "image_size": "1024x1024",
@@ -43,36 +39,24 @@ def handle_request():
43
  "num_inference_steps": 4,
44
  "guidance_scale": 1
45
  }
46
-
47
- # 从传入的 Authorization 头中随机选择一个 token
48
- authorization_header = request.headers.get('Authorization')
49
- if authorization_header:
50
- # 去掉 "Bearer " 前缀并分割 token
51
- tokens = authorization_header.replace("Bearer ", "").split(',')
52
- if len(tokens) > 1:
53
- selected_token = random.choice(tokens).strip()
54
- else:
55
- selected_token = tokens[0].strip()
56
- # 重新格式化为 "Bearer 随机选择的token"
57
- selected_token = f"Bearer {selected_token}"
58
- # 记录命中的 token
59
- logger.info(f"Request hit token: {selected_token}")
60
- else:
61
- return jsonify({"error": "Unauthorized: Missing Authorization header"}), 401
62
-
63
  headers = {
64
  'accept': 'application/json',
65
  'content-type': 'application/json',
66
- 'Authorization': selected_token
67
  }
68
-
69
  response = requests.post(new_url, headers=headers, json=new_request_body)
70
  response_body = response.json()
71
-
72
  image_url = response_body['images'][0]['url']
73
  unique_id = int(time.time() * 1000)
74
  current_timestamp = unique_id // 1000
75
-
76
  if stream:
77
  response_payload = {
78
  "id": unique_id,
@@ -116,9 +100,8 @@ def handle_request():
116
  }
117
  data_string = json.dumps(response_payload)
118
  return Response(f"{data_string}\n\n", content_type='text/event-stream')
119
-
120
  except Exception as e:
121
  return jsonify({"error": f"Internal Server Error: {str(e)}"}), 500
122
 
123
  if __name__ == '__main__':
124
- app.run(host='0.0.0.0', port=8000)
 
3
  import json
4
  import time
5
  import random
 
6
 
7
  app = Flask(__name__)
8
 
9
+ def get_random_token(auth_header):
10
+ if not auth_header:
11
+ return None
12
+ if auth_header.startswith('Bearer '):
13
+ auth_header = auth_header[7:]
14
+ tokens = [token.strip() for token in auth_header.split(',') if token.strip()]
15
+ if not tokens:
16
+ return None
17
+ return f"Bearer {random.choice(tokens)}"
 
18
 
19
  @app.route('/')
20
  def index():
21
+ return "text-to-image with siliconflow", 200
22
 
23
  @app.route('/ai/v1/chat/completions', methods=['POST'])
24
  def handle_request():
 
27
  model = body.get('model')
28
  messages = body.get('messages')
29
  stream = body.get('stream', False)
 
30
  if not model or not messages or len(messages) == 0:
31
  return jsonify({"error": "Bad Request: Missing required fields"}), 400
32
+
33
  prompt = messages[-1]['content']
34
  new_url = f'https://api.siliconflow.cn/v1/{model}/text-to-image'
 
35
  new_request_body = {
36
  "prompt": prompt,
37
  "image_size": "1024x1024",
 
39
  "num_inference_steps": 4,
40
  "guidance_scale": 1
41
  }
42
+
43
+ # 获取随机token
44
+ random_token = get_random_token(request.headers.get('Authorization'))
45
+ if not random_token:
46
+ return jsonify({"error": "Unauthorized: Invalid or missing Authorization header"}), 401
47
+
 
 
 
 
 
 
 
 
 
 
 
48
  headers = {
49
  'accept': 'application/json',
50
  'content-type': 'application/json',
51
+ 'Authorization': random_token
52
  }
53
+
54
  response = requests.post(new_url, headers=headers, json=new_request_body)
55
  response_body = response.json()
 
56
  image_url = response_body['images'][0]['url']
57
  unique_id = int(time.time() * 1000)
58
  current_timestamp = unique_id // 1000
59
+
60
  if stream:
61
  response_payload = {
62
  "id": unique_id,
 
100
  }
101
  data_string = json.dumps(response_payload)
102
  return Response(f"{data_string}\n\n", content_type='text/event-stream')
 
103
  except Exception as e:
104
  return jsonify({"error": f"Internal Server Error: {str(e)}"}), 500
105
 
106
  if __name__ == '__main__':
107
+ app.run(host='0.0.0.0', port=8000)