Spaces:
Runtime error
Runtime error
:gem: [Feature] MessageCompoer: decompose to system and input prompt
Browse files
messagers/message_composer.py
CHANGED
|
@@ -163,6 +163,37 @@ class MessageComposer:
|
|
| 163 |
|
| 164 |
return self.merged_str
|
| 165 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 166 |
|
| 167 |
if __name__ == "__main__":
|
| 168 |
# model = "mixtral-8x7b"
|
|
@@ -187,9 +218,17 @@ if __name__ == "__main__":
|
|
| 187 |
# "content": "How many questions have I asked? Please list them.",
|
| 188 |
# },
|
| 189 |
]
|
| 190 |
-
logger.note(f"model: {composer.model}")
|
| 191 |
-
merged_str = composer.merge(messages)
|
| 192 |
-
logger.note("merged_str:")
|
| 193 |
-
logger.mesg(merged_str)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 194 |
|
| 195 |
# python -m messagers.message_composer
|
|
|
|
| 163 |
|
| 164 |
return self.merged_str
|
| 165 |
|
| 166 |
+
def decompose_to_system_and_input_prompt(
|
| 167 |
+
self, messages: list[dict], append_assistant=True
|
| 168 |
+
):
|
| 169 |
+
system_prompt_list = []
|
| 170 |
+
user_and_assistant_messages = []
|
| 171 |
+
for message in messages:
|
| 172 |
+
role = message["role"]
|
| 173 |
+
content = message["content"]
|
| 174 |
+
if role in self.system_roles:
|
| 175 |
+
system_prompt_list.append(content)
|
| 176 |
+
else:
|
| 177 |
+
user_and_assistant_messages.append(message)
|
| 178 |
+
system_prompt = "\n".join(system_prompt_list)
|
| 179 |
+
|
| 180 |
+
input_prompt_list = []
|
| 181 |
+
input_messages = self.concat_messages_by_role(user_and_assistant_messages)
|
| 182 |
+
for message in input_messages:
|
| 183 |
+
role = message["role"]
|
| 184 |
+
content = message["content"]
|
| 185 |
+
if role in self.answer_roles:
|
| 186 |
+
role_content_str = f"`assistant`:\n{content}"
|
| 187 |
+
else:
|
| 188 |
+
role_content_str = f"`user`:\n{content}"
|
| 189 |
+
input_prompt_list.append(role_content_str)
|
| 190 |
+
input_prompt = "\n\n".join(input_prompt_list)
|
| 191 |
+
|
| 192 |
+
if append_assistant:
|
| 193 |
+
input_prompt += "\n\n`assistant`:"
|
| 194 |
+
|
| 195 |
+
return system_prompt, input_prompt
|
| 196 |
+
|
| 197 |
|
| 198 |
if __name__ == "__main__":
|
| 199 |
# model = "mixtral-8x7b"
|
|
|
|
| 218 |
# "content": "How many questions have I asked? Please list them.",
|
| 219 |
# },
|
| 220 |
]
|
| 221 |
+
# logger.note(f"model: {composer.model}")
|
| 222 |
+
# merged_str = composer.merge(messages)
|
| 223 |
+
# logger.note("merged_str:")
|
| 224 |
+
# logger.mesg(merged_str)
|
| 225 |
+
|
| 226 |
+
system_prompt, input_prompt = composer.decompose_to_system_and_input_prompt(
|
| 227 |
+
messages
|
| 228 |
+
)
|
| 229 |
+
logger.note("system_prompt:")
|
| 230 |
+
logger.mesg(system_prompt)
|
| 231 |
+
logger.note("input_prompt:")
|
| 232 |
+
logger.mesg(input_prompt)
|
| 233 |
|
| 234 |
# python -m messagers.message_composer
|