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.
Files changed (255) hide show
  1. CHANGELOG.md +29 -0
  2. README.md +44 -115
  3. pygpt_net/CHANGELOG.txt +29 -0
  4. pygpt_net/__init__.py +3 -3
  5. pygpt_net/controller/__init__.py +7 -3
  6. pygpt_net/controller/access/control.py +1 -1
  7. pygpt_net/controller/access/voice.py +11 -5
  8. pygpt_net/controller/agent/experts.py +11 -6
  9. pygpt_net/controller/agent/legacy.py +8 -6
  10. pygpt_net/controller/agent/llama.py +4 -2
  11. pygpt_net/controller/assistant/__init__.py +9 -4
  12. pygpt_net/controller/assistant/batch.py +38 -21
  13. pygpt_net/controller/assistant/editor.py +7 -6
  14. pygpt_net/controller/assistant/files.py +23 -7
  15. pygpt_net/controller/assistant/store.py +20 -7
  16. pygpt_net/controller/assistant/threads.py +34 -8
  17. pygpt_net/controller/attachment.py +29 -10
  18. pygpt_net/controller/audio/__init__.py +25 -4
  19. pygpt_net/controller/calendar/__init__.py +23 -4
  20. pygpt_net/controller/calendar/note.py +57 -11
  21. pygpt_net/controller/camera.py +3 -2
  22. pygpt_net/controller/chat/__init__.py +5 -3
  23. pygpt_net/controller/chat/attachment.py +34 -7
  24. pygpt_net/controller/chat/command.py +4 -2
  25. pygpt_net/controller/chat/common.py +11 -4
  26. pygpt_net/controller/chat/files.py +10 -3
  27. pygpt_net/controller/chat/image.py +17 -5
  28. pygpt_net/controller/chat/input.py +10 -7
  29. pygpt_net/controller/chat/output.py +21 -6
  30. pygpt_net/controller/chat/render.py +100 -21
  31. pygpt_net/controller/chat/response.py +34 -7
  32. pygpt_net/controller/chat/stream.py +4 -2
  33. pygpt_net/controller/chat/text.py +6 -4
  34. pygpt_net/controller/command.py +11 -3
  35. pygpt_net/controller/config/__init__.py +34 -6
  36. pygpt_net/controller/config/field/checkbox.py +7 -4
  37. pygpt_net/controller/config/field/cmd.py +7 -5
  38. pygpt_net/controller/config/field/combo.py +14 -6
  39. pygpt_net/controller/config/field/dictionary.py +14 -11
  40. pygpt_net/controller/config/field/input.py +9 -6
  41. pygpt_net/controller/config/field/slider.py +11 -8
  42. pygpt_net/controller/config/field/textarea.py +8 -5
  43. pygpt_net/controller/config/placeholder.py +52 -21
  44. pygpt_net/controller/ctx/__init__.py +138 -49
  45. pygpt_net/controller/ctx/common.py +15 -4
  46. pygpt_net/controller/ctx/extra.py +11 -3
  47. pygpt_net/controller/ctx/summarizer.py +24 -5
  48. pygpt_net/controller/debug/__init__.py +27 -6
  49. pygpt_net/controller/dialogs/confirm.py +34 -7
  50. pygpt_net/controller/dialogs/debug.py +4 -2
  51. pygpt_net/controller/dialogs/info.py +7 -2
  52. pygpt_net/controller/files.py +48 -10
  53. pygpt_net/controller/finder.py +11 -5
  54. pygpt_net/controller/idx/__init__.py +10 -3
  55. pygpt_net/controller/idx/common.py +4 -2
  56. pygpt_net/controller/idx/indexer.py +25 -17
  57. pygpt_net/controller/idx/settings.py +9 -3
  58. pygpt_net/controller/kernel/__init__.py +34 -8
  59. pygpt_net/controller/kernel/reply.py +12 -3
  60. pygpt_net/controller/kernel/stack.py +5 -3
  61. pygpt_net/controller/lang/custom.py +2 -7
  62. pygpt_net/controller/lang/mapping.py +5 -3
  63. pygpt_net/controller/layout.py +2 -2
  64. pygpt_net/controller/mode.py +16 -4
  65. pygpt_net/controller/model/__init__.py +14 -3
  66. pygpt_net/controller/model/editor.py +8 -3
  67. pygpt_net/controller/notepad.py +26 -12
  68. pygpt_net/controller/painter/capture.py +23 -4
  69. pygpt_net/controller/painter/common.py +9 -7
  70. pygpt_net/controller/plugins/__init__.py +19 -5
  71. pygpt_net/controller/plugins/presets.py +15 -6
  72. pygpt_net/controller/plugins/settings.py +9 -3
  73. pygpt_net/controller/presets/__init__.py +55 -16
  74. pygpt_net/controller/presets/editor.py +26 -10
  75. pygpt_net/controller/settings/__init__.py +3 -2
  76. pygpt_net/controller/settings/editor.py +29 -7
  77. pygpt_net/controller/settings/profile.py +22 -5
  78. pygpt_net/controller/theme/__init__.py +54 -12
  79. pygpt_net/controller/theme/common.py +24 -2
  80. pygpt_net/controller/theme/markdown.py +32 -16
  81. pygpt_net/controller/theme/menu.py +26 -5
  82. pygpt_net/controller/theme/nodes.py +2 -5
  83. pygpt_net/controller/tools/__init__.py +40 -2
  84. pygpt_net/controller/ui/__init__.py +4 -6
  85. pygpt_net/controller/ui/tabs.py +363 -65
  86. pygpt_net/core/access/actions.py +6 -4
  87. pygpt_net/core/access/shortcuts.py +4 -3
  88. pygpt_net/core/access/voice.py +6 -5
  89. pygpt_net/core/agents/legacy.py +4 -2
  90. pygpt_net/core/agents/memory.py +7 -2
  91. pygpt_net/core/agents/observer/evaluation.py +15 -7
  92. pygpt_net/core/agents/provider.py +9 -4
  93. pygpt_net/core/agents/runner.py +61 -15
  94. pygpt_net/core/agents/tools.py +23 -5
  95. pygpt_net/core/assistants/__init__.py +6 -4
  96. pygpt_net/core/assistants/files.py +35 -12
  97. pygpt_net/core/assistants/store.py +20 -10
  98. pygpt_net/core/attachments/__init__.py +54 -15
  99. pygpt_net/core/attachments/context.py +92 -29
  100. pygpt_net/core/audio/__init__.py +71 -3
  101. pygpt_net/core/audio/context.py +7 -2
  102. pygpt_net/core/bridge/__init__.py +22 -6
  103. pygpt_net/core/bridge/context.py +5 -3
  104. pygpt_net/core/calendar/__init__.py +57 -11
  105. pygpt_net/core/chain/__init__.py +8 -2
  106. pygpt_net/core/chain/chat.py +10 -8
  107. pygpt_net/core/chain/completion.py +10 -7
  108. pygpt_net/core/command.py +62 -17
  109. pygpt_net/core/ctx/__init__.py +260 -58
  110. pygpt_net/core/ctx/bag.py +25 -4
  111. pygpt_net/core/ctx/container.py +28 -17
  112. pygpt_net/core/ctx/idx.py +45 -8
  113. pygpt_net/core/ctx/output.py +95 -74
  114. pygpt_net/core/ctx/reply.py +5 -2
  115. pygpt_net/core/db/__init__.py +8 -7
  116. pygpt_net/core/db/viewer.py +17 -11
  117. pygpt_net/core/debug/__init__.py +10 -9
  118. pygpt_net/core/debug/tabs.py +5 -2
  119. pygpt_net/core/docker/__init__.py +11 -5
  120. pygpt_net/core/docker/builder.py +11 -3
  121. pygpt_net/core/events/app.py +5 -3
  122. pygpt_net/core/events/base.py +11 -5
  123. pygpt_net/core/events/control.py +5 -3
  124. pygpt_net/core/events/event.py +17 -7
  125. pygpt_net/core/events/kernel.py +5 -3
  126. pygpt_net/core/events/render.py +5 -3
  127. pygpt_net/core/experts/__init__.py +5 -4
  128. pygpt_net/core/filesystem/__init__.py +52 -34
  129. pygpt_net/core/filesystem/actions.py +8 -5
  130. pygpt_net/core/filesystem/editor.py +13 -3
  131. pygpt_net/core/filesystem/types.py +12 -7
  132. pygpt_net/core/filesystem/url.py +7 -3
  133. pygpt_net/core/idx/__init__.py +34 -25
  134. pygpt_net/core/idx/chat.py +40 -16
  135. pygpt_net/core/idx/context.py +6 -2
  136. pygpt_net/core/idx/indexing.py +84 -35
  137. pygpt_net/core/idx/llm.py +11 -3
  138. pygpt_net/core/idx/metadata.py +13 -3
  139. pygpt_net/core/idx/types/ctx.py +32 -6
  140. pygpt_net/core/idx/types/external.py +41 -7
  141. pygpt_net/core/idx/types/files.py +31 -6
  142. pygpt_net/core/image.py +15 -4
  143. pygpt_net/core/llm/__init__.py +13 -3
  144. pygpt_net/core/locale.py +34 -8
  145. pygpt_net/core/models.py +4 -3
  146. pygpt_net/core/notepad.py +9 -4
  147. pygpt_net/core/plugins.py +7 -6
  148. pygpt_net/core/presets.py +19 -10
  149. pygpt_net/core/profile.py +12 -6
  150. pygpt_net/core/prompt/__init__.py +10 -3
  151. pygpt_net/core/prompt/custom.py +7 -6
  152. pygpt_net/core/prompt/template.py +9 -3
  153. pygpt_net/core/render/base.py +117 -22
  154. pygpt_net/core/render/markdown/body.py +27 -7
  155. pygpt_net/core/render/markdown/renderer.py +119 -22
  156. pygpt_net/core/render/plain/body.py +22 -5
  157. pygpt_net/core/render/plain/renderer.py +97 -21
  158. pygpt_net/core/render/web/body.py +75 -25
  159. pygpt_net/core/render/web/renderer.py +313 -63
  160. pygpt_net/core/settings.py +9 -4
  161. pygpt_net/core/tabs/__init__.py +290 -103
  162. pygpt_net/core/tabs/tab.py +17 -4
  163. pygpt_net/core/tokens.py +44 -11
  164. pygpt_net/core/updater/__init__.py +20 -7
  165. pygpt_net/core/vision/analyzer.py +29 -6
  166. pygpt_net/core/web.py +130 -2
  167. pygpt_net/data/config/config.json +15 -4
  168. pygpt_net/data/config/models.json +3 -3
  169. pygpt_net/data/config/modes.json +3 -3
  170. pygpt_net/data/config/settings.json +55 -10
  171. pygpt_net/data/config/settings_section.json +3 -0
  172. pygpt_net/data/css/style.light.css +1 -0
  173. pygpt_net/data/css/{web.css → web-blocks.css} +162 -133
  174. pygpt_net/data/css/{web.light.css → web-blocks.light.css} +7 -0
  175. pygpt_net/data/css/web-chatgpt.css +350 -0
  176. pygpt_net/data/css/web-chatgpt.dark.css +64 -0
  177. pygpt_net/data/css/web-chatgpt.light.css +75 -0
  178. pygpt_net/data/css/web-chatgpt_wide.css +350 -0
  179. pygpt_net/data/css/web-chatgpt_wide.dark.css +64 -0
  180. pygpt_net/data/css/web-chatgpt_wide.light.css +75 -0
  181. pygpt_net/data/icons/split_screen.svg +1 -0
  182. pygpt_net/data/locale/locale.de.ini +12 -0
  183. pygpt_net/data/locale/locale.en.ini +17 -2
  184. pygpt_net/data/locale/locale.es.ini +12 -0
  185. pygpt_net/data/locale/locale.fr.ini +12 -0
  186. pygpt_net/data/locale/locale.it.ini +12 -0
  187. pygpt_net/data/locale/locale.pl.ini +12 -0
  188. pygpt_net/data/locale/locale.uk.ini +12 -0
  189. pygpt_net/data/locale/locale.zh.ini +12 -0
  190. pygpt_net/data/locale/plugin.cmd_web.de.ini +2 -0
  191. pygpt_net/data/locale/plugin.cmd_web.en.ini +20 -10
  192. pygpt_net/data/locale/plugin.cmd_web.es.ini +2 -0
  193. pygpt_net/data/locale/plugin.cmd_web.fr.ini +2 -0
  194. pygpt_net/data/locale/plugin.cmd_web.it.ini +2 -0
  195. pygpt_net/data/locale/plugin.cmd_web.pl.ini +2 -0
  196. pygpt_net/data/locale/plugin.cmd_web.uk.ini +2 -0
  197. pygpt_net/data/locale/plugin.cmd_web.zh.ini +2 -0
  198. pygpt_net/icons.qrc +1 -0
  199. pygpt_net/icons_rc.py +165 -136
  200. pygpt_net/item/ctx.py +46 -24
  201. pygpt_net/plugin/audio_input/simple.py +21 -5
  202. pygpt_net/plugin/audio_output/__init__.py +4 -1
  203. pygpt_net/plugin/base/config.py +4 -2
  204. pygpt_net/plugin/base/plugin.py +26 -6
  205. pygpt_net/plugin/base/worker.py +37 -9
  206. pygpt_net/plugin/cmd_code_interpreter/__init__.py +39 -37
  207. pygpt_net/plugin/cmd_code_interpreter/runner.py +25 -12
  208. pygpt_net/plugin/cmd_web/__init__.py +46 -6
  209. pygpt_net/plugin/cmd_web/config.py +74 -48
  210. pygpt_net/plugin/cmd_web/websearch.py +61 -28
  211. pygpt_net/plugin/cmd_web/worker.py +79 -13
  212. pygpt_net/provider/core/config/patch.py +43 -1
  213. pygpt_net/provider/core/ctx/base.py +4 -1
  214. pygpt_net/provider/core/ctx/db_sqlite/__init__.py +10 -1
  215. pygpt_net/provider/core/ctx/db_sqlite/storage.py +22 -1
  216. pygpt_net/provider/gpt/assistants.py +10 -9
  217. pygpt_net/provider/gpt/audio.py +3 -2
  218. pygpt_net/provider/gpt/chat.py +8 -7
  219. pygpt_net/provider/gpt/completion.py +6 -4
  220. pygpt_net/provider/gpt/image.py +9 -2
  221. pygpt_net/provider/gpt/store.py +14 -13
  222. pygpt_net/provider/gpt/vision.py +6 -5
  223. pygpt_net/tools/__init__.py +9 -1
  224. pygpt_net/tools/base.py +15 -1
  225. pygpt_net/tools/code_interpreter/__init__.py +174 -75
  226. pygpt_net/tools/code_interpreter/ui/dialogs.py +21 -103
  227. pygpt_net/tools/code_interpreter/ui/widgets.py +284 -9
  228. pygpt_net/tools/html_canvas/__init__.py +78 -23
  229. pygpt_net/tools/html_canvas/ui/dialogs.py +46 -62
  230. pygpt_net/tools/html_canvas/ui/widgets.py +96 -3
  231. pygpt_net/ui/base/context_menu.py +2 -2
  232. pygpt_net/ui/layout/chat/input.py +10 -18
  233. pygpt_net/ui/layout/chat/output.py +26 -44
  234. pygpt_net/ui/layout/ctx/ctx_list.py +13 -4
  235. pygpt_net/ui/layout/toolbox/footer.py +18 -2
  236. pygpt_net/ui/main.py +2 -2
  237. pygpt_net/ui/menu/config.py +7 -11
  238. pygpt_net/ui/menu/debug.py +11 -1
  239. pygpt_net/ui/menu/theme.py +9 -2
  240. pygpt_net/ui/widget/filesystem/explorer.py +2 -2
  241. pygpt_net/ui/widget/lists/context.py +27 -5
  242. pygpt_net/ui/widget/tabs/Input.py +2 -2
  243. pygpt_net/ui/widget/tabs/body.py +2 -1
  244. pygpt_net/ui/widget/tabs/layout.py +195 -0
  245. pygpt_net/ui/widget/tabs/output.py +218 -55
  246. pygpt_net/ui/widget/textarea/html.py +11 -1
  247. pygpt_net/ui/widget/textarea/output.py +10 -1
  248. pygpt_net/ui/widget/textarea/search_input.py +4 -1
  249. pygpt_net/ui/widget/textarea/web.py +49 -9
  250. {pygpt_net-2.4.37.dist-info → pygpt_net-2.4.41.dist-info}/METADATA +45 -116
  251. {pygpt_net-2.4.37.dist-info → pygpt_net-2.4.41.dist-info}/RECORD +255 -247
  252. /pygpt_net/data/css/{web.dark.css → web-blocks.dark.css} +0 -0
  253. {pygpt_net-2.4.37.dist-info → pygpt_net-2.4.41.dist-info}/LICENSE +0 -0
  254. {pygpt_net-2.4.37.dist-info → pygpt_net-2.4.41.dist-info}/WHEEL +0 -0
  255. {pygpt_net-2.4.37.dist-info → pygpt_net-2.4.41.dist-info}/entry_points.txt +0 -0
