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.
Files changed (340) hide show
  1. CHANGELOG.md +37 -0
  2. README.md +176 -182
  3. pygpt_net/CHANGELOG.txt +37 -0
  4. pygpt_net/__init__.py +3 -3
  5. pygpt_net/app.py +3 -1
  6. pygpt_net/controller/__init__.py +7 -3
  7. pygpt_net/controller/access/control.py +1 -1
  8. pygpt_net/controller/access/voice.py +11 -5
  9. pygpt_net/controller/agent/experts.py +11 -6
  10. pygpt_net/controller/agent/legacy.py +8 -6
  11. pygpt_net/controller/agent/llama.py +4 -2
  12. pygpt_net/controller/assistant/__init__.py +9 -4
  13. pygpt_net/controller/assistant/batch.py +38 -21
  14. pygpt_net/controller/assistant/editor.py +7 -6
  15. pygpt_net/controller/assistant/files.py +23 -7
  16. pygpt_net/controller/assistant/store.py +20 -7
  17. pygpt_net/controller/assistant/threads.py +34 -8
  18. pygpt_net/controller/attachment.py +29 -10
  19. pygpt_net/controller/audio/__init__.py +26 -5
  20. pygpt_net/controller/calendar/__init__.py +23 -4
  21. pygpt_net/controller/calendar/note.py +57 -11
  22. pygpt_net/controller/camera.py +4 -12
  23. pygpt_net/controller/chat/__init__.py +5 -3
  24. pygpt_net/controller/chat/attachment.py +34 -7
  25. pygpt_net/controller/chat/audio.py +2 -2
  26. pygpt_net/controller/chat/command.py +4 -2
  27. pygpt_net/controller/chat/common.py +11 -4
  28. pygpt_net/controller/chat/files.py +10 -3
  29. pygpt_net/controller/chat/image.py +17 -5
  30. pygpt_net/controller/chat/input.py +10 -7
  31. pygpt_net/controller/chat/output.py +21 -6
  32. pygpt_net/controller/chat/render.py +100 -21
  33. pygpt_net/controller/chat/response.py +34 -7
  34. pygpt_net/controller/chat/stream.py +4 -2
  35. pygpt_net/controller/chat/text.py +6 -4
  36. pygpt_net/controller/command.py +11 -3
  37. pygpt_net/controller/config/__init__.py +34 -6
  38. pygpt_net/controller/config/field/checkbox.py +7 -4
  39. pygpt_net/controller/config/field/cmd.py +7 -5
  40. pygpt_net/controller/config/field/combo.py +14 -6
  41. pygpt_net/controller/config/field/dictionary.py +14 -11
  42. pygpt_net/controller/config/field/input.py +9 -6
  43. pygpt_net/controller/config/field/slider.py +11 -8
  44. pygpt_net/controller/config/field/textarea.py +8 -5
  45. pygpt_net/controller/config/placeholder.py +66 -21
  46. pygpt_net/controller/ctx/__init__.py +138 -49
  47. pygpt_net/controller/ctx/common.py +15 -4
  48. pygpt_net/controller/ctx/extra.py +11 -3
  49. pygpt_net/controller/ctx/summarizer.py +24 -5
  50. pygpt_net/controller/debug/__init__.py +27 -6
  51. pygpt_net/controller/dialogs/confirm.py +34 -7
  52. pygpt_net/controller/dialogs/debug.py +4 -2
  53. pygpt_net/controller/dialogs/info.py +7 -2
  54. pygpt_net/controller/files.py +48 -10
  55. pygpt_net/controller/finder.py +11 -5
  56. pygpt_net/controller/idx/__init__.py +10 -3
  57. pygpt_net/controller/idx/common.py +4 -2
  58. pygpt_net/controller/idx/indexer.py +25 -17
  59. pygpt_net/controller/idx/settings.py +9 -3
  60. pygpt_net/controller/kernel/__init__.py +34 -8
  61. pygpt_net/controller/kernel/reply.py +12 -3
  62. pygpt_net/controller/kernel/stack.py +5 -3
  63. pygpt_net/controller/lang/custom.py +2 -7
  64. pygpt_net/controller/lang/mapping.py +5 -3
  65. pygpt_net/controller/layout.py +2 -2
  66. pygpt_net/controller/mode.py +16 -4
  67. pygpt_net/controller/model/__init__.py +14 -3
  68. pygpt_net/controller/model/editor.py +8 -3
  69. pygpt_net/controller/notepad.py +26 -12
  70. pygpt_net/controller/painter/capture.py +23 -4
  71. pygpt_net/controller/painter/common.py +9 -7
  72. pygpt_net/controller/plugins/__init__.py +19 -5
  73. pygpt_net/controller/plugins/presets.py +15 -6
  74. pygpt_net/controller/plugins/settings.py +9 -3
  75. pygpt_net/controller/presets/__init__.py +55 -16
  76. pygpt_net/controller/presets/editor.py +26 -10
  77. pygpt_net/controller/settings/__init__.py +3 -2
  78. pygpt_net/controller/settings/editor.py +29 -7
  79. pygpt_net/controller/settings/profile.py +22 -5
  80. pygpt_net/controller/theme/__init__.py +54 -12
  81. pygpt_net/controller/theme/common.py +24 -2
  82. pygpt_net/controller/theme/markdown.py +32 -16
  83. pygpt_net/controller/theme/menu.py +26 -5
  84. pygpt_net/controller/theme/nodes.py +2 -5
  85. pygpt_net/controller/tools/__init__.py +40 -2
  86. pygpt_net/controller/ui/__init__.py +4 -6
  87. pygpt_net/controller/ui/mode.py +16 -21
  88. pygpt_net/controller/ui/tabs.py +363 -65
  89. pygpt_net/core/access/actions.py +6 -4
  90. pygpt_net/core/access/shortcuts.py +4 -3
  91. pygpt_net/core/access/voice.py +6 -5
  92. pygpt_net/core/agents/legacy.py +4 -2
  93. pygpt_net/core/agents/memory.py +7 -2
  94. pygpt_net/core/agents/observer/evaluation.py +15 -7
  95. pygpt_net/core/agents/provider.py +9 -4
  96. pygpt_net/core/agents/runner.py +61 -15
  97. pygpt_net/core/agents/tools.py +23 -5
  98. pygpt_net/core/assistants/__init__.py +6 -4
  99. pygpt_net/core/assistants/files.py +35 -12
  100. pygpt_net/core/assistants/store.py +20 -10
  101. pygpt_net/core/attachments/__init__.py +54 -15
  102. pygpt_net/core/attachments/context.py +92 -29
  103. pygpt_net/core/audio/__init__.py +74 -3
  104. pygpt_net/core/audio/context.py +7 -2
  105. pygpt_net/core/audio/whisper.py +37 -0
  106. pygpt_net/core/bridge/__init__.py +22 -6
  107. pygpt_net/core/bridge/context.py +5 -3
  108. pygpt_net/core/bridge/worker.py +2 -2
  109. pygpt_net/core/calendar/__init__.py +57 -11
  110. pygpt_net/core/chain/__init__.py +8 -2
  111. pygpt_net/core/chain/chat.py +10 -8
  112. pygpt_net/core/chain/completion.py +10 -7
  113. pygpt_net/core/command.py +62 -17
  114. pygpt_net/core/ctx/__init__.py +260 -58
  115. pygpt_net/core/ctx/bag.py +25 -4
  116. pygpt_net/core/ctx/container.py +28 -17
  117. pygpt_net/core/ctx/idx.py +45 -8
  118. pygpt_net/core/ctx/output.py +95 -74
  119. pygpt_net/core/ctx/reply.py +5 -2
  120. pygpt_net/core/db/__init__.py +8 -7
  121. pygpt_net/core/db/viewer.py +17 -11
  122. pygpt_net/core/debug/__init__.py +10 -9
  123. pygpt_net/core/debug/events.py +22 -10
  124. pygpt_net/core/debug/tabs.py +9 -3
  125. pygpt_net/core/docker/__init__.py +11 -5
  126. pygpt_net/core/docker/builder.py +11 -3
  127. pygpt_net/core/events/app.py +5 -3
  128. pygpt_net/core/events/base.py +11 -5
  129. pygpt_net/core/events/control.py +5 -3
  130. pygpt_net/core/events/event.py +17 -7
  131. pygpt_net/core/events/kernel.py +5 -3
  132. pygpt_net/core/events/render.py +5 -3
  133. pygpt_net/core/experts/__init__.py +5 -4
  134. pygpt_net/core/filesystem/__init__.py +52 -34
  135. pygpt_net/core/filesystem/actions.py +8 -5
  136. pygpt_net/core/filesystem/editor.py +13 -3
  137. pygpt_net/core/filesystem/types.py +12 -7
  138. pygpt_net/core/filesystem/url.py +7 -3
  139. pygpt_net/core/history.py +3 -2
  140. pygpt_net/core/idx/__init__.py +48 -27
  141. pygpt_net/core/idx/chat.py +51 -17
  142. pygpt_net/core/idx/context.py +6 -2
  143. pygpt_net/core/idx/indexing.py +107 -42
  144. pygpt_net/core/idx/llm.py +11 -3
  145. pygpt_net/core/idx/metadata.py +13 -3
  146. pygpt_net/core/idx/types/ctx.py +32 -6
  147. pygpt_net/core/idx/types/external.py +41 -7
  148. pygpt_net/core/idx/types/files.py +31 -6
  149. pygpt_net/core/image.py +15 -4
  150. pygpt_net/core/installer.py +2 -4
  151. pygpt_net/core/llm/__init__.py +13 -3
  152. pygpt_net/core/locale.py +34 -8
  153. pygpt_net/core/models.py +63 -17
  154. pygpt_net/core/modes.py +11 -13
  155. pygpt_net/core/notepad.py +10 -5
  156. pygpt_net/core/plugins.py +31 -19
  157. pygpt_net/core/presets.py +37 -17
  158. pygpt_net/core/profile.py +21 -7
  159. pygpt_net/core/prompt/__init__.py +10 -3
  160. pygpt_net/core/prompt/custom.py +7 -6
  161. pygpt_net/core/prompt/template.py +9 -3
  162. pygpt_net/core/render/base.py +117 -22
  163. pygpt_net/core/render/markdown/body.py +27 -7
  164. pygpt_net/core/render/markdown/renderer.py +119 -22
  165. pygpt_net/core/render/plain/body.py +22 -5
  166. pygpt_net/core/render/plain/renderer.py +97 -21
  167. pygpt_net/core/render/web/body.py +75 -25
  168. pygpt_net/core/render/web/parser.py +3 -1
  169. pygpt_net/core/render/web/renderer.py +313 -63
  170. pygpt_net/core/settings.py +10 -5
  171. pygpt_net/core/tabs/__init__.py +290 -103
  172. pygpt_net/core/tabs/tab.py +26 -5
  173. pygpt_net/core/tokens.py +47 -12
  174. pygpt_net/core/updater/__init__.py +20 -7
  175. pygpt_net/core/vision/analyzer.py +29 -6
  176. pygpt_net/core/{web.py → web/__init__.py} +29 -7
  177. pygpt_net/core/web/helpers.py +237 -0
  178. pygpt_net/data/config/config.json +15 -4
  179. pygpt_net/data/config/models.json +3 -3
  180. pygpt_net/data/config/modes.json +3 -3
  181. pygpt_net/data/config/settings.json +55 -10
  182. pygpt_net/data/config/settings_section.json +3 -0
  183. pygpt_net/data/css/style.light.css +1 -0
  184. pygpt_net/data/css/{web.css → web-blocks.css} +162 -133
  185. pygpt_net/data/css/{web.light.css → web-blocks.light.css} +7 -0
  186. pygpt_net/data/css/web-chatgpt.css +350 -0
  187. pygpt_net/data/css/web-chatgpt.dark.css +64 -0
  188. pygpt_net/data/css/web-chatgpt.light.css +75 -0
  189. pygpt_net/data/css/web-chatgpt_wide.css +350 -0
  190. pygpt_net/data/css/web-chatgpt_wide.dark.css +64 -0
  191. pygpt_net/data/css/web-chatgpt_wide.light.css +75 -0
  192. pygpt_net/data/icons/split_screen.svg +1 -0
  193. pygpt_net/data/locale/locale.de.ini +12 -0
  194. pygpt_net/data/locale/locale.en.ini +18 -2
  195. pygpt_net/data/locale/locale.es.ini +12 -0
  196. pygpt_net/data/locale/locale.fr.ini +12 -0
  197. pygpt_net/data/locale/locale.it.ini +12 -0
  198. pygpt_net/data/locale/locale.pl.ini +12 -0
  199. pygpt_net/data/locale/locale.uk.ini +12 -0
  200. pygpt_net/data/locale/locale.zh.ini +12 -0
  201. pygpt_net/data/locale/plugin.cmd_web.de.ini +2 -0
  202. pygpt_net/data/locale/plugin.cmd_web.en.ini +22 -10
  203. pygpt_net/data/locale/plugin.cmd_web.es.ini +2 -0
  204. pygpt_net/data/locale/plugin.cmd_web.fr.ini +2 -0
  205. pygpt_net/data/locale/plugin.cmd_web.it.ini +2 -0
  206. pygpt_net/data/locale/plugin.cmd_web.pl.ini +2 -0
  207. pygpt_net/data/locale/plugin.cmd_web.uk.ini +2 -0
  208. pygpt_net/data/locale/plugin.cmd_web.zh.ini +2 -0
  209. pygpt_net/data/locale/plugin.mailer.en.ini +21 -0
  210. pygpt_net/icons.qrc +1 -0
  211. pygpt_net/icons_rc.py +165 -136
  212. pygpt_net/item/ctx.py +58 -25
  213. pygpt_net/plugin/agent/__init__.py +7 -2
  214. pygpt_net/plugin/audio_input/simple.py +21 -5
  215. pygpt_net/plugin/audio_output/__init__.py +9 -1
  216. pygpt_net/plugin/base/config.py +4 -2
  217. pygpt_net/plugin/base/plugin.py +75 -23
  218. pygpt_net/plugin/base/worker.py +42 -11
  219. pygpt_net/plugin/cmd_code_interpreter/__init__.py +39 -37
  220. pygpt_net/plugin/cmd_code_interpreter/runner.py +25 -12
  221. pygpt_net/plugin/cmd_history/config.py +2 -2
  222. pygpt_net/plugin/cmd_web/__init__.py +48 -9
  223. pygpt_net/plugin/cmd_web/config.py +135 -41
  224. pygpt_net/plugin/cmd_web/websearch.py +74 -33
  225. pygpt_net/plugin/cmd_web/worker.py +142 -13
  226. pygpt_net/plugin/idx_llama_index/config.py +3 -3
  227. pygpt_net/plugin/mailer/__init__.py +123 -0
  228. pygpt_net/plugin/mailer/config.py +149 -0
  229. pygpt_net/plugin/mailer/runner.py +285 -0
  230. pygpt_net/plugin/mailer/worker.py +123 -0
  231. pygpt_net/provider/agents/base.py +5 -2
  232. pygpt_net/provider/agents/openai.py +4 -2
  233. pygpt_net/provider/agents/openai_assistant.py +4 -2
  234. pygpt_net/provider/agents/planner.py +4 -2
  235. pygpt_net/provider/agents/react.py +4 -2
  236. pygpt_net/provider/audio_output/openai_tts.py +5 -11
  237. pygpt_net/provider/core/assistant/base.py +5 -3
  238. pygpt_net/provider/core/assistant/json_file.py +8 -5
  239. pygpt_net/provider/core/assistant_file/base.py +4 -3
  240. pygpt_net/provider/core/assistant_file/db_sqlite/__init__.py +4 -3
  241. pygpt_net/provider/core/assistant_file/db_sqlite/storage.py +3 -2
  242. pygpt_net/provider/core/assistant_store/base.py +6 -4
  243. pygpt_net/provider/core/assistant_store/db_sqlite/__init__.py +5 -4
  244. pygpt_net/provider/core/assistant_store/db_sqlite/storage.py +5 -3
  245. pygpt_net/provider/core/attachment/base.py +5 -3
  246. pygpt_net/provider/core/attachment/json_file.py +4 -3
  247. pygpt_net/provider/core/calendar/base.py +5 -3
  248. pygpt_net/provider/core/calendar/db_sqlite/__init__.py +6 -5
  249. pygpt_net/provider/core/calendar/db_sqlite/storage.py +5 -4
  250. pygpt_net/provider/core/config/base.py +8 -6
  251. pygpt_net/provider/core/config/json_file.py +9 -7
  252. pygpt_net/provider/core/config/patch.py +43 -1
  253. pygpt_net/provider/core/ctx/base.py +30 -25
  254. pygpt_net/provider/core/ctx/db_sqlite/__init__.py +59 -34
  255. pygpt_net/provider/core/ctx/db_sqlite/storage.py +62 -30
  256. pygpt_net/provider/core/ctx/db_sqlite/utils.py +11 -9
  257. pygpt_net/provider/core/index/base.py +129 -23
  258. pygpt_net/provider/core/index/db_sqlite/__init__.py +130 -23
  259. pygpt_net/provider/core/index/db_sqlite/storage.py +130 -23
  260. pygpt_net/provider/core/index/db_sqlite/utils.py +4 -2
  261. pygpt_net/provider/core/mode/base.py +5 -3
  262. pygpt_net/provider/core/mode/json_file.py +7 -6
  263. pygpt_net/provider/core/model/base.py +6 -4
  264. pygpt_net/provider/core/model/json_file.py +9 -7
  265. pygpt_net/provider/core/notepad/base.py +5 -3
  266. pygpt_net/provider/core/notepad/db_sqlite/__init__.py +5 -4
  267. pygpt_net/provider/core/notepad/db_sqlite/storage.py +4 -3
  268. pygpt_net/provider/core/plugin_preset/base.py +4 -2
  269. pygpt_net/provider/core/plugin_preset/json_file.py +5 -3
  270. pygpt_net/provider/core/preset/base.py +6 -4
  271. pygpt_net/provider/core/preset/json_file.py +9 -9
  272. pygpt_net/provider/core/prompt/base.py +6 -3
  273. pygpt_net/provider/core/prompt/json_file.py +11 -6
  274. pygpt_net/provider/gpt/assistants.py +21 -11
  275. pygpt_net/provider/gpt/audio.py +6 -5
  276. pygpt_net/provider/gpt/chat.py +10 -7
  277. pygpt_net/provider/gpt/completion.py +11 -5
  278. pygpt_net/provider/gpt/image.py +9 -2
  279. pygpt_net/provider/gpt/store.py +53 -18
  280. pygpt_net/provider/gpt/vision.py +17 -11
  281. pygpt_net/provider/llms/anthropic.py +7 -2
  282. pygpt_net/provider/llms/azure_openai.py +26 -5
  283. pygpt_net/provider/llms/base.py +47 -9
  284. pygpt_net/provider/llms/google.py +7 -2
  285. pygpt_net/provider/llms/hugging_face.py +13 -3
  286. pygpt_net/provider/llms/hugging_face_api.py +18 -4
  287. pygpt_net/provider/llms/local.py +7 -2
  288. pygpt_net/provider/llms/ollama.py +30 -6
  289. pygpt_net/provider/llms/openai.py +32 -6
  290. pygpt_net/provider/vector_stores/__init__.py +45 -14
  291. pygpt_net/provider/vector_stores/base.py +35 -8
  292. pygpt_net/provider/vector_stores/chroma.py +13 -3
  293. pygpt_net/provider/vector_stores/ctx_attachment.py +31 -12
  294. pygpt_net/provider/vector_stores/elasticsearch.py +12 -3
  295. pygpt_net/provider/vector_stores/pinecode.py +12 -3
  296. pygpt_net/provider/vector_stores/redis.py +12 -3
  297. pygpt_net/provider/vector_stores/simple.py +12 -3
  298. pygpt_net/provider/vector_stores/temp.py +16 -4
  299. pygpt_net/provider/web/base.py +10 -3
  300. pygpt_net/provider/web/google_custom_search.py +9 -3
  301. pygpt_net/provider/web/microsoft_bing.py +9 -3
  302. pygpt_net/tools/__init__.py +20 -4
  303. pygpt_net/tools/audio_transcriber/__init__.py +4 -3
  304. pygpt_net/tools/base.py +28 -7
  305. pygpt_net/tools/code_interpreter/__init__.py +177 -77
  306. pygpt_net/tools/code_interpreter/ui/dialogs.py +21 -103
  307. pygpt_net/tools/code_interpreter/ui/widgets.py +284 -9
  308. pygpt_net/tools/html_canvas/__init__.py +81 -25
  309. pygpt_net/tools/html_canvas/ui/dialogs.py +46 -62
  310. pygpt_net/tools/html_canvas/ui/widgets.py +96 -3
  311. pygpt_net/tools/image_viewer/__init__.py +10 -4
  312. pygpt_net/tools/indexer/__init__.py +8 -7
  313. pygpt_net/tools/media_player/__init__.py +4 -3
  314. pygpt_net/tools/text_editor/__init__.py +36 -10
  315. pygpt_net/ui/base/context_menu.py +2 -2
  316. pygpt_net/ui/layout/chat/input.py +10 -18
  317. pygpt_net/ui/layout/chat/output.py +27 -45
  318. pygpt_net/ui/layout/ctx/ctx_list.py +13 -4
  319. pygpt_net/ui/layout/toolbox/footer.py +18 -2
  320. pygpt_net/ui/main.py +2 -2
  321. pygpt_net/ui/menu/audio.py +12 -1
  322. pygpt_net/ui/menu/config.py +7 -11
  323. pygpt_net/ui/menu/debug.py +11 -1
  324. pygpt_net/ui/menu/theme.py +9 -2
  325. pygpt_net/ui/widget/filesystem/explorer.py +2 -2
  326. pygpt_net/ui/widget/lists/context.py +27 -5
  327. pygpt_net/ui/widget/tabs/Input.py +2 -2
  328. pygpt_net/ui/widget/tabs/body.py +2 -1
  329. pygpt_net/ui/widget/tabs/layout.py +195 -0
  330. pygpt_net/ui/widget/tabs/output.py +218 -55
  331. pygpt_net/ui/widget/textarea/html.py +11 -1
  332. pygpt_net/ui/widget/textarea/output.py +10 -1
  333. pygpt_net/ui/widget/textarea/search_input.py +4 -1
  334. pygpt_net/ui/widget/textarea/web.py +49 -9
  335. {pygpt_net-2.4.37.dist-info → pygpt_net-2.4.42.dist-info}/METADATA +177 -183
  336. {pygpt_net-2.4.37.dist-info → pygpt_net-2.4.42.dist-info}/RECORD +340 -325
  337. /pygpt_net/data/css/{web.dark.css → web-blocks.dark.css} +0 -0
  338. {pygpt_net-2.4.37.dist-info → pygpt_net-2.4.42.dist-info}/LICENSE +0 -0
  339. {pygpt_net-2.4.37.dist-info → pygpt_net-2.4.42.dist-info}/WHEEL +0 -0
  340. {pygpt_net-2.4.37.dist-info → pygpt_net-2.4.42.dist-info}/entry_points.txt +0 -0
