Spaces:
Running
on
Zero
Running
on
Zero
Commit
·
d34de96
1
Parent(s):
abefd07
Implement get_history method and update message handling in predict function
Browse files- app.py +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.
|
217 |
|
218 |
-
history = state.
|
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,
|