Skip to content

Commit 0347cf6

Browse files
abstract code into simpler methods, add 'new' command
1 parent 3e47f8f commit 0347cf6

1 file changed

Lines changed: 50 additions & 26 deletions

File tree

examples/chatbot_with_streaming.py

Lines changed: 50 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)