@@ -6,17 +6,19 @@
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 22:00:00 #
10
10
  # ================================================== #
11
11
 
12
12
  import base64
13
13
  import os
14
14
  import re
15
+ from typing import Optional, Union, Dict, Any, List
15
16
 
16
17
  from pygpt_net.core.types import (
17
18
  MODE_VISION,
18
19
  )
19
20
  from pygpt_net.core.bridge.context import BridgeContext
21
+ from pygpt_net.item.attachment import AttachmentItem
20
22
  from pygpt_net.item.ctx import CtxItem
21
23
  from pygpt_net.item.model import ModelItem
22
24
 
@@ -33,7 +35,11 @@ class Vision:
33
35
  self.urls = []
34
36
  self.input_tokens = 0
35
37
 
36
- def send(self, context: BridgeContext, extra: dict = None):
38
+ def send(
39
+ self,
40
+ context: BridgeContext,
41
+ extra: Optional[Dict[str, Any]] = None
42
+ ):
37
43
  """
38
44
  Call OpenAI API for chat with vision
39
45
 
@@ -77,9 +83,9 @@ class Vision:
77
83
  prompt: str,
78
84
  system_prompt: str,
79
85
  model: ModelItem,
80
- history: list = None,
81
- attachments: dict = None,
82
- ) -> list:
86
+ history: Optional[List[CtxItem]] = None,
87
+ attachments: Optional[Dict[str, AttachmentItem]] = None,
88
+ ) -> List[dict]:
83
89
  """
