Files
gpt-engineer/scripts/print_chat.py
2023-06-18 23:52:26 +02:00

54 lines
1.5 KiB
Python

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()