pygpt-net 2.5.5__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.
Files changed (34) hide show
  1. CHANGELOG.md +13 -0
  2. README.md +14 -1
  3. pygpt_net/CHANGELOG.txt +13 -0
  4. pygpt_net/__init__.py +3 -3
  5. pygpt_net/controller/chat/text.py +2 -2
  6. pygpt_net/controller/config/placeholder.py +3 -2
  7. pygpt_net/controller/idx/__init__.py +2 -0
  8. pygpt_net/controller/notepad/__init__.py +2 -2
  9. pygpt_net/controller/theme/menu.py +5 -1
  10. pygpt_net/controller/ui/__init__.py +17 -7
  11. pygpt_net/core/idx/chat.py +13 -1
  12. pygpt_net/core/render/web/helpers.py +8 -1
  13. pygpt_net/core/tokens/__init__.py +2 -2
  14. pygpt_net/data/config/config.json +4 -4
  15. pygpt_net/data/config/models.json +3 -3
  16. pygpt_net/data/config/modes.json +3 -3
  17. pygpt_net/data/css/web-blocks.css +8 -0
  18. pygpt_net/data/css/web-chatgpt.css +8 -0
  19. pygpt_net/data/css/web-chatgpt_wide.css +8 -0
  20. pygpt_net/provider/core/config/patch.py +9 -1
  21. pygpt_net/provider/gpt/chat.py +3 -3
  22. pygpt_net/provider/vector_stores/__init__.py +7 -2
  23. pygpt_net/provider/vector_stores/base.py +7 -2
  24. pygpt_net/provider/vector_stores/chroma.py +6 -3
  25. pygpt_net/provider/vector_stores/ctx_attachment.py +7 -4
  26. pygpt_net/provider/vector_stores/simple.py +7 -3
  27. pygpt_net/provider/vector_stores/temp.py +8 -4
  28. pygpt_net/ui/layout/ctx/__init__.py +1 -5
  29. pygpt_net/ui/layout/ctx/ctx_list.py +6 -1
  30. {pygpt_net-2.5.5.dist-info → pygpt_net-2.5.7.dist-info}/METADATA +15 -2
  31. {pygpt_net-2.5.5.dist-info → pygpt_net-2.5.7.dist-info}/RECORD +34 -34
  32. {pygpt_net-2.5.5.dist-info → pygpt_net-2.5.7.dist-info}/LICENSE +0 -0
  33. {pygpt_net-2.5.5.dist-info → pygpt_net-2.5.7.dist-info}/WHEEL +0 -0
  34. {pygpt_net-2.5.5.dist-info → pygpt_net-2.5.7.dist-info}/entry_points.txt +0 -0
CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
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
+
11
+ ## 2.5.6 (2025-02-03)
12
+
13
+ - Fix: disabled index initialization if embedding provider is OpenAI and no API KEY is provided.
14
+ - Fix: embedding provider initialization on empty index.
15
+
3
16
  ## 2.5.5 (2025-02-02)
4
17
 
5
18
  - Fix: system prompt apply.
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.5** | build: **2025.02.02** | 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,19 @@ 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
+
3975
+ **2.5.6 (2025-02-03)**
3976
+
3977
+ - Fix: disabled index initialization if embedding provider is OpenAI and no API KEY is provided.
3978
+ - Fix: embedding provider initialization on empty index.
3979
+
3967
3980
  **2.5.5 (2025-02-02)**
3968
3981
 
3969
3982
  - Fix: system prompt apply.
pygpt_net/CHANGELOG.txt CHANGED
@@ -1,3 +1,16 @@
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
+
9
+ 2.5.6 (2025-02-03)
10
+
11
+ - Fix: disabled index initialization if embedding provider is OpenAI and no API KEY is provided.
12
+ - Fix: embedding provider initialization on empty index.
13
+
1
14
  2.5.5 (2025-02-02)
2
15
 
3
16
  - Fix: system prompt apply.
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.02 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.5"
17
- __build__ = "2025.02.02"
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]]:
@@ -331,6 +331,8 @@ class Idx:
331
331
  """Force stop indexing"""
332
332
  print("Force stop indexing...")
333
333
  self.stop = True
334
+ self.window.controller.ui.stop_action = None
335
+ self.window.controller.ui.hide_global_stop()
334
336
 
335
337
  def index_selected(self) -> bool:
336
338
  """
@@ -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,
@@ -245,6 +245,12 @@ class Chat:
245
245
  chat_mode = "simple" # do not use query engine if no index
246
246
  use_index = False
247
247
 
248
+ # disable index if no api key
249
+ if self.window.core.config.get("api_key") == "" and self.window.core.config.get("llama.idx.embeddings.provider") == "openai":
250
+ print("Warning: no api key! Disabling index...")
251
+ chat_mode = "simple" # do not use query engine if no index
252
+ use_index = False
253
+
248
254
  if model is None or not isinstance(model, ModelItem):
249
255
  raise Exception("Model config not provided")
250
256
 
@@ -263,6 +269,12 @@ class Chat:
263
269
  else:
264
270
  llm = self.window.core.idx.llm.get(model)
265
271
 
272
+ # check if index is empty
273
+ if index:
274
+ nodes = index.docstore.docs.values()
275
+ if not nodes:
276
+ use_index = False
277
+
266
278
  # TODO: if multimodal support, try to get multimodal provider
267
279
  # if model.is_multimodal():
268
280
  # llm = self.window.core.idx.llm.get(model, multimodal=True) # get multimodal LLM model
@@ -637,7 +649,7 @@ class Chat:
637
649
  if idx is None:
638
650
  # create empty in memory idx
639
651
  llm, embed_model = self.window.core.idx.llm.get_service_context(model=model)
640
- index = self.storage.index_from_empty()
652
+ index = self.storage.index_from_empty(embed_model)
641
653
  return index, llm
642
654
  # raise Exception("Index not prepared")
643
655
 
@@ -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.5",
4
- "app.version": "2.5.5",
5
- "updated_at": "2025-02-02T00: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.5",
4
- "app.version": "2.5.5",
5
- "updated_at": "2025-02-02T00: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.5",
4
- "app.version": "2.5.5",
5
- "updated_at": "2025-02-02T00: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]:
@@ -308,10 +308,15 @@ class Storage:
308
308
  raise Exception('Storage engine not found!')
309
309
  storage.clean()
310
310
 
311
- def index_from_empty(self) -> BaseIndex:
311
+ def index_from_empty(
312
+ self,
313
+ embed_model: Optional = None) -> BaseIndex:
312
314
  """
313
315
  Create empty index
314
316
 
315
317
  :return: index instance
316
318
  """
317
- return VectorStoreIndex([])
319
+ return VectorStoreIndex(
320
+ [],
321
+ embed_model=embed_model,
322
+ )
@@ -54,13 +54,18 @@ class BaseStore:
54
54
  embed_model=embed_model,
55
55
  )
56
56
 
57
- def index_from_empty(self):
57
+ def index_from_empty(
58
+ self,
59
+ embed_model: Optional = None):
58
60
  """
59
61
  Get empty index instance
60
62
 
61
63
  :return: index instance
62
64
  """
63
- return VectorStoreIndex([])
65
+ return VectorStoreIndex(
66
+ [],
67
+ embed_model=embed_model,
68
+ )
64
69
 
65
70
  def attach(self, window=None):
66
71
  """
@@ -51,7 +51,10 @@ class ChromaProvider(BaseStore):
51
51
  )
52
52
  )
53
53
 
54
- def create(self, id: str):
54
+ def create(
55
+ self,
56
+ id: str,
57
+ embed_model: Optional = None):
55
58
  """
56
59
  Create empty index
57
60
 
@@ -59,7 +62,7 @@ class ChromaProvider(BaseStore):
59
62
  """
60
63
  path = self.get_path(id)
61
64
  if not os.path.exists(path):