84
90
  Build chat messages list
85
91
 
@@ -160,9 +166,9 @@ class Vision:
160
166
 
161
167
  def build_content(
162
168
  self,
163
- content: str or list,
164
- attachments: dict = None,
165
- ) -> list:
169
+ content: Union[str, list],
170
+ attachments: Optional[Dict[str, AttachmentItem]] = None,
171
+ ) -> List[dict]:
166
172
  """
167
173
  Build vision content
168
174
 
@@ -218,7 +224,7 @@ class Vision:
218
224
 
219
225
  return content
220
226
 
221
- def extract_urls(self, text: str) -> list:
227
+ def extract_urls(self, text: str) -> List[str]:
222
228
  """
223
229
  Extract img urls from text
224
230
 
@@ -260,7 +266,7 @@ class Vision:
260
266
  """Reset input tokens counter"""
261
267
  self.input_tokens = 0
262
268
 
263
- def get_attachments(self) -> dict:
269
+ def get_attachments(self) -> Dict[str, str]:
264
270
  """
265
271
  Get attachments
266
272
 
@@ -268,7 +274,7 @@ class Vision:
268
274
  """
269
275
  return self.attachments
270
276
 
271
- def get_urls(self) -> list:
277
+ def get_urls(self) -> List[str]:
272
278
  """
273
279
  Get urls
274
280
 
@@ -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 20:00:00 #
9
+ # Updated Date: 2024.12.14 22:00:00 #
10
10
  # ================================================== #
11
11
 
12
12
  from llama_index.llms.anthropic import Anthropic
@@ -32,7 +32,12 @@ class AnthropicLLM(BaseLLM):
32
32
  self.id = "anthropic"
33
33
  self.type = [MODE_LLAMA_INDEX]
34
34
 
35
- def llama(self, window, model: ModelItem, stream: bool = False) -> LlamaBaseLLM:
35
+ def llama(
36
+ self,
37
+ window,
38
+ model: ModelItem,
39
+ stream: bool = False
40
+ ) -> LlamaBaseLLM:
36
41
  """
