in aidial_assistant/chain/history.py [0:0]
def to_protocol_messages(self) -> list[ChatCompletionMessageParam]:
messages: list[ChatCompletionMessageParam] = []
scoped_message_iterator = iter(self.scoped_messages)
if self._is_first_system_message():
message = cast(
ChatCompletionSystemMessageParam,
next(scoped_message_iterator).message,
)
messages.append(
system_message(
self.assistant_system_message_template.render(
system_prefix=message["content"]
)
)
)
else:
messages.append(
system_message(self.assistant_system_message_template.render())
)
for scoped_message in scoped_message_iterator:
message = scoped_message.message
scope = scoped_message.scope
if scope == MessageScope.USER and message["role"] == "assistant":
# Clients see replies in plain text, but the model should understand how to reply appropriately.
content = commands_to_text(
[
CommandInvocation(
command=Reply.token(),
arguments={"message": message.get("content", "")},
)
]
)
messages.append(assistant_message(content))
else:
messages.append(message)
return messages