1313# =========== Copyright 2024 @ CAMEL-AI.org. All Rights Reserved. ===========
1414import warnings
1515from pathlib import Path
16+ from typing import Literal
1617from uuid import uuid4
1718
1819import customtkinter as ctk
@@ -50,8 +51,10 @@ def get_model_instance(model_key: str):
5051
5152def assign_task ():
5253 task_description = input_entry .get ()
54+ if not task_description .strip ():
55+ return
5356 input_entry .delete (0 , "end" )
54- display_message (task_description )
57+ display_message (task_description , "user" )
5558
5659 try :
5760 model = get_model_instance (model_dropdown .get ())
@@ -65,31 +68,44 @@ def assign_task():
6568 agent_policy = agent_policy ,
6669 log_dir = log_dir ,
6770 )
68-
71+
6972 experiment .set_display_callback (display_message )
7073
7174 def run_experiment ():
7275 try :
7376 experiment .start_benchmark ()
7477 except Exception as e :
75- display_message (f"Error: { str (e )} " , "ai " )
78+ display_message (f"Error: { str (e )} " , "error " )
7679
7780 import threading
81+
7882 thread = threading .Thread (target = run_experiment , daemon = True )
7983 thread .start ()
80-
84+
8185 except Exception as e :
82- display_message (f"Error: { str (e )} " , "ai " )
86+ display_message (f"Error: { str (e )} " , "error " )
8387
8488
85- def display_message (message , sender = "user" ):
89+ def display_message (
90+ message , category : Literal ["system" , "user" , "action" , "error" ] = "system"
91+ ):
8692 chat_display .configure (state = "normal" )
87- if sender == "user" :
88- chat_display .insert ("end" , f"User: { message } \n " , "user" )
89- else :
90- chat_display .insert ("end" , f"AI: { message } \n " , "ai" )
91- chat_display .tag_config ("user" , justify = "left" , foreground = "blue" )
92- chat_display .tag_config ("ai" , justify = "right" , foreground = "green" )
93+ if category == "user" :
94+ chat_display .insert ("end" , f"{ message } \n " , "user" )
95+ elif category == "system" :
96+ chat_display .insert ("end" , f"{ message } \n " , "system" )
97+ elif category == "error" :
98+ chat_display .insert ("end" , f"{ message } \n " , "error" )
99+ elif category == "action" :
100+ chat_display .insert ("end" , f"{ message } \n " , "action" )
101+ chat_display .tag_config (
102+ "user" , justify = "right" , foreground = "lightblue" , wrap = "word"
103+ )
104+ chat_display .tag_config ("system" , justify = "left" , foreground = "gray" , wrap = "word" )
105+ chat_display .tag_config (
106+ "action" , justify = "left" , foreground = "lightgreen" , wrap = "word"
107+ )
108+ chat_display .tag_config ("error" , justify = "left" , foreground = "red" , wrap = "word" )
93109 chat_display .configure (state = "disabled" )
94110 chat_display .see ("end" )
95111 app .update_idletasks ()
@@ -98,7 +114,7 @@ def display_message(message, sender="user"):
98114if __name__ == "__main__" :
99115 log_dir = (Path (__file__ ).parent / "logs" ).resolve ()
100116
101- ctk .set_appearance_mode ("System " )
117+ ctk .set_appearance_mode ("dark " )
102118 ctk .set_default_color_theme ("blue" )
103119
104120 app = ctk .CTk ()
@@ -118,7 +134,7 @@ def display_message(message, sender="user"):
118134 model_dropdown .pack (pady = 10 , padx = 10 , fill = "x" )
119135
120136 chat_display_frame = ctk .CTkFrame (app , width = 480 , height = 880 )
121- chat_display_frame .pack (pady = 10 , expand = True , fill = "y " )
137+ chat_display_frame .pack (pady = 10 , padx = 10 , expand = True , fill = "both " )
122138 chat_display = ctk .CTkTextbox (
123139 chat_display_frame , width = 480 , height = 880 , state = "disabled" , font = normal_font
124140 )
0 commit comments