@@ -28,40 +28,64 @@ def __init__(self, api_key, model, system_message=None):
2828 self .model = model
2929 self .system_message = system_message
3030
31- def start (self ):
32- messages = []
31+ def opening_instructions (self ):
32+ print ("""
33+ To chat: type your message and hit enter.
34+ To start a new chat: type 'new'.
35+ To exit: type 'exit', 'quit', or hit CTRL+C.
36+ """ )
37+
38+ def new_chat (self ):
39+ self .messages = []
3340 if self .system_message :
34- messages .append (ChatMessage (role = "system" , content = self .system_message ))
41+ self .messages .append (ChatMessage (role = "system" , content = self .system_message ))
42+
43+ def check_exit (self , content ):
44+ if content .lower ().strip () in ["exit" , "quit" ]:
45+ self .exit ()
46+
47+ def check_new_chat (self , content ):
48+ if content .lower ().strip () in ["new" ]:
49+ print ("" )
50+ print ("Starting new chat..." )
51+ print ("" )
52+ self .new_chat ()
53+ return True
54+ return False
55+
56+ def run_inference (self , content ):
57+ self .messages .append (ChatMessage (role = "user" , content = content ))
58+
59+ assistant_response = ""
60+ logger .debug (f"Sending messages: { self .messages } " )
61+ for chunk in self .client .chat_stream (model = self .model , messages = self .messages ):
62+ response = chunk .choices [0 ].delta .content
63+ if response is not None :
64+ print (response , end = "" , flush = True )
65+ assistant_response += response
66+
67+ print ("" , flush = True )
68+
69+ if assistant_response :
70+ self .messages .append (ChatMessage (role = "assistant" , content = assistant_response ))
71+ logger .debug (f"Current messages: { self .messages } " )
72+
73+ def start (self ):
3574
36- print ( "" )
37- print ( "To chat, type your message and hit enter. To exit, type 'exit', 'quit', or hit CTRL+C." )
75+ self . opening_instructions ( )
76+ self . new_chat ( )
3877
3978 while True :
4079 try :
4180 print ("" )
4281 content = input ("YOU: " )
43- if content .lower ().strip () in ["exit" , "quit" ]:
44- self .exit ()
45-
46- print ("" )
47- print ("MISTRAL:" )
48- print ("" )
49-
50- messages .append (ChatMessage (role = "user" , content = content ))
51-
52- assistant_response = ""
53- logger .debug (f"Sending messages: { messages } " )
54- for chunk in self .client .chat_stream (model = self .model , messages = messages ):
55- response = chunk .choices [0 ].delta .content
56- if response is not None :
57- print (response , end = "" , flush = True )
58- assistant_response += response
59-
60- print ("" , flush = True )
82+ self .check_exit (content )
83+ if not self .check_new_chat (content ):
84+ print ("" )
85+ print ("MISTRAL:" )
86+ print ("" )
87+ self .run_inference (content )
6188
62- if assistant_response :
63- messages .append (ChatMessage (role = "assistant" , content = assistant_response ))
64- logger .debug (f"Current messages: { messages } " )
6589 except KeyboardInterrupt :
6690 self .exit ()
6791
0 commit comments