pygpt-net 2.4.37__py3-none-any.whl → 2.4.41__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 +29 -0
- README.md +44 -115
- pygpt_net/CHANGELOG.txt +29 -0
- pygpt_net/__init__.py +3 -3
- pygpt_net/controller/__init__.py +7 -3
- pygpt_net/controller/access/control.py +1 -1
- pygpt_net/controller/access/voice.py +11 -5
- pygpt_net/controller/agent/experts.py +11 -6
- pygpt_net/controller/agent/legacy.py +8 -6
- pygpt_net/controller/agent/llama.py +4 -2
- pygpt_net/controller/assistant/__init__.py +9 -4
- pygpt_net/controller/assistant/batch.py +38 -21
- pygpt_net/controller/assistant/editor.py +7 -6
- pygpt_net/controller/assistant/files.py +23 -7
- pygpt_net/controller/assistant/store.py +20 -7
- pygpt_net/controller/assistant/threads.py +34 -8
- pygpt_net/controller/attachment.py +29 -10
- pygpt_net/controller/audio/__init__.py +25 -4
- pygpt_net/controller/calendar/__init__.py +23 -4
- pygpt_net/controller/calendar/note.py +57 -11
- pygpt_net/controller/camera.py +3 -2
- pygpt_net/controller/chat/__init__.py +5 -3
- pygpt_net/controller/chat/attachment.py +34 -7
- pygpt_net/controller/chat/command.py +4 -2
- pygpt_net/controller/chat/common.py +11 -4
- pygpt_net/controller/chat/files.py +10 -3
- pygpt_net/controller/chat/image.py +17 -5
- pygpt_net/controller/chat/input.py +10 -7
- pygpt_net/controller/chat/output.py +21 -6
- pygpt_net/controller/chat/render.py +100 -21
- pygpt_net/controller/chat/response.py +34 -7
- pygpt_net/controller/chat/stream.py +4 -2
- pygpt_net/controller/chat/text.py +6 -4
- pygpt_net/controller/command.py +11 -3
- pygpt_net/controller/config/__init__.py +34 -6
- pygpt_net/controller/config/field/checkbox.py +7 -4
- pygpt_net/controller/config/field/cmd.py +7 -5
- pygpt_net/controller/config/field/combo.py +14 -6
- pygpt_net/controller/config/field/dictionary.py +14 -11
- pygpt_net/controller/config/field/input.py +9 -6
- pygpt_net/controller/config/field/slider.py +11 -8
- pygpt_net/controller/config/field/textarea.py +8 -5
- pygpt_net/controller/config/placeholder.py +52 -21
- pygpt_net/controller/ctx/__init__.py +138 -49
- pygpt_net/controller/ctx/common.py +15 -4
- pygpt_net/controller/ctx/extra.py +11 -3
- pygpt_net/controller/ctx/summarizer.py +24 -5
- pygpt_net/controller/debug/__init__.py +27 -6
- pygpt_net/controller/dialogs/confirm.py +34 -7
- pygpt_net/controller/dialogs/debug.py +4 -2
- pygpt_net/controller/dialogs/info.py +7 -2
- pygpt_net/controller/files.py +48 -10
- pygpt_net/controller/finder.py +11 -5
- pygpt_net/controller/idx/__init__.py +10 -3
- pygpt_net/controller/idx/common.py +4 -2
- pygpt_net/controller/idx/indexer.py +25 -17
- pygpt_net/controller/idx/settings.py +9 -3
- pygpt_net/controller/kernel/__init__.py +34 -8
- pygpt_net/controller/kernel/reply.py +12 -3
- pygpt_net/controller/kernel/stack.py +5 -3
- pygpt_net/controller/lang/custom.py +2 -7
- pygpt_net/controller/lang/mapping.py +5 -3
- pygpt_net/controller/layout.py +2 -2
- pygpt_net/controller/mode.py +16 -4
- pygpt_net/controller/model/__init__.py +14 -3
- pygpt_net/controller/model/editor.py +8 -3
- pygpt_net/controller/notepad.py +26 -12
- pygpt_net/controller/painter/capture.py +23 -4
- pygpt_net/controller/painter/common.py +9 -7
- pygpt_net/controller/plugins/__init__.py +19 -5
- pygpt_net/controller/plugins/presets.py +15 -6
- pygpt_net/controller/plugins/settings.py +9 -3
- pygpt_net/controller/presets/__init__.py +55 -16
- pygpt_net/controller/presets/editor.py +26 -10
- pygpt_net/controller/settings/__init__.py +3 -2
- pygpt_net/controller/settings/editor.py +29 -7
- pygpt_net/controller/settings/profile.py +22 -5
- pygpt_net/controller/theme/__init__.py +54 -12
- pygpt_net/controller/theme/common.py +24 -2
- pygpt_net/controller/theme/markdown.py +32 -16
- pygpt_net/controller/theme/menu.py +26 -5
- pygpt_net/controller/theme/nodes.py +2 -5
- pygpt_net/controller/tools/__init__.py +40 -2
- pygpt_net/controller/ui/__init__.py +4 -6
- pygpt_net/controller/ui/tabs.py +363 -65
- pygpt_net/core/access/actions.py +6 -4
- pygpt_net/core/access/shortcuts.py +4 -3
- pygpt_net/core/access/voice.py +6 -5
- pygpt_net/core/agents/legacy.py +4 -2
- pygpt_net/core/agents/memory.py +7 -2
- pygpt_net/core/agents/observer/evaluation.py +15 -7
- pygpt_net/core/agents/provider.py +9 -4
- pygpt_net/core/agents/runner.py +61 -15
- pygpt_net/core/agents/tools.py +23 -5
- pygpt_net/core/assistants/__init__.py +6 -4
- pygpt_net/core/assistants/files.py +35 -12
- pygpt_net/core/assistants/store.py +20 -10
- pygpt_net/core/attachments/__init__.py +54 -15
- pygpt_net/core/attachments/context.py +92 -29
- pygpt_net/core/audio/__init__.py +71 -3
- pygpt_net/core/audio/context.py +7 -2
- pygpt_net/core/bridge/__init__.py +22 -6
- pygpt_net/core/bridge/context.py +5 -3
- pygpt_net/core/calendar/__init__.py +57 -11
- pygpt_net/core/chain/__init__.py +8 -2
- pygpt_net/core/chain/chat.py +10 -8
- pygpt_net/core/chain/completion.py +10 -7
- pygpt_net/core/command.py +62 -17
- pygpt_net/core/ctx/__init__.py +260 -58
- pygpt_net/core/ctx/bag.py +25 -4
- pygpt_net/core/ctx/container.py +28 -17
- pygpt_net/core/ctx/idx.py +45 -8
- pygpt_net/core/ctx/output.py +95 -74
- pygpt_net/core/ctx/reply.py +5 -2
- pygpt_net/core/db/__init__.py +8 -7
- pygpt_net/core/db/viewer.py +17 -11
- pygpt_net/core/debug/__init__.py +10 -9
- pygpt_net/core/debug/tabs.py +5 -2
- pygpt_net/core/docker/__init__.py +11 -5
- pygpt_net/core/docker/builder.py +11 -3
- pygpt_net/core/events/app.py +5 -3
- pygpt_net/core/events/base.py +11 -5
- pygpt_net/core/events/control.py +5 -3
- pygpt_net/core/events/event.py +17 -7
- pygpt_net/core/events/kernel.py +5 -3
- pygpt_net/core/events/render.py +5 -3
- pygpt_net/core/experts/__init__.py +5 -4
- pygpt_net/core/filesystem/__init__.py +52 -34
- pygpt_net/core/filesystem/actions.py +8 -5
- pygpt_net/core/filesystem/editor.py +13 -3
- pygpt_net/core/filesystem/types.py +12 -7
- pygpt_net/core/filesystem/url.py +7 -3
- pygpt_net/core/idx/__init__.py +34 -25
- pygpt_net/core/idx/chat.py +40 -16
- pygpt_net/core/idx/context.py +6 -2
- pygpt_net/core/idx/indexing.py +84 -35
- pygpt_net/core/idx/llm.py +11 -3
- pygpt_net/core/idx/metadata.py +13 -3
- pygpt_net/core/idx/types/ctx.py +32 -6
- pygpt_net/core/idx/types/external.py +41 -7
- pygpt_net/core/idx/types/files.py +31 -6
- pygpt_net/core/image.py +15 -4
- pygpt_net/core/llm/__init__.py +13 -3
- pygpt_net/core/locale.py +34 -8
- pygpt_net/core/models.py +4 -3
- pygpt_net/core/notepad.py +9 -4
- pygpt_net/core/plugins.py +7 -6
- pygpt_net/core/presets.py +19 -10
- pygpt_net/core/profile.py +12 -6
- pygpt_net/core/prompt/__init__.py +10 -3
- pygpt_net/core/prompt/custom.py +7 -6
- pygpt_net/core/prompt/template.py +9 -3
- pygpt_net/core/render/base.py +117 -22
- pygpt_net/core/render/markdown/body.py +27 -7
- pygpt_net/core/render/markdown/renderer.py +119 -22
- pygpt_net/core/render/plain/body.py +22 -5
- pygpt_net/core/render/plain/renderer.py +97 -21
- pygpt_net/core/render/web/body.py +75 -25
- pygpt_net/core/render/web/renderer.py +313 -63
- pygpt_net/core/settings.py +9 -4
- pygpt_net/core/tabs/__init__.py +290 -103
- pygpt_net/core/tabs/tab.py +17 -4
- pygpt_net/core/tokens.py +44 -11
- pygpt_net/core/updater/__init__.py +20 -7
- pygpt_net/core/vision/analyzer.py +29 -6
- pygpt_net/core/web.py +130 -2
- pygpt_net/data/config/config.json +15 -4
- pygpt_net/data/config/models.json +3 -3
- pygpt_net/data/config/modes.json +3 -3
- pygpt_net/data/config/settings.json +55 -10
- pygpt_net/data/config/settings_section.json +3 -0
- pygpt_net/data/css/style.light.css +1 -0
- pygpt_net/data/css/{web.css → web-blocks.css} +162 -133
- pygpt_net/data/css/{web.light.css → web-blocks.light.css} +7 -0
- pygpt_net/data/css/web-chatgpt.css +350 -0
- pygpt_net/data/css/web-chatgpt.dark.css +64 -0
- pygpt_net/data/css/web-chatgpt.light.css +75 -0
- pygpt_net/data/css/web-chatgpt_wide.css +350 -0
- pygpt_net/data/css/web-chatgpt_wide.dark.css +64 -0
- pygpt_net/data/css/web-chatgpt_wide.light.css +75 -0
- pygpt_net/data/icons/split_screen.svg +1 -0
- pygpt_net/data/locale/locale.de.ini +12 -0
- pygpt_net/data/locale/locale.en.ini +17 -2
- pygpt_net/data/locale/locale.es.ini +12 -0
- pygpt_net/data/locale/locale.fr.ini +12 -0
- pygpt_net/data/locale/locale.it.ini +12 -0
- pygpt_net/data/locale/locale.pl.ini +12 -0
- pygpt_net/data/locale/locale.uk.ini +12 -0
- pygpt_net/data/locale/locale.zh.ini +12 -0
- pygpt_net/data/locale/plugin.cmd_web.de.ini +2 -0
- pygpt_net/data/locale/plugin.cmd_web.en.ini +20 -10
- pygpt_net/data/locale/plugin.cmd_web.es.ini +2 -0
- pygpt_net/data/locale/plugin.cmd_web.fr.ini +2 -0
- pygpt_net/data/locale/plugin.cmd_web.it.ini +2 -0
- pygpt_net/data/locale/plugin.cmd_web.pl.ini +2 -0
- pygpt_net/data/locale/plugin.cmd_web.uk.ini +2 -0
- pygpt_net/data/locale/plugin.cmd_web.zh.ini +2 -0
- pygpt_net/icons.qrc +1 -0
- pygpt_net/icons_rc.py +165 -136
- pygpt_net/item/ctx.py +46 -24
- pygpt_net/plugin/audio_input/simple.py +21 -5
- pygpt_net/plugin/audio_output/__init__.py +4 -1
- pygpt_net/plugin/base/config.py +4 -2
- pygpt_net/plugin/base/plugin.py +26 -6
- pygpt_net/plugin/base/worker.py +37 -9
- pygpt_net/plugin/cmd_code_interpreter/__init__.py +39 -37
- pygpt_net/plugin/cmd_code_interpreter/runner.py +25 -12
- pygpt_net/plugin/cmd_web/__init__.py +46 -6
- pygpt_net/plugin/cmd_web/config.py +74 -48
- pygpt_net/plugin/cmd_web/websearch.py +61 -28
- pygpt_net/plugin/cmd_web/worker.py +79 -13
- pygpt_net/provider/core/config/patch.py +43 -1
- pygpt_net/provider/core/ctx/base.py +4 -1
- pygpt_net/provider/core/ctx/db_sqlite/__init__.py +10 -1
- pygpt_net/provider/core/ctx/db_sqlite/storage.py +22 -1
- pygpt_net/provider/gpt/assistants.py +10 -9
- pygpt_net/provider/gpt/audio.py +3 -2
- pygpt_net/provider/gpt/chat.py +8 -7
- pygpt_net/provider/gpt/completion.py +6 -4
- pygpt_net/provider/gpt/image.py +9 -2
- pygpt_net/provider/gpt/store.py +14 -13
- pygpt_net/provider/gpt/vision.py +6 -5
- pygpt_net/tools/__init__.py +9 -1
- pygpt_net/tools/base.py +15 -1
- pygpt_net/tools/code_interpreter/__init__.py +174 -75
- pygpt_net/tools/code_interpreter/ui/dialogs.py +21 -103
- pygpt_net/tools/code_interpreter/ui/widgets.py +284 -9
- pygpt_net/tools/html_canvas/__init__.py +78 -23
- pygpt_net/tools/html_canvas/ui/dialogs.py +46 -62
- pygpt_net/tools/html_canvas/ui/widgets.py +96 -3
- pygpt_net/ui/base/context_menu.py +2 -2
- pygpt_net/ui/layout/chat/input.py +10 -18
- pygpt_net/ui/layout/chat/output.py +26 -44
- pygpt_net/ui/layout/ctx/ctx_list.py +13 -4
- pygpt_net/ui/layout/toolbox/footer.py +18 -2
- pygpt_net/ui/main.py +2 -2
- pygpt_net/ui/menu/config.py +7 -11
- pygpt_net/ui/menu/debug.py +11 -1
- pygpt_net/ui/menu/theme.py +9 -2
- pygpt_net/ui/widget/filesystem/explorer.py +2 -2
- pygpt_net/ui/widget/lists/context.py +27 -5
- pygpt_net/ui/widget/tabs/Input.py +2 -2
- pygpt_net/ui/widget/tabs/body.py +2 -1
- pygpt_net/ui/widget/tabs/layout.py +195 -0
- pygpt_net/ui/widget/tabs/output.py +218 -55
- pygpt_net/ui/widget/textarea/html.py +11 -1
- pygpt_net/ui/widget/textarea/output.py +10 -1
- pygpt_net/ui/widget/textarea/search_input.py +4 -1
- pygpt_net/ui/widget/textarea/web.py +49 -9
- {pygpt_net-2.4.37.dist-info → pygpt_net-2.4.41.dist-info}/METADATA +45 -116
- {pygpt_net-2.4.37.dist-info → pygpt_net-2.4.41.dist-info}/RECORD +255 -247
- /pygpt_net/data/css/{web.dark.css → web-blocks.dark.css} +0 -0
- {pygpt_net-2.4.37.dist-info → pygpt_net-2.4.41.dist-info}/LICENSE +0 -0
- {pygpt_net-2.4.37.dist-info → pygpt_net-2.4.41.dist-info}/WHEEL +0 -0
- {pygpt_net-2.4.37.dist-info → pygpt_net-2.4.41.dist-info}/entry_points.txt +0 -0
@@ -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.
|
9
|
+
# Updated Date: 2024.12.09 00:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
|
12
12
|
import time
|
@@ -118,6 +118,15 @@ class DbSqliteProvider(BaseProvider):
|
|
118
118
|
"""
|
119
119
|
return self.storage.get_last_meta_id()
|
120
120
|
|
121
|
+
def get_item_by_id(self, id: int) -> CtxItem:
|
122
|
+
"""
|
123
|
+
Get ctx item by ID
|
124
|
+
|
125
|
+
:param id: ctx item ID
|
126
|
+
:return: ctx item
|
127
|
+
"""
|
128
|
+
return self.storage.get_item_by_id(id)
|
129
|
+
|
121
130
|
def load(self, id: int) -> list:
|
122
131
|
"""
|
123
132
|
Load items for ctx ID
|
@@ -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.
|
9
|
+
# Updated Date: 2024.12.09 00:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
|
12
12
|
from datetime import datetime
|
@@ -189,6 +189,27 @@ class Storage:
|
|
189
189
|
items[meta.id] = meta
|
190
190
|
return items
|
191
191
|
|
192
|
+
def get_item_by_id(self, id: int) -> CtxItem:
|
193
|
+
"""
|
194
|
+
Return ctx item by ID
|
195
|
+
|
196
|
+
:return: CtxItem
|
197
|
+
"""
|
198
|
+
stmt = text("""
|
199
|
+
SELECT * FROM ctx_item WHERE id = :id
|
200
|
+
""").bindparams(id=id)
|
201
|
+
db = self.window.core.db.get_db()
|
202
|
+
with db.connect() as conn:
|
203
|
+
result = conn.execute(stmt)
|
204
|
+
row = result.fetchone()
|
205
|
+
if row:
|
206
|
+
item = CtxItem()
|
207
|
+
unpack_item(item, row._asdict())
|
208
|
+
meta = self.get_meta_by_id(item.meta_id) # append meta
|
209
|
+
item.meta = meta
|
210
|
+
return item
|
211
|
+
return None
|
212
|
+
|
192
213
|
def get_meta_by_root_id_and_preset_id(self, root_id: int, preset_id: str) -> dict:
|
193
214
|
"""
|
194
215
|
Return dict with indexed CtxMeta objects, indexed by ID
|
@@ -6,10 +6,11 @@
|
|
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.
|
9
|
+
# Updated Date: 2024.12.14 00:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
|
12
12
|
import json
|
13
|
+
from typing import Optional
|
13
14
|
|
14
15
|
from pygpt_net.item.assistant import AssistantItem
|
15
16
|
from pygpt_net.item.ctx import CtxItem
|
@@ -37,7 +38,7 @@ class Assistants:
|
|
37
38
|
"""
|
38
39
|
return self.window.core.gpt.get_client()
|
39
40
|
|
40
|
-
def log(self, msg: str, callback: callable = None):
|
41
|
+
def log(self, msg: str, callback: Optional[callable] = None):
|
41
42
|
"""
|
42
43
|
Log message
|
43
44
|
|
@@ -140,7 +141,7 @@ class Assistants:
|
|
140
141
|
thread_messages = client.beta.threads.messages.list(thread_id)
|
141
142
|
return thread_messages.data
|
142
143
|
|
143
|
-
def msg_send(self, id: str, text: str, file_ids: list = None):
|
144
|
+
def msg_send(self, id: str, text: str, file_ids: Optional[list] = None):
|
144
145
|
"""
|
145
146
|
Send message to thread
|
146
147
|
|
@@ -226,8 +227,8 @@ class Assistants:
|
|
226
227
|
self,
|
227
228
|
thread_id: str,
|
228
229
|
assistant_id: str,
|
229
|
-
model: str = None,
|
230
|
-
instructions: str = None
|
230
|
+
model: Optional[str] = None,
|
231
|
+
instructions: Optional[str] = None
|
231
232
|
):
|
232
233
|
"""
|
233
234
|
Create assistant run
|
@@ -259,8 +260,8 @@ class Assistants:
|
|
259
260
|
ctx: CtxItem,
|
260
261
|
thread_id: str,
|
261
262
|
assistant_id: str,
|
262
|
-
model: str = None,
|
263
|
-
instructions: str = None
|
263
|
+
model: Optional[str] = None,
|
264
|
+
instructions: Optional[str] = None
|
264
265
|
):
|
265
266
|
"""
|
266
267
|
Create assistant run (stream)
|
@@ -377,8 +378,8 @@ class Assistants:
|
|
377
378
|
items: dict,
|
378
379
|
order: str = "asc",
|
379
380
|
limit: int = 100,
|
380
|
-
after: str = None,
|
381
|
-
callback: callable = None
|
381
|
+
after: Optional[str] = None,
|
382
|
+
callback: Optional[callable] = None
|
382
383
|
) -> dict:
|
383
384
|
"""
|
384
385
|
Import assistants from API (all, paginated)
|
pygpt_net/provider/gpt/audio.py
CHANGED
@@ -6,10 +6,11 @@
|
|
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.
|
9
|
+
# Updated Date: 2024.12.14 00:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
|
12
12
|
import base64
|
13
|
+
from typing import Optional
|
13
14
|
|
14
15
|
from pygpt_net.core.bridge.context import MultimodalContext
|
15
16
|
|
@@ -26,7 +27,7 @@ class Audio:
|
|
26
27
|
def build_content(
|
27
28
|
self,
|
28
29
|
content,
|
29
|
-
multimodal_ctx: MultimodalContext = None,
|
30
|
+
multimodal_ctx: Optional[MultimodalContext] = None,
|
30
31
|
) -> list:
|
31
32
|
"""
|
32
33
|
Build audio content
|
pygpt_net/provider/gpt/chat.py
CHANGED
@@ -6,11 +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.
|
9
|
+
# Updated Date: 2024.12.14 00:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
|
12
12
|
import json
|
13
13
|
import time
|
14
|
+
from typing import Optional
|
14
15
|
|
15
16
|
from pygpt_net.core.types import (
|
16
17
|
MODE_CHAT,
|
@@ -36,7 +37,7 @@ class Chat:
|
|
36
37
|
def send(
|
37
38
|
self,
|
38
39
|
context: BridgeContext,
|
39
|
-
extra: dict = None
|
40
|
+
extra: Optional[dict] = None
|
40
41
|
):
|
41
42
|
"""
|
42
43
|
Call OpenAI API for chat
|
@@ -151,11 +152,11 @@ class Chat:
|
|
151
152
|
prompt: str,
|
152
153
|
system_prompt: str,
|
153
154
|
model: ModelItem,
|
154
|
-
history: list = None,
|
155
|
-
attachments: dict = None,
|
156
|
-
ai_name: str = None,
|
157
|
-
user_name: str = None,
|
158
|
-
multimodal_ctx: MultimodalContext = None,
|
155
|
+
history: Optional[list] = None,
|
156
|
+
attachments: Optional[dict] = None,
|
157
|
+
ai_name: Optional[str] = None,
|
158
|
+
user_name: Optional[str] = None,
|
159
|
+
multimodal_ctx: Optional[MultimodalContext] = None,
|
159
160
|
) -> list:
|
160
161
|
"""
|
161
162
|
Build list of chat messages
|
@@ -6,9 +6,11 @@
|
|
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.
|
9
|
+
# Updated Date: 2024.12.14 00:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
|
12
|
+
from typing import Optional
|
13
|
+
|
12
14
|
from pygpt_net.core.types import (
|
13
15
|
MODE_COMPLETION,
|
14
16
|
)
|
@@ -98,9 +100,9 @@ class Completion:
|
|
98
100
|
prompt: str,
|
99
101
|
system_prompt: str,
|
100
102
|
model: ModelItem,
|
101
|
-
history: list = None,
|
102
|
-
ai_name: str = None,
|
103
|
-
user_name: str = None,
|
103
|
+
history: Optional[list] = None,
|
104
|
+
ai_name: Optional[str] = None,
|
105
|
+
user_name: Optional[str] = None,
|
104
106
|
) -> str:
|
105
107
|
"""
|
106
108
|
Build completion string
|
pygpt_net/provider/gpt/image.py
CHANGED
@@ -6,11 +6,13 @@
|
|
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.
|
9
|
+
# Updated Date: 2024.12.14 00:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
|
12
12
|
import datetime
|
13
13
|
import os
|
14
|
+
from typing import Optional
|
15
|
+
|
14
16
|
import requests
|
15
17
|
|
16
18
|
from PySide6.QtCore import QObject, Signal, QRunnable, Slot
|
@@ -31,7 +33,12 @@ class Image:
|
|
31
33
|
self.window = window
|
32
34
|
self.worker = None
|
33
35
|
|
34
|
-
def generate(
|
36
|
+
def generate(
|
37
|
+
self,
|
38
|
+
context: BridgeContext,
|
39
|
+
extra: Optional[dict] = None,
|
40
|
+
sync: bool = True
|
41
|
+
):
|
35
42
|
"""
|
36
43
|
Call images API
|
37
44
|
|
pygpt_net/provider/gpt/store.py
CHANGED
@@ -6,10 +6,11 @@
|
|
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.
|
9
|
+
# Updated Date: 2024.12.14 00:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
|
12
12
|
import os
|
13
|
+
from typing import Optional
|
13
14
|
|
14
15
|
from pygpt_net.item.assistant import AssistantStoreItem
|
15
16
|
|
@@ -31,7 +32,7 @@ class Store:
|
|
31
32
|
"""
|
32
33
|
return self.window.core.gpt.get_client()
|
33
34
|
|
34
|
-
def log(self, msg: str, callback: callable = None):
|
35
|
+
def log(self, msg: str, callback: Optional[callable] = None):
|
35
36
|
"""
|
36
37
|
Log message
|
37
38
|
|
@@ -57,7 +58,7 @@ class Store:
|
|
57
58
|
self,
|
58
59
|
path: str,
|
59
60
|
purpose: str = "assistants"
|
60
|
-
) -> str
|
61
|
+
) -> Optional[str]:
|
61
62
|
"""
|
62
63
|
Upload file to assistant
|
63
64
|
|
@@ -98,7 +99,7 @@ class Store:
|
|
98
99
|
items: list,
|
99
100
|
order: str = "asc",
|
100
101
|
limit: int = 100,
|
101
|
-
after: str = None,
|
102
|
+
after: Optional[str] = None,
|
102
103
|
) -> list:
|
103
104
|
"""
|
104
105
|
Get all vector store IDs
|
@@ -148,7 +149,7 @@ class Store:
|
|
148
149
|
items.append(id)
|
149
150
|
return items
|
150
151
|
|
151
|
-
def remove_files(self, callback: callable = None) -> int:
|
152
|
+
def remove_files(self, callback: Optional[callable] = None) -> int:
|
152
153
|
"""
|
153
154
|
Remove all files
|
154
155
|
|
@@ -167,7 +168,7 @@ class Store:
|
|
167
168
|
self.log(msg, callback)
|
168
169
|
return num
|
169
170
|
|
170
|
-
def remove_store_files(self, store_id: str, callback: callable = None) -> int:
|
171
|
+
def remove_store_files(self, store_id: str, callback: Optional[callable] = None) -> int:
|
171
172
|
"""
|
172
173
|
Remove all files from store
|
173
174
|
|
@@ -192,8 +193,8 @@ class Store:
|
|
192
193
|
items: dict,
|
193
194
|
order: str = "asc",
|
194
195
|
limit: int = 100,
|
195
|
-
after: str = None,
|
196
|
-
callback: callable = None
|
196
|
+
after: Optional[str] = None,
|
197
|
+
callback: Optional[callable] = None
|
197
198
|
) -> dict:
|
198
199
|
"""
|
199
200
|
Import vector stores from API
|
@@ -318,7 +319,7 @@ class Store:
|
|
318
319
|
items: list,
|
319
320
|
order: str = "asc",
|
320
321
|
limit: int = 100,
|
321
|
-
after: str = None,
|
322
|
+
after: Optional[str] = None,
|
322
323
|
) -> list:
|
323
324
|
"""
|
324
325
|
Get all vector stores IDs
|
@@ -358,7 +359,7 @@ class Store:
|
|
358
359
|
items: list,
|
359
360
|
order: str = "asc",
|
360
361
|
limit: int = 100,
|
361
|
-
after: str = None,
|
362
|
+
after: Optional[str] = None,
|
362
363
|
) -> list:
|
363
364
|
"""
|
364
365
|
Get all vector store files IDs
|
@@ -426,7 +427,7 @@ class Store:
|
|
426
427
|
num += 1
|
427
428
|
return num
|
428
429
|
|
429
|
-
def remove_all(self, callback: callable = None) -> int:
|
430
|
+
def remove_all(self, callback: Optional[callable] = None) -> int:
|
430
431
|
"""
|
431
432
|
Remove all vector stores
|
432
433
|
|
@@ -495,7 +496,7 @@ class Store:
|
|
495
496
|
if vector_store_file is not None:
|
496
497
|
return vector_store_file
|
497
498
|
|
498
|
-
def import_stores_files(self, callback: callable = None) -> int:
|
499
|
+
def import_stores_files(self, callback: Optional[callable] = None) -> int:
|
499
500
|
"""
|
500
501
|
Import all vector stores files
|
501
502
|
|
@@ -525,7 +526,7 @@ class Store:
|
|
525
526
|
order: str = "asc",
|
526
527
|
limit: int = 100,
|
527
528
|
after: str = None,
|
528
|
-
callback: callable = None
|
529
|
+
callback: Optional[callable] = None
|
529
530
|
) -> list:
|
530
531
|
"""
|
531
532
|
Import and get all vector store files IDs
|
pygpt_net/provider/gpt/vision.py
CHANGED
@@ -6,12 +6,13 @@
|
|
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.
|
9
|
+
# Updated Date: 2024.12.14 00:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
|
12
12
|
import base64
|
13
13
|
import os
|
14
14
|
import re
|
15
|
+
from typing import Optional, Union
|
15
16
|
|
16
17
|
from pygpt_net.core.types import (
|
17
18
|
MODE_VISION,
|
@@ -77,8 +78,8 @@ class Vision:
|
|
77
78
|
prompt: str,
|
78
79
|
system_prompt: str,
|
79
80
|
model: ModelItem,
|
80
|
-
history: list = None,
|
81
|
-
attachments: dict = None,
|
81
|
+
history: Optional[list] = None,
|
82
|
+
attachments: Optional[dict] = None,
|
82
83
|
) -> list:
|
83
84
|
"""
|
84
85
|
Build chat messages list
|
@@ -160,8 +161,8 @@ class Vision:
|
|
160
161
|
|
161
162
|
def build_content(
|
162
163
|
self,
|
163
|
-
content: str
|
164
|
-
attachments: dict = None,
|
164
|
+
content: Union[str, list],
|
165
|
+
attachments: Optional[dict] = None,
|
165
166
|
) -> list:
|
166
167
|
"""
|
167
168
|
Build vision content
|
pygpt_net/tools/__init__.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: 2024.
|
9
|
+
# Updated Date: 2024.12.09 23:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
|
12
12
|
from pygpt_net.ui.widget.dialog.base import BaseDialog
|
@@ -42,6 +42,14 @@ class Tools:
|
|
42
42
|
if id in self.tools:
|
43
43
|
return self.tools[id]
|
44
44
|
|
45
|
+
def get_all(self) -> dict:
|
46
|
+
"""
|
47
|
+
Get all tools
|
48
|
+
|
49
|
+
:return: dict with tools
|
50
|
+
"""
|
51
|
+
return self.tools
|
52
|
+
|
45
53
|
def setup(self):
|
46
54
|
"""Setup tools"""
|
47
55
|
self.setup_dialogs()
|
pygpt_net/tools/base.py
CHANGED
@@ -6,11 +6,13 @@
|
|
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.
|
9
|
+
# Updated Date: 2024.12.12 04:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
|
12
12
|
from PySide6.QtCore import QObject
|
13
|
+
from PySide6.QtWidgets import QWidget
|
13
14
|
|
15
|
+
from pygpt_net.core.tabs.tab import Tab
|
14
16
|
from pygpt_net.ui.widget.dialog.base import BaseDialog
|
15
17
|
|
16
18
|
class BaseTool(QObject):
|
@@ -25,6 +27,9 @@ class BaseTool(QObject):
|
|
25
27
|
super(BaseTool, self).__init__()
|
26
28
|
self.window = None
|
27
29
|
self.id = ""
|
30
|
+
self.has_tab = False
|
31
|
+
self.tab_title = ""
|
32
|
+
self.tab_icon = ":/icons/build.svg"
|
28
33
|
|
29
34
|
def setup(self):
|
30
35
|
"""Setup tool"""
|
@@ -83,6 +88,15 @@ class BaseTool(QObject):
|
|
83
88
|
"""
|
84
89
|
return None
|
85
90
|
|
91
|
+
def as_tab(self, tab: Tab) -> QWidget or None:
|
92
|
+
"""
|
93
|
+
Spawn and return tab instance
|
94
|
+
|
95
|
+
:param tab: Parent tab instance
|
96
|
+
:return: Tab widget instance
|
97
|
+
"""
|
98
|
+
return None
|
99
|
+
|
86
100
|
def get_lang_mappings(self) -> dict:
|
87
101
|
"""
|
88
102
|
Get language mappings
|