37
42
  Return LLM provider instance for llama
38
43
 
@@ -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 22:00:00 #
10
10
  # ================================================== #
11
11
 
12
+ from typing import Optional, List, Dict
13
+
12
14
  from langchain_openai import AzureOpenAI
13
15
  from langchain_openai import AzureChatOpenAI
14
16
 
@@ -39,7 +41,12 @@ class AzureOpenAILLM(BaseLLM):
39
41
  self.id = "azure_openai"
40
42
  self.type = [MODE_LANGCHAIN, MODE_LLAMA_INDEX, "embeddings"]
41
43
 
42
- def completion(self, window, model: ModelItem, stream: bool = False):
44
+ def completion(
45
+ self,
46
+ window,
47
+ model: ModelItem,
48
+ stream: bool = False
49
+ ):
43
50
  """
44
51
  Return LLM provider instance for completion
45
52
 
@@ -51,7 +58,12 @@ class AzureOpenAILLM(BaseLLM):
51
58
  args = self.parse_args(model.langchain)
52
59
  return AzureOpenAI(**args)
53
60
 
54
- def chat(self, window, model: ModelItem, stream: bool = False):
61
+ def chat(
62
+ self,
63
+ window,
64
+ model: ModelItem,
65
+ stream: bool = False
66
+ ):
55
67
  """