62
- index = self.index_from_empty() # create empty index
65
+ index = self.index_from_empty(embed_model) # create empty index
63
66
  self.store(
64
67
  id=id,
65
68
  index=index,
@@ -80,7 +83,7 @@ class ChromaProvider(BaseStore):
80
83
  :return: index instance
81
84
  """
82
85
  if not self.exists(id):
83
- self.create(id)
86
+ self.create(id, embed_model)
84
87
  path = self.get_path(id)
85
88
  db = self.get_db(id)
86
89
  chroma_collection = db.get_or_create_collection(id)
@@ -56,7 +56,10 @@ class CtxAttachmentProvider(BaseStore):
56
56
  return True
57
57
  return False
58
58
 
59
- def create(self, id: str):
59
+ def create(
60
+ self, id: str,
61
+ embed_model: Optional = None
62
+ ):
60
63
  """
61
64
  Create empty index
62
65
 
@@ -64,13 +67,13 @@ class CtxAttachmentProvider(BaseStore):
64
67
  """
65
68
  path = self.get_path(id)
66
69
  if not os.path.exists(path):
67
- index = self.index_from_empty() # create empty index
70
+ index = self.index_from_empty(embed_model) # create empty index
68
71
  self.store(
69
72
  id=id,
70
73
  index=index,
71
74
  )
72
75
  else:
73
- self.index = self.index_from_empty()
76
+ self.index = self.index_from_empty(embed_model)
74
77
 
75
78
  def get(
76
79
  self,
@@ -87,7 +90,7 @@ class CtxAttachmentProvider(BaseStore):
87
90
  :return: index instance
88
91
  """
89
92
  if not self.exists():
90
- self.create(id)
93
+ self.create(id, embed_model)
91
94
  path = self.get_path(id)
92
95
  storage_context = StorageContext.from_defaults(
93
96
  persist_dir=path,
@@ -32,7 +32,11 @@ class SimpleProvider(BaseStore):
32
32
  self.prefix = "" # prefix for index directory
33
33
  self.indexes = {}
34
34
 
35
- def create(self, id: str):
35
+ def create(
36
+ self,
37
+ id: str,
38
+ embed_model: Optional = None
39
+ ):
36
40
  """
37
41
  Create empty index
38
42
 
@@ -40,7 +44,7 @@ class SimpleProvider(BaseStore):
40
44
  """
41
45
  path = self.get_path(id)
42
46
  if not os.path.exists(path):
43
- index = self.index_from_empty() # create empty index
47
+ index = self.index_from_empty(embed_model) # create empty index
44
48
  self.store(
45
49
  id=id,
46
50
  index=index,
@@ -61,7 +65,7 @@ class SimpleProvider(BaseStore):
61
65
  :return: index instance
62
66
  """
63
67
  if not self.exists(id):
64
- self.create(id)
68
+ self.create(id, embed_model)
65
69
  path = self.get_path(id)
66
70
  storage_context = StorageContext.from_defaults(
67
71
  persist_dir=path,
@@ -86,7 +86,11 @@ class TempProvider(BaseStore):
86
86
  return True
87
87
  return False
88
88
 
89
- def create(self, id: str):
89
+ def create(
90
+ self,
91
+ id: str,
92
+ embed_model: Optional = None
93
+ ):
90
94
  """
91
95
  Create empty index
92
96
 
@@ -95,13 +99,13 @@ class TempProvider(BaseStore):
95
99
  if self.persist:
96
100
  path = self.get_path(id)
97
101
  if not os.path.exists(path):
98
- index = self.index_from_empty() # create empty index
102
+ index = self.index_from_empty(embed_model) # create empty index
99
103
  self.store(
100
104
  id=id,
101
105
  index=index,
102
106
  )
103
107
  else:
104
- self.indexes[id] = self.index_from_empty()
108
+ self.indexes[id] = self.index_from_empty(embed_model)
105
109
 
106
110
  def get(
107
111
  self,
@@ -118,7 +122,7 @@ class TempProvider(BaseStore):
118
122
  :return: index instance
119
123
  """
120
124
  if not self.exists(id):
121
- self.create(id)
125
+ self.create(id, embed_model)
122
126
  path = self.get_path(id)
123
127
 
124
128
  if self.persist:
@@ -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.5
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.5** | build: **2025.02.02** | 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,19 @@ 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
+
4067
+ **2.5.6 (2025-02-03)**
4068
+
4069
+ - Fix: disabled index initialization if embedding provider is OpenAI and no API KEY is provided.
4070
+ - Fix: embedding provider initialization on empty index.
4071
+
4059
4072
  **2.5.5 (2025-02-02)**
4060
4073
 
4061
4074
  - Fix: system prompt apply.
@@ -1,9 +1,9 @@
1
- CHANGELOG.md,sha256=uIgNsgmVYgLRl9OpfPgjxhzXTq83YYJwbIo_sgsxoEQ,83148
2
- README.md,sha256=lLm4OYfl5OLDtCQYP35-xObvWBckIn2vTe0dSSDMqJE,164569
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=ABzJ_GvFmUqLoLh8Sz3pvDI1FJeWHstUq9osD4SlijM,81619
4
+ pygpt_net/CHANGELOG.txt,sha256=EDIFtScLyhNS0By7cX_ixnriaCWsALoFt8UUSxB6HUE,82100
5
5
  pygpt_net/LICENSE,sha256=dz9sfFgYahvu2NZbx4C1xCsVn9GVer2wXcMkFRBvqzY,1146
6
- pygpt_net/__init__.py,sha256=VgcIjhZrvmGpUZxLoV50V_zfgAvVi9PaIlJecGKzXkg,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
@@ -63,7 +63,7 @@ pygpt_net/controller/dialogs/debug.py,sha256=v6E85vyCwfaDG9XZysxhBjRwlrDkbYC-NxU
63
63
  pygpt_net/controller/dialogs/info.py,sha256=CcVXRgYYqHJF9YpG3SzQQc_lFyQL5-m3Nbb-n0EnQQA,3527
64
64
  pygpt_net/controller/files/__init__.py,sha256=1Zm9L8-rhLG-GjRQDaOCkAFocAAobTQj-D3ILxLUGn4,16135
65
65
  pygpt_net/controller/finder/__init__.py,sha256=4jl8EzTVR1Wc0dJkVwacAdvBiuF1CyOSKB4Qewju0Jw,4955
66
- pygpt_net/controller/idx/__init__.py,sha256=oY6clG2YANYB_wJumnOl78ugU3V5c_sG1WIwRyBCVOo,10161
66
+ pygpt_net/controller/idx/__init__.py,sha256=h8k8vGaPEl2ikA0vMrOT7RGY3XrhEpNjeHHxEUBLqfU,10267
67
67
  pygpt_net/controller/idx/common.py,sha256=QOjDy2XMUONeeaXl6ULJGO8ropzd5fphf3DidJgFkp0,2097
68
68
  pygpt_net/controller/idx/indexer.py,sha256=5odavgOrqsTD_JZn6fyK0_fKH1BYWYJJAPhec3uxyM0,22303
69
69
  pygpt_net/controller/idx/settings.py,sha256=orWd8ARxIBBs3MWJLjEKcqmrXLi6DvsLitsPvPd2fXU,7916
@@ -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
@@ -179,7 +179,7 @@ pygpt_net/core/filesystem/types.py,sha256=1HFubxAHYup_SLQ7SlR5EvZb3KgVyd8K8vBRUk
179
179
  pygpt_net/core/filesystem/url.py,sha256=cXctpPHBY1-fwn7vFqfZi3CeP73n2nFXF-ZnePiRk7U,3236
180
180
  pygpt_net/core/history/__init__.py,sha256=PDE5Ut03mEgY9YPLZjqrimKQAyxoE7itViuqFV-VQf0,3123
181
181
  pygpt_net/core/idx/__init__.py,sha256=sK6zQDxetao3dnqcBaaT2HTKOz4zxOSEKmsHLQlsLGY,18115
182
- pygpt_net/core/idx/chat.py,sha256=NFctd4uON0FjnSp0dJtoHZ5RjpLZMYJvJWRPRx7I9OI,23761
182
+ pygpt_net/core/idx/chat.py,sha256=JOpdkn88bBnO9k1EQ_iQjNDW_ZyXEl8-8ZuUr7hlwl0,24270
183
183
  pygpt_net/core/idx/context.py,sha256=uISNiKprcA_Qv9t0PbMj1vDWCm1eccYbk5iGS-QcfG0,3143
184
184
  pygpt_net/core/idx/indexing.py,sha256=lj0FnPGBhL3AvmOT-NIQcdH6zY-Tpp3DB0zei2SV7xo,42989
185
185
  pygpt_net/core/idx/llm.py,sha256=RmYLBKhvMIL7XcvWa39HdNxq4yC-f2C34e93Wx7yaM8,4885
@@ -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=gpKCf09K2bnLv8x-gS_1jCq5hNvY7au9nHVSdsWOEPE,19884
254
- pygpt_net/data/config/models.json,sha256=eCbwMBQf2yUZE0tmn6LBdc27Kue6VWXk1dqAhFl95ns,88881
255
- pygpt_net/data/config/modes.json,sha256=53R2p3vJPfG1SzSuGX1gLbIyt_ejcHItZRy5DXYVBfM,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
@@ -1954,15 +1954,15 @@ pygpt_net/provider/loaders/web_rss.py,sha256=yV7c_AB5fXwCyauvsMj7pGQP0gPx-HikblS
1954
1954
  pygpt_net/provider/loaders/web_sitemap.py,sha256=zFIW3abS93ZzsyVasq24MHAiy2ZtrOro-xFl3oaCfyQ,2205
1955
1955
  pygpt_net/provider/loaders/web_twitter.py,sha256=geW_fHMfl-Uh9TmoE3NAk8Ifk0h1VBxMreP7EgKbxhA,2954
1956
1956
  pygpt_net/provider/loaders/web_yt.py,sha256=1j68SbIS6h7Da3pcSPvDnBw5K_jjX3huT39WLQSmArY,2739
1957
- pygpt_net/provider/vector_stores/__init__.py,sha256=htSyBOAIVhoHmrcAoinbI_WCly5y_zMoGEcAfeCDhTo,8475
1958
- pygpt_net/provider/vector_stores/base.py,sha256=CLY9X2yenF-vLiwpVdQBZFO5MOkMf_pShDahWaaoDu8,4361
1959
- pygpt_net/provider/vector_stores/chroma.py,sha256=_G5GeCzII_wqnUON0e8-uxU3wZmAoFanpX4OQunF_48,3276
1960
- pygpt_net/provider/vector_stores/ctx_attachment.py,sha256=zNfYQjEGzZM2kPsxIQJCncJpU-746lajwQeqFT_y7po,3322
1957
+ pygpt_net/provider/vector_stores/__init__.py,sha256=24lP4ZkmyTVBuAM_vyVcofzWcJthGABd0D6Kn6YovMs,8590
1958
+ pygpt_net/provider/vector_stores/base.py,sha256=jz9eRciP4g8Uz7S-pYmpQE61oMRUMiTXQeI9ywd9Vhc,4476
1959
+ pygpt_net/provider/vector_stores/chroma.py,sha256=ATiWsFdRf3B-dJeuq8lBtIqjzJL7ZoL8iFOOrsdGPpk,3367
1960
+ pygpt_net/provider/vector_stores/ctx_attachment.py,sha256=jYz2rcNkh3zdr3r1t9dRMTGY54ugmFCyHEjPW4jnF-Y,3417
1961
1961
  pygpt_net/provider/vector_stores/elasticsearch.py,sha256=sa9ZESc-Yaxh658dvF8FEIx4V5VpaBS_u67bDzGM1nE,3255
1962
1962
  pygpt_net/provider/vector_stores/pinecode.py,sha256=oyFq8gh9e7Oi369ADvX7MEJlVPpQGZUFybC5c3cdJzE,5280
1963
1963
  pygpt_net/provider/vector_stores/redis.py,sha256=lea-hmtJH87Q2uCfZogu8H8c0ukSU7UK8vK8dgFFbwM,3286
1964
- pygpt_net/provider/vector_stores/simple.py,sha256=yP2q9KJgNHTAJc-w-PbVewQkULsgYaFju4Du12Hk8rg,2585
1965
- pygpt_net/provider/vector_stores/temp.py,sha256=ZaTvzfCMB6bzSKiC4TLc9fn-7uoCguAYvtJoCCj1-Do,4496
1964
+ pygpt_net/provider/vector_stores/simple.py,sha256=fcjBual9BySrNz8FzqGwyzT1YDiUdZmhlQ3v3qfdEiQ,2681
1965
+ pygpt_net/provider/vector_stores/temp.py,sha256=zUNI0ujN6KNGuodIghZprNR2BX3kNgIXR88CNsWEAwo,4603
1966
1966
  pygpt_net/provider/web/__init__.py,sha256=lOkgAiuNUqkAl_QrIG3ZsUznIZeJYtokgzEnDB8gRic,488
1967
1967
  pygpt_net/provider/web/base.py,sha256=uXWu4N5giHIAWUylq8Ow2T02HDcKl7pWbSKWTpFc5do,2105
1968
1968
  pygpt_net/provider/web/google_custom_search.py,sha256=hgxdpcdxy3YzUBeL1hEuNPFQ3pE3D_CCi5spBzIPKeI,4741
@@ -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.5.dist-info/LICENSE,sha256=rbPqNB_xxANH8hKayJyIcTwD4bj4Y2G-Mcm85r1OImM,1126
2184
- pygpt_net-2.5.5.dist-info/METADATA,sha256=Ey3mzoSiwozQUI3hilOYi4nqXczHO49dOeqi8ZIf3zs,169524
2185
- pygpt_net-2.5.5.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
2186
- pygpt_net-2.5.5.dist-info/entry_points.txt,sha256=qvpII6UHIt8XfokmQWnCYQrTgty8FeJ9hJvOuUFCN-8,43
2187
- pygpt_net-2.5.5.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,,