rbn2008k commited on
Commit
21221a0
·
verified ·
1 Parent(s): 5a1de4d

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +39 -35
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
- history = get_chat_history(user_id)
156
- messages = [
157
- {"role": "system", "content": system_prompt},
158
- *history,
159
- {"role": "user", "content": prompt},
160
- ]
161
- try:
162
- completion = openai_client.chat.completions.create(
163
- model=model,
164
- messages=messages,
165
- max_tokens=512,
166
- temperature=1.04,
167
- top_p=0.9,
168
- frequency_penalty=0.9,
169
- presence_penalty=0.9,
170
- stream=True
171
- )
172
- message = ""
173
- bot_message = await event.respond('♥')
174
- for chunk in completion:
175
- if chunk.choices[0].delta.content is not None:
176
- message += chunk.choices[0].delta.content
177
- await bot_message.edit(message)
178
- except Exception as e:
179
- message = "Whoops!"
180
- print(e)
181
- update_chat_history(user_id, "user", prompt)
182
- update_chat_history(user_id, "assistant", message)
183
- return message
 
 
 
 
 
 
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!")