56
68
  Return LLM provider instance for chat
57
69
 
@@ -63,7 +75,12 @@ class AzureOpenAILLM(BaseLLM):
63
75
  args = self.parse_args(model.langchain)
64
76
  return AzureChatOpenAI(**args)
65
77
 
66
- def llama(self, window, model: ModelItem, stream: bool = False) -> LlamaBaseLLM:
78
+ def llama(
79
+ self,
80
+ window,
81
+ model: ModelItem,
82
+ stream: bool = False
83
+ ) -> LlamaBaseLLM:
67
84
  """
68
85
  Return LLM provider instance for llama
69
86
 
@@ -75,7 +92,11 @@ class AzureOpenAILLM(BaseLLM):
75
92
  args = self.parse_args(model.llama_index)
76
93
  return LlamaAzureOpenAI(**args)
77
94
 
78
- def get_embeddings_model(self, window, config: list = None) -> BaseEmbedding:
95
+ def get_embeddings_model(
96
+ self,
97
+ window,
98
+ config: Optional[List[Dict]] = None
99
+ ) -> BaseEmbedding:
79
100
  """
80
101
  Return provider instance for embeddings
81
102
 
@@ -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.11.21 20:00:00 #
9
+ # Updated Date: 2024.12.14 22:00:00 #
10
10
  # ================================================== #
