OllamaInterface/OllamaChatWidget.py

Mon, 16 Sep 2024 19:05:50 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Mon, 16 Sep 2024 19:05:50 +0200
changeset 44
ef9a85b8768a
parent 21
22245a10b118
child 57
3a3726c1f684
permissions
-rw-r--r--

Added the capability to change the model of a chat.

5
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
10
734921ab2b89 Corrected some header formatting.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
2
5
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
3 # Copyright (c) 2024 Detlev Offenbach <detlev@die-offenbachs.de>
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing a widget showing the chat with the 'ollama' server.
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10 from PyQt6.QtCore import Qt, QTimer, pyqtSlot
21
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
11 from PyQt6.QtWidgets import QDialog, QDialogButtonBox, QVBoxLayout, QWidget
5
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13 from .OllamaChatMessageBox import OllamaChatMessageBox
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14 from .Ui_OllamaChatWidget import Ui_OllamaChatWidget
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17 class OllamaChatWidget(QWidget, Ui_OllamaChatWidget):
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18 """
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19 Class implementing a widget showing the chat with the 'ollama' server.
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20 """
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22 def __init__(self, hid, title, model, parent=None):
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23 """
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 Constructor
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 @param hid ID of the chat history
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 @type str
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 @param title title of the chat
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 @type str
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 @param model model name used for the chat
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 @type str
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 @param parent reference to the parent widget (defaults to None)
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 @type QWidget (optional)
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 """
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 super().__init__(parent)
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 self.setupUi(self)
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 self.__hid = hid
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39
44
ef9a85b8768a Added the capability to change the model of a chat.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 21
diff changeset
40 self.__setHeader(title, model)
5
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 self.__messagesLayout = QVBoxLayout()
21
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
43 if parent is None:
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
44 self.__messagesLayout.setContentsMargins(4, 4, 4, 4)
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
45 else:
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
46 self.__messagesLayout.setContentsMargins(0, 0, 0, 0)
5
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 self.__messagesLayout.setAlignment(Qt.AlignmentFlag.AlignTop)
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 self.chatMessagesWidget.setLayout(self.__messagesLayout)
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49
44
ef9a85b8768a Added the capability to change the model of a chat.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 21
diff changeset
50 def __setHeader(self, title, model):
ef9a85b8768a Added the capability to change the model of a chat.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 21
diff changeset
51 """
ef9a85b8768a Added the capability to change the model of a chat.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 21
diff changeset
52 Private method to set the header label.
ef9a85b8768a Added the capability to change the model of a chat.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 21
diff changeset
53
ef9a85b8768a Added the capability to change the model of a chat.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 21
diff changeset
54 @param title chat title
ef9a85b8768a Added the capability to change the model of a chat.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 21
diff changeset
55 @type str
ef9a85b8768a Added the capability to change the model of a chat.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 21
diff changeset
56 @param model model of the chat
ef9a85b8768a Added the capability to change the model of a chat.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 21
diff changeset
57 @type str
ef9a85b8768a Added the capability to change the model of a chat.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 21
diff changeset
58 """
ef9a85b8768a Added the capability to change the model of a chat.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 21
diff changeset
59 self.headerLabel.setText(
ef9a85b8768a Added the capability to change the model of a chat.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 21
diff changeset
60 self.tr("<b>{0} - {1}</b>", "title, model name").format(title, model)
ef9a85b8768a Added the capability to change the model of a chat.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 21
diff changeset
61 )
ef9a85b8768a Added the capability to change the model of a chat.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 21
diff changeset
62
21
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
63 def addMessage(self, role, message, scrollToBottom=True):
5
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 """
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 Public method to add a new message.
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 @param role role of the message sender (one of 'user' or 'assistant')
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 @type str
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 @param message message text
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 @type str
21
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
71 @param scrollToBottom flag indicating to scroll the view to the bottom
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
72 (defaults to True)
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
73 @type bool (optional)
5
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74 """
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75 msgWidget = OllamaChatMessageBox(role=role, message=message)
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76 self.__messagesLayout.addWidget(msgWidget)
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77
21
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
78 if scrollToBottom:
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
79 QTimer.singleShot(100, self.__scrollChatToBottom)
5
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81 def appendMessage(self, message):
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 """
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 Public method to append a given message to the bottom most message box.
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 @param message message text to be appended
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86 @type str
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 """
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88 msgBox = self.__messagesLayout.itemAt(
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
89 self.__messagesLayout.count() - 1
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90 ).widget()
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91 msgBox.appendMessage(message)
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
92
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
93 QTimer.singleShot(0, self.__scrollChatToBottom)
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
94
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95 @pyqtSlot()
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96 def __scrollChatToBottom(self):
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97 """
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
98 Private slot to scroll the chat scroll area to the bottom.
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99 """
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100 scrollbar = self.chatMessagesScrollArea.verticalScrollBar()
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101 scrollbar.setValue(scrollbar.maximum())
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
102
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
103 def getHistoryId(self):
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
104 """
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
105 Public method to get the history ID of this chat.
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106
44
ef9a85b8768a Added the capability to change the model of a chat.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 21
diff changeset
107 @return history ID of the chat
ef9a85b8768a Added the capability to change the model of a chat.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 21
diff changeset
108 @rtype str
5
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109 """
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110 return self.__hid
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112 def getRecentMessage(self):
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113 """
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114 Public method to get the message of the last message box.
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116 @return message content
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117 @rtype str
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
118 """
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
119 msgBox = self.__messagesLayout.itemAt(
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 self.__messagesLayout.count() - 1
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121 ).widget()
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
122 return msgBox.getMessage()
21
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
123
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
124 def clear(self):
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
125 """
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
126 Public method to clear the list of messages.
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
127 """
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
128 while not self.__messagesLayout.isEmpty():
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
129 itm = self.__messagesLayout.takeAt(0)
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
130 itm.widget().deleteLater()
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
131
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
132 scrollbar = self.chatMessagesScrollArea.verticalScrollBar()
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
133 scrollbar.setValue(0)
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
134
44
ef9a85b8768a Added the capability to change the model of a chat.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 21
diff changeset
135 @pyqtSlot(str, str, str)
ef9a85b8768a Added the capability to change the model of a chat.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 21
diff changeset
136 def chatParametersChanged(self, _hid, title, model):
ef9a85b8768a Added the capability to change the model of a chat.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 21
diff changeset
137 """
ef9a85b8768a Added the capability to change the model of a chat.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 21
diff changeset
138 Public slot to handle a change of the chat parameters.
ef9a85b8768a Added the capability to change the model of a chat.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 21
diff changeset
139
ef9a85b8768a Added the capability to change the model of a chat.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 21
diff changeset
140 @param _hid history ID (unused)
ef9a85b8768a Added the capability to change the model of a chat.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 21
diff changeset
141 @type str
ef9a85b8768a Added the capability to change the model of a chat.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 21
diff changeset
142 @param title new chat title
ef9a85b8768a Added the capability to change the model of a chat.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 21
diff changeset
143 @type str
ef9a85b8768a Added the capability to change the model of a chat.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 21
diff changeset
144 @param model new chat model
ef9a85b8768a Added the capability to change the model of a chat.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 21
diff changeset
145 @type str
ef9a85b8768a Added the capability to change the model of a chat.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 21
diff changeset
146 """
ef9a85b8768a Added the capability to change the model of a chat.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 21
diff changeset
147 self.__setHeader(title, model)
ef9a85b8768a Added the capability to change the model of a chat.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 21
diff changeset
148
21
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
149
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
150 class OllamaChatDialog(QDialog):
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
151 """
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
152 Class implementing a dialog showing the chat with the 'ollama' server.
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
153 """
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
154
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
155 def __init__(self, hid, title, model, parent=None):
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
156 """
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
157 Constructor
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
158
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
159 @param hid ID of the chat history
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
160 @type str
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
161 @param title title of the chat
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
162 @type str
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
163 @param model model name used for the chat
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
164 @type str
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
165 @param parent reference to the parent widget (defaults to None)
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
166 @type QWidget (optional)
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
167 """
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
168 super().__init__(parent)
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
169
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
170 self.__layout = QVBoxLayout(self)
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
171 self.__chatWidget = OllamaChatWidget(
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
172 hid=hid, title=title, model=model, parent=self
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
173 )
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
174 self.__layout.addWidget(self.__chatWidget)
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
175 self.__buttonBox = QDialogButtonBox(
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
176 QDialogButtonBox.StandardButton.Close, Qt.Orientation.Horizontal, self
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
177 )
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
178 self.__buttonBox.rejected.connect(self.reject)
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
179 self.__layout.addWidget(self.__buttonBox)
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
180
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
181 self.setModal(False)
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
182 self.setSizeGripEnabled(True)
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
183 self.resize(600, 750)
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
184
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
185 def getHistoryId(self):
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
186 """
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
187 Public method to get the history ID of this chat.
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
188
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
189 @return DESCRIPTION
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
190 @rtype TYPE
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
191 """
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
192 return self.__chatWidget.getHistoryId()
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
193
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
194 def setHistory(self, messages):
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
195 """
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
196 Public method to add a list of messages to the view.
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
197
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
198 @param messages list of chat messages
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
199 @type list[dict[str, str]]
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
200 """
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
201 self.__chatWidget.clear()
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
202
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
203 for message in messages:
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
204 self.__chatWidget.addMessage(
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
205 role=message["role"], message=message["content"], scrollToBottom=False
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
206 )

eric ide

mercurial