import json import typer from termcolor import colored app = typer.Typer() def pretty_print_conversation(messages): role_to_color = { "system": "red", "user": "green", "assistant": "blue", "function": "magenta", } formatted_messages = [] for message in messages: if message["role"] == "system": formatted_messages.append(f"system: {message['content']}\n") elif message["role"] == "user": formatted_messages.append(f"user: {message['content']}\n") elif message["role"] == "assistant" and message.get("function_call"): formatted_messages.append(f"assistant: {message['function_call']}\n") elif message["role"] == "assistant" and not message.get("function_call"): formatted_messages.append(f"assistant: {message['content']}\n") elif message["role"] == "function": formatted_messages.append( f"function ({message['name']}): {message['content']}\n" ) for formatted_message in formatted_messages: print( colored( formatted_message, role_to_color[ messages[formatted_messages.index(formatted_message)]["role"] ], ) ) @app.command() def main( messages_path: str, ): with open(messages_path) as f: messages = json.load(f) pretty_print_conversation(messages) if __name__ == "__main__": app()