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.
- CHANGELOG.md +13 -0
- README.md +14 -1
- pygpt_net/CHANGELOG.txt +13 -0
- pygpt_net/__init__.py +3 -3
- pygpt_net/controller/chat/text.py +2 -2
- pygpt_net/controller/config/placeholder.py +3 -2
- pygpt_net/controller/idx/__init__.py +2 -0
- pygpt_net/controller/notepad/__init__.py +2 -2
- pygpt_net/controller/theme/menu.py +5 -1
- pygpt_net/controller/ui/__init__.py +17 -7
- pygpt_net/core/idx/chat.py +13 -1
- pygpt_net/core/render/web/helpers.py +8 -1
- pygpt_net/core/tokens/__init__.py +2 -2
- pygpt_net/data/config/config.json +4 -4
- pygpt_net/data/config/models.json +3 -3
- pygpt_net/data/config/modes.json +3 -3
- pygpt_net/data/css/web-blocks.css +8 -0
- pygpt_net/data/css/web-chatgpt.css +8 -0
- pygpt_net/data/css/web-chatgpt_wide.css +8 -0
- pygpt_net/provider/core/config/patch.py +9 -1
- pygpt_net/provider/gpt/chat.py +3 -3
- pygpt_net/provider/vector_stores/__init__.py +7 -2
- pygpt_net/provider/vector_stores/base.py +7 -2
- pygpt_net/provider/vector_stores/chroma.py +6 -3
- pygpt_net/provider/vector_stores/ctx_attachment.py +7 -4
- pygpt_net/provider/vector_stores/simple.py +7 -3
- pygpt_net/provider/vector_stores/temp.py +8 -4
- pygpt_net/ui/layout/ctx/__init__.py +1 -5
- pygpt_net/ui/layout/ctx/ctx_list.py +6 -1
- {pygpt_net-2.5.5.dist-info → pygpt_net-2.5.7.dist-info}/METADATA +15 -2
- {pygpt_net-2.5.5.dist-info → pygpt_net-2.5.7.dist-info}/RECORD +34 -34
- {pygpt_net-2.5.5.dist-info → pygpt_net-2.5.7.dist-info}/LICENSE +0 -0
- {pygpt_net-2.5.5.dist-info → pygpt_net-2.5.7.dist-info}/WHEEL +0 -0
- {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
|
[](https://snapcraft.io/pygpt)
|
4
4
|
|
5
|
-
Release: **2.5.
|
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.
|
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.
|
17
|
-
__build__ = "2025.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:
|
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
|
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.
|
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
|
-
|
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:
|
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:
|
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:
|
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
|
-
|
116
|
-
|
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,
|
pygpt_net/core/idx/chat.py
CHANGED
@@ -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:
|
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("<", "<")
|
54
|
+
#text = text.replace(">", ">")
|
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.
|
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(
|
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.
|
4
|
-
"app.version": "2.5.
|
5
|
-
"updated_at": "2025-02-
|
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": "
|
358
|
+
"theme.style": "chatgpt",
|
359
359
|
"top_p": 1.0,
|
360
360
|
"upload.store": true,
|
361
361
|
"upload.data_dir": false,
|
pygpt_net/data/config/modes.json
CHANGED
@@ -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.
|
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:
|
pygpt_net/provider/gpt/chat.py
CHANGED
@@ -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.
|
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
|
-
|
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(
|
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(
|
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(
|
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(
|
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(
|
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(
|
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:
|
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:
|
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.
|
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
|
[](https://snapcraft.io/pygpt)
|
96
96
|
|
97
|
-
Release: **2.5.
|
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=
|
2
|
-
README.md,sha256=
|
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=
|
4
|
+
pygpt_net/CHANGELOG.txt,sha256=EDIFtScLyhNS0By7cX_ixnriaCWsALoFt8UUSxB6HUE,82100
|
5
5
|
pygpt_net/LICENSE,sha256=dz9sfFgYahvu2NZbx4C1xCsVn9GVer2wXcMkFRBvqzY,1146
|
6
|
-
pygpt_net/__init__.py,sha256=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
254
|
-
pygpt_net/data/config/models.json,sha256=
|
255
|
-
pygpt_net/data/config/modes.json,sha256=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
1958
|
-
pygpt_net/provider/vector_stores/base.py,sha256=
|
1959
|
-
pygpt_net/provider/vector_stores/chroma.py,sha256=
|
1960
|
-
pygpt_net/provider/vector_stores/ctx_attachment.py,sha256=
|
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=
|
1965
|
-
pygpt_net/provider/vector_stores/temp.py,sha256=
|
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=
|
2046
|
-
pygpt_net/ui/layout/ctx/ctx_list.py,sha256=
|
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.
|
2184
|
-
pygpt_net-2.5.
|
2185
|
-
pygpt_net-2.5.
|
2186
|
-
pygpt_net-2.5.
|
2187
|
-
pygpt_net-2.5.
|
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,,
|
File without changes
|
File without changes
|
File without changes
|