OllamaInterface/OllamaChatWidget.py

Fri, 30 Aug 2024 15:22:47 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Fri, 30 Aug 2024 15:22:47 +0200
changeset 21
22245a10b118
parent 10
734921ab2b89
child 44
ef9a85b8768a
permissions
-rw-r--r--

Added the capability to view a chat history in a separate window.

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
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 self.headerLabel.setText(
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 self.tr("<b>{0} - {1}</b>", "title, model name").format(title, model)
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 )
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 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
45 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
46 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
47 else:
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
48 self.__messagesLayout.setContentsMargins(0, 0, 0, 0)
5
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 self.__messagesLayout.setAlignment(Qt.AlignmentFlag.AlignTop)
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 self.chatMessagesWidget.setLayout(self.__messagesLayout)
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51
21
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
52 def addMessage(self, role, message, scrollToBottom=True):
5
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 """
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 Public method to add a new message.
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 @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
57 @type str
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58 @param message message text
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 @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
60 @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
61 (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
62 @type bool (optional)
5
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 """
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 msgWidget = OllamaChatMessageBox(role=role, message=message)
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 self.__messagesLayout.addWidget(msgWidget)
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66
21
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
67 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
68 QTimer.singleShot(100, self.__scrollChatToBottom)
5
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 def appendMessage(self, message):
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 """
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 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
73
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74 @param message message text to be appended
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75 @type str
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76 """
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77 msgBox = self.__messagesLayout.itemAt(
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78 self.__messagesLayout.count() - 1
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 ).widget()
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 msgBox.appendMessage(message)
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 QTimer.singleShot(0, self.__scrollChatToBottom)
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 @pyqtSlot()
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 def __scrollChatToBottom(self):
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86 """
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 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
88 """
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
89 scrollbar = self.chatMessagesScrollArea.verticalScrollBar()
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90 scrollbar.setValue(scrollbar.maximum())
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
92 def getHistoryId(self):
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
93 """
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
94 Public method to get the history ID of this chat.
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96 @return DESCRIPTION
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97 @rtype TYPE
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
98 """
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99 return self.__hid
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101 def getRecentMessage(self):
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 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
104
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
105 @return message content
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106 @rtype str
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
107 """
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108 msgBox = self.__messagesLayout.itemAt(
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109 self.__messagesLayout.count() - 1
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110 ).widget()
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111 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
112
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
113 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
114 """
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
115 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
116 """
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
117 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
118 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
119 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
120
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
121 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
122 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
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
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
125 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
126 """
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
127 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
128 """
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
129
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
130 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
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 Constructor
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
133
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
134 @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
135 @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
136 @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
137 @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
138 @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
139 @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
140 @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
141 @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
142 """
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
143 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
144
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
145 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
146 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
147 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
148 )
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
149 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
150 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
151 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
152 )
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
153 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
154 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
155
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
156 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
157 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
158 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
159
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
160 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
161 """
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
162 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
163
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
164 @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
165 @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
166 """
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
167 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
168
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
169 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
170 """
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
171 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
172
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
173 @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
174 @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
175 """
22245a10b118 Added the capability to view a chat history in a separate window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
176 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
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 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
179 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
180 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
181 )

eric ide

mercurial