CHANGELOG.md CHANGED
@@ -1,5 +1,34 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## 2.4.41 (2024-12-14)
4
+
5
+ - Improved switching between columns on a split screen.
6
+ - Added visual identification of the active column.
7
+
8
+ ## 2.4.40 (2024-12-13)
9
+
10
+ - Enhanced Split Screen mode, now promoted from beta to stable.
11
+ - Python Code Interpreter tool added to the Tabs.
12
+ - HTML/JS Canvas tool added to the Tabs.
13
+ - Added attachment icon to the context list if context has attachments.
14
+ - Improved audio playback.
15
+ - Improved web search.
16
+ - Added a thumbnail image to web search results.
17
+ - Added a new commands to web search: "extract_images" and "extract_links".
18
+ - Added the option "Use raw content (without summarization)" to the web search plugin, which provides a more detailed result to the main model.
19
+ - Extended the default maximum result characters to 50,000 in the web search plugin.
20
+
21
+ ## 2.4.39 (2024-12-09)
22
+
23
+ - Added "Split Screen" mode (accessible via the switch in the bottom-right corner of the screen), which allows you to work in two windows simultaneously. It is currently experimental (beta). Future updates will include Code Interpreter and Canvas running in tabs.
24
+
25
+ - Fixed: Language switch.
26
+
27
+ ## 2.4.38 (2024-12-08)
28
+
29
+ - Added the ability to select a style for chat display between: Blocks, ChatGPT-like, and ChatGPT-like Wide. New option in the menu: Config -> Theme -> Style...
30
+ - Added configuration options for audio input in Settings -> Audio -> Audio Input Device, Channels, and Sampling rate.
31
+
3
32
  ## 2.4.37 (2024-11-30)
