def to_protocol_messages()

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