3v324v23 commited on
Commit
4c25f5a
·
1 Parent(s): 30a569f

顯示完後刪除圖片

Browse files
Files changed (1) hide show
  1. test.py +15 -11
test.py CHANGED
@@ -3,16 +3,14 @@ import base64
3
  import logging
4
  import os
5
  import tempfile
6
- from io import BytesIO
7
  import uuid
8
-
9
- from google import genai
10
- from google.genai import types
11
- from PIL import Image
12
 
13
  import markdown
14
  from bs4 import BeautifulSoup
15
  from flask import Flask, abort, request, send_from_directory
 
 
16
  from linebot.v3 import WebhookHandler
17
  from linebot.v3.exceptions import InvalidSignatureError
18
  from linebot.v3.messaging import (
@@ -26,6 +24,7 @@ from linebot.v3.messaging import (
26
  )
27
  from linebot.v3.webhooks import ImageMessageContent, MessageEvent, TextMessageContent
28
  from openai import OpenAI
 
29
 
30
  # === 初始化 Google Gemini ===
31
  GOOGLE_API_KEY = os.environ.get("GOOGLE_API_KEY")
@@ -58,8 +57,8 @@ handler = WebhookHandler(channel_secret)
58
  # === AI Query 包裝 ===
59
  def query(payload):
60
  response = google_client.models.generate_content(
61
- model="gemini-2.0-flash",
62
- contents=f"{text_system_prompt}:{payload}",
63
  )
64
  return response.text
65
 
@@ -103,8 +102,8 @@ def handle_text_message(event):
103
  model="gemini-2.0-flash-exp-image-generation",
104
  contents=prompt,
105
  config=types.GenerateContentConfig(
106
- response_modalities=['TEXT', 'IMAGE']
107
- )
108
  )
109
 
110
  # 處理回應中的圖片
@@ -118,7 +117,7 @@ def handle_text_message(event):
118
  # 建立圖片的公開 URL
119
  image_url = f"https://{base_url}/images/{filename}"
120
  app.logger.info(f"Image URL: {image_url}")
121
-
122
  # 回傳圖片給 LINE 使用者
123
  with ApiClient(configuration) as api_client:
124
  line_bot_api = MessagingApi(api_client)
@@ -133,6 +132,10 @@ def handle_text_message(event):
133
  ],
134
  )
135
  )
 
 
 
 
136
  except Exception as e:
137
  app.logger.error(f"Gemini API error: {e}")
138
  with ApiClient(configuration) as api_client:
@@ -157,6 +160,7 @@ def handle_text_message(event):
157
  )
158
  )
159
 
 
160
  # === 處理圖片訊息 ===
161
  @handler.add(MessageEvent, message=ImageMessageContent)
162
  def handle_image_message(event):
@@ -221,4 +225,4 @@ def handle_image_message(event):
221
  TextMessage(text=response.output_text),
222
  ],
223
  )
224
- )
 
3
  import logging
4
  import os
5
  import tempfile
 
6
  import uuid
7
+ from io import BytesIO
 
 
 
8
 
9
  import markdown
10
  from bs4 import BeautifulSoup
11
  from flask import Flask, abort, request, send_from_directory
12
+ from google import genai
13
+ from google.genai import types
14
  from linebot.v3 import WebhookHandler
15
  from linebot.v3.exceptions import InvalidSignatureError
16
  from linebot.v3.messaging import (
 
24
  )
25
  from linebot.v3.webhooks import ImageMessageContent, MessageEvent, TextMessageContent
26
  from openai import OpenAI
27
+ from PIL import Image
28
 
29
  # === 初始化 Google Gemini ===
30
  GOOGLE_API_KEY = os.environ.get("GOOGLE_API_KEY")
 
57
  # === AI Query 包裝 ===
58
  def query(payload):
59
  response = google_client.models.generate_content(
60
+ model="gemini-2.0-flash",
61
+ contents=f"{text_system_prompt}:{payload}",
62
  )
63
  return response.text
64
 
 
102
  model="gemini-2.0-flash-exp-image-generation",
103
  contents=prompt,
104
  config=types.GenerateContentConfig(
105
+ response_modalities=["TEXT", "IMAGE"]
106
+ ),
107
  )
108
 
109
  # 處理回應中的圖片
 
117
  # 建立圖片的公開 URL
118
  image_url = f"https://{base_url}/images/{filename}"
119
  app.logger.info(f"Image URL: {image_url}")
120
+
121
  # 回傳圖片給 LINE 使用者
122
  with ApiClient(configuration) as api_client:
123
  line_bot_api = MessagingApi(api_client)
 
132
  ],
133
  )
134
  )
135
+ # 傳送圖片後刪除暫存檔案
136
+ if os.path.exists(image_path):
137
+ os.remove(image_path)
138
+
139
  except Exception as e:
140
  app.logger.error(f"Gemini API error: {e}")
141
  with ApiClient(configuration) as api_client:
 
160
  )
161
  )
162
 
163
+
164
  # === 處理圖片訊息 ===
165
  @handler.add(MessageEvent, message=ImageMessageContent)
166
  def handle_image_message(event):
 
225
  TextMessage(text=response.output_text),
226
  ],
227
  )
228
+ )