ginipick commited on
Commit
4bd498e
ยท
verified ยท
1 Parent(s): 2cf6049

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +40 -50
app.py CHANGED
@@ -65,32 +65,28 @@ def generate_by_google_genai(text, file_name, model="gemini-2.0-flash-exp"):
65
  genai.configure(api_key=api_key)
66
 
67
  # ์ด๋ฏธ์ง€ ํŒŒ์ผ ์—…๋กœ๋“œ
68
- uploaded_file = genai.upload_file(path=file_name)
69
-
 
 
 
 
70
  # API์— ์ „๋‹ฌํ•  content ๊ตฌ์„ฑ
71
- contents = [
72
- genai_types.Content(
73
- role="user",
74
- parts=[
75
- # ๋จผ์ € ์—…๋กœ๋“œ๋œ ํŒŒ์ผ URI๋ฅผ ํฌํ•จ
76
- genai_types.Part.from_uri(
77
- file_uri=uploaded_file.uri,
78
- mime_type=uploaded_file.mime_type,
79
- ),
80
- # ์ด์–ด์„œ text ์ง€์‹œ์‚ฌํ•ญ์„ ํฌํ•จ
81
- genai_types.Part.from_text(text=text),
82
- ],
83
- ),
84
  ]
85
-
86
  # ์ƒ์„ฑ(ํŽธ์ง‘) ์„ค์ •
87
- generation_config = genai_types.GenerationConfig(
88
- temperature=1,
89
- top_p=0.95,
90
- top_k=40,
91
- max_output_tokens=8192, # ์ถœ๋ ฅ ํ† ํฐ ์ œํ•œ
92
- response_mime_type="text/plain",
93
- )
94
 
95
  text_response = "" # API๊ฐ€ ๋ฐ˜ํ™˜ํ•œ ํ…์ŠคํŠธ ๋ˆ„์ 
96
  image_path = None # API๊ฐ€ ๋ฐ˜ํ™˜ํ•œ ์ด๋ฏธ์ง€ ํŒŒ์ผ์˜ ๋กœ์ปฌ ๊ฒฝ๋กœ
@@ -99,34 +95,28 @@ def generate_by_google_genai(text, file_name, model="gemini-2.0-flash-exp"):
99
  with tempfile.NamedTemporaryFile(suffix=".png", delete=False) as tmp:
100
  temp_path = tmp.name
101
 
102
- # ์ŠคํŠธ๋ฆฌ๋ฐ ํ˜•ํƒœ๋กœ ์‘๋‹ต์„ ๋ฐ›์Œ
103
- response = genai.generate_content(
104
- model=model,
105
- contents=contents,
106
- generation_config=generation_config,
107
- stream=True
108
- )
109
-
110
- # ์ŠคํŠธ๋ฆฌ๋ฐ๋œ chunk๋“ค์—์„œ ์ด๋ฏธ์ง€์™€ ํ…์ŠคํŠธ๋ฅผ ์ถ”์ถœ
111
- for chunk in response:
112
- for candidate in chunk.candidates:
113
- for part in candidate.content.parts:
114
- # ์ด๋ฏธ์ง€์ธ ๊ฒฝ์šฐ
115
- if hasattr(part, 'inline_data') and part.inline_data:
116
- save_binary_file(temp_path, part.inline_data.data)
117
- image_path = temp_path
118
- break
119
- # ํ…์ŠคํŠธ์ธ ๊ฒฝ์šฐ
120
- elif hasattr(part, 'text'):
121
- text_response += part.text + "\n"
122
-
123
- if image_path:
124
- break
125
- if image_path:
126
- break
127
 
128
- # ์—…๋กœ๋“œ๋œ ์ž„์‹œ ํŒŒ์ผ ์‚ญ์ œ
129
- genai.delete_file(uploaded_file.name)
 
 
 
 
 
 
 
 
 
 
 
 
130
 
131
  return image_path, text_response
132
 
 
65
  genai.configure(api_key=api_key)
66
 
67
  # ์ด๋ฏธ์ง€ ํŒŒ์ผ ์—…๋กœ๋“œ
68
+ with open(file_name, "rb") as f:
69
+ image_data = f.read()
70
+
71
+ # ์ตœ์‹  Gemini API ๊ตฌ์กฐ์— ๋งž์ถฐ ์š”์ฒญ ๊ตฌ์„ฑ
72
+ model = genai.GenerativeModel(model)
73
+
74
  # API์— ์ „๋‹ฌํ•  content ๊ตฌ์„ฑ
75
+ image_parts = [
76
+ {
77
+ "mime_type": "image/png",
78
+ "data": image_data
79
+ },
80
+ text
 
 
 
 
 
 
 
81
  ]
82
+
83
  # ์ƒ์„ฑ(ํŽธ์ง‘) ์„ค์ •
84
+ generation_config = {
85
+ "temperature": 1,
86
+ "top_p": 0.95,
87
+ "top_k": 40,
88
+ "max_output_tokens": 8192,
89
+ }
 
90
 
91
  text_response = "" # API๊ฐ€ ๋ฐ˜ํ™˜ํ•œ ํ…์ŠคํŠธ ๋ˆ„์ 
92
  image_path = None # API๊ฐ€ ๋ฐ˜ํ™˜ํ•œ ์ด๋ฏธ์ง€ ํŒŒ์ผ์˜ ๋กœ์ปฌ ๊ฒฝ๋กœ
 
95
  with tempfile.NamedTemporaryFile(suffix=".png", delete=False) as tmp:
96
  temp_path = tmp.name
97
 
98
+ try:
99
+ # ์ŠคํŠธ๋ฆฌ๋ฐ ํ˜•ํƒœ๋กœ ์‘๋‹ต์„ ๋ฐ›์Œ
100
+ response = model.generate_content(
101
+ contents=image_parts,
102
+ generation_config=generation_config,
103
+ stream=True
104
+ )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
105
 
106
+ # ์ŠคํŠธ๋ฆฌ๋ฐ๋œ chunk๋“ค์—์„œ ์ด๋ฏธ์ง€์™€ ํ…์ŠคํŠธ๋ฅผ ์ถ”์ถœ
107
+ for chunk in response:
108
+ # ์ด๋ฏธ์ง€ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธ
109
+ if hasattr(chunk, 'parts'):
110
+ for part in chunk.parts:
111
+ if hasattr(part, 'inline_data') and part.inline_data:
112
+ save_binary_file(temp_path, part.inline_data.data)
113
+ image_path = temp_path
114
+ elif hasattr(part, 'text'):
115
+ text_response += part.text
116
+
117
+ except Exception as e:
118
+ logging.error(f"Gemini API error: {e}")
119
+ return None, str(e)
120
 
121
  return image_path, text_response
122