4
33
 
5
34
  - The `Query only` mode in `Uploaded` tab has been renamed to `RAG`.
README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  [![pygpt](https://snapcraft.io/pygpt/badge.svg)](https://snapcraft.io/pygpt)
4
4
 
5
- Release: **2.4.37** | build: **2024.11.30** | Python: **>=3.10, <3.12**
5
+ Release: **2.4.41** | build: **2024.12.14** | Python: **>=3.10, <3.12**
6
6
 
7
7
  > Official website: https://pygpt.net | Documentation: https://pygpt.readthedocs.io
8
8
  >
@@ -1984,6 +1984,10 @@ Per-page content chunk size (max characters per chunk). *Default:* `20000`
1984
1984
 
1985
1985
  Disables SSL verification when crawling web pages. *Default:* `False`
1986
1986
 
1987
+ - `Use raw content (without summarization)` *raw*
1988
+
1989
+ Return raw content from web search instead of summarized content. Provides more data but consumes more tokens. *Default:* `True`
1990
+
1987
1991
  - `Timeout` *timeout*
1988
1992
 
1989
1993
  Connection timeout (seconds). *Default:* `5`
@@ -1994,7 +1998,7 @@ User agent to use when making requests. *Default:* `Mozilla/5.0`.
1994
1998
 
1995
1999
  - `Max result length` *max_result_length*
1996
2000
 
1997
- Max length of summarized result (characters). *Default:* `1500`
2001
+ Max length of the summarized or raw result (characters). *Default:* `50000`
1998
2002
 
1999
2003
  - `Max summary tokens` *summary_max_tokens*
2000
2004
 
@@ -2680,6 +2684,8 @@ Config -> Settings...
2680
2684
 
2681
2685
  - `Zoom`: Adjusts the zoom in chat window (web render view). `WebEngine / Chromium` render mode only.
2682
2686
 
2687
+ - `Style (chat)`: Chat style (Blocks, or ChatGPT-like, or ChatGPT-like Wide. `WebEngine / Chromium` render mode only.
2688
+
2683
2689
  - `Code syntax highlight`: Syntax highlight theme in code blocks. `WebEngine / Chromium` render mode only.
2684
2690
 
2685
2691
  - `Font Size (chat window)`: Adjusts the font size in the chat window (plain-text) and notepads.
@@ -2702,8 +2708,6 @@ Config -> Settings...
2702
2708
 
2703
2709
  - `Use theme colors in chat window`: Use color theme in chat window, Default: True.
2704
2710
 
2705
- - `Disable markdown formatting in output`: Enables plain-text display in output window, Default: False.
2706
-
2707
2711
  **Files and attachments**
2708
2712
 
2709
2713
  - `Store attachments in the workdir upload directory`: Enable to store a local copy of uploaded attachments for future use. Default: True
@@ -2814,14 +2818,22 @@ Config -> Settings...
2814
2818
 
2815
2819
  **Vision**
2816
2820
 
2821
+ - `Vision: Camera Input Device`: Video capture camera index (index of the camera, default: 0).
2822
+
2817
2823
  - `Vision: Camera capture width (px)`: Video capture resolution (width).
2818
2824
 
2819
2825
  - `Vision: Camera capture height (px)`: Video capture resolution (height).
2820
2826
 
2821
- - `Vision: Camera IDX (number)`: Video capture camera index (number of camera).
2822
-
2823
2827
  - `Vision: Image capture quality`: Video capture image JPEG quality (%).
2824
2828
 
2829
+ **Audio**
2830
+
2831
+ - `Audio Input Device`: Selects the audio device for Microphone input.
2832
+
2833
+ - `Channels`: Input channels, default: 1
2834
+
2835
+ - `Sampling Rate`: Sampling rate, default: 44100
2836
+
2825
2837
  **Indexes (LlamaIndex)**
2826
2838
 
2827
2839
  - `Indexes`: List of created indexes.
@@ -3865,125 +3877,42 @@ may consume additional tokens that are not displayed in the main window.
3865
3877
 
3866
3878
  ## Recent changes:
3867
3879
 
3868
- **2.4.37 (2024-11-30)**
3869
-
3870
- - The `Query only` mode in `Uploaded` tab has been renamed to `RAG`.
3871
- - New options have been added under `Settings -> Files and Attachments`:
3872
- - `Use history in RAG query`: When enabled, the content of the entire conversation will be used when preparing a query if the mode is set to RAG or Summary.
3873
- - `RAG limit`: This option is applicable only if 'Use history in RAG query' is enabled. It specifies the limit on how many recent entries in the conversation will be used when generating a query for RAG. A value of 0 indicates no limit.
3874
- - Cache: dynamic parts of the system prompt (from plugins) have been moved to the very end of the prompt stack to enable the use of prompt cache mechanisms in OpenAI.
3875
-
3876
- **2.4.36 (2024-11-28)**
3877
-
3878
- - Added a new command-line argument: --workdir="/path/to/workdir" to explicitly set the current working directory.
3879
- - Fix: start image generation in Image mode.
3880
-
3881
- **2.4.35 (2024-11-28)**
3882
-
3883
- - Docker removed from dependencies in Snap version #82
3884
- - Refactored documentation.
3885
- - Fix: toggles real-time update hook.
3886
- - Fix: missing edit icons.
3887
- - Added tokens from attachments to counters if mode == Full context.
3888
-
3889
- **2.4.34 (2024-11-26)**
3890
-
3891
- - Added a new mode: `Chat with Audio`, with built-in multimodal support for audio input/output. Currently in `beta`, the execution of commands and tools in this mode is temporarily unavailable.
3892
- - Added new models: `gpt-4o-audio-preview`, `gpt-4o-2024-11-20`, `chatgpt-4o-latest`.
3893
- - Force disabled integration with the native system menu.
3894
-
3895
- **2.4.33 (2024-11-26)**
3896
-
3897
- - Improved CSS and rendering of file and image lists.
3898
- - Added displaying of used attachments in the chat window.
3899
-
3900
- **2.4.32 (2024-11-26)**
3880
+ **2.4.41 (2024-12-14)**
3901
3881
 
3902
- - The "Add URL" option added to the "Attachments" tab allows users to include content from a given website as additional context. Currently, it only supports standard web pages and video transcription for YouTube links. More "web" options will be added in the future.
3903
- - Added UTF-8 as default in attachments content text read/write.
3882
+ - Improved switching between columns on a split screen.
3883
+ - Added visual identification of the active column.
3904
3884
 
3905
- **2.4.31 (2024-11-25)**
3885
+ **2.4.40 (2024-12-13)**
3906
3886
 
3907
- - Added an option checkbox `Auto-index on upload` in the `Attachments` tab:
3887
+ - Enhanced Split Screen mode, now promoted from beta to stable.
3888
+ - Python Code Interpreter tool added to the Tabs.
3889
+ - HTML/JS Canvas tool added to the Tabs.
3890
+ - Added attachment icon to the context list if context has attachments.
3891
+ - Improved audio playback.
3892
+ - Improved web search.
3893
+ - Added a thumbnail image to web search results.
3894
+ - Added a new commands to web search: "extract_images" and "extract_links".
3895
+ - Added the option "Use raw content (without summarization)" to the web search plugin, which provides a more detailed result to the main model.
3896
+ - Extended the default maximum result characters to 50,000 in the web search plugin.
3908
3897
 
3909
- **Tip:** To use the `RAG` mode, the file must be indexed in the vector database. This occurs automatically at the time of upload if the `Auto-index on upload` option in the `Attachments` tab is enabled. When uploading large files, such indexing might take a while - therefore, if you are using the `Full context` option, which does not use the index, you can disable the `Auto-index` option to speed up the upload of the attachment. In this case, it will only be indexed when the `RAG` option is called for the first time, and until then, attachment will be available in the form of `Full context` and `Summary`.
3898
+ **2.4.39 (2024-12-09)**
3910
3899
 
3911
- - Added context menu options in `Uploaded attachments` tab: `Open`, `Open Source directory` and `Open Storage directory`.
3900
+ - Added "Split Screen" mode (accessible via the switch in the bottom-right corner of the screen), which allows you to work in two windows simultaneously. It is currently experimental (beta). Future updates will include Code Interpreter and Canvas running in tabs.
3912
3901
 
3913
- **2.4.30 (2024-11-25)**
3902
+ - Fixed: Language switch.
3914
3903
 
3915
- - Added instruction to model about mapped data directory in both legacy and IPython code interepreter.
3916
- - Updated locales for plugins.
3904
+ **2.4.38 (2024-12-08)**
3917
3905
 
3918
- **2.4.29 (2024-11-25)**
3906
+ - Added the ability to select a style for chat display between: Blocks, ChatGPT-like, and ChatGPT-like Wide. New option in the menu: Config -> Theme -> Style...
3907
+ - Added configuration options for audio input in Settings -> Audio -> Audio Input Device, Channels, and Sampling rate.
3919
3908
 
3920
- - Added a local IPython interpreter - you can now choose between local and sandbox (Docker) in the plugin settings.
3921
- - Added the ability to configure mapped volumes and ports for Docker containers in the plugin settings.
3922
- - Optimized and speed-up the LlamaIndex plugin (inline).
3923
- - Checkboxes replaced with Toggle buttons.
3924
- - Improved settings dialogs.
3925
- - Slight modification of the layout.
3926
- - Fix: Dockerfile formatting in Code Interpreter config.
3927
- - Fix: experts inline plugin execution.
3928
-
3929
- **2.4.28 (2024-11-24)**
3930
-
3931
- - Fix: issue #78
3932
-
3933
- **2.4.27 (2024-11-24)**
3934
-
3935
- - Profile switch fix.
3936
-
3937
- **2.4.26 (2024-11-24)**
3938
-
3939
- - Fix: issue #77
3940
-
3941
- **2.4.25 (2024-11-24)**
3942
-
3943
- - Added new plugin: System (OS), with optional sandbox support.
3944
- - Execution of system commands moved to the System plugin.
3945
- - Improved sandbox/Docker management.
3946
- - Enhanced plugin settings.
3947
- - Commands renamed to Tools, simplified layout.
3948
- - Fix: handling of the Mouse and Keyboard plugin.
3949
- - Fix: switching to a new context from a non-chat tab.
3950
- - Fix: camera screenshots when the camera is not started.
3951
-
3952
- **2.4.24 (2024-11-23)**
3953
-
3954
- - Added the ability to use ZIP and TAR archives as attachments (they are now unpacked "on the fly").
3955
- - Added the ability to index ZIP and TAR archives (it may be necessary to remove .zip and .tar from the blacklist in the settings).
3956
- - Fix: error when uploading to the /data directory using the Upload files button.
3957
-
3958
- **2.4.23 (2024-11-23)**
3959
-
3960
- - Condensed layout widgets margins.
3961
- - Added filename info to provided additional context from attachments.
3962
- - Fixed auto-clear in attachments in Assistants mode.
3963
-
3964
- **2.4.22 (2024-11-23)**
3965
-
3966
- - Added the ability to use attachments with images, audio, and video as additional context. Tip: to enable the use of images as additional context, you need to enable the option: `Files and attachments -> Allow images as additional context`.
3967
- - Edit icons in the chat window are enabled by default.
3968
-
3969
- **2.4.21 (2024-11-23)**
3970
-
3971
- - Added the ability to send additional context from attachments without needing to activate the "Chat with Files" mode. Now, you just need to attach a file, and the additional context from the file will be available in the conversation. More information can be found in the "Files and attachments" section of the documentation.
3972
-
3973
- - Fixed the issue with restarting the agent after it has been forcefully stopped.
3974
-
3975
- **2.4.20 (2024-11-22)**
3976
-
3977
- - Fixed freeze in Windows installer. #75
3978
- - Small fixes.
3979
-
3980
- **2.4.19 (2024-11-22)**
3909
+ **2.4.37 (2024-11-30)**
3981
3910
 
3982
- - Added new LLM providers for LlamaIndex: HuggingFaceAPI and LocalAI.
3983
- - The IPython interpreter now returns local paths to generated files and images (mapped to: %workdir%/ipython/).
3984
- - Refactored legacy Agent and Expert modes.
3985
- - Fixed Expert mode initialization.
3986
- - Added an option in Settings -> Layout to disable animations.
3911
+ - The `Query only` mode in `Uploaded` tab has been renamed to `RAG`.
3912
+ - New options have been added under `Settings -> Files and Attachments`:
3913
+ - `Use history in RAG query`: When enabled, the content of the entire conversation will be used when preparing a query if the mode is set to RAG or Summary.
3914
+ - `RAG limit`: This option is applicable only if 'Use history in RAG query' is enabled. It specifies the limit on how many recent entries in the conversation will be used when generating a query for RAG. A value of 0 indicates no limit.
3915
+ - Cache: dynamic parts of the system prompt (from plugins) have been moved to the very end of the prompt stack to enable the use of prompt cache mechanisms in OpenAI.
3987
3916
 
3988
3917
 
3989
3918
  # Credits and links
pygpt_net/CHANGELOG.txt CHANGED
@@ -1,3 +1,32 @@
1
+ 2.4.41 (2024-12-14)
2
+
3
+ - Improved switching between columns on a split screen.
4
+ - Added visual identification of the active column.
5
+
6
+ 2.4.40 (2024-12-13)
7
+
8
+ - Enhanced Split Screen mode, now promoted from beta to stable.
9
+ - Python Code Interpreter tool added to the Tabs.
10
+ - HTML/JS Canvas tool added to the Tabs.
11
+ - Added attachment icon to the context list if context has attachments.
12
+ - Improved audio playback.
13
+ - Improved web search.
14
+ - Added a thumbnail image to web search results.
15
+ - Added a new commands to web search: "extract_images" and "extract_links".
16
+ - Added the option "Use raw content (without summarization)" to the web search plugin, which provides a more detailed result to the main model.
17
+ - Extended the default maximum result characters to 50,000 in the web search plugin.
18
+
19
+ 2.4.39 (2024-12-09)
20
+
21
+ - Added "Split Screen" mode (accessible via the switch in the bottom-right corner of the screen), which allows you to work in two windows simultaneously. It is currently experimental (beta). Future updates will include Code Interpreter and Canvas running in tabs.
22
+
23
+ - Fixed: Language switch.
24
+
25
+ 2.4.38 (2024-12-08)
26
+
27
+ - Added the ability to select a style for chat display between: Blocks, ChatGPT-like, and ChatGPT-like Wide. New option in the menu: Config -> Theme -> Style...
28
+ - Added configuration options for audio input in Settings -> Audio -> Audio Input Device, Channels, and Sampling rate.
29
+
1
30
  2.4.37 (2024-11-30)
2
31
 
3
32
  - The `Query only` mode in `Uploaded` tab has been renamed to `RAG`.
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: 2024.11.30 01:00:00 #
9
+ # Updated Date: 2024.12.14 08:00:00 #
10
10
  # ================================================== #
11
11
 
12
12
  __author__ = "Marcin Szczygliński"
13
13
  __copyright__ = "Copyright 2024, Marcin Szczygliński"
14
14
  __credits__ = ["Marcin Szczygliński"]
15
15
  __license__ = "MIT"
16
- __version__ = "2.4.37"
17
- __build__ = "2024.11.30"
16
+ __version__ = "2.4.41"
17
+ __build__ = "2024.12.14"
18
18
  __maintainer__ = "Marcin Szczygliński"
19
19
  __github__ = "https://github.com/szczyglis-dev/py-gpt"
20
20
  __website__ = "https://pygpt.net"
@@ -6,7 +6,7 @@
6
6
  # GitHub: https://github.com/szczyglis-dev/py-gpt #
7
7
  # MIT License #
8
8
  # Created By : Marcin Szczygliński #
9
- # Updated Date: 2024.11.21 17:00:00 #
9
+ # Updated Date: 2024.12.09 23:00:00 #
10
10
  # ================================================== #
11
11
 
12
12
  from pygpt_net.controller.access import Access
@@ -87,15 +87,16 @@ class Controller:
87
87
  self.chat.init()
88
88
 
89
89
  # setup layout
90
- self.ui.pre_setup()
91
90
  self.layout.setup()
92
91
  self.ui.setup()
92
+ self.ui.tabs.setup()
93
93
 
94
94
  # setup controllers
95
95
  self.lang.setup()
96
96
  self.assistant.setup()
97
97
  self.chat.setup()
98
98
  self.agent.setup()
99
+ self.tools.setup()
99
100
  self.ctx.setup()
100
101
  self.presets.setup()
101
102
  self.idx.setup()
@@ -105,7 +106,8 @@ class Controller:
105
106
  self.attachment.setup()
106
107
  self.camera.setup_ui()
107
108
  self.access.setup()
108
- self.tools.setup()
109
+
110
+
109
111
 
110
112
  def post_setup(self):
111
113
  """Post-setup, after plugins are loaded"""
@@ -116,6 +118,7 @@ class Controller:
116
118
  self.calendar.setup() # after everything is loaded
117
119
  self.painter.setup() # load previous image if exists
118
120
  self.debug.post_setup() # post setup debug after all loaded
121
+ self.ui.tabs.restore_data() # restore opened tabs data
119
122
 
120
123
  # show license terms dialog
121
124
  if not self.window.core.config.get('license.accepted'):
@@ -168,6 +171,7 @@ class Controller:
168
171
  # post-reload
169
172
  self.ui.tabs.reload_after()
170
173
  self.ctx.reload_after()
174
+ self.ui.tabs.restore_data() # restore opened tabs data
171
175
  self.kernel.restart()
172
176
 
173
177
  self.reloading = False # unlock
@@ -6,7 +6,7 @@
6
6
  # GitHub: https://github.com/szczyglis-dev/py-gpt #
7
7
  # MIT License #
8
8
  # Created By : Marcin Szczygliński #
9
- # Updated Date: 2024.11.26 19:00:00 #
9
+ # Updated Date: 2024.12.14 08:00:00 #
10
10
  # ================================================== #
11
11
 
12
12
  import re
@@ -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.11.20 21:00:00 #
9
+ # Updated Date: 2024.12.14 08:00:00 #
10
10
  # ================================================== #
11
11
 
12
+ from typing import Optional, List, Dict, Any
13
+
12
14
  import pyaudio
13
15
  import wave
14
16
  import os
@@ -59,7 +61,7 @@ class Voice:
59
61
  """Setup voice control"""
60
62
  self.update()
61
63
 
62
- def delayed_play(self, text: str, event: AppEvent = None):
64
+ def delayed_play(self, text: str, event: AppEvent):
63
65
  """
64
66
  Delayed play audio
65
67
 
@@ -185,7 +187,11 @@ class Voice:
185
187
  self.enable_voice_control()
186
188
 
187
189
  def is_voice_control_enabled(self) -> bool:
188
- """Check if voice control is enabled"""
190
+ """
191
+ Check if voice control is enabled
192
+
193
+ :return: True if enabled
194
+ """
189
195
  return self.window.core.config.get("access.voice_control")
190
196
 
191
197
  def toggle_recording(self):
@@ -342,7 +348,7 @@ class Voice:
342
348
  self.window.tools.get("transcriber").on_transcribe(path, text)
343
349
 
344
350
  @Slot(object, object)
345
- def handle_input(self, text: str, ctx: CtxItem = None):
351
+ def handle_input(self, text: str, ctx: Optional[CtxItem] = None):
346
352
  """
347
353
  Insert text to input and send
348
354
 
@@ -356,7 +362,7 @@ class Voice:
356
362
  commands = self.window.core.access.voice.recognize_commands(text)
357
363
  self.handle_commands(commands)
358
364
 
359
- def handle_commands(self, commands: list):
365
+ def handle_commands(self, commands: List[Dict[str, Any]]):
360
366
  """
361
367
  Handle commands
362
368
 
@@ -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.11.21 20:00:00 #
9
+ # Updated Date: 2024.12.14 08:00:00 #
10
10
  # ================================================== #
11
11
 
12
+ from typing import Optional, Any
13
+
12
14
  from pygpt_net.core.types import (
13
15
  MODE_AGENT,
14
16
  MODE_EXPERT,
@@ -44,9 +46,7 @@ class Experts:
44
46
  return self.is_stop
45
47
 
46
48
  def unlock(self):
47
- """
48
- Unlock experts
49
- """
49
+ """Unlock experts"""
50
50
  self.is_stop = False
51
51
 
52
52
  def enabled(self) -> bool:
@@ -61,7 +61,12 @@ class Experts:
61
61
  return True
62
62
  return False
63
63
 
64
- def append_prompts(self, mode: str, sys_prompt: str, parent_id: str = None):
64
+ def append_prompts(
65
+ self,
66
+ mode: str,
67
+ sys_prompt: str,
68
+ parent_id: Optional[str] = None
69
+ ):
65
70
  """
66
71
  Append prompt to the window
67
72
 
@@ -151,7 +156,7 @@ class Experts:
151
156
  return num_calls # abort continue if expert call detected
152
157
  return num_calls
153
158
 
154
- def log(self, data: any):
159
+ def log(self, data: Any):
155
160
  """
156
161
  Log data to debug
157
162
 
@@ -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.11.21 20:00:00 #
9
+ # Updated Date: 2024.12.14 08:00:00 #
10
10
  # ================================================== #
11
11
 
12
+ from typing import Optional, List, Dict, Any
13
+
12
14
  from pygpt_net.core.types import (
13
15
  MODE_AGENT,
14
16
  MODE_AGENT_LLAMA,
@@ -109,7 +111,7 @@ class Legacy:
109
111
  self.window.ui.nodes['status.agent'].setText(status)
110
112
  self.window.controller.agent.common.toggle_status()
111
113
 
112
- def get_functions(self) -> list:
114
+ def get_functions(self) -> List[Dict[str, Any]]:
113
115
  """
114
116
  Append goal commands
115
117
 
@@ -137,7 +139,7 @@ class Legacy:
137
139
  def on_system_prompt(
138
140
  self,
139
141
  prompt: str,
140
- append_prompt: str = "",
142
+ append_prompt: Optional[str] = "",
141
143
  auto_stop: bool = True,
142
144
  ) -> str:
143
145
  """
@@ -286,7 +288,7 @@ class Legacy:
286
288
  def on_cmd(
287
289
  self,
288
290
  ctx: CtxItem,
289
- cmds: list,
291
+ cmds: List[Dict[str, Any]],
290
292
  ):
291
293
  """
292
294
  Event: On commands
@@ -300,7 +302,7 @@ class Legacy:
300
302
  def cmd(
301
303
  self,
302
304
  ctx: CtxItem,
303
- cmds: list,
305
+ cmds: List[Dict[str, Any]],
304
306
  ):
305
307
  """
306
308
  Event: On command
@@ -378,7 +380,7 @@ class Legacy:
378
380
  mode="agent",
379
381
  )
380
382
 
381
- def hook_update(self, key, value, caller, *args, **kwargs):
383
+ def hook_update(self, key: str, value: Any, caller, *args, **kwargs):
382
384
  """
383
385
  Hook: on option update
384
386
 
@@ -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.11.21 20:00:00 #
9
+ # Updated Date: 2024.12.14 08:00:00 #
10
10
  # ================================================== #
11
11
 
12
+ from typing import Any
13
+
12
14
  from pygpt_net.core.events import KernelEvent
13
15
  from pygpt_net.core.bridge.context import BridgeContext
14
16
  from pygpt_net.item.ctx import CtxItem
@@ -134,7 +136,7 @@ class Llama:
134
136
  """Update agent status"""
135
137
  pass
136
138
 
137
- def hook_update(self, key, value, caller, *args, **kwargs):
139
+ def hook_update(self, key: str, value: Any, caller, *args, **kwargs):
138
140
  """
139
141
  Hook: on option update
140
142
 
@@ -6,9 +6,10 @@
6
6
  # GitHub: https://github.com/szczyglis-dev/py-gpt #
7
7
  # MIT License #
8
8
  # Created By : Marcin Szczygliński #
9
- # Updated Date: 2024.11.20 21:00:00 #
9
+ # Updated Date: 2024.12.14 08:00:00 #
10
10
  # ================================================== #
11
11
 
12
+ from typing import Optional
12
13
  import webbrowser
13
14
 
14
15
  from pygpt_net.item.assistant import AssistantItem
@@ -22,7 +23,7 @@ from .threads import Threads
22
23
  from pygpt_net.core.text.utils import has_unclosed_code_tag
23
24
  from pygpt_net.utils import trans
24
25
  from pygpt_net.item.ctx import CtxItem
25
- from ...core.events import RenderEvent
26
+ from pygpt_net.core.events import RenderEvent
26
27
 
27
28
 
28
29
  class Assistant:
@@ -49,7 +50,7 @@ class Assistant:
49
50
  """
50
51
  Update assistants list
51
52
 
52
- :param update_list: update list
53
+ :param update_list: True if update list
53
54
  """
54
55
  if update_list:
55
56
  self.update_list()
@@ -244,7 +245,11 @@ class Assistant:
244
245
  self.window.update_status(trans('status.assistant.cleared'))
245
246
  self.update()
246
247
 
247
- def delete(self, idx: int = None, force: bool = False):
248
+ def delete(
249
+ self,
250
+ idx: Optional[int] = None,
251
+ force: bool = False
252
+ ):
248
253
  """
249
254
  Delete assistant
250
255