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,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 08:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
|
12
12
|
import time
|
13
13
|
from datetime import datetime, timedelta
|
14
|
+
from typing import Optional, Dict, Any
|
14
15
|
|
15
16
|
from pygpt_net.core.types import (
|
16
17
|
MODE_AGENT,
|
@@ -36,10 +37,17 @@ class Bridge:
|
|
36
37
|
self.last_call = None # last API call time, for throttling
|
37
38
|
self.last_context = None # last context
|
38
39
|
self.last_context_quick = None # last context for quick call
|
39
|
-
self.sync_modes = [
|
40
|
+
self.sync_modes = [
|
41
|
+
MODE_ASSISTANT,
|
42
|
+
MODE_EXPERT,
|
43
|
+
]
|
40
44
|
self.worker = None
|
41
45
|
|
42
|
-
def request(
|
46
|
+
def request(
|
47
|
+
self,
|
48
|
+
context: BridgeContext,
|
49
|
+
extra: Optional[Dict[str, Any]] = None
|
50
|
+
) -> bool:
|
43
51
|
"""
|
44
52
|
Make request to provider
|
45
53
|
|
@@ -135,7 +143,11 @@ class Bridge:
|
|
135
143
|
self.window.threadpool.start(self.worker)
|
136
144
|
return True
|
137
145
|
|
138
|
-
def request_next(
|
146
|
+
def request_next(
|
147
|
+
self,
|
148
|
+
context: BridgeContext,
|
149
|
+
extra: Optional[Dict[str, Any]] = None
|
150
|
+
) -> bool:
|
139
151
|
"""
|
140
152
|
Make next call to provider (loop next step)
|
141
153
|
|
@@ -158,7 +170,11 @@ class Bridge:
|
|
158
170
|
self.window.threadpool.start(self.worker)
|
159
171
|
return True
|
160
172
|
|
161
|
-
def call(
|
173
|
+
def call(
|
174
|
+
self,
|
175
|
+
context: BridgeContext,
|
176
|
+
extra: Optional[Dict[str, Any]] = None
|
177
|
+
) -> str:
|
162
178
|
"""
|
163
179
|
Make quick call to provider and get response content
|
164
180
|
|
@@ -221,7 +237,7 @@ class Bridge:
|
|
221
237
|
extra=extra,
|
222
238
|
)
|
223
239
|
|
224
|
-
def get_worker(self):
|
240
|
+
def get_worker(self) -> BridgeWorker:
|
225
241
|
"""
|
226
242
|
Prepare async worker
|
227
243
|
|
pygpt_net/core/bridge/context.py
CHANGED
@@ -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 08:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
|
12
|
+
from typing import Dict, Any
|
13
|
+
|
12
14
|
from pygpt_net.item.ctx import CtxItem
|
13
15
|
from pygpt_net.item.model import ModelItem
|
14
16
|
|
@@ -47,7 +49,7 @@ class BridgeContext:
|
|
47
49
|
if self.model is not None and not isinstance(self.model, ModelItem):
|
48
50
|
raise ValueError("Invalid model instance")
|
49
51
|
|
50
|
-
def to_dict(self) ->
|
52
|
+
def to_dict(self) -> Dict[str, Any]:
|
51
53
|
"""
|
52
54
|
Return as dictionary
|
53
55
|
|
@@ -95,7 +97,7 @@ class MultimodalContext:
|
|
95
97
|
self.audio_data = kwargs.get("audio_data", None)
|
96
98
|
self.audio_format = kwargs.get("audio_format", "wav")
|
97
99
|
|
98
|
-
def to_dict(self) ->
|
100
|
+
def to_dict(self) -> Dict[str, Any]:
|
99
101
|
"""
|
100
102
|
Return as dictionary
|
101
103
|
|
@@ -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 08:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
|
12
12
|
import datetime
|
13
|
+
from typing import Optional, Dict
|
13
14
|
|
14
15
|
from packaging.version import Version
|
15
16
|
|
@@ -33,10 +34,19 @@ class Calendar:
|
|
33
34
|
self.provider.install()
|
34
35
|
|
35
36
|
def patch(self, app_version: Version):
|
36
|
-
"""
|
37
|
+
"""
|
38
|
+
Patch provider data
|
39
|
+
|
40
|
+
:param app_version: app version
|
41
|
+
"""
|
37
42
|
self.provider.patch(app_version)
|
38
43
|
|
39
|
-
def get_by_date(
|
44
|
+
def get_by_date(
|
45
|
+
self,
|
46
|
+
year: int,
|
47
|
+
month: int,
|
48
|
+
day: int
|
49
|
+
) -> Optional[CalendarNoteItem]:
|
40
50
|
"""
|
41
51
|
Get note by date
|
42
52
|
|
@@ -51,7 +61,7 @@ class Calendar:
|
|
51
61
|
return self.items[dt_key]
|
52
62
|
return None
|
53
63
|
|
54
|
-
def get_all(self) ->
|
64
|
+
def get_all(self) -> Dict[str, CalendarNoteItem]:
|
55
65
|
"""
|
56
66
|
Get all notes
|
57
67
|
|
@@ -97,7 +107,12 @@ class Calendar:
|
|
97
107
|
self.save(note.year, note.month, note.day)
|
98
108
|
return True
|
99
109
|
|
100
|
-
def load(
|
110
|
+
def load(
|
111
|
+
self,
|
112
|
+
year: int,
|
113
|
+
month: int,
|
114
|
+
day: int
|
115
|
+
):
|
101
116
|
"""
|
102
117
|
Load note by idx
|
103
118
|
|
@@ -109,7 +124,12 @@ class Calendar:
|
|
109
124
|
dt_key = datetime.datetime(year, month, day).strftime("%Y-%m-%d")
|
110
125
|
self.items[dt_key] = self.provider.load(year, month, day)
|
111
126
|
|
112
|
-
def load_note(
|
127
|
+
def load_note(
|
128
|
+
self,
|
129
|
+
year: int,
|
130
|
+
month: int,
|
131
|
+
day: int
|
132
|
+
) -> str:
|
113
133
|
"""
|
114
134
|
Load note by idx
|
115
135
|
|
@@ -123,7 +143,13 @@ class Calendar:
|
|
123
143
|
return str(note.content)
|
124
144
|
return ""
|
125
145
|
|
126
|
-
def append_to_note(
|
146
|
+
def append_to_note(
|
147
|
+
self,
|
148
|
+
year: int,
|
149
|
+
month: int,
|
150
|
+
day: int,
|
151
|
+
text: str
|
152
|
+
) -> bool:
|
127
153
|
"""
|
128
154
|
Append to note
|
129
155
|
|
@@ -148,7 +174,13 @@ class Calendar:
|
|
148
174
|
self.load(year, month, day)
|
149
175
|
return True
|
150
176
|
|
151
|
-
def update_note(
|
177
|
+
def update_note(
|
178
|
+
self,
|
179
|
+
year: int,
|
180
|
+
month: int,
|
181
|
+
day: int,
|
182
|
+
text: str
|
183
|
+
) -> bool:
|
152
184
|
"""
|
153
185
|
Append to note
|
154
186
|
|
@@ -169,7 +201,12 @@ class Calendar:
|
|
169
201
|
self.load(year, month, day)
|
170
202
|
return True
|
171
203
|
|
172
|
-
def remove_note(
|
204
|
+
def remove_note(
|
205
|
+
self,
|
206
|
+
year: int,
|
207
|
+
month: int,
|
208
|
+
day: int
|
209
|
+
) -> bool:
|
173
210
|
"""
|
174
211
|
Remove note by date
|
175
212
|
|
@@ -198,7 +235,11 @@ class Calendar:
|
|
198
235
|
"""
|
199
236
|
self.items = self.provider.load_by_month(year, month)
|
200
237
|
|
201
|
-
def get_notes_existence_by_day(
|
238
|
+
def get_notes_existence_by_day(
|
239
|
+
self,
|
240
|
+
year: int,
|
241
|
+
month: int
|
242
|
+
) -> Dict[str, Dict[int, int]]:
|
202
243
|
"""
|
203
244
|
Get notes existence by day
|
204
245
|
|
@@ -208,7 +249,12 @@ class Calendar:
|
|
208
249
|
"""
|
209
250
|
return self.provider.get_notes_existence_by_day(year, month)
|
210
251
|
|
211
|
-
def save(
|
252
|
+
def save(
|
253
|
+
self,
|
254
|
+
year: int,
|
255
|
+
month: int,
|
256
|
+
day: int
|
257
|
+
) -> bool:
|
212
258
|
"""
|
213
259
|
Save note by date
|
214
260
|
|
pygpt_net/core/chain/__init__.py
CHANGED
@@ -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 08:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
|
12
|
+
from typing import Optional, Dict, Any
|
13
|
+
|
12
14
|
from pygpt_net.core.types import (
|
13
15
|
MODE_CHAT,
|
14
16
|
MODE_COMPLETION,
|
@@ -32,7 +34,11 @@ class Chain:
|
|
32
34
|
self.chat = Chat(window)
|
33
35
|
self.completion = Completion(window)
|
34
36
|
|
35
|
-
def call(
|
37
|
+
def call(
|
38
|
+
self,
|
39
|
+
context: BridgeContext,
|
40
|
+
extra: Optional[Dict[str, Any]] = None
|
41
|
+
) -> bool:
|
36
42
|
"""
|
37
43
|
Call LLM using Langchain
|
38
44
|
|
pygpt_net/core/chain/chat.py
CHANGED
@@ -6,15 +6,17 @@
|
|
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 08:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
|
12
|
-
from
|
12
|
+
from typing import Optional, List
|
13
13
|
|
14
|
+
from langchain_core.messages import SystemMessage, HumanMessage, AIMessage
|
14
15
|
|
15
16
|
from pygpt_net.core.types import (
|
16
17
|
MODE_CHAT,
|
17
18
|
)
|
19
|
+
from pygpt_net.item.ctx import CtxItem
|
18
20
|
from pygpt_net.item.model import ModelItem
|
19
21
|
|
20
22
|
|
@@ -33,10 +35,10 @@ class Chat:
|
|
33
35
|
prompt: str,
|
34
36
|
system_prompt: str,
|
35
37
|
model: ModelItem,
|
36
|
-
history:
|
38
|
+
history: Optional[List[CtxItem]] = None,
|
37
39
|
stream: bool = False,
|
38
|
-
ai_name: str = None,
|
39
|
-
user_name: str = None
|
40
|
+
ai_name: Optional[str] = None,
|
41
|
+
user_name: Optional[str] = None
|
40
42
|
):
|
41
43
|
"""
|
42
44
|
Chat with LLM
|
@@ -93,9 +95,9 @@ class Chat:
|
|
93
95
|
prompt: str,
|
94
96
|
system_prompt: str,
|
95
97
|
model: ModelItem,
|
96
|
-
history:
|
97
|
-
ai_name: str = None,
|
98
|
-
user_name: str = None
|
98
|
+
history: Optional[List[CtxItem]] = None,
|
99
|
+
ai_name: Optional[str] = None,
|
100
|
+
user_name: Optional[str] = None
|
99
101
|
) -> list:
|
100
102
|
"""
|
101
103
|
Build chat messages list
|
@@ -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: 2024.
|
9
|
+
# Updated Date: 2024.12.14 08:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
|
12
|
+
from typing import Optional, List
|
13
|
+
|
12
14
|
from pygpt_net.core.types import (
|
13
15
|
MODE_COMPLETION,
|
14
16
|
)
|
17
|
+
from pygpt_net.item.ctx import CtxItem
|
15
18
|
from pygpt_net.item.model import ModelItem
|
16
19
|
|
17
20
|
|
@@ -30,10 +33,10 @@ class Completion:
|
|
30
33
|
prompt: str,
|
31
34
|
system_prompt: str,
|
32
35
|
model: ModelItem,
|
33
|
-
history:
|
36
|
+
history: Optional[List[CtxItem]] = None,
|
34
37
|
stream: bool = False,
|
35
|
-
ai_name: str = None,
|
36
|
-
user_name: str = None
|
38
|
+
ai_name: Optional[str] = None,
|
39
|
+
user_name: Optional[str] = None
|
37
40
|
):
|
38
41
|
"""
|
39
42
|
Chat with LLM
|
@@ -88,9 +91,9 @@ class Completion:
|
|
88
91
|
prompt: str,
|
89
92
|
system_prompt: str,
|
90
93
|
model: ModelItem,
|
91
|
-
history:
|
92
|
-
ai_name: str = None,
|
93
|
-
user_name: str = None
|
94
|
+
history: Optional[List[CtxItem]] = None,
|
95
|
+
ai_name: Optional[str] = None,
|
96
|
+
user_name: Optional[str] = None
|
94
97
|
) -> str:
|
95
98
|
"""
|
96
99
|
Build completion string
|
pygpt_net/core/command.py
CHANGED
@@ -6,18 +6,20 @@
|
|
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 08:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
|
12
12
|
import copy
|
13
13
|
import json
|
14
14
|
import re
|
15
|
+
from typing import Optional, Dict, Any, List
|
15
16
|
|
16
17
|
from pygpt_net.core.types import (
|
17
18
|
MODE_ASSISTANT,
|
18
19
|
MODE_COMPLETION,
|
19
20
|
MODE_LANGCHAIN,
|
20
21
|
MODE_LLAMA_INDEX,
|
22
|
+
MODE_AUDIO,
|
21
23
|
)
|
22
24
|
from pygpt_net.core.events import Event
|
23
25
|
from pygpt_net.item.ctx import CtxItem
|
@@ -34,7 +36,10 @@ class Command:
|
|
34
36
|
"""
|
35
37
|
self.window = window
|
36
38
|
|
37
|
-
def append_syntax(
|
39
|
+
def append_syntax(
|
40
|
+
self,
|
41
|
+
data: Dict[str, Any]
|
42
|
+
) -> str:
|
38
43
|
"""
|
39
44
|
Append command syntax to the system prompt
|
40
45
|
|
@@ -55,7 +60,10 @@ class Command:
|
|
55
60
|
prompt += cmd_prompt.strip().replace("{extra}", extra).replace("{schema}", schema)
|
56
61
|
return prompt
|
57
62
|
|
58
|
-
def extract_syntax(
|
63
|
+
def extract_syntax(
|
64
|
+
self,
|
65
|
+
cmds: List[Dict[str, Any]]
|
66
|
+
) -> str:
|
59
67
|
"""
|
60
68
|
Extract syntax from commands
|
61
69
|
|
@@ -117,7 +125,7 @@ class Command:
|
|
117
125
|
regex_cmd = r'~###~\s*{.*}\s*~###~'
|
118
126
|
return bool(re.search(regex_cmd, text))
|
119
127
|
|
120
|
-
def extract_cmds(self, text: str) ->
|
128
|
+
def extract_cmds(self, text: str) -> List[Dict[str, Any]]:
|
121
129
|
"""
|
122
130
|
Extract commands from text
|
123
131
|
|
@@ -136,7 +144,7 @@ class Command:
|
|
136
144
|
pass
|
137
145
|
return cmds
|
138
146
|
|
139
|
-
def extract_cmd(self, chunk: str) ->
|
147
|
+
def extract_cmd(self, chunk: str) -> Optional[Dict[str, Any]]:
|
140
148
|
"""
|
141
149
|
Extract command from text chunk (JSON string)
|
142
150
|
|
@@ -170,7 +178,10 @@ class Command:
|
|
170
178
|
pass
|
171
179
|
return cmd
|
172
180
|
|
173
|
-
def from_commands(
|
181
|
+
def from_commands(
|
182
|
+
self,
|
183
|
+
cmds: List[Dict[str, Any]]
|
184
|
+
) -> List[Dict[str, Any]]:
|
174
185
|
"""
|
175
186
|
Unpack commands to execution list
|
176
187
|
|
@@ -183,7 +194,10 @@ class Command:
|
|
183
194
|
commands.append(cmd)
|
184
195
|
return commands
|
185
196
|
|
186
|
-
def unpack_tool_calls(
|
197
|
+
def unpack_tool_calls(
|
198
|
+
self,
|
199
|
+
tool_calls: List
|
200
|
+
) -> List[Dict[str, Any]]:
|
187
201
|
"""
|
188
202
|
Unpack tool calls from OpenAI response
|
189
203
|
|
@@ -208,7 +222,11 @@ class Command:
|
|
208
222
|
print("Error parsing tool call: " + str(e))
|
209
223
|
return parsed
|
210
224
|
|
211
|
-
def unpack_tool_calls_chunks(
|
225
|
+
def unpack_tool_calls_chunks(
|
226
|
+
self,
|
227
|
+
ctx: CtxItem,
|
228
|
+
tool_calls: List[Dict[str, Any]]
|
229
|
+
):
|
212
230
|
"""
|
213
231
|
Handle / unpack tool calls
|
214
232
|
|
@@ -231,7 +249,10 @@ class Command:
|
|
231
249
|
print("Error parsing tool call JSON arguments: ", tool_call["function"]["arguments"])
|
232
250
|
ctx.tool_calls = tmp_calls
|
233
251
|
|
234
|
-
def unpack_tool_calls_from_llama(
|
252
|
+
def unpack_tool_calls_from_llama(
|
253
|
+
self,
|
254
|
+
tool_calls: List
|
255
|
+
) -> List[Dict[str, Any]]:
|
235
256
|
"""
|
236
257
|
Unpack tool calls from Llama-index response
|
237
258
|
|
@@ -256,7 +277,10 @@ class Command:
|
|
256
277
|
print("Error parsing tool call: " + str(e))
|
257
278
|
return parsed
|
258
279
|
|
259
|
-
def tool_call_to_cmd(
|
280
|
+
def tool_call_to_cmd(
|
281
|
+
self,
|
282
|
+
tool_call: Dict[str, Any]
|
283
|
+
) -> Dict[str, Any]:
|
260
284
|
"""
|
261
285
|
Convert tool call to command
|
262
286
|
|
@@ -268,7 +292,10 @@ class Command:
|
|
268
292
|
"params": tool_call["function"]["arguments"]
|
269
293
|
}
|
270
294
|
|
271
|
-
def tool_calls_to_cmds(
|
295
|
+
def tool_calls_to_cmds(
|
296
|
+
self,
|
297
|
+
tool_calls: List[Dict[str, Any]]
|
298
|
+
) -> list:
|
272
299
|
"""
|
273
300
|
Convert tool calls to commands
|
274
301
|
|
@@ -280,7 +307,10 @@ class Command:
|
|
280
307
|
cmds.append(self.tool_call_to_cmd(tool_call))
|
281
308
|
return cmds
|
282
309
|
|
283
|
-
def pack_cmds(
|
310
|
+
def pack_cmds(
|
311
|
+
self,
|
312
|
+
cmds: List[Dict[str, Any]]
|
313
|
+
) -> str:
|
284
314
|
"""
|
285
315
|
Pack commands to string
|
286
316
|
|
@@ -342,7 +372,10 @@ class Command:
|
|
342
372
|
ctx.extra["tool_calls_outputs"] = outputs
|
343
373
|
return outputs
|
344
374
|
|
345
|
-
def get_functions(
|
375
|
+
def get_functions(
|
376
|
+
self,
|
377
|
+
parent_id: Optional[str] = None
|
378
|
+
) -> List[Dict[str, Any]]:
|
346
379
|
"""
|
347
380
|
Get current functions list
|
348
381
|
|
@@ -357,7 +390,11 @@ class Command:
|
|
357
390
|
func_user = []
|
358
391
|
return func + func_user # merge both
|
359
392
|
|
360
|
-
def as_native_functions(
|
393
|
+
def as_native_functions(
|
394
|
+
self,
|
395
|
+
all: bool = False,
|
396
|
+
parent_id: Optional[str] = None
|
397
|
+
) -> List[Dict[str, Any]]:
|
361
398
|
"""
|
362
399
|
Convert internal functions to native API format
|
363
400
|
|
@@ -373,7 +410,8 @@ class Command:
|
|
373
410
|
functions = [
|
374
411
|
{
|
375
412
|
"name": "get_delivery_date",
|
376
|
-
"description": "Get the delivery date for a customer's order. Call this whenever you need to know
|
413
|
+
"description": "Get the delivery date for a customer's order. Call this whenever you need to know
|
414
|
+
the delivery date, for example when a customer asks 'Where is my package'",
|
377
415
|
"params": {
|
378
416
|
"type": "object",
|
379
417
|
"properties": {
|
@@ -410,7 +448,10 @@ class Command:
|
|
410
448
|
func_experts = self.cmds_to_functions(self.window.core.experts.get_functions()) # agent functions
|
411
449
|
return func_plugins + func_agent + func_experts
|
412
450
|
|
413
|
-
def cmds_to_functions(
|
451
|
+
def cmds_to_functions(
|
452
|
+
self,
|
453
|
+
cmds: List[Dict[str, Any]]
|
454
|
+
) -> List[Dict[str, Any]]:
|
414
455
|
"""
|
415
456
|
Convert commands to functions (native API format)
|
416
457
|
|
@@ -433,7 +474,10 @@ class Command:
|
|
433
474
|
)
|
434
475
|
return functions
|
435
476
|
|
436
|
-
def extract_params(
|
477
|
+
def extract_params(
|
478
|
+
self,
|
479
|
+
cmd: Dict[str, Any]
|
480
|
+
) -> Dict[str, Any]:
|
437
481
|
"""
|
438
482
|
Extract parameters from command (to native API JSON schema format)
|
439
483
|
|
@@ -537,6 +581,7 @@ class Command:
|
|
537
581
|
MODE_LLAMA_INDEX,
|
538
582
|
MODE_LANGCHAIN,
|
539
583
|
MODE_COMPLETION,
|
584
|
+
MODE_AUDIO,
|
540
585
|
]
|
541
586
|
mode = self.window.core.config.get('mode')
|
542
587
|
if mode in disabled_modes:
|