Allow more flexible assistant and system response (#1256)

This commit is contained in:
Christopher Chou
2024-08-30 11:51:44 -07:00
committed by GitHub
parent 79ece2c51f
commit 51c554d812
4 changed files with 95 additions and 8 deletions

View File

@@ -386,7 +386,16 @@ def generate_chat_conv(
for message in request.messages:
msg_role = message.role
if msg_role == "system":
conv.system_message = message.content
if isinstance(message.content, str):
conv.system_message = message.content
elif isinstance(message.content, list):
if (
len(message.content) != 1
or getattr(message.content[0], "type", None) != "text"
):
raise ValueError("The system message should be a single text.")
else:
conv.system_message = getattr(message.content[0], "text", "")
elif msg_role == "user":
# Handle the various types of Chat Request content types here.
role = conv.roles[0]
@@ -414,7 +423,20 @@ def generate_chat_conv(
conv.append_image(content.image_url.url)
conv.append_message(conv.roles[0], real_content)
elif msg_role == "assistant":
conv.append_message(conv.roles[1], message.content)
parsed_content = ""
if isinstance(message.content, str):
parsed_content = message.content
elif isinstance(message.content, list):
if (
len(message.content) != 1
or getattr(message.content[0], "type", None) != "text"
):
raise ValueError(
"The assistant's response should be a single text."
)
else:
parsed_content = getattr(message.content[0], "text", "")
conv.append_message(conv.roles[1], parsed_content)
else:
raise ValueError(f"Unknown role: {msg_role}")