hz2475 commited on
Commit
cfd46a6
Β·
1 Parent(s): 870896d
.DS_Store CHANGED
Binary files a/.DS_Store and b/.DS_Store differ
 
starvector/.DS_Store CHANGED
Binary files a/starvector/.DS_Store and b/starvector/.DS_Store differ
 
starvector/serve/.DS_Store CHANGED
Binary files a/starvector/serve/.DS_Store and b/starvector/serve/.DS_Store differ
 
starvector/serve/vllm_api_gradio/gradio_web_server.py CHANGED
@@ -8,6 +8,13 @@ import requests
8
  from starvector.serve.conversation import default_conversation
9
  from starvector.serve.constants import LOGDIR, CLIP_QUERY_LENGTH
10
  from starvector.serve.util import (build_logger, server_error_msg)
 
 
 
 
 
 
 
11
 
12
  logger = build_logger("gradio_web_server", "gradio_web_server.log")
13
  headers = {"User-Agent": "StarVector Client"}
@@ -20,6 +27,11 @@ priority = {
20
  "starvector-1b": "aaaaaaa",
21
  }
22
 
 
 
 
 
 
23
  def get_conv_log_filename():
24
  t = datetime.datetime.now()
25
  name = os.path.join(LOGDIR, f"{t.year}-{t.month:02d}-{t.day:02d}-conv.json")
@@ -108,6 +120,22 @@ def clear_history(request: gr.Request):
108
  state = default_conversation.copy()
109
  return (state, None, None) + (disable_btn,) * 7
110
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
111
  def send_data(state, image, image_process_mode, text_caption, task, request: gr.Request):
112
  logger.info(f"send_data. ip: {request.client.host}.")
113
  if task == 'Image2SVG':
@@ -115,11 +143,15 @@ def send_data(state, image, image_process_mode, text_caption, task, request: gr.
115
  state.skip_next = True
116
  return (state, None, None, image) + (no_change_btn,) * 7
117
 
 
 
 
 
118
  # Reset the conversation state when a new image is uploaded
119
  state = default_conversation.copy()
120
 
121
- if image is not None:
122
- image_message = (image, image_process_mode)
123
  state.append_message(state.roles[0], image_message)
124
  state.append_message(state.roles[1], "β–Œ")
125
  state.skip_next = False
@@ -130,9 +162,8 @@ def send_data(state, image, image_process_mode, text_caption, task, request: gr.
130
  state.skip_next = True
131
  return (state, None, None, image) + (no_change_btn,) * 7
132
 
133
- # Reset the conversation state for new text inputs too
134
  state = default_conversation.copy()
135
-
136
  state.append_message(state.roles[0], text_caption)
137
  state.append_message(state.roles[1], "β–Œ")
138
  state.skip_next = False
 
8
  from starvector.serve.conversation import default_conversation
9
  from starvector.serve.constants import LOGDIR, CLIP_QUERY_LENGTH
10
  from starvector.serve.util import (build_logger, server_error_msg)
11
+ import boto3
12
+ import hashlib
13
+ from io import BytesIO
14
+
15
+ # Configure your S3 bucket and key prefix (you can also use environment variables)
16
+ S3_BUCKET_NAME = os.getenv("S3_BUCKET_NAME", "your-bucket-name")
17
+ S3_KEY_PREFIX = os.getenv("S3_KEY_PREFIX", "uploads")
18
 
19
  logger = build_logger("gradio_web_server", "gradio_web_server.log")
20
  headers = {"User-Agent": "StarVector Client"}
 
27
  "starvector-1b": "aaaaaaa",
28
  }
29
 
30
+
31
+ # Configure your S3 bucket and key prefix (you can also use environment variables)
32
+ S3_BUCKET_NAME = os.getenv("S3_BUCKET_NAME", "your-bucket-name")
33
+ S3_KEY_PREFIX = os.getenv("S3_KEY_PREFIX", "starvector_uploads")
34
+
35
  def get_conv_log_filename():
36
  t = datetime.datetime.now()
37
  name = os.path.join(LOGDIR, f"{t.year}-{t.month:02d}-{t.day:02d}-conv.json")
 
120
  state = default_conversation.copy()
121
  return (state, None, None) + (disable_btn,) * 7
122
 
123
+ def upload_image_to_s3(image, bucket_name=S3_BUCKET_NAME, key_prefix=S3_KEY_PREFIX):
124
+ """
125
+ Upload a PIL Image to S3.
126
+ """
127
+ s3 = boto3.client("s3")
128
+ buffer = BytesIO()
129
+ # Save image to buffer; adjust format as needed (e.g., "PNG" or "JPEG")
130
+ image.save(buffer, format="JPEG")
131
+ buffer.seek(0)
132
+ # Create a unique S3 key using a timestamp
133
+ timestamp = datetime.datetime.now().strftime("%Y%m%d%H%M%S")
134
+ img_md5 = str(hashlib.md5(buffer.getvalue()).hexdigest())
135
+ s3_key = f"{key_prefix}/image_{img_md5}.jpeg"
136
+ s3.upload_fileobj(buffer, bucket_name, s3_key)
137
+ return s3_key
138
+
139
  def send_data(state, image, image_process_mode, text_caption, task, request: gr.Request):
140
  logger.info(f"send_data. ip: {request.client.host}.")
141
  if task == 'Image2SVG':
 
143
  state.skip_next = True
144
  return (state, None, None, image) + (no_change_btn,) * 7
145
 
146
+ # Upload the image to S3
147
+ s3_key = upload_image_to_s3(image)
148
+ logger.info(f"Image uploaded to S3 at key: {s3_key}")
149
+
150
  # Reset the conversation state when a new image is uploaded
151
  state = default_conversation.copy()
152
 
153
+ # Prepare image message (you can also include the S3 URL or key if needed)
154
+ image_message = (image, image_process_mode)
155
  state.append_message(state.roles[0], image_message)
156
  state.append_message(state.roles[1], "β–Œ")
157
  state.skip_next = False
 
162
  state.skip_next = True
163
  return (state, None, None, image) + (no_change_btn,) * 7
164
 
165
+ # Reset conversation for text inputs too
166
  state = default_conversation.copy()
 
167
  state.append_message(state.roles[0], text_caption)
168
  state.append_message(state.roles[1], "β–Œ")
169
  state.skip_next = False