in aidial_assistant/utils/state.py [0:0]
def parse_history(history: list[Message]) -> list[ScopedMessage]:
messages: list[ScopedMessage] = []
for index, message in enumerate(history):
if message.role == Role.ASSISTANT:
invocations = _get_invocations(message.custom_content)
for invocation in invocations:
messages.append(
ScopedMessage(
scope=MessageScope.INTERNAL,
message=assistant_message(
_convert_old_commands(invocation["request"])
),
user_index=index,
)
)
messages.append(
ScopedMessage(
scope=MessageScope.INTERNAL,
message=user_message(invocation["response"]),
user_index=index,
)
)
messages.append(
ScopedMessage(
message=assistant_message(message.content or ""),
user_index=index,
)
)
elif message.role == Role.USER:
messages.append(
ScopedMessage(
message=user_message(message.content or ""),
user_index=index,
)
)
elif message.role == Role.SYSTEM:
messages.append(
ScopedMessage(
message=system_message(message.content or ""),
user_index=index,
)
)
else:
raise RequestParameterValidationError(
f"Role {message.role} is not supported.", param="messages"
)
return messages