11
11
 
12
12
  import os
13
+ from typing import Optional, List, Dict
13
14
 
14
15
  from llama_index.core.base.embeddings.base import BaseEmbedding
15
16
  from llama_index.core.llms.llm import BaseLLM as LlamaBaseLLM
@@ -30,7 +31,13 @@ class BaseLLM:
30
31
  self.type = [] # langchain, llama_index, embeddings
31
32
  self.description = ""
32
33
 
33
- def init(self, window, model: ModelItem, mode: str, sub_mode: str = None):
34
+ def init(
35
+ self,
36
+ window,
37
+ model: ModelItem,
38
+ mode: str,
39
+ sub_mode: str = None
40
+ ):
34
41
  """
35
42
  Initialize provider
36
43
 
@@ -53,7 +60,11 @@ class BaseLLM:
53
60
  except Exception as e:
54
61
  pass
55
62
 
56
- def init_embeddings(self, window, env: list):
63
+ def init_embeddings(
64
+ self,
65
+ window,
66
+ env: Optional[List[Dict]] = None
67
+ ):
57
68
  """
58
69
  Initialize embeddings provider
59
70
 
@@ -69,7 +80,10 @@ class BaseLLM:
69
80
  except Exception as e:
70
81
  pass
71
82
 
72
- def parse_args(self, options: dict) -> dict:
83
+ def parse_args(
84
+ self,
85
+ options: dict
86
+ ) -> dict:
73
87
  """
74
88
  Parse extra args
75
89
 
@@ -82,7 +96,12 @@ class BaseLLM:
82
96
  args = parse_args(options['args'])
83
97
  return args
84
98
 
85
- def completion(self, window, model: ModelItem, stream: bool = False) -> any:
99
+ def completion(
100
+ self,
101
+ window,
102
+ model: ModelItem,
103
+ stream: bool = False
104
+ ) -> any:
86
105
  """
87
106
  Return LLM provider instance for completion in langchain mode
88
107
 
@@ -93,7 +112,12 @@ class BaseLLM:
93
112
  """
94
113
  pass
95
114
 
96
- def chat(self, window, model: ModelItem, stream: bool = False) -> any:
115
+ def chat(
116
+ self,
117
+ window,
118
+ model: ModelItem,
119
+ stream: bool = False
120
+ ) -> any:
97
121
  """
98
122
  Return LLM provider instance for chat in langchain mode
99
123
 
@@ -104,7 +128,12 @@ class BaseLLM:
104
128
  """
105
129
  pass
106
130
 
107
- def llama(self, window, model: ModelItem, stream: bool = False) -> LlamaBaseLLM:
131
+ def llama(
132
+ self,
133
+ window,
134
+ model: ModelItem,
135
+ stream: bool = False
136
+ ) -> LlamaBaseLLM:
108
137
  """
109
138
  Return LLM provider instance for llama index query and chat
110
139
 
@@ -115,7 +144,12 @@ class BaseLLM:
115
144
  """
116
145
  pass
117
146
 
118
- def llama_multimodal(self, window, model: ModelItem, stream: bool = False) -> LlamaMultiModalLLM:
147
+ def llama_multimodal(
148
+ self,
149
+ window,
150
+ model: ModelItem,
151
+ stream: bool = False
152
+ ) -> LlamaMultiModalLLM:
119
153
  """
