baohuynhbk14 commited on
Commit
d34de96
·
1 Parent(s): abefd07

Implement get_history method and update message handling in predict function

Browse files
Files changed (2) hide show
  1. app.py +2 -2
  2. conversation.py +27 -0
app.py CHANGED
@@ -213,9 +213,9 @@ def predict(message,
213
  index, first_user_message = state.get_user_message(source=state.USER, position='first')
214
  if first_user_message is not None and \
215
  DEFAULT_IMAGE_TOKEN not in first_user_message:
216
- state.messages[index]['content'] = DEFAULT_IMAGE_TOKEN + "\n" + first_user_message
217
 
218
- history = state.get_prompt()[:-1]
219
  logger.info(f"==== History ====\n{history}")
220
 
221
  logger.info(f"==== Lenght Pixel values ====\n{len(pixel_values)}")
 
213
  index, first_user_message = state.get_user_message(source=state.USER, position='first')
214
  if first_user_message is not None and \
215
  DEFAULT_IMAGE_TOKEN not in first_user_message:
216
+ state.update_message(state.USER, DEFAULT_IMAGE_TOKEN + "\n" + first_user_message, None, index)
217
 
218
+ history = state.get_history()
219
  logger.info(f"==== History ====\n{history}")
220
 
221
  logger.info(f"==== Lenght Pixel values ====\n{len(pixel_values)}")
conversation.py CHANGED
@@ -134,6 +134,33 @@ class Conversation:
134
  else:
135
  raise ValueError(f"Invalid role: {message['role']}")
136
  return send_messages
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
137
 
138
  def append_message(
139
  self,
 
134
  else:
135
  raise ValueError(f"Invalid role: {message['role']}")
136
  return send_messages
137
+
138
+ def get_history(self):
139
+ results = []
140
+ system_message = self.system_message
141
+ messages = self.messages[:-1]
142
+
143
+ for i in range(len(messages)):
144
+ if messages[i]['role'] == 'user':
145
+ # Create the question by combining system and user messages
146
+ user_content = messages[i]['content']
147
+
148
+ # Check if it's the first user message and contains <image>
149
+ if i == 0 and '<image>' in user_content:
150
+ question = f"<image> {system_message}\n{user_content}"
151
+ else:
152
+ question = f"{system_message}\n{user_content}"
153
+
154
+ # Check for the corresponding assistant response
155
+ answer = ""
156
+ if i + 1 < len(messages) and messages[i + 1]['role'] == 'assistant':
157
+ answer = messages[i + 1]['content']
158
+
159
+ # Add the question-answer pair to results
160
+ results.append((question, answer))
161
+
162
+ return results
163
+
164
 
165
  def append_message(
166
  self,