pygpt-net 2.4.37__py3-none-any.whl → 2.4.42__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 +37 -0
- README.md +176 -182
- pygpt_net/CHANGELOG.txt +37 -0
- pygpt_net/__init__.py +3 -3
- pygpt_net/app.py +3 -1
- 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 +26 -5
- pygpt_net/controller/calendar/__init__.py +23 -4
- pygpt_net/controller/calendar/note.py +57 -11
- pygpt_net/controller/camera.py +4 -12
- pygpt_net/controller/chat/__init__.py +5 -3
- pygpt_net/controller/chat/attachment.py +34 -7
- pygpt_net/controller/chat/audio.py +2 -2
- 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 +66 -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/mode.py +16 -21
- 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 +74 -3
- pygpt_net/core/audio/context.py +7 -2
- pygpt_net/core/audio/whisper.py +37 -0
- pygpt_net/core/bridge/__init__.py +22 -6
- pygpt_net/core/bridge/context.py +5 -3
- pygpt_net/core/bridge/worker.py +2 -2
- 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/events.py +22 -10
- pygpt_net/core/debug/tabs.py +9 -3
- 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/history.py +3 -2
- pygpt_net/core/idx/__init__.py +48 -27
- pygpt_net/core/idx/chat.py +51 -17
- pygpt_net/core/idx/context.py +6 -2
- pygpt_net/core/idx/indexing.py +107 -42
- 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/installer.py +2 -4
- pygpt_net/core/llm/__init__.py +13 -3
- pygpt_net/core/locale.py +34 -8
- pygpt_net/core/models.py +63 -17
- pygpt_net/core/modes.py +11 -13
- pygpt_net/core/notepad.py +10 -5
- pygpt_net/core/plugins.py +31 -19
- pygpt_net/core/presets.py +37 -17
- pygpt_net/core/profile.py +21 -7
- 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/parser.py +3 -1
- pygpt_net/core/render/web/renderer.py +313 -63
- pygpt_net/core/settings.py +10 -5
- pygpt_net/core/tabs/__init__.py +290 -103
- pygpt_net/core/tabs/tab.py +26 -5
- pygpt_net/core/tokens.py +47 -12
- pygpt_net/core/updater/__init__.py +20 -7
- pygpt_net/core/vision/analyzer.py +29 -6
- pygpt_net/core/{web.py → web/__init__.py} +29 -7
- pygpt_net/core/web/helpers.py +237 -0
- 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 +18 -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 +22 -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/data/locale/plugin.mailer.en.ini +21 -0
- pygpt_net/icons.qrc +1 -0
- pygpt_net/icons_rc.py +165 -136
- pygpt_net/item/ctx.py +58 -25
- pygpt_net/plugin/agent/__init__.py +7 -2
- pygpt_net/plugin/audio_input/simple.py +21 -5
- pygpt_net/plugin/audio_output/__init__.py +9 -1
- pygpt_net/plugin/base/config.py +4 -2
- pygpt_net/plugin/base/plugin.py +75 -23
- pygpt_net/plugin/base/worker.py +42 -11
- pygpt_net/plugin/cmd_code_interpreter/__init__.py +39 -37
- pygpt_net/plugin/cmd_code_interpreter/runner.py +25 -12
- pygpt_net/plugin/cmd_history/config.py +2 -2
- pygpt_net/plugin/cmd_web/__init__.py +48 -9
- pygpt_net/plugin/cmd_web/config.py +135 -41
- pygpt_net/plugin/cmd_web/websearch.py +74 -33
- pygpt_net/plugin/cmd_web/worker.py +142 -13
- pygpt_net/plugin/idx_llama_index/config.py +3 -3
- pygpt_net/plugin/mailer/__init__.py +123 -0
- pygpt_net/plugin/mailer/config.py +149 -0
- pygpt_net/plugin/mailer/runner.py +285 -0
- pygpt_net/plugin/mailer/worker.py +123 -0
- pygpt_net/provider/agents/base.py +5 -2
- pygpt_net/provider/agents/openai.py +4 -2
- pygpt_net/provider/agents/openai_assistant.py +4 -2
- pygpt_net/provider/agents/planner.py +4 -2
- pygpt_net/provider/agents/react.py +4 -2
- pygpt_net/provider/audio_output/openai_tts.py +5 -11
- pygpt_net/provider/core/assistant/base.py +5 -3
- pygpt_net/provider/core/assistant/json_file.py +8 -5
- pygpt_net/provider/core/assistant_file/base.py +4 -3
- pygpt_net/provider/core/assistant_file/db_sqlite/__init__.py +4 -3
- pygpt_net/provider/core/assistant_file/db_sqlite/storage.py +3 -2
- pygpt_net/provider/core/assistant_store/base.py +6 -4
- pygpt_net/provider/core/assistant_store/db_sqlite/__init__.py +5 -4
- pygpt_net/provider/core/assistant_store/db_sqlite/storage.py +5 -3
- pygpt_net/provider/core/attachment/base.py +5 -3
- pygpt_net/provider/core/attachment/json_file.py +4 -3
- pygpt_net/provider/core/calendar/base.py +5 -3
- pygpt_net/provider/core/calendar/db_sqlite/__init__.py +6 -5
- pygpt_net/provider/core/calendar/db_sqlite/storage.py +5 -4
- pygpt_net/provider/core/config/base.py +8 -6
- pygpt_net/provider/core/config/json_file.py +9 -7
- pygpt_net/provider/core/config/patch.py +43 -1
- pygpt_net/provider/core/ctx/base.py +30 -25
- pygpt_net/provider/core/ctx/db_sqlite/__init__.py +59 -34
- pygpt_net/provider/core/ctx/db_sqlite/storage.py +62 -30
- pygpt_net/provider/core/ctx/db_sqlite/utils.py +11 -9
- pygpt_net/provider/core/index/base.py +129 -23
- pygpt_net/provider/core/index/db_sqlite/__init__.py +130 -23
- pygpt_net/provider/core/index/db_sqlite/storage.py +130 -23
- pygpt_net/provider/core/index/db_sqlite/utils.py +4 -2
- pygpt_net/provider/core/mode/base.py +5 -3
- pygpt_net/provider/core/mode/json_file.py +7 -6
- pygpt_net/provider/core/model/base.py +6 -4
- pygpt_net/provider/core/model/json_file.py +9 -7
- pygpt_net/provider/core/notepad/base.py +5 -3
- pygpt_net/provider/core/notepad/db_sqlite/__init__.py +5 -4
- pygpt_net/provider/core/notepad/db_sqlite/storage.py +4 -3
- pygpt_net/provider/core/plugin_preset/base.py +4 -2
- pygpt_net/provider/core/plugin_preset/json_file.py +5 -3
- pygpt_net/provider/core/preset/base.py +6 -4
- pygpt_net/provider/core/preset/json_file.py +9 -9
- pygpt_net/provider/core/prompt/base.py +6 -3
- pygpt_net/provider/core/prompt/json_file.py +11 -6
- pygpt_net/provider/gpt/assistants.py +21 -11
- pygpt_net/provider/gpt/audio.py +6 -5
- pygpt_net/provider/gpt/chat.py +10 -7
- pygpt_net/provider/gpt/completion.py +11 -5
- pygpt_net/provider/gpt/image.py +9 -2
- pygpt_net/provider/gpt/store.py +53 -18
- pygpt_net/provider/gpt/vision.py +17 -11
- pygpt_net/provider/llms/anthropic.py +7 -2
- pygpt_net/provider/llms/azure_openai.py +26 -5
- pygpt_net/provider/llms/base.py +47 -9
- pygpt_net/provider/llms/google.py +7 -2
- pygpt_net/provider/llms/hugging_face.py +13 -3
- pygpt_net/provider/llms/hugging_face_api.py +18 -4
- pygpt_net/provider/llms/local.py +7 -2
- pygpt_net/provider/llms/ollama.py +30 -6
- pygpt_net/provider/llms/openai.py +32 -6
- pygpt_net/provider/vector_stores/__init__.py +45 -14
- pygpt_net/provider/vector_stores/base.py +35 -8
- pygpt_net/provider/vector_stores/chroma.py +13 -3
- pygpt_net/provider/vector_stores/ctx_attachment.py +31 -12
- pygpt_net/provider/vector_stores/elasticsearch.py +12 -3
- pygpt_net/provider/vector_stores/pinecode.py +12 -3
- pygpt_net/provider/vector_stores/redis.py +12 -3
- pygpt_net/provider/vector_stores/simple.py +12 -3
- pygpt_net/provider/vector_stores/temp.py +16 -4
- pygpt_net/provider/web/base.py +10 -3
- pygpt_net/provider/web/google_custom_search.py +9 -3
- pygpt_net/provider/web/microsoft_bing.py +9 -3
- pygpt_net/tools/__init__.py +20 -4
- pygpt_net/tools/audio_transcriber/__init__.py +4 -3
- pygpt_net/tools/base.py +28 -7
- pygpt_net/tools/code_interpreter/__init__.py +177 -77
- 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 +81 -25
- pygpt_net/tools/html_canvas/ui/dialogs.py +46 -62
- pygpt_net/tools/html_canvas/ui/widgets.py +96 -3
- pygpt_net/tools/image_viewer/__init__.py +10 -4
- pygpt_net/tools/indexer/__init__.py +8 -7
- pygpt_net/tools/media_player/__init__.py +4 -3
- pygpt_net/tools/text_editor/__init__.py +36 -10
- 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 +27 -45
- 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/audio.py +12 -1
- 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.42.dist-info}/METADATA +177 -183
- {pygpt_net-2.4.37.dist-info → pygpt_net-2.4.42.dist-info}/RECORD +340 -325
- /pygpt_net/data/css/{web.dark.css → web-blocks.dark.css} +0 -0
- {pygpt_net-2.4.37.dist-info → pygpt_net-2.4.42.dist-info}/LICENSE +0 -0
- {pygpt_net-2.4.37.dist-info → pygpt_net-2.4.42.dist-info}/WHEEL +0 -0
- {pygpt_net-2.4.37.dist-info → pygpt_net-2.4.42.dist-info}/entry_points.txt +0 -0
@@ -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 22:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
|
12
|
+
from typing import Optional, Dict
|
13
|
+
|
12
14
|
from packaging.version import Version
|
13
15
|
|
14
16
|
from pygpt_net.item.preset import PresetItem
|
@@ -32,16 +34,16 @@ class BaseProvider:
|
|
32
34
|
def create(self, item: PresetItem):
|
33
35
|
pass
|
34
36
|
|
35
|
-
def load(self) ->
|
37
|
+
def load(self) -> Optional[Dict[str, PresetItem]]:
|
36
38
|
pass
|
37
39
|
|
38
|
-
def load_base(self) ->
|
40
|
+
def load_base(self) -> Optional[Dict[str, PresetItem]]:
|
39
41
|
pass
|
40
42
|
|
41
43
|
def save(self, id: str, item: PresetItem):
|
42
44
|
pass
|
43
45
|
|
44
|
-
def save_all(self, items:
|
46
|
+
def save_all(self, items: Dict[str, PresetItem]):
|
45
47
|
pass
|
46
48
|
|
47
49
|
def remove(self, id: str):
|
@@ -6,12 +6,14 @@
|
|
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 22:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
|
12
12
|
import json
|
13
13
|
import os
|
14
14
|
import shutil
|
15
|
+
from typing import Dict, Optional, Any
|
16
|
+
|
15
17
|
from packaging.version import Version
|
16
18
|
|
17
19
|
from pygpt_net.core.types import (
|
@@ -42,9 +44,7 @@ class JsonFileProvider(BaseProvider):
|
|
42
44
|
self.type = "preset"
|
43
45
|
|
44
46
|
def install(self):
|
45
|
-
"""
|
46
|
-
Install provider data
|
47
|
-
"""
|
47
|
+
"""Install provider data"""
|
48
48
|
# install presets
|
49
49
|
presets_dir = self.window.core.config.get_user_dir('presets')
|
50
50
|
src = os.path.join(self.window.core.config.get_app_path(), 'data', 'config', 'presets')
|
@@ -58,7 +58,7 @@ class JsonFileProvider(BaseProvider):
|
|
58
58
|
if not os.path.exists(dst_file):
|
59
59
|
shutil.copyfile(src_file, dst_file)
|
60
60
|
|
61
|
-
def load(self) ->
|
61
|
+
def load(self) -> Optional[Dict[str, PresetItem]]:
|
62
62
|
"""
|
63
63
|
Load presets from JSON files
|
64
64
|
|
@@ -82,7 +82,7 @@ class JsonFileProvider(BaseProvider):
|
|
82
82
|
|
83
83
|
return items
|
84
84
|
|
85
|
-
def load_base(self) ->
|
85
|
+
def load_base(self) -> Optional[Dict[str, PresetItem]]:
|
86
86
|
"""
|
87
87
|
Load base presets from JSON files
|
88
88
|
|
@@ -126,7 +126,7 @@ class JsonFileProvider(BaseProvider):
|
|
126
126
|
except Exception as e:
|
127
127
|
self.window.core.debug.log(e)
|
128
128
|
|
129
|
-
def save_all(self, items:
|
129
|
+
def save_all(self, items: Dict[str, PresetItem]):
|
130
130
|
"""
|
131
131
|
Save all presets to JSON files
|
132
132
|
|
@@ -171,7 +171,7 @@ class JsonFileProvider(BaseProvider):
|
|
171
171
|
return self.patcher.execute(version)
|
172
172
|
|
173
173
|
@staticmethod
|
174
|
-
def serialize(item: PresetItem) ->
|
174
|
+
def serialize(item: PresetItem) -> Dict[str, Any]:
|
175
175
|
"""
|
176
176
|
Serialize item to dict
|
177
177
|
|
@@ -207,7 +207,7 @@ class JsonFileProvider(BaseProvider):
|
|
207
207
|
}
|
208
208
|
|
209
209
|
@staticmethod
|
210
|
-
def deserialize(data:
|
210
|
+
def deserialize(data: Dict[str, Any], item: PresetItem):
|
211
211
|
"""
|
212
212
|
Deserialize item from dict
|
213
213
|
|
@@ -6,12 +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:
|
9
|
+
# Updated Date: 2024.12.14 22:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
|
12
|
+
from typing import Dict
|
13
|
+
|
12
14
|
from packaging.version import Version
|
13
15
|
|
14
16
|
from pygpt_net.item.attachment import AttachmentItem
|
17
|
+
from pygpt_net.item.prompt import PromptItem
|
15
18
|
|
16
19
|
|
17
20
|
class BaseProvider:
|
@@ -32,10 +35,10 @@ class BaseProvider:
|
|
32
35
|
def create(self, attachment: AttachmentItem) -> str:
|
33
36
|
pass
|
34
37
|
|
35
|
-
def load(self) ->
|
38
|
+
def load(self) -> Dict[str, PromptItem]:
|
36
39
|
pass
|
37
40
|
|
38
|
-
def save(self, items:
|
41
|
+
def save(self, items: Dict[str, PromptItem]):
|
39
42
|
pass
|
40
43
|
|
41
44
|
def remove(self, id: str):
|
@@ -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 22:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
|
12
12
|
import json
|
13
13
|
import os
|
14
14
|
import uuid
|
15
|
+
from typing import Dict
|
15
16
|
|
16
17
|
from packaging.version import Version
|
17
18
|
|
@@ -46,7 +47,7 @@ class JsonFileProvider(BaseProvider):
|
|
46
47
|
prompt.id = self.create_id()
|
47
48
|
return prompt.id
|
48
49
|
|
49
|
-
def load(self) ->
|
50
|
+
def load(self) -> Dict[str, PromptItem]:
|
50
51
|
"""
|
51
52
|
Load prompts from file
|
52
53
|
|
@@ -73,7 +74,7 @@ class JsonFileProvider(BaseProvider):
|
|
73
74
|
|
74
75
|
return items
|
75
76
|
|
76
|
-
def save(self, items:
|
77
|
+
def save(self, items: Dict[str, PromptItem]):
|
77
78
|
"""
|
78
79
|
Save prompts to file
|
79
80
|
"""
|
@@ -108,7 +109,11 @@ class JsonFileProvider(BaseProvider):
|
|
108
109
|
pass
|
109
110
|
|
110
111
|
def truncate(self, mode: str):
|
111
|
-
"""
|
112
|
+
"""
|
113
|
+
Delete all
|
114
|
+
|
115
|
+
:param mode: mode
|
116
|
+
"""
|
112
117
|
path = os.path.join(self.window.core.config.path, self.config_file)
|
113
118
|
data = {'__meta__': self.window.core.config.append_meta(), 'items': {}}
|
114
119
|
try:
|
@@ -128,7 +133,7 @@ class JsonFileProvider(BaseProvider):
|
|
128
133
|
return False
|
129
134
|
|
130
135
|
@staticmethod
|
131
|
-
def serialize(prompt: PromptItem) ->
|
136
|
+
def serialize(prompt: PromptItem) -> Dict[str, str]:
|
132
137
|
"""
|
133
138
|
Serialize item to dict
|
134
139
|
|
@@ -141,7 +146,7 @@ class JsonFileProvider(BaseProvider):
|
|
141
146
|
}
|
142
147
|
|
143
148
|
@staticmethod
|
144
|
-
def deserialize(data:
|
149
|
+
def deserialize(data: Dict[str, str], prompt: PromptItem):
|
145
150
|
"""
|
146
151
|
Deserialize item from dict
|
147
152
|
|
@@ -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 22:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
|
12
12
|
import json
|
13
|
+
from typing import Optional, List, Dict
|
13
14
|
|
14
15
|
from pygpt_net.item.assistant import AssistantItem
|
15
16
|
from pygpt_net.item.ctx import CtxItem
|
@@ -37,7 +38,11 @@ class Assistants:
|
|
37
38
|
"""
|
38
39
|
return self.window.core.gpt.get_client()
|
39
40
|
|
40
|
-
def log(
|
41
|
+
def log(
|
42
|
+
self,
|
43
|
+
msg: str,
|
44
|
+
callback: Optional[callable] = None
|
45
|
+
):
|
41
46
|
"""
|
42
47
|
Log message
|
43
48
|
|
@@ -140,7 +145,12 @@ class Assistants:
|
|
140
145
|
thread_messages = client.beta.threads.messages.list(thread_id)
|
141
146
|
return thread_messages.data
|
142
147
|
|
143
|
-
def msg_send(
|
148
|
+
def msg_send(
|
149
|
+
self,
|
150
|
+
id: str,
|
151
|
+
text: str,
|
152
|
+
file_ids: Optional[list] = None
|
153
|
+
):
|
144
154
|
"""
|
145
155
|
Send message to thread
|
146
156
|
|
@@ -175,7 +185,7 @@ class Assistants:
|
|
175
185
|
if message is not None:
|
176
186
|
return message
|
177
187
|
|
178
|
-
def get_tools(self, assistant: AssistantItem) ->
|
188
|
+
def get_tools(self, assistant: AssistantItem) -> List[dict]:
|
179
189
|
"""
|
180
190
|
Get assistant tools
|
181
191
|
|
@@ -207,7 +217,7 @@ class Assistants:
|
|
207
217
|
)
|
208
218
|
return tools
|
209
219
|
|
210
|
-
def get_tool_resources(self, assistant: AssistantItem) -> dict:
|
220
|
+
def get_tool_resources(self, assistant: AssistantItem) -> Dict[str, dict]:
|
211
221
|
"""
|
212
222
|
Get assistant tool resources
|
213
223
|
|
@@ -226,8 +236,8 @@ class Assistants:
|
|
226
236
|
self,
|
227
237
|
thread_id: str,
|
228
238
|
assistant_id: str,
|
229
|
-
model: str = None,
|
230
|
-
instructions: str = None
|
239
|
+
model: Optional[str] = None,
|
240
|
+
instructions: Optional[str] = None
|
231
241
|
):
|
232
242
|
"""
|
233
243
|
Create assistant run
|
@@ -259,8 +269,8 @@ class Assistants:
|
|
259
269
|
ctx: CtxItem,
|
260
270
|
thread_id: str,
|
261
271
|
assistant_id: str,
|
262
|
-
model: str = None,
|
263
|
-
instructions: str = None
|
272
|
+
model: Optional[str] = None,
|
273
|
+
instructions: Optional[str] = None
|
264
274
|
):
|
265
275
|
"""
|
266
276
|
Create assistant run (stream)
|
@@ -377,8 +387,8 @@ class Assistants:
|
|
377
387
|
items: dict,
|
378
388
|
order: str = "asc",
|
379
389
|
limit: int = 100,
|
380
|
-
after: str = None,
|
381
|
-
callback: callable = None
|
390
|
+
after: Optional[str] = None,
|
391
|
+
callback: Optional[callable] = None
|
382
392
|
) -> dict:
|
383
393
|
"""
|
384
394
|
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 18:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
|
12
12
|
import base64
|
13
|
+
from typing import Optional, Union, List, Dict, Any
|
13
14
|
|
14
15
|
from pygpt_net.core.bridge.context import MultimodalContext
|
15
16
|
|
@@ -25,11 +26,11 @@ class Audio:
|
|
25
26
|
|
26
27
|
def build_content(
|
27
28
|
self,
|
28
|
-
content,
|
29
|
-
multimodal_ctx: MultimodalContext = None,
|
30
|
-
) ->
|
29
|
+
content: Optional[Union[str, list]] = None,
|
30
|
+
multimodal_ctx: Optional[MultimodalContext] = None,
|
31
|
+
) -> List[Dict[str, Any]]:
|
31
32
|
"""
|
32
|
-
Build audio content
|
33
|
+
Build audio content from multimodal context
|
33
34
|
|
34
35
|
:param content: previous content or input prompt
|
35
36
|
:param multimodal_ctx: multimodal context
|
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 22:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
|
12
12
|
import json
|
13
13
|
import time
|
14
|
+
from typing import Optional, Dict, Any, List
|
14
15
|
|
15
16
|
from pygpt_net.core.types import (
|
16
17
|
MODE_CHAT,
|
@@ -22,6 +23,8 @@ from pygpt_net.item.ctx import CtxItem
|
|
22
23
|
from pygpt_net.item.model import ModelItem
|
23
24
|
|
24
25
|
from .utils import sanitize_name
|
26
|
+
from ...item.attachment import AttachmentItem
|
27
|
+
|
25
28
|
|
26
29
|
class Chat:
|
27
30
|
def __init__(self, window=None):
|
@@ -36,7 +39,7 @@ class Chat:
|
|
36
39
|
def send(
|
37
40
|
self,
|
38
41
|
context: BridgeContext,
|
39
|
-
extra:
|
42
|
+
extra: Optional[Dict[str, Any]] = None
|
40
43
|
):
|
41
44
|
"""
|
42
45
|
Call OpenAI API for chat
|
@@ -151,11 +154,11 @@ class Chat:
|
|
151
154
|
prompt: str,
|
152
155
|
system_prompt: str,
|
153
156
|
model: ModelItem,
|
154
|
-
history:
|
155
|
-
attachments:
|
156
|
-
ai_name: str = None,
|
157
|
-
user_name: str = None,
|
158
|
-
multimodal_ctx: MultimodalContext = None,
|
157
|
+
history: Optional[List[CtxItem]] = None,
|
158
|
+
attachments: Optional[Dict[str, AttachmentItem]] = None,
|
159
|
+
ai_name: Optional[str] = None,
|
160
|
+
user_name: Optional[str] = None,
|
161
|
+
multimodal_ctx: Optional[MultimodalContext] = None,
|
159
162
|
) -> list:
|
160
163
|
"""
|
161
164
|
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 22:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
|
12
|
+
from typing import Optional, Dict, Any, List
|
13
|
+
|
12
14
|
from pygpt_net.core.types import (
|
13
15
|
MODE_COMPLETION,
|
14
16
|
)
|
@@ -27,7 +29,11 @@ class Completion:
|
|
27
29
|
self.window = window
|
28
30
|
self.input_tokens = 0
|
29
31
|
|
30
|
-
def send(
|
32
|
+
def send(
|
33
|
+
self,
|
34
|
+
context: BridgeContext,
|
35
|
+
extra: Optional[Dict[str, Any]] = None
|
36
|
+
):
|
31
37
|
"""
|
32
38
|
Call OpenAI API for completion
|
33
39
|
|
@@ -98,9 +104,9 @@ class Completion:
|
|
98
104
|
prompt: str,
|
99
105
|
system_prompt: str,
|
100
106
|
model: ModelItem,
|
101
|
-
history:
|
102
|
-
ai_name: str = None,
|
103
|
-
user_name: str = None,
|
107
|
+
history: Optional[List[CtxItem]] = None,
|
108
|
+
ai_name: Optional[str] = None,
|
109
|
+
user_name: Optional[str] = None,
|
104
110
|
) -> str:
|
105
111
|
"""
|
106
112
|
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 22:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
|
12
12
|
import datetime
|
13
13
|
import os
|
14
|
+
from typing import Optional, Dict, Any
|
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[str, Any]] = 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 22:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
|
12
12
|
import os
|
13
|
+
from typing import Optional, List
|
13
14
|
|
14
15
|
from pygpt_net.item.assistant import AssistantStoreItem
|
15
16
|
|
@@ -31,7 +32,11 @@ class Store:
|
|
31
32
|
"""
|
32
33
|
return self.window.core.gpt.get_client()
|
33
34
|
|
34
|
-
def log(
|
35
|
+
def log(
|
36
|
+
self,
|
37
|
+
msg: str,
|
38
|
+
callback: Optional[callable] = None
|
39
|
+
):
|
35
40
|
"""
|
36
41
|
Log message
|
37
42
|
|
@@ -57,7 +62,7 @@ class Store:
|
|
57
62
|
self,
|
58
63
|
path: str,
|
59
64
|
purpose: str = "assistants"
|
60
|
-
) -> str
|
65
|
+
) -> Optional[str]:
|
61
66
|
"""
|
62
67
|
Upload file to assistant
|
63
68
|
|
@@ -98,7 +103,7 @@ class Store:
|
|
98
103
|
items: list,
|
99
104
|
order: str = "asc",
|
100
105
|
limit: int = 100,
|
101
|
-
after: str = None,
|
106
|
+
after: Optional[str] = None,
|
102
107
|
) -> list:
|
103
108
|
"""
|
104
109
|
Get all vector store IDs
|
@@ -132,7 +137,7 @@ class Store:
|
|
132
137
|
)
|
133
138
|
return items
|
134
139
|
|
135
|
-
def get_files_ids(self) ->
|
140
|
+
def get_files_ids(self) -> List[str]:
|
136
141
|
"""
|
137
142
|
Get all files IDs
|
138
143
|
|
@@ -148,7 +153,10 @@ class Store:
|
|
148
153
|
items.append(id)
|
149
154
|
return items
|
150
155
|
|
151
|
-
def remove_files(
|
156
|
+
def remove_files(
|
157
|
+
self,
|
158
|
+
callback: Optional[callable] = None
|
159
|
+
) -> int:
|
152
160
|
"""
|
153
161
|
Remove all files
|
154
162
|
|
@@ -167,7 +175,11 @@ class Store:
|
|
167
175
|
self.log(msg, callback)
|
168
176
|
return num
|
169
177
|
|
170
|
-
def remove_store_files(
|
178
|
+
def remove_store_files(
|
179
|
+
self,
|
180
|
+
store_id: str,
|
181
|
+
callback: Optional[callable] = None
|
182
|
+
) -> int:
|
171
183
|
"""
|
172
184
|
Remove all files from store
|
173
185
|
|
@@ -192,8 +204,8 @@ class Store:
|
|
192
204
|
items: dict,
|
193
205
|
order: str = "asc",
|
194
206
|
limit: int = 100,
|
195
|
-
after: str = None,
|
196
|
-
callback: callable = None
|
207
|
+
after: Optional[str] = None,
|
208
|
+
callback: Optional[callable] = None
|
197
209
|
) -> dict:
|
198
210
|
"""
|
199
211
|
Import vector stores from API
|
@@ -239,7 +251,11 @@ class Store:
|
|
239
251
|
)
|
240
252
|
return items
|
241
253
|
|
242
|
-
def create_store(
|
254
|
+
def create_store(
|
255
|
+
self,
|
256
|
+
name: str,
|
257
|
+
expire_days: int = 0
|
258
|
+
):
|
243
259
|
"""
|
244
260
|
Create vector store
|
245
261
|
|
@@ -261,7 +277,12 @@ class Store:
|
|
261
277
|
if vector_store is not None:
|
262
278
|
return vector_store
|
263
279
|
|
264
|
-
def update_store(
|
280
|
+
def update_store(
|
281
|
+
self,
|
282
|
+
id: str,
|
283
|
+
name: str,
|
284
|
+
expire_days: int = 0
|
285
|
+
):
|
265
286
|
"""
|
266
287
|
Update vector store
|
267
288
|
|
@@ -318,7 +339,7 @@ class Store:
|
|
318
339
|
items: list,
|
319
340
|
order: str = "asc",
|
320
341
|
limit: int = 100,
|
321
|
-
after: str = None,
|
342
|
+
after: Optional[str] = None,
|
322
343
|
) -> list:
|
323
344
|
"""
|
324
345
|
Get all vector stores IDs
|
@@ -358,7 +379,7 @@ class Store:
|
|
358
379
|
items: list,
|
359
380
|
order: str = "asc",
|
360
381
|
limit: int = 100,
|
361
|
-
after: str = None,
|
382
|
+
after: Optional[str] = None,
|
362
383
|
) -> list:
|
363
384
|
"""
|
364
385
|
Get all vector store files IDs
|
@@ -426,7 +447,10 @@ class Store:
|
|
426
447
|
num += 1
|
427
448
|
return num
|
428
449
|
|
429
|
-
def remove_all(
|
450
|
+
def remove_all(
|
451
|
+
self,
|
452
|
+
callback: Optional[callable] = None
|
453
|
+
) -> int:
|
430
454
|
"""
|
431
455
|
Remove all vector stores
|
432
456
|
|
@@ -445,7 +469,11 @@ class Store:
|
|
445
469
|
self.log(msg, callback)
|
446
470
|
return num
|
447
471
|
|
448
|
-
def add_file(
|
472
|
+
def add_file(
|
473
|
+
self,
|
474
|
+
store_id: str,
|
475
|
+
file_id: str
|
476
|
+
):
|
449
477
|
"""
|
450
478
|
Add file to vector store
|
451
479
|
|
@@ -479,7 +507,11 @@ class Store:
|
|
479
507
|
if deleted_file is not None:
|
480
508
|
return deleted_file.id
|
481
509
|
|
482
|
-
def delete_store_file(
|
510
|
+
def delete_store_file(
|
511
|
+
self,
|
512
|
+
store_id: str,
|
513
|
+
file_id: str
|
514
|
+
):
|
483
515
|
"""
|
484
516
|
Delete file from vector store
|
485
517
|
|
@@ -495,7 +527,10 @@ class Store:
|
|
495
527
|
if vector_store_file is not None:
|
496
528
|
return vector_store_file
|
497
529
|
|
498
|
-
def import_stores_files(
|
530
|
+
def import_stores_files(
|
531
|
+
self,
|
532
|
+
callback: Optional[callable] = None
|
533
|
+
) -> int:
|
499
534
|
"""
|
500
535
|
Import all vector stores files
|
501
536
|
|
@@ -525,7 +560,7 @@ class Store:
|
|
525
560
|
order: str = "asc",
|
526
561
|
limit: int = 100,
|
527
562
|
after: str = None,
|
528
|
-
callback: callable = None
|
563
|
+
callback: Optional[callable] = None
|
529
564
|
) -> list:
|
530
565
|
"""
|
531
566
|
Import and get all vector store files IDs
|