120
154
  Return multimodal LLM provider instance for llama
121
155
 
@@ -126,7 +160,11 @@ class BaseLLM:
126
160
  """
127
161
  pass
128
162
 
129
- def get_embeddings_model(self, window, config: list = None) -> BaseEmbedding:
163
+ def get_embeddings_model(
164
+ self,
165
+ window,
166
+ config: Optional[List[Dict]] = None
167
+ ) -> BaseEmbedding:
130
168
  """
131
169
  Return provider instance for embeddings
132
170
 
@@ -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 20:00:00 #
9
+ # Updated Date: 2024.12.14 22:00:00 #
10
10
  # ================================================== #
11
11
 
12
12
  from llama_index.llms.gemini import Gemini
@@ -32,7 +32,12 @@ class GoogleLLM(BaseLLM):
32
32
  self.id = "google"
33
33
  self.type = [MODE_LLAMA_INDEX]
34
34
 
35
- def llama(self, window, model: ModelItem, stream: bool = False) -> LlamaBaseLLM:
35
+ def llama(
36
+ self,
37
+ window,
38
+ model: ModelItem,
39
+ stream: bool = False
40
+ ) -> LlamaBaseLLM:
36
41
  """
37
42
  Return LLM provider instance for llama
38
43
 
@@ -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 20:00:00 #
9
+ # Updated Date: 2024.12.14 22:00:00 #
10
10
  # ================================================== #
11
11
 
12
12
  from langchain_community.llms import HuggingFaceHub
@@ -24,7 +24,12 @@ class HuggingFaceLLM(BaseLLM):
24
24
  self.id = "huggingface"
25
25
  self.type = [MODE_LANGCHAIN]
26
26
 
27
- def completion(self, window, model: ModelItem, stream: bool = False):
27
+ def completion(
28
+ self,
29
+ window,
30
+ model: ModelItem,
31
+ stream: bool = False
32
+ ):
28
33
  """
29
34
  Return LLM provider instance for completion
30
35
 
@@ -36,7 +41,12 @@ class HuggingFaceLLM(BaseLLM):
36
41
  args = self.parse_args(model.langchain)
37
42
  return HuggingFaceHub(**args)
38
43
 
39
- def chat(self, window, model: ModelItem, stream: bool = False):
44
+ def chat(
45
+ self,
46
+ window,
47
+ model: ModelItem,
48
+ stream: bool = False
49
+ ):
40
50
  """
41
51
  Return LLM provider instance for chat
42
52
 
@@ -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.11.21 20:00:00 #
9
+ # Updated Date: 2024.12.14 22:00:00 #
10
10
  # ================================================== #
11
11
 
12
12
  import os
13
+ from typing import Optional, List, Dict
13
14
 
14
15
  from pygpt_net.core.types import (
15
16
  MODE_LLAMA_INDEX,
@@ -28,7 +29,12 @@ class HuggingFaceApiLLM(BaseLLM):
28
29
  self.id = "huggingface_api"
29
30
  self.type = [MODE_LLAMA_INDEX, "embeddings"]
30
31
 
31
- def llama(self, window, model: ModelItem, stream: bool = False) -> LlamaBaseLLM:
32
+ def llama(
33
+ self,
34
+ window,
35
+ model: ModelItem,
36
+ stream: bool = False
37
+ ) -> LlamaBaseLLM:
32
38
  """
33
39
  Return LLM provider instance for llama
34
40
 
@@ -40,7 +46,11 @@ class HuggingFaceApiLLM(BaseLLM):
40
46
  args = self.parse_args(model.llama_index)
41
47
  return HuggingFaceInferenceAPI(**args)
42
48
 
43
- def get_embeddings_model(self, window, config: list = None) -> BaseEmbedding:
49
+ def get_embeddings_model(
50
+ self,
51
+ window,
52
+ config: Optional[List[Dict]] = None
53
+ ) -> BaseEmbedding:
44
54
  """
45
55
  Return provider instance for embeddings
46
56
 
@@ -55,7 +65,11 @@ class HuggingFaceApiLLM(BaseLLM):
55
65
  })
56
66
  return HuggingFaceAPIEmbedding(**args)
57
67
 
58
- def init_embeddings(self, window, env: list):
68
+ def init_embeddings(
69
+ self,
70
+ window,
71
+ env: Optional[List[Dict]] = None
72
+ ):
59
73
  """
60
74
  Initialize embeddings provider
61
75
 
@@ -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 20:00:00 #
9
+ # Updated Date: 2024.12.14 22:00:00 #
10
10
  # ================================================== #
11
11
 
12
12
  from llama_index.llms.openai_like import OpenAILike
@@ -25,7 +25,12 @@ class LocalLLM(BaseLLM):
25
25
  self.id = "local_ai"
26
26
  self.type = [MODE_LLAMA_INDEX]
27
27
 
