-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathollamaClient.py
49 lines (41 loc) · 1.63 KB
/
ollamaClient.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
from ollama import chat
class OllamaClient():
def __init__(self):
self.messages = []
def clear_history(self):
self.messages.clear()
def append_history(self, message):
self.messages.append(message)
def chat(self, prompt:str, model: str, temp: float, system:str = "default") -> str:
options = dict({'temperature' : temp})
message = {}
if system != 'default':
sMessage = dict({'role' : 'system', 'content' : system})
self.messages.append(sMessage)
message['role'] = 'user'
message['content'] = prompt
self.messages.append(message)
response = chat(model=model, messages=self.messages, options=options)
self.messages.append(response['message'])
return response['message']['content']
def chat_stream(self, prompt:str, model: str, temp: float) -> str:
message = {}
message['role'] = 'user'
message['content'] = prompt
self.messages.append(message)
stream = chat(model=model, messages=self.messages, options={'temperature' : temp}, stream=True)
return stream
if __name__ == '__main__':
client = OllamaClient()
while True:
print('You :')
response = client.chat_stream(model='dolphin-mistral:latest', temp=0.8, prompt=input())
contents = ""
AiMessage = {}
for chunk in response:
content = chunk['message']['content']
print(content, end='', flush=True)
contents += content
AiMessage['role'] = 'assistant'
AiMessage['content'] = contents
client.append_history(AiMessage)