hazelhh commited on
Commit
e76fd12
·
verified ·
1 Parent(s): 064b009

Update main.py

Browse files
Files changed (1) hide show
  1. main.py +35 -12
main.py CHANGED
@@ -92,28 +92,34 @@ def handle_text_message(event):
92
  if user_states[user_id]["is_ready"]:
93
  prompt = (
94
  f"我提供了三件上衣圖片和三件下半身圖片。請根據這些衣服,為我推薦一個適合「{text}」的穿搭建議,並詳細描述你推薦的上衣與下衣組合。請以繁體中文回答。"
 
 
95
  )
96
 
97
  all_images = user_states[user_id]["upper_body_images"] + user_states[user_id]["lower_body_images"]
98
 
99
  # 準備要回覆的訊息列表
100
  messages_to_send = [
101
- TextSendMessage(text="正在為您生成穿搭建議... 請稍候。")
102
  ]
103
 
104
- # 由於 LINE 的 ImageMessage 需要公開網址,這裡使用佔位符
105
- # 在實際應用中,您需要將圖片上傳至一個可公開存取的服務
106
- placeholder_image_urls = [
 
 
 
 
107
  f"https://placehold.co/1024x1024?text=Upper_Body_{i+1}" for i in range(MAX_IMAGES_PER_TYPE)
108
- ] + [
 
109
  f"https://placehold.co/1024x1024?text=Lower_Body_{i+1}" for i in range(MAX_IMAGES_PER_TYPE)
110
  ]
111
-
112
- messages_to_send.append(
113
- TextSendMessage(text="這是您上傳的六件衣服:")
114
- )
115
-
116
- for url in placeholder_image_urls:
117
  messages_to_send.append(ImageSendMessage(original_content_url=url, preview_image_url=url))
118
 
119
  line_bot_api.push_message(
@@ -123,10 +129,27 @@ def handle_text_message(event):
123
 
124
  response_text = get_gemini_response(prompt, all_images)
125
 
 
 
 
 
 
 
 
 
 
 
 
126
  line_bot_api.push_message(
127
  user_id,
128
- TextSendMessage(text=f"這是為您推薦的搭配:\n\n{response_text}")
129
  )
 
 
 
 
 
 
130
  # 重置狀態以便下一次使用
131
  user_states[user_id] = defaultdict(lambda: {"upper_body_images": [], "lower_body_images": [], "current_mode": None, "is_ready": False})[user_id]
132
  return
 
92
  if user_states[user_id]["is_ready"]:
93
  prompt = (
94
  f"我提供了三件上衣圖片和三件下半身圖片。請根據這些衣服,為我推薦一個適合「{text}」的穿搭建議,並詳細描述你推薦的上衣與下衣組合。請以繁體中文回答。"
95
+ "請在描述中以圖片連結的形式(例如:'https://example.com/outfit1.jpg')顯示你搭配好的衣物組合。"
96
+ "請將圖片連結放在一個新行,並使用 markdown 語法。"
97
  )
98
 
99
  all_images = user_states[user_id]["upper_body_images"] + user_states[user_id]["lower_body_images"]
100
 
101
  # 準備要回覆的訊息列表
102
  messages_to_send = [
103
+ TextSendMessage(text="已收到場合資訊,正在為您生成穿搭建議... 請稍候。")
104
  ]
105
 
106
+ # 在這裡顯示使用者上傳的原始圖片
107
+ messages_to_send.append(
108
+ TextSendMessage(text="這是您上傳的所有衣物:")
109
+ )
110
+
111
+ # 使用一個佔位符來顯示所有上傳的圖片
112
+ upper_placeholders = [
113
  f"https://placehold.co/1024x1024?text=Upper_Body_{i+1}" for i in range(MAX_IMAGES_PER_TYPE)
114
+ ]
115
+ lower_placeholders = [
116
  f"https://placehold.co/1024x1024?text=Lower_Body_{i+1}" for i in range(MAX_IMAGES_PER_TYPE)
117
  ]
118
+
119
+ for url in upper_placeholders:
120
+ messages_to_send.append(ImageSendMessage(original_content_url=url, preview_image_url=url))
121
+
122
+ for url in lower_placeholders:
 
123
  messages_to_send.append(ImageSendMessage(original_content_url=url, preview_image_url=url))
124
 
125
  line_bot_api.push_message(
 
129
 
130
  response_text = get_gemini_response(prompt, all_images)
131
 
132
+ # 解析 Gemini 的回應,將圖片 URL 和文字分開
133
+ lines = response_text.split('\n')
134
+ gemini_messages = []
135
+ for line in lines:
136
+ if line.startswith('http'):
137
+ # 這是圖片 URL,將其轉為 ImageSendMessage
138
+ gemini_messages.append(ImageSendMessage(original_content_url=line, preview_image_url=line))
139
+ else:
140
+ # 這是文字,將其轉為 TextSendMessage
141
+ gemini_messages.append(TextSendMessage(text=line))
142
+
143
  line_bot_api.push_message(
144
  user_id,
145
+ TextSendMessage(text="這是為您推薦的搭配:")
146
  )
147
+
148
+ line_bot_api.push_message(
149
+ user_id,
150
+ gemini_messages
151
+ )
152
+
153
  # 重置狀態以便下一次使用
154
  user_states[user_id] = defaultdict(lambda: {"upper_body_images": [], "lower_body_images": [], "current_mode": None, "is_ready": False})[user_id]
155
  return