28
- def llama(self, window, model: ModelItem, stream: bool = False) -> LlamaBaseLLM:
28
+ def llama(
29
+ self,
30
+ window,
31
+ model: ModelItem,
32
+ stream: bool = False
33
+ ) -> LlamaBaseLLM:
29
34
  """
30
35
  Return LLM provider instance for llama
31
36
 
@@ -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.11.21 20:00:00 #
9
+ # Updated Date: 2024.12.14 22:00:00 #
10
10
  # ================================================== #
11
11
 
12
12
  import os
13
+ from typing import Optional, List, Dict
13
14
 
14
15
  from langchain_community.chat_models import ChatOllama
15
16
 
@@ -33,7 +34,12 @@ class OllamaLLM(BaseLLM):
33
34
  self.id = "ollama"
34
35
  self.type = [MODE_LANGCHAIN, MODE_LLAMA_INDEX, "embeddings"]
35
36
 
36
- def completion(self, window, model: ModelItem, stream: bool = False):
37
+ def completion(
38
+ self,
39
+ window,
40
+ model: ModelItem,
41
+ stream: bool = False
42
+ ):
37
43
  """
38
44
  Return LLM provider instance for completion
39
45
 
@@ -44,7 +50,12 @@ class OllamaLLM(BaseLLM):
44
50
  """
45
51
  return None
46
52
 
47
- def chat(self, window, model: ModelItem, stream: bool = False):
53
+ def chat(
54
+ self,
55
+ window,
56
+ model: ModelItem,
57
+ stream: bool = False
58
+ ):
48
59
  """
49
60
  Return LLM provider instance for chat
50
61
 
@@ -56,7 +67,12 @@ class OllamaLLM(BaseLLM):
56
67
  args = self.parse_args(model.langchain)
57
68
  return ChatOllama(**args)
58
69
 
59
- def llama(self, window, model: ModelItem, stream: bool = False) -> LlamaBaseLLM:
70
+ def llama(
71
+ self,
72
+ window,
73
+ model: ModelItem,
74
+ stream: bool = False
75
+ ) -> LlamaBaseLLM:
60
76
  """
61
77
  Return LLM provider instance for llama
62
78
 
@@ -69,7 +85,11 @@ class OllamaLLM(BaseLLM):
69
85
  args = self.parse_args(model.llama_index)
70
86
  return Ollama(**args)
71
87
 
72
- def get_embeddings_model(self, window, config: list = None) -> BaseEmbedding:
88
+ def get_embeddings_model(
89
+ self,
90
+ window,
91
+ config: Optional[List[Dict]] = None
92
+ ) -> BaseEmbedding:
73
93
  """
74
94
  Return provider instance for embeddings
75
95
 
@@ -84,7 +104,11 @@ class OllamaLLM(BaseLLM):
84
104
  })
85
105
  return OllamaEmbedding(**args)
86
106
 
87
- def init_embeddings(self, window, env: list):
107
+ def init_embeddings(
108
+ self,
109
+ window,
110
+ env: Optional[List[Dict]] = None
111
+ ):
88
112
  """
89
113
  Initialize embeddings provider
90
114
 
@@ -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 22:00:00 #
10
10
  # ================================================== #
11
11
 
12
+ from typing import Optional, List, Dict
13
+
12
14
  from langchain_openai import OpenAI
13
15
  from langchain_openai import ChatOpenAI
14
16
 
@@ -33,7 +35,12 @@ class OpenAILLM(BaseLLM):
33
35
  self.id = "openai"
34
36
  self.type = [MODE_LANGCHAIN, MODE_LLAMA_INDEX, "embeddings"]
35
37
 
36
- def completion(self, window, model: ModelItem, stream: bool = False):
38
+ def completion(
39
+ self,
40
+ window,
41
+ model: ModelItem,
42
+ stream: bool = False
43
+ ):
37
44
  """
38
45
  Return LLM provider instance for completion
39
46
 
@@ -45,7 +52,12 @@ class OpenAILLM(BaseLLM):
45
52
  args = self.parse_args(model.langchain)
46
53
  return OpenAI(**args)
47
54
 
48
- def chat(self, window, model: ModelItem, stream: bool = False):
55
+ def chat(
56
+ self,
57
+ window,
58
+ model: ModelItem,
59
+ stream: bool = False
60
+ ):
49
61
  """
50
62
  Return LLM provider instance for chat
51
63
 
@@ -57,7 +69,12 @@ class OpenAILLM(BaseLLM):
57
69
  args = self.parse_args(model.langchain)
58
70
  return ChatOpenAI(**args)
59
71
 
60
- def llama(self, window, model: ModelItem, stream: bool = False) -> LlamaBaseLLM:
72
+ def llama(
73
+ self,
74
+ window,
75
+ model: ModelItem,
76
+ stream: bool = False
77
+ ) -> LlamaBaseLLM:
61
78
  """
62
79
  Return LLM provider instance for llama
63
80
 
@@ -69,7 +86,12 @@ class OpenAILLM(BaseLLM):
69
86
  args = self.parse_args(model.llama_index)
70
87
  return LlamaOpenAI(**args)
71
88
 
72
- def llama_multimodal(self, window, model: ModelItem, stream: bool = False) -> LlamaMultiModalLLM:
89
+ def llama_multimodal(
90
+ self,
91
+ window,
92
+ model: ModelItem,
93
+ stream: bool = False
94
+ ) -> LlamaMultiModalLLM:
73
95
  """
74
96
  Return multimodal LLM provider instance for llama
75
97
 
@@ -81,7 +103,11 @@ class OpenAILLM(BaseLLM):
81
103
  args = self.parse_args(model.llama_index)
82
104
  return LlamaOpenAIMultiModal(**args)
83
105
 
84
- def get_embeddings_model(self, window, config: list = None) -> BaseEmbedding:
106
+ def get_embeddings_model(
107
+ self,
108
+ window,
109
+ config: Optional[List[Dict]] = None
110
+ ) -> BaseEmbedding:
85
111
  """
86
112
  Return provider instance for embeddings
87
113