Spaces:
Paused
Paused
Update app.py
Browse files
app.py
CHANGED
@@ -135,7 +135,7 @@ def inference_calling_idefics(image_path, question=""):
|
|
135 |
print(f"Error in inference call: {e}")
|
136 |
return "Error while processing the image."
|
137 |
|
138 |
-
def describe_image(image_path, question=""):
|
139 |
try:
|
140 |
answer = inference_calling_idefics(image_path, question)
|
141 |
return answer
|
@@ -151,36 +151,42 @@ async def get_bot_id():
|
|
151 |
return me.id
|
152 |
|
153 |
# OpenAI completion handler
|
154 |
-
async def get_completion(event, user_id, prompt):
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
184 |
|
185 |
# Telegram bot commands
|
186 |
@client.on(events.NewMessage(pattern='/start'))
|
@@ -201,8 +207,6 @@ async def reset(event):
|
|
201 |
|
202 |
@client.on(events.NewMessage)
|
203 |
async def handle_message(event):
|
204 |
-
async with client.action(event.chat_id, 'typing'):
|
205 |
-
await asyncio.sleep(1)
|
206 |
bot_id = await get_bot_id()
|
207 |
if event.sender_id == bot_id:
|
208 |
return
|
@@ -211,12 +215,12 @@ async def handle_message(event):
|
|
211 |
if event.photo:
|
212 |
photo = await event.download_media()
|
213 |
if photo:
|
214 |
-
image_description = describe_image(photo, user_message)
|
215 |
user_message += f"\n\nI sent you an image. Content of the image: {image_description}"
|
216 |
if user_message.startswith(('/start', '/help', '/reset')):
|
217 |
return
|
218 |
try:
|
219 |
-
await get_completion(event, user_id, user_message)
|
220 |
except Exception as e:
|
221 |
print(f"An error occurred: {e}")
|
222 |
await event.respond("Whoopsie!")
|
|
|
135 |
print(f"Error in inference call: {e}")
|
136 |
return "Error while processing the image."
|
137 |
|
138 |
+
def describe_image(client, image_path, question=""):
|
139 |
try:
|
140 |
answer = inference_calling_idefics(image_path, question)
|
141 |
return answer
|
|
|
151 |
return me.id
|
152 |
|
153 |
# OpenAI completion handler
|
154 |
+
async def get_completion(client, event, user_id, prompt):
|
155 |
+
async with client.action(event.chat_id, 'typing'):
|
156 |
+
history = get_chat_history(user_id)
|
157 |
+
messages = [
|
158 |
+
{"role": "system", "content": system_prompt},
|
159 |
+
*history,
|
160 |
+
{"role": "user", "content": prompt},
|
161 |
+
]
|
162 |
+
try:
|
163 |
+
completion = openai_client.chat.completions.create(
|
164 |
+
model=model,
|
165 |
+
messages=messages,
|
166 |
+
max_tokens=512,
|
167 |
+
temperature=1.04,
|
168 |
+
top_p=0.9,
|
169 |
+
frequency_penalty=0.9,
|
170 |
+
presence_penalty=0.9,
|
171 |
+
stream=True
|
172 |
+
)
|
173 |
+
message = ""
|
174 |
+
prev_message = ""
|
175 |
+
bot_message = await event.respond('♥')
|
176 |
+
for chunk in completion:
|
177 |
+
if chunk.choices[0].delta.content is not None:
|
178 |
+
message += chunk.choices[0].delta.content
|
179 |
+
if message != prev_message: # Only edit if content has changed
|
180 |
+
await bot_message.edit(message)
|
181 |
+
prev_message = message
|
182 |
+
await asyncio.sleep(0.5) # Add delay to avoid spamming edits
|
183 |
+
except Exception as e:
|
184 |
+
message = "Whoops!"
|
185 |
+
print(e)
|
186 |
+
|
187 |
+
update_chat_history(user_id, "user", prompt)
|
188 |
+
update_chat_history(user_id, "assistant", message)
|
189 |
+
return message
|
190 |
|
191 |
# Telegram bot commands
|
192 |
@client.on(events.NewMessage(pattern='/start'))
|
|
|
207 |
|
208 |
@client.on(events.NewMessage)
|
209 |
async def handle_message(event):
|
|
|
|
|
210 |
bot_id = await get_bot_id()
|
211 |
if event.sender_id == bot_id:
|
212 |
return
|
|
|
215 |
if event.photo:
|
216 |
photo = await event.download_media()
|
217 |
if photo:
|
218 |
+
image_description = describe_image(client, photo, user_message)
|
219 |
user_message += f"\n\nI sent you an image. Content of the image: {image_description}"
|
220 |
if user_message.startswith(('/start', '/help', '/reset')):
|
221 |
return
|
222 |
try:
|
223 |
+
await get_completion(client, event, user_id, user_message)
|
224 |
except Exception as e:
|
225 |
print(f"An error occurred: {e}")
|
226 |
await event.respond("Whoopsie!")
|