pygpt-net 2.5.6__py3-none-any.whl → 2.5.7__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## 2.5.7 (2025-02-26)
4
+
5
+ - Steam mode has been enabled in o1 models.
6
+ - CSS styling for <think> tags (reasoning models) has been added.
7
+ - The search input has been moved to the top.
8
+ - The ChatGPT-based style is now set as default.
9
+ - Fix: Display of max tokens in models with a context window greater than 128k.
10
+
3
11
  ## 2.5.6 (2025-02-03)
4
12
 
5
13
  - Fix: disabled index initialization if embedding provider is OpenAI and no API KEY is provided.
README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  [![pygpt](https://snapcraft.io/pygpt/badge.svg)](https://snapcraft.io/pygpt)
4
4
 
5
- Release: **2.5.6** | build: **2025.02.03** | Python: **>=3.10, <3.13**
5
+ Release: **2.5.7** | build: **2025.02.26** | Python: **>=3.10, <3.13**
6
6
 
7
7
  > Official website: https://pygpt.net | Documentation: https://pygpt.readthedocs.io
8
8
  >
@@ -3964,6 +3964,14 @@ may consume additional tokens that are not displayed in the main window.
3964
3964
 
3965
3965
  ## Recent changes:
3966
3966
 
3967
+ **2.5.7 (2025-02-26)**
3968
+
3969
+ - Steam mode has been enabled in o1 models.
3970
+ - CSS styling for <think> tags (reasoning models) has been added.
3971
+ - The search input has been moved to the top.
3972
+ - The ChatGPT-based style is now set as default.
3973
+ - Fix: Display of max tokens in models with a context window greater than 128k.
3974
+
3967
3975
  **2.5.6 (2025-02-03)**
3968
3976
 
3969
3977
  - Fix: disabled index initialization if embedding provider is OpenAI and no API KEY is provided.
pygpt_net/CHANGELOG.txt CHANGED
@@ -1,3 +1,11 @@
1
+ 2.5.7 (2025-02-26)
2
+
3
+ - Steam mode has been enabled in o1 models.
4
+ - CSS styling for <think> tags (reasoning models) has been added.
5
+ - The search input has been moved to the top.
6
+ - The ChatGPT-based style is now set as default.
7
+ - Fix: Display of max tokens in models with a context window greater than 128k.
8
+
1
9
  2.5.6 (2025-02-03)
2
10
 
3
11
  - Fix: disabled index initialization if embedding provider is OpenAI and no API KEY is provided.
pygpt_net/__init__.py CHANGED
@@ -6,15 +6,15 @@
6
6
  # GitHub: https://github.com/szczyglis-dev/py-gpt #
7
7
  # MIT License #
8
8
  # Created By : Marcin Szczygliński #
9
- # Updated Date: 2025.02.03 02:00:00 #
9
+ # Updated Date: 2025.02.26 23:00:00 #
10
10
  # ================================================== #
11
11
 
12
12
  __author__ = "Marcin Szczygliński"
13
13
  __copyright__ = "Copyright 2025, Marcin Szczygliński"
14
14
  __credits__ = ["Marcin Szczygliński"]
15
15
  __license__ = "MIT"
16
- __version__ = "2.5.6"
17
- __build__ = "2025.02.03"
16
+ __version__ = "2.5.7"
17
+ __build__ = "2025.02.26"
18
18
  __maintainer__ = "Marcin Szczygliński"
19
19
  __github__ = "https://github.com/szczyglis-dev/py-gpt"
20
20
  __report__ = "https://github.com/szczyglis-dev/py-gpt/issues"
@@ -6,7 +6,7 @@
6
6
  # GitHub: https://github.com/szczyglis-dev/py-gpt #
7
7
  # MIT License #
8
8
  # Created By : Marcin Szczygliński #
9
- # Updated Date: 2024.12.16 20:00:00 #
9
+ # Updated Date: 2025.02.26 23:00:00 #
10
10
  # ================================================== #
11
11
 
12
12
  from typing import Optional
@@ -86,7 +86,7 @@ class Text:
86
86
  idx_mode = self.window.core.config.get('llama.idx.mode')
87
87
 
88
88
  # o1 models: disable stream mode
89
- if model.startswith("o1") or mode in [MODE_AGENT_LLAMA, MODE_AUDIO]:
89
+ if mode in [MODE_AGENT_LLAMA, MODE_AUDIO]:
90
90
  stream_mode = False
91
91
  if mode in [MODE_LLAMA_INDEX] and idx_mode == "retrieval":
92
92
  stream_mode = False
@@ -6,7 +6,7 @@
6
6
  # GitHub: https://github.com/szczyglis-dev/py-gpt #
7
7
  # MIT License #
8
8
  # Created By : Marcin Szczygliński #
9
- # Updated Date: 2025.02.01 11:00:00 #
9
+ # Updated Date: 2025.02.26 23:00:00 #
10
10
  # ================================================== #
11
11
 
12
12
  from typing import Dict, Any, List
@@ -325,7 +325,8 @@ class Placeholder:
325
325
  styles.sort()
326
326
  data = []
327
327
  for id in styles:
328
- data.append({id: id})
328
+ name = id
329
+ data.append({id: name})
329
330
  return data
330
331
 
331
332
  def get_keys(self) -> List[Dict[str, str]]:
@@ -6,7 +6,7 @@
6
6
  # GitHub: https://github.com/szczyglis-dev/py-gpt #
7
7
  # MIT License #
8
8
  # Created By : Marcin Szczygliński #
9
- # Updated Date: 2024.12.14 08:00:00 #
9
+ # Updated Date: 2025.02.26 23:00:00 #
10
10
  # ================================================== #
11
11
 
12
12
  from typing import Optional, Tuple
@@ -283,6 +283,6 @@ class Notepad:
283
283
  if tab.type == Tab.TAB_NOTEPAD:
284
284
  idx = tab.data_id
285
285
  if idx in self.window.ui.notepad:
286
+ self.window.ui.notepad[idx].scroll_to_bottom()
286
287
  if not self.window.ui.notepad[idx].opened:
287
- self.window.ui.notepad[idx].scroll_to_bottom()
288
288
  self.window.ui.notepad[idx].opened = True
@@ -6,7 +6,7 @@
6
6
  # GitHub: https://github.com/szczyglis-dev/py-gpt #
7
7
  # MIT License #
8
8
  # Created By : Marcin Szczygliński #
9
- # Updated Date: 2024.12.07 21:00:00 #
9
+ # Updated Date: 2025.02.26 23:00:00 #
10
10
  # ================================================== #
11
11
 
12
12
  from PySide6.QtGui import QAction
@@ -36,6 +36,10 @@ class Menu:
36
36
  for style in styles:
37
37
  style_id = style.lower()
38
38
  title = style.replace('_', ' ').title()
39
+ if title == "Chatgpt":
40
+ title = "ChatGPT"
41
+ elif title == "Chatgpt Wide":
42
+ title = "ChatGPT (wide)"
39
43
  self.window.ui.menu['theme_style'][style_id] = QAction(title, self.window, checkable=True)
40
44
  self.window.ui.menu['theme_style'][style_id].triggered.connect(
41
45
  lambda checked=None, style=style_id: self.window.controller.theme.toggle_style(style))
@@ -6,7 +6,7 @@
6
6
  # GitHub: https://github.com/szczyglis-dev/py-gpt #
7
7
  # MIT License #
8
8
  # Created By : Marcin Szczygliński #
9
- # Updated Date: 2024.12.14 00:00:00 #
9
+ # Updated Date: 2025.02.26 23:00:00 #
10
10
  # ================================================== #
11
11
 
12
12
  from typing import Optional
@@ -95,6 +95,20 @@ class UI:
95
95
  self.window.controller.assistant.refresh()
96
96
  self.window.controller.idx.refresh()
97
97
 
98
+ def format_tokens(self, num: int) -> str:
99
+ """
100
+ Format tokens
101
+ :param num: number of tokens
102
+ :return: formatted string
103
+ """
104
+ num = int(num)
105
+ if num >= 1_000_000:
106
+ return f"{num // 1_000_000}M"
107
+ elif num >= 1_000:
108
+ return f"{num // 1_000}k"
109
+ else:
110
+ return str(num)
111
+
98
112
  def update_tokens(self):
99
113
  """Update tokens counter in real-time"""
100
114
  prompt = str(self.window.ui.nodes['input'].toPlainText().strip())
@@ -112,12 +126,8 @@ class UI:
112
126
  )
113
127
  self.window.ui.nodes['prompt.context'].setText(ctx_string)
114
128
 
115
- # input tokens
116
- parsed_sum = str(int(sum_tokens))
117
- parsed_sum = parsed_sum.replace("000000", "M").replace("000", "k")
118
-
119
- parsed_max_current = str(int(max_current))
120
- parsed_max_current = parsed_max_current.replace("000000", "M").replace("000", "k")
129
+ parsed_sum = self.format_tokens(sum_tokens)
130
+ parsed_max_current = self.format_tokens(max_current)
121
131
 
122
132
  input_string = "{} + {} + {} + {} + {} = {} / {}".format(
123
133
  input_tokens,
@@ -6,7 +6,7 @@
6
6
  # GitHub: https://github.com/szczyglis-dev/py-gpt #
7
7
  # MIT License #
8
8
  # Created By : Marcin Szczygliński #
9
- # Updated Date: 2024.11.11 23:00:00 #
9
+ # Updated Date: 2025.02.26 23:00:00 #
10
10
  # ================================================== #
11
11
 
12
12
  import re
@@ -48,6 +48,13 @@ class Helpers:
48
48
  text = text.replace("#~###~", "~###~") # fix for #~###~ in text (previous versions)
49
49
  text = text.replace("# ~###~", "~###~") # fix for # ~###~ in text (previous versions)
50
50
 
51
+ #text = text.replace("<think>", "{{{{think}}}}")
52
+ #text = text.replace("</think>", "{{{{/think}}}}")
53
+ #text = text.replace("<", "&lt;")
54
+ #text = text.replace(">", "&gt;")
55
+ #text = text.replace("{{{{think}}}}", "<think>")
56
+ #text = text.replace("{{{{/think}}}}", "</think>")
57
+
51
58
  # replace cmd tags
52
59
  text = self.replace_code_tags(text)
53
60
 
@@ -6,7 +6,7 @@
6
6
  # GitHub: https://github.com/szczyglis-dev/py-gpt #
7
7
  # MIT License #
8
8
  # Created By : Marcin Szczygliński #
9
- # Updated Date: 2025.01.31 22:00:00 #
9
+ # Updated Date: 2025.02.26 23:00:00 #
10
10
  # ================================================== #
11
11
 
12
12
  from typing import Tuple, List
@@ -375,7 +375,7 @@ class Tokens:
375
375
 
376
376
  # check model max allowed ctx tokens
377
377
  max_current = max_total_tokens
378
- model_ctx = self.window.core.models.get_num_ctx(model_id)
378
+ model_ctx = self.window.core.models.get_num_ctx(model)
379
379
  if max_current > model_ctx:
380
380
  max_current = model_ctx
381
381
 
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "__meta__": {
3
- "version": "2.5.6",
4
- "app.version": "2.5.6",
5
- "updated_at": "2025-02-03T00:00:00"
3
+ "version": "2.5.7",
4
+ "app.version": "2.5.7",
5
+ "updated_at": "2025-02-26T00:00:00"
6
6
  },
7
7
  "access.audio.event.speech": false,
8
8
  "access.audio.event.speech.disabled": [],
@@ -355,7 +355,7 @@
355
355
  "temperature": 1.0,
356
356
  "theme": "dark_cyan",
357
357
  "theme.markdown": true,
358
- "theme.style": "blocks",
358
+ "theme.style": "chatgpt",
359
359
  "top_p": 1.0,
360
360
  "upload.store": true,
361
361
  "upload.data_dir": false,
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "__meta__": {
3
- "version": "2.5.6",
4
- "app.version": "2.5.6",
5
- "updated_at": "2025-02-03T00:00:00"
3
+ "version": "2.5.7",
4
+ "app.version": "2.5.7",
5
+ "updated_at": "2025-02-26T00:00:00"
6
6
  },
7
7
  "items": {
8
8
  "claude-3-5-sonnet-20240620": {
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "__meta__": {
3
- "version": "2.5.6",
4
- "app.version": "2.5.6",
5
- "updated_at": "2025-02-03T00:00:00"
3
+ "version": "2.5.7",
4
+ "app.version": "2.5.7",
5
+ "updated_at": "2025-02-26T00:00:00"
6
6
  },
7
7
  "items": {
8
8
  "chat": {
@@ -319,6 +319,14 @@ code {{
319
319
  width: 100% !important;
320
320
  height: 100% !important;
321
321
  }}
322
+ think {{
323
+ border-left: 4px solid silver;
324
+ display: block;
325
+ padding-left: 1rem;
326
+ margin-top: 0;
327
+ padding-top: 0;
328
+ font-size: 0.8rem;
329
+ }}
322
330
 
323
331
  /* anims */
324
332
  @keyframes spin {{
@@ -330,6 +330,14 @@ code {{
330
330
  width: 100% !important;
331
331
  height: 100% !important;
332
332
  }}
333
+ think {{
334
+ border-left: 4px solid silver;
335
+ display: block;
336
+ padding-left: 1rem;
337
+ margin-top: 0;
338
+ padding-top: 0;
339
+ font-size: 0.8rem;
340
+ }}
333
341
 
334
342
  /* anims */
335
343
  @keyframes spin {{
@@ -330,6 +330,14 @@ code {{
330
330
  width: 100% !important;
331
331
  height: 100% !important;
332
332
  }}
333
+ think {{
334
+ border-left: 4px solid silver;
335
+ display: block;
336
+ padding-left: 1rem;
337
+ margin-top: 0;
338
+ padding-top: 0;
339
+ font-size: 0.8rem;
340
+ }}
333
341
 
334
342
  /* anims */
335
343
  @keyframes spin {{
@@ -6,7 +6,7 @@
6
6
  # GitHub: https://github.com/szczyglis-dev/py-gpt #
7
7
  # MIT License #
8
8
  # Created By : Marcin Szczygliński #
9
- # Updated Date: 2025.01.31 19:00:00 #
9
+ # Updated Date: 2025.02.26 23:00:00 #
10
10
  # ================================================== #
11
11
 
12
12
  import copy
@@ -1838,6 +1838,14 @@ class Patch:
1838
1838
  data["api_key_deepseek"] = ""
1839
1839
  updated = True
1840
1840
 
1841
+ # < 2.5.7
1842
+ if old < parse_version("2.5.7"):
1843
+ print("Migrating config from < 2.5.7...")
1844
+ self.window.core.updater.patch_css('web-blocks.css', True) # force update
1845
+ self.window.core.updater.patch_css('web-chatgpt.css', True) # force update
1846
+ self.window.core.updater.patch_css('web-chatgpt_wide.css', True) # force update
1847
+ updated = True
1848
+
1841
1849
  # update file
1842
1850
  migrated = False
1843
1851
  if updated:
@@ -6,7 +6,7 @@
6
6
  # GitHub: https://github.com/szczyglis-dev/py-gpt #
7
7
  # MIT License #
8
8
  # Created By : Marcin Szczygliński #
9
- # Updated Date: 2025.02.02 02:00:00 #
9
+ # Updated Date: 2025.02.26 23:00:00 #
10
10
  # ================================================== #
11
11
 
12
12
  import json
@@ -135,8 +135,8 @@ class Chat:
135
135
  response_kwargs['max_completion_tokens'] = max_tokens
136
136
 
137
137
  # o1 models do not support streaming
138
- if model.id is not None and model.id.startswith("o1"):
139
- stream = False
138
+ if model.id is not None and model.id.startswith("o1-preview"):
139
+ streams = False
140
140
 
141
141
  # audio mode
142
142
  if mode in [MODE_AUDIO]:
@@ -6,13 +6,12 @@
6
6
  # GitHub: https://github.com/szczyglis-dev/py-gpt #
7
7
  # MIT License #
8
8
  # Created By : Marcin Szczygliński #
9
- # Updated Date: 2024.11.21 02:00:00 #
9
+ # Updated Date: 2025.02.26 23:00:00 #
10
10
  # ================================================== #
11
11
 
12
12
  from PySide6.QtCore import Qt
13
13
  from PySide6.QtWidgets import QVBoxLayout, QWidget
14
14
 
15
- from pygpt_net.ui.layout.ctx.search_input import SearchInput
16
15
  from pygpt_net.ui.layout.ctx.ctx_list import CtxList
17
16
  from pygpt_net.ui.layout.ctx.video import Video
18
17
  from pygpt_net.ui.widget.element.labels import HelpLabel
@@ -27,7 +26,6 @@ class CtxMain:
27
26
  :param window: Window instance
28
27
  """
29
28
  self.window = window
30
- self.search_input = SearchInput(window)
31
29
  self.ctx_list = CtxList(window)
32
30
  self.video = Video(window)
33
31
 
@@ -39,7 +37,6 @@ class CtxMain:
39
37
  """
40
38
  ctx = self.ctx_list.setup()
41
39
  video = self.video.setup()
42
- search_input = self.search_input.setup()
43
40
 
44
41
  self.window.ui.nodes['tip.toolbox.ctx'] = HelpLabel(trans('tip.toolbox.ctx'), self.window)
45
42
  self.window.ui.nodes['tip.toolbox.ctx'].setAlignment(Qt.AlignCenter)
@@ -48,7 +45,6 @@ class CtxMain:
48
45
  layout.addWidget(ctx)
49
46
 
50
47
  layout.addWidget(self.window.ui.nodes['tip.toolbox.ctx'])
51
- layout.addWidget(search_input)
52
48
  layout.addWidget(video)
53
49
  layout.setContentsMargins(5, 5, 2, 5)
54
50
 
@@ -6,7 +6,7 @@
6
6
  # GitHub: https://github.com/szczyglis-dev/py-gpt #
7
7
  # MIT License #
8
8
  # Created By : Marcin Szczygliński #
9
- # Updated Date: 2024.12.16 01:00:00 #
9
+ # Updated Date: 2025.02.26 23:00:00 #
10
10
  # ================================================== #
11
11
 
12
12
  from PySide6 import QtCore
@@ -15,6 +15,7 @@ from PySide6.QtWidgets import QVBoxLayout, QWidget
15
15
  from datetime import datetime, timedelta
16
16
 
17
17
  from pygpt_net.item.ctx import CtxMeta
18
+ from pygpt_net.ui.layout.ctx.search_input import SearchInput
18
19
  from pygpt_net.ui.widget.element.button import NewCtxButton
19
20
  from pygpt_net.ui.widget.element.labels import TitleLabel
20
21
  from pygpt_net.ui.widget.lists.context import ContextList, Item, GroupItem, SectionItem
@@ -30,6 +31,7 @@ class CtxList:
30
31
  :param window: Window instance
31
32
  """
32
33
  self.window = window
34
+ self.search_input = SearchInput(window)
33
35
 
34
36
  def setup(self) -> QWidget:
35
37
  """
@@ -42,9 +44,12 @@ class CtxList:
42
44
  self.window.ui.nodes[id] = ContextList(self.window, id)
43
45
  self.window.ui.nodes[id].selection_locked = self.window.controller.ctx.context_change_locked
44
46
  self.window.ui.nodes['ctx.label'] = TitleLabel(trans("ctx.list.label"))
47
+ self.window.ui.nodes['ctx.new'].setContentsMargins(0,0,0,0)
48
+ search_input = self.search_input.setup()
45
49
 
46
50
  layout = QVBoxLayout()
47
51
  layout.addWidget(self.window.ui.nodes['ctx.new'])
52
+ layout.addWidget(search_input)
48
53
  layout.addWidget(self.window.ui.nodes[id])
49
54
  layout.setContentsMargins(0, 0, 0, 0)
50
55
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pygpt-net
3
- Version: 2.5.6
3
+ Version: 2.5.7
4
4
  Summary: Desktop AI Assistant powered by models: OpenAI o1, GPT-4o, GPT-4, GPT-4 Vision, GPT-3.5, DALL-E 3, Llama 3, Mistral, Gemini, Claude, DeepSeek, Bielik, and other models supported by Langchain, Llama Index, and Ollama. Features include chatbot, text completion, image generation, vision analysis, speech-to-text, internet access, file handling, command execution and more.
5
5
  Home-page: https://pygpt.net
6
6
  License: MIT
@@ -94,7 +94,7 @@ Description-Content-Type: text/markdown
94
94
 
95
95
  [![pygpt](https://snapcraft.io/pygpt/badge.svg)](https://snapcraft.io/pygpt)
96
96
 
97
- Release: **2.5.6** | build: **2025.02.03** | Python: **>=3.10, <3.13**
97
+ Release: **2.5.7** | build: **2025.02.26** | Python: **>=3.10, <3.13**
98
98
 
99
99
  > Official website: https://pygpt.net | Documentation: https://pygpt.readthedocs.io
100
100
  >
@@ -4056,6 +4056,14 @@ may consume additional tokens that are not displayed in the main window.
4056
4056
 
4057
4057
  ## Recent changes:
4058
4058
 
4059
+ **2.5.7 (2025-02-26)**
4060
+
4061
+ - Steam mode has been enabled in o1 models.
4062
+ - CSS styling for <think> tags (reasoning models) has been added.
4063
+ - The search input has been moved to the top.
4064
+ - The ChatGPT-based style is now set as default.
4065
+ - Fix: Display of max tokens in models with a context window greater than 128k.
4066
+
4059
4067
  **2.5.6 (2025-02-03)**
4060
4068
 
4061
4069
  - Fix: disabled index initialization if embedding provider is OpenAI and no API KEY is provided.
@@ -1,9 +1,9 @@
1
- CHANGELOG.md,sha256=t_GjNrjSTxj1tbsd9dXedw4KHQ7le6o5nQNB_Ug8jmo,83326
2
- README.md,sha256=82wWWI5k8hHv7zNdw-DbizMcnhEdQ8ZuEbF7fjGvDU8,164748
1
+ CHANGELOG.md,sha256=0eURTURTW-MG_HzBx-xGN89YU4B6jEyq635u2BatsCE,83635
2
+ README.md,sha256=QZs2zqUG8nQds2-Ff-A6fzmO8ERplOlJBO3O7dq9cQI,165058
3
3
  icon.png,sha256=CzcINJaU23a9hNjsDlDNbyuiEvKZ4Wg6DQVYF6SpuRg,13970
4
- pygpt_net/CHANGELOG.txt,sha256=yN2l7TeOkJAN0FMdBkfpNnyoSVjOMRpbrFivL6KUnnk,81794
4
+ pygpt_net/CHANGELOG.txt,sha256=EDIFtScLyhNS0By7cX_ixnriaCWsALoFt8UUSxB6HUE,82100
5
5
  pygpt_net/LICENSE,sha256=dz9sfFgYahvu2NZbx4C1xCsVn9GVer2wXcMkFRBvqzY,1146
6
- pygpt_net/__init__.py,sha256=vW7j9Qn006E3_t5KgCRBfJAXXqqcKfQ8jyuCwvO6Lx0,1372
6
+ pygpt_net/__init__.py,sha256=H5NEkVN0EGXm5ACB1xZUKC92weGEY4JaQSIP1NAGa2I,1372
7
7
  pygpt_net/app.py,sha256=XXjn9XaKHGRcsHN8mMuqbRHAg8_Da0GLmACUU9ddjBc,16217
8
8
  pygpt_net/config.py,sha256=Qc1FOBtTf3O6A6-6KoqUGtoJ0u8hXQeowvCVbZFwtik,16405
9
9
  pygpt_net/container.py,sha256=BemiVZPpPNIzfB-ZvnZeeBPFu-AcX2c30OqYFylEjJc,4023
@@ -39,7 +39,7 @@ pygpt_net/controller/chat/output.py,sha256=VuziVuI9Lj_4kZmTWvXg8t2tq4w9uD7J1g2Mq
39
39
  pygpt_net/controller/chat/render.py,sha256=h23QCvMDIAaCpInqwwADa4G43sSpSn-CE5celnk1LSc,17206
40
40
  pygpt_net/controller/chat/response.py,sha256=UnTnnn2on-Qg2_T_QcQcklTCcuq6XhyLLxs1fn-D9Tg,9450
41
41
  pygpt_net/controller/chat/stream.py,sha256=uBYDHQh4vzySHqjNtmMKO81d3f2QYDH2yQnaOwW-ZWc,7715
42
- pygpt_net/controller/chat/text.py,sha256=UfqItTZQ2xIXASwrddwbwDkkTKFAJsySjMSZy97vC1U,10342
42
+ pygpt_net/controller/chat/text.py,sha256=nDiHuKyuRmnDWK0YCsdMhd2k_5zvSSrNWNc9y6FWi2g,10316
43
43
  pygpt_net/controller/chat/vision.py,sha256=bTQ6TFEh9NsPSDSLpExS7KvxQMtqm2sDPm5A0skyOGo,2838
44
44
  pygpt_net/controller/command/__init__.py,sha256=sUvnvsKISkHTrbv7woQQ8r4SAGDR8Gy85H42q8eAg78,5671
45
45
  pygpt_net/controller/config/__init__.py,sha256=cpVI1-_DkrnDkl5K4rGjOhYD-TzXKUoQx99pKzwXjKg,4863
@@ -51,7 +51,7 @@ pygpt_net/controller/config/field/dictionary.py,sha256=E8b3Quid_kdQQ54fuZJ4GdcPo
51
51
  pygpt_net/controller/config/field/input.py,sha256=081bzm0-MSN6UYIsyDS4gAEhgojWswCNjGqTyyg4Ric,3663
52
52
  pygpt_net/controller/config/field/slider.py,sha256=2XToxPkIvfRPcANa-um6HDQ8rLqpDGynDN05ocKdE1w,4692
53
53
  pygpt_net/controller/config/field/textarea.py,sha256=CySGd21ljR3v3DX9V2WwSvmKVEihD547rnHiRngWuuc,2398
54
- pygpt_net/controller/config/placeholder.py,sha256=lhr7bqIT8G-UolQo05kxzaOiOakeHlMiCCkbIOReoHk,12532
54
+ pygpt_net/controller/config/placeholder.py,sha256=Ejwe71awaPjjISvLoq2gRfKRQWcUlULWAe5Glx-Rszo,12556
55
55
  pygpt_net/controller/ctx/__init__.py,sha256=K1LslZqoIPtTphLDcrTxiqqJ6Fx1EZkJkbPEUCRws9Y,33913
56
56
  pygpt_net/controller/ctx/common.py,sha256=yz1s4kVfxlRpd0XW_sygbmer66LqLxQA1e6O8Pz7FL4,6380
57
57
  pygpt_net/controller/ctx/extra.py,sha256=eDl0_iu80pRtyMX5ub52mjvOo_xo-vb1kZmTt0Idyoo,8219
@@ -80,7 +80,7 @@ pygpt_net/controller/layout/__init__.py,sha256=9R30zrZtvedAf1OxQLzxDWt8o2XirUq0b
80
80
  pygpt_net/controller/mode/__init__.py,sha256=TY3y5fD8kpqLCmDyyCoEL_1OTSOXLnHVdIvH2lGUTew,7303
81
81
  pygpt_net/controller/model/__init__.py,sha256=qRXFmBje0zu_obAku3qTkhnr01z5D5yDN4gbX347NMA,5931
82
82
  pygpt_net/controller/model/editor.py,sha256=8UaNi_Ui5ooPdio9_mw4ECihTxE7Iq5n5hDl41D3hu0,12675
83
- pygpt_net/controller/notepad/__init__.py,sha256=wgnvLtTBuq6W6Eio3BgjrESPRNLRRVyqUutpBNb9T7k,9267
83
+ pygpt_net/controller/notepad/__init__.py,sha256=LYZIPg5oO38xILv-a51ZhXbuefKsgPCCP-r01ozrQe8,9263
84
84
  pygpt_net/controller/painter/__init__.py,sha256=1Ekmr2a3irDkSb2wowiPXhW59rfdZOW1tdbxeubph-k,2747
85
85
  pygpt_net/controller/painter/capture.py,sha256=oLBh5emwjJUTddjT6hWErv2FFjSakC_9WSruxPhkJO8,6664
86
86
  pygpt_net/controller/painter/common.py,sha256=gTRCIcmAsgYhueUWNfEIwIJo-40YBVhoNSksOY1Oj34,6395
@@ -97,10 +97,10 @@ pygpt_net/controller/settings/workdir.py,sha256=khvMDJrQoLMVh2rnTyk9cKilBUig5PKd
97
97
  pygpt_net/controller/theme/__init__.py,sha256=iT12qfxMLBW8PBQ0-KmVnRcRfKC4ZH-M_1TBggtF4go,7255
98
98
  pygpt_net/controller/theme/common.py,sha256=drAO3vrvQXY0pckF5niHdqpsuHDuB2IOpqlGK58z-tI,6294
99
99
  pygpt_net/controller/theme/markdown.py,sha256=Q1lOdp8hiKR50N5pdEyF4jk5I9A9RtYr3egzkkhJEcc,5975
100
- pygpt_net/controller/theme/menu.py,sha256=dMhkGVBlMEk7ePL3eKmK0JCPIWEp1yKGWEkqoyaUMhk,5671
100
+ pygpt_net/controller/theme/menu.py,sha256=Ll8x90yQuzN71fN6bmn8E3VsFDtnJ0-A4Xo0-OEak2U,5823
101
101
  pygpt_net/controller/theme/nodes.py,sha256=6SCKMGQ5SZdKgy4t69raiikTLQDPPkjoYTPwlWligv8,5200
102
102
  pygpt_net/controller/tools/__init__.py,sha256=b_yt413iRUI9fWHzZGdtM4333UjzrJb-zmq_exYTgy4,2723
103
- pygpt_net/controller/ui/__init__.py,sha256=WsH7OzMS_ixCwuHeSajv2E3irPo9B4H3dQe7Svd_71k,5903
103
+ pygpt_net/controller/ui/__init__.py,sha256=LDAvURc007zxboXlgnAI5VPFCT5WSZljD2W3ApKD4zM,6098
104
104
  pygpt_net/controller/ui/mode.py,sha256=8mw_tmRo7sArvgv-k1yfwx5SCfVOkwdc96U8ZiW83Q0,10231
105
105
  pygpt_net/controller/ui/tabs.py,sha256=7DxDCkkx0mPJ8VbVp-mRt8cb2Mgjbv7Jv3OOVkJp91k,20321
106
106
  pygpt_net/controller/ui/vision.py,sha256=KrP8wFuuz-gsO9iwbLDnzvC5iqWVlWjFarQ27HkHdEg,2303
@@ -224,7 +224,7 @@ pygpt_net/core/render/plain/pid.py,sha256=yngcS0o1lBQ2RlRzWrs5JwqT_ThamvnWftp3cX
224
224
  pygpt_net/core/render/plain/renderer.py,sha256=VDJiNrGi35IHLGo_yX9JQ37tz-5w2qm6Z-MhFs_3MyA,15267
225
225
  pygpt_net/core/render/web/__init__.py,sha256=istp5dsn6EkLEP7lOBeDb8RjodUcWZqjcEvTroaTT-w,489
226
226
  pygpt_net/core/render/web/body.py,sha256=dDLQJa1SrPm7n1n_GRpf9Rvuyt1UsfMjzDev4qR3424,29520
227
- pygpt_net/core/render/web/helpers.py,sha256=CcKB710SiKe3xGAB4jq_1XtLxQdD-XiVIlwqiqX7pdc,3062
227
+ pygpt_net/core/render/web/helpers.py,sha256=2suAMzdCkPq1EEjWS5QjkP_WGmNfsIQZJF70E8E2PXU,3379
228
228
  pygpt_net/core/render/web/parser.py,sha256=2LLj8__-CTO6bGOl7c58IfIpKSR4X7phxcY450j_K98,10039
229
229
  pygpt_net/core/render/web/pid.py,sha256=ZyYmzB01adMqY9-1Zi0QhGgrzyg-E9xC_VxqjNvTHWk,1331
230
230
  pygpt_net/core/render/web/renderer.py,sha256=vVMiFxffct1iCOtMhkF28N5AOM54g80haAszmoiuDD8,39227
@@ -236,7 +236,7 @@ pygpt_net/core/text/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSu
236
236
  pygpt_net/core/text/finder.py,sha256=2p8lwNgJ28skGbIKAErP7cDOdhPbemrJzqikmfgVBcc,6566
237
237
  pygpt_net/core/text/utils.py,sha256=Jq38mu0-yenI8iZwYaV2I6P9BYWZiK5kifphah4k4Vk,2292
238
238
  pygpt_net/core/text/web_finder.py,sha256=fLqlyQJ90d9jrfKN9A_Be_nRVsWONvOVBm_HO9tv-Gg,6487
239
- pygpt_net/core/tokens/__init__.py,sha256=SY2NW8Kl7dyPSRgs8JE6TZOhWI33dbaZQrhR0syZQcU,15596
239
+ pygpt_net/core/tokens/__init__.py,sha256=MkP-4841gGXRbCrHLhqEtigBm5S8HPbjVLP5qnTuuX8,15593
240
240
  pygpt_net/core/types/__init__.py,sha256=oj7Ax1ODy5YwDCb920WaRbVcdxMeLn8KQMucJGXTBe4,508
241
241
  pygpt_net/core/types/mode.py,sha256=fDUJB1jqENVWw10FO9pFONT1xc13syamKNHu9UXwhNA,769
242
242
  pygpt_net/core/updater/__init__.py,sha256=rrtWjclP1x0JtBx9ww0qLqd_PdLTdVdYIg6ASmxhau4,16042
@@ -250,9 +250,9 @@ pygpt_net/css_rc.py,sha256=i13kX7irhbYCWZ5yJbcMmnkFp_UfS4PYnvRFSPF7XXo,11349
250
250
  pygpt_net/data/audio/click_off.mp3,sha256=aNiRDP1pt-Jy7ija4YKCNFBwvGWbzU460F4pZWZDS90,65201
251
251
  pygpt_net/data/audio/click_on.mp3,sha256=qfdsSnthAEHVXzeyN4LlC0OvXuyW8p7stb7VXtlvZ1k,65201
252
252
  pygpt_net/data/audio/ok.mp3,sha256=LTiV32pEBkpUGBkKkcOdOFB7Eyt_QoP2Nv6c5AaXftk,32256
253
- pygpt_net/data/config/config.json,sha256=1o-WvDxPgDgOl2TjajxHdFG-iuTjiiagI3523WtFvkc,19884
254
- pygpt_net/data/config/models.json,sha256=6q2kLpbu0bH3e3voZzmvP6MT4kzhMm5SiZEPT8nBEzg,88881
255
- pygpt_net/data/config/modes.json,sha256=q5cKX0_bjdzpIJ16jnIeNvTaftDQKSjzFjpznuf3mUY,1921
253
+ pygpt_net/data/config/config.json,sha256=_bdOwKC75dZ5f2E6UlnQ2bZoXWrRgYtEW5cq-SYK_hY,19885
254
+ pygpt_net/data/config/models.json,sha256=9cOZV5KSGWDEyFMXGWW0y1bVgKl6F0MFGNk76XUvbEI,88881
255
+ pygpt_net/data/config/modes.json,sha256=EARzNiX7yTxAQEY7D2uXB4eHcvOv3eNc_Htc0woBU2k,1921
256
256
  pygpt_net/data/config/presets/agent_openai.json,sha256=vMTR-soRBiEZrpJJHuFLWyx8a3Ez_BqtqjyXgxCAM_Q,733
257
257
  pygpt_net/data/config/presets/agent_openai_assistant.json,sha256=awJw9lNTGpKML6SJUShVn7lv8AXh0oic7wBeyoN7AYs,798
258
258
  pygpt_net/data/config/presets/agent_planner.json,sha256=a6Rv58Bnm2STNWB0Rw_dGhnsz6Lb3J8_GwsUVZaTIXc,742
@@ -281,13 +281,13 @@ pygpt_net/data/css/markdown.light.css,sha256=UZdv0jtuFgJ_4bYWsDaDQ4X4AP9tVNLUHBA
281
281
  pygpt_net/data/css/style.css,sha256=-yFk2bpE6fegZs6Fpj_1WB9xrubqxsXK-U8zyaLv7-0,428
282
282
  pygpt_net/data/css/style.dark.css,sha256=5GqBiCiTdofU3AfgbuQEezFPE3iSf_mx3dkU4kAtygQ,729
283
283
  pygpt_net/data/css/style.light.css,sha256=szc-rgR_UoLOTegJerDoL2Rx_l-E6BOYSe956snPE3k,1741
284
- pygpt_net/data/css/web-blocks.css,sha256=AhgdeXhdj1rk8jYT9a7I5ftAImNHknOqJCnkzUn8dtI,6175
284
+ pygpt_net/data/css/web-blocks.css,sha256=H_crm4OL_qsdSe8Ln8Lzcwu4NOe0myhmiBbmOKPPIGE,6316
285
285
  pygpt_net/data/css/web-blocks.dark.css,sha256=x0b3DYWv0-XeUgCSKajIpkAXAEEg-YR7GIg94pwXO7A,1319
286
286
  pygpt_net/data/css/web-blocks.light.css,sha256=TEzRZsdjY3xLkMQNzQemxORzsKvHkW_c53mYFNAGnNc,1379
287
- pygpt_net/data/css/web-chatgpt.css,sha256=ak2PR_FuSQ_FRaAy5MhwQC3cwDOKSuVCccjLeGA62Yk,6480
287
+ pygpt_net/data/css/web-chatgpt.css,sha256=uZUOIiSBcGRG2Brf7GejsgQjotcvPyR6gRsPc8g08XM,6621
288
288
  pygpt_net/data/css/web-chatgpt.dark.css,sha256=fFYWpV4IraSto-GyaNe8sDjmtwEoWOiQYBLmQ5G5TOM,1106
289
289
  pygpt_net/data/css/web-chatgpt.light.css,sha256=XoOyh-VP1gIpCqeBpSOi6jB6zG_7BMfvwo0-t67XmP8,1196
290
- pygpt_net/data/css/web-chatgpt_wide.css,sha256=z0aLr7TGvHoBnOk5EhDqxJi5OWkEnxab7Wl19WJhp9Y,6479
290
+ pygpt_net/data/css/web-chatgpt_wide.css,sha256=QMs7L1Tcoc5zCA9YjUZRC01rF12JdF67Dk-zSVhJo8o,6620
291
291
  pygpt_net/data/css/web-chatgpt_wide.dark.css,sha256=fFYWpV4IraSto-GyaNe8sDjmtwEoWOiQYBLmQ5G5TOM,1106
292
292
  pygpt_net/data/css/web-chatgpt_wide.light.css,sha256=XoOyh-VP1gIpCqeBpSOi6jB6zG_7BMfvwo0-t67XmP8,1196
293
293
  pygpt_net/data/fonts/Lato/Lato-Black.ttf,sha256=iUTaWoYezgAYX6Fz6mUyTn1Hl6qGPG-g8D4GaAWXS2w,69484
@@ -1823,7 +1823,7 @@ pygpt_net/provider/core/calendar/db_sqlite/storage.py,sha256=QDclQCQdr4QyRIqjgGX
1823
1823
  pygpt_net/provider/core/config/__init__.py,sha256=jQQgG9u_ZLsZWXustoc1uvC-abUvj4RBKPAM30-f2Kc,488
1824
1824
  pygpt_net/provider/core/config/base.py,sha256=cbvzbMNqL2XgC-36gGubnU37t94AX7LEw0lecb2Nm80,1365
1825
1825
  pygpt_net/provider/core/config/json_file.py,sha256=P78SRQpNr_nF7TYftYLnHl_DVo7GLPNs4_lvw97sqq8,5122
1826
- pygpt_net/provider/core/config/patch.py,sha256=zCO3zokgSSDmLvM-uCu7hhRvaDrMmGPtTecvWbN-L4A,96582
1826
+ pygpt_net/provider/core/config/patch.py,sha256=RPz0c2HrDocxx2d4PT7TGrOVILI9aCm1qS8jht9cMp4,97019
1827
1827
  pygpt_net/provider/core/ctx/__init__.py,sha256=jQQgG9u_ZLsZWXustoc1uvC-abUvj4RBKPAM30-f2Kc,488
1828
1828
  pygpt_net/provider/core/ctx/base.py,sha256=Tfb4MDNe9BXXPU3lbzpdYwJF9S1oa2-mzgu5XT4It9g,3003
1829
1829
  pygpt_net/provider/core/ctx/db_sqlite/__init__.py,sha256=G2pB7kZfREJRLJZmfv3DKTslXC-K7EhNN2sn56q6BFA,11753
@@ -1871,7 +1871,7 @@ pygpt_net/provider/core/prompt/json_file.py,sha256=5yfW1RgEa36tX4-ntze4PavWLry0Y
1871
1871
  pygpt_net/provider/gpt/__init__.py,sha256=QZgTYRhe9rV2m4e60VTtUxgkYZFEwTX0H4aILSGdV0A,9265
1872
1872
  pygpt_net/provider/gpt/assistants.py,sha256=DSw1YB_J9n2rFD5CPDWZy59I38VSG6uLpYydGLTUPMQ,14083
1873
1873
  pygpt_net/provider/gpt/audio.py,sha256=frHElxYVaHYkNDCMJ9tQMoGqxSaZ-s5oPlAEHUAckkc,2032
1874
- pygpt_net/provider/gpt/chat.py,sha256=UlxRFZghIB-zBoCOxMlX6vqNveKiQi2RdU3dOwo0Fb4,10512
1874
+ pygpt_net/provider/gpt/chat.py,sha256=UQacOqZV2Qezxq3INmE3UwsyD4pPAqZWV_0sKR6xU9U,10521
1875
1875
  pygpt_net/provider/gpt/completion.py,sha256=OusKOb4G11aYRJUjRWcMsf80cRQQvee9DzRe99ubLmc,6164
1876
1876
  pygpt_net/provider/gpt/image.py,sha256=ZqYrtVTcfPa8Kf08pWLKy1Zhvi6pu61GBlslRBauoK0,8967
1877
1877
  pygpt_net/provider/gpt/store.py,sha256=FaVd7SBC_QQ0W26_odJwcrLH54CSq0UZXZnuwIhRm54,17315
@@ -2042,8 +2042,8 @@ pygpt_net/ui/layout/chat/input.py,sha256=54Kd3KJNgN41vyydSsRtr9554BS_IDkymPQGiYE
2042
2042
  pygpt_net/ui/layout/chat/markdown.py,sha256=hjYY8Da1z0IZZD086_csMcDY1wwagpuQTDZ-XfgeNgs,18656
2043
2043
  pygpt_net/ui/layout/chat/output.py,sha256=4a_BCzk2MKt5z-KYKD8iaapiS4Kj1R7Gj-8v-5R4BLs,9887
2044
2044
  pygpt_net/ui/layout/chat/painter.py,sha256=tveiIs1mNk71c03ZX-K4so4daO3-ED8ZgRNcUrrQtcw,5535
2045
- pygpt_net/ui/layout/ctx/__init__.py,sha256=txpvk6XMqZjBckstlWhn4laQnHBVpcD_7kshER_ymf4,1850
2046
- pygpt_net/ui/layout/ctx/ctx_list.py,sha256=gPvcqyWXmxv3t-PeHCythg61Sc-hmQFtxg1LMcF4DYU,11958
2045
+ pygpt_net/ui/layout/ctx/__init__.py,sha256=GDJyolAnFlAd49bbu9-LGsCxOUTAImSH5In4i8YHFOo,1653
2046
+ pygpt_net/ui/layout/ctx/ctx_list.py,sha256=xSy4PUYsn99lT3bTow0OCKzMl_P52nVIkdZPIc2e8KA,12223
2047
2047
  pygpt_net/ui/layout/ctx/search_input.py,sha256=yM_X2sxeR09JRqmkd2R4z82GRo3I1k4rOb75PgIFydE,1441
2048
2048
  pygpt_net/ui/layout/ctx/video.py,sha256=RzzyGObhlXamXIJHRqA9D2o6eVVulF4kNPVf3BkURGI,1068
2049
2049
  pygpt_net/ui/layout/status.py,sha256=_XqhRz0yrCWNjes-2XCAo55wPZst-F8gm6TtyBHpaSA,1954
@@ -2180,8 +2180,8 @@ pygpt_net/ui/widget/textarea/web.py,sha256=2LebPHa_e5lvBqnIVzjwsLcFMoc11BonXgAUs
2180
2180
  pygpt_net/ui/widget/vision/__init__.py,sha256=8HT4tQFqQogEEpGYTv2RplKBthlsFKcl5egnv4lzzEw,488
2181
2181
  pygpt_net/ui/widget/vision/camera.py,sha256=T8b5cmK6uhf_WSSxzPt_Qod8JgMnst6q8sQqRvgQiSA,2584
2182
2182
  pygpt_net/utils.py,sha256=WtrdagJ-BlCjxGEEVq2rhsyAZMcU6JqltCXzOs823po,6707
2183
- pygpt_net-2.5.6.dist-info/LICENSE,sha256=rbPqNB_xxANH8hKayJyIcTwD4bj4Y2G-Mcm85r1OImM,1126
2184
- pygpt_net-2.5.6.dist-info/METADATA,sha256=AH7si-bhF46MeiBcfqcUtGQrRbIw3_8GgtZUUvwvjSU,169703
2185
- pygpt_net-2.5.6.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
2186
- pygpt_net-2.5.6.dist-info/entry_points.txt,sha256=qvpII6UHIt8XfokmQWnCYQrTgty8FeJ9hJvOuUFCN-8,43
2187
- pygpt_net-2.5.6.dist-info/RECORD,,
2183
+ pygpt_net-2.5.7.dist-info/LICENSE,sha256=rbPqNB_xxANH8hKayJyIcTwD4bj4Y2G-Mcm85r1OImM,1126
2184
+ pygpt_net-2.5.7.dist-info/METADATA,sha256=3UiiY1C-EJ5UYlq6UVEiIh1wqo6sjnBbVimoUaI8h7g,170013
2185
+ pygpt_net-2.5.7.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
2186
+ pygpt_net-2.5.7.dist-info/entry_points.txt,sha256=qvpII6UHIt8XfokmQWnCYQrTgty8FeJ9hJvOuUFCN-8,43
2187
+ pygpt_net-2.5.7.dist-info/RECORD,,