pygpt-net 2.4.41__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 (139) hide show
  1. CHANGELOG.md +8 -0
  2. README.md +135 -70
  3. pygpt_net/CHANGELOG.txt +8 -0
  4. pygpt_net/__init__.py +3 -3
  5. pygpt_net/app.py +3 -1
  6. pygpt_net/controller/audio/__init__.py +2 -2
  7. pygpt_net/controller/camera.py +1 -10
  8. pygpt_net/controller/chat/audio.py +2 -2
  9. pygpt_net/controller/config/placeholder.py +15 -1
  10. pygpt_net/controller/ui/mode.py +16 -21
  11. pygpt_net/core/audio/__init__.py +4 -1
  12. pygpt_net/core/audio/whisper.py +37 -0
  13. pygpt_net/core/bridge/worker.py +2 -2
  14. pygpt_net/core/debug/events.py +22 -10
  15. pygpt_net/core/debug/tabs.py +6 -3
  16. pygpt_net/core/history.py +3 -2
  17. pygpt_net/core/idx/__init__.py +16 -4
  18. pygpt_net/core/idx/chat.py +15 -5
  19. pygpt_net/core/idx/indexing.py +24 -8
  20. pygpt_net/core/installer.py +2 -4
  21. pygpt_net/core/models.py +62 -17
  22. pygpt_net/core/modes.py +11 -13
  23. pygpt_net/core/notepad.py +4 -4
  24. pygpt_net/core/plugins.py +27 -16
  25. pygpt_net/core/presets.py +20 -9
  26. pygpt_net/core/profile.py +11 -3
  27. pygpt_net/core/render/web/parser.py +3 -1
  28. pygpt_net/core/settings.py +5 -5
  29. pygpt_net/core/tabs/tab.py +10 -2
  30. pygpt_net/core/tokens.py +8 -6
  31. pygpt_net/core/web/__init__.py +105 -0
  32. pygpt_net/core/{web.py → web/helpers.py} +93 -67
  33. pygpt_net/data/config/config.json +3 -3
  34. pygpt_net/data/config/models.json +3 -3
  35. pygpt_net/data/config/modes.json +3 -3
  36. pygpt_net/data/locale/locale.en.ini +1 -0
  37. pygpt_net/data/locale/plugin.cmd_web.en.ini +2 -0
  38. pygpt_net/data/locale/plugin.mailer.en.ini +21 -0
  39. pygpt_net/item/ctx.py +13 -2
  40. pygpt_net/plugin/agent/__init__.py +7 -2
  41. pygpt_net/plugin/audio_output/__init__.py +6 -1
  42. pygpt_net/plugin/base/plugin.py +58 -26
  43. pygpt_net/plugin/base/worker.py +20 -17
  44. pygpt_net/plugin/cmd_history/config.py +2 -2
  45. pygpt_net/plugin/cmd_web/__init__.py +3 -4
  46. pygpt_net/plugin/cmd_web/config.py +71 -3
  47. pygpt_net/plugin/cmd_web/websearch.py +20 -12
  48. pygpt_net/plugin/cmd_web/worker.py +67 -4
  49. pygpt_net/plugin/idx_llama_index/config.py +3 -3
  50. pygpt_net/plugin/mailer/__init__.py +123 -0
  51. pygpt_net/plugin/mailer/config.py +149 -0
  52. pygpt_net/plugin/mailer/runner.py +285 -0
  53. pygpt_net/plugin/mailer/worker.py +123 -0
  54. pygpt_net/provider/agents/base.py +5 -2
  55. pygpt_net/provider/agents/openai.py +4 -2
  56. pygpt_net/provider/agents/openai_assistant.py +4 -2
  57. pygpt_net/provider/agents/planner.py +4 -2
  58. pygpt_net/provider/agents/react.py +4 -2
  59. pygpt_net/provider/audio_output/openai_tts.py +5 -11
  60. pygpt_net/provider/core/assistant/base.py +5 -3
  61. pygpt_net/provider/core/assistant/json_file.py +8 -5
  62. pygpt_net/provider/core/assistant_file/base.py +4 -3
  63. pygpt_net/provider/core/assistant_file/db_sqlite/__init__.py +4 -3
  64. pygpt_net/provider/core/assistant_file/db_sqlite/storage.py +3 -2
  65. pygpt_net/provider/core/assistant_store/base.py +6 -4
  66. pygpt_net/provider/core/assistant_store/db_sqlite/__init__.py +5 -4
  67. pygpt_net/provider/core/assistant_store/db_sqlite/storage.py +5 -3
  68. pygpt_net/provider/core/attachment/base.py +5 -3
  69. pygpt_net/provider/core/attachment/json_file.py +4 -3
  70. pygpt_net/provider/core/calendar/base.py +5 -3
  71. pygpt_net/provider/core/calendar/db_sqlite/__init__.py +6 -5
  72. pygpt_net/provider/core/calendar/db_sqlite/storage.py +5 -4
  73. pygpt_net/provider/core/config/base.py +8 -6
  74. pygpt_net/provider/core/config/json_file.py +9 -7
  75. pygpt_net/provider/core/ctx/base.py +27 -25
  76. pygpt_net/provider/core/ctx/db_sqlite/__init__.py +51 -35
  77. pygpt_net/provider/core/ctx/db_sqlite/storage.py +42 -31
  78. pygpt_net/provider/core/ctx/db_sqlite/utils.py +11 -9
  79. pygpt_net/provider/core/index/base.py +129 -23
  80. pygpt_net/provider/core/index/db_sqlite/__init__.py +130 -23
  81. pygpt_net/provider/core/index/db_sqlite/storage.py +130 -23
  82. pygpt_net/provider/core/index/db_sqlite/utils.py +4 -2
  83. pygpt_net/provider/core/mode/base.py +5 -3
  84. pygpt_net/provider/core/mode/json_file.py +7 -6
  85. pygpt_net/provider/core/model/base.py +6 -4
  86. pygpt_net/provider/core/model/json_file.py +9 -7
  87. pygpt_net/provider/core/notepad/base.py +5 -3
  88. pygpt_net/provider/core/notepad/db_sqlite/__init__.py +5 -4
  89. pygpt_net/provider/core/notepad/db_sqlite/storage.py +4 -3
  90. pygpt_net/provider/core/plugin_preset/base.py +4 -2
  91. pygpt_net/provider/core/plugin_preset/json_file.py +5 -3
  92. pygpt_net/provider/core/preset/base.py +6 -4
  93. pygpt_net/provider/core/preset/json_file.py +9 -9
  94. pygpt_net/provider/core/prompt/base.py +6 -3
  95. pygpt_net/provider/core/prompt/json_file.py +11 -6
  96. pygpt_net/provider/gpt/assistants.py +15 -6
  97. pygpt_net/provider/gpt/audio.py +5 -5
  98. pygpt_net/provider/gpt/chat.py +7 -5
  99. pygpt_net/provider/gpt/completion.py +8 -4
  100. pygpt_net/provider/gpt/image.py +3 -3
  101. pygpt_net/provider/gpt/store.py +46 -12
  102. pygpt_net/provider/gpt/vision.py +16 -11
  103. pygpt_net/provider/llms/anthropic.py +7 -2
  104. pygpt_net/provider/llms/azure_openai.py +26 -5
  105. pygpt_net/provider/llms/base.py +47 -9
  106. pygpt_net/provider/llms/google.py +7 -2
  107. pygpt_net/provider/llms/hugging_face.py +13 -3
  108. pygpt_net/provider/llms/hugging_face_api.py +18 -4
  109. pygpt_net/provider/llms/local.py +7 -2
  110. pygpt_net/provider/llms/ollama.py +30 -6
  111. pygpt_net/provider/llms/openai.py +32 -6
  112. pygpt_net/provider/vector_stores/__init__.py +45 -14
  113. pygpt_net/provider/vector_stores/base.py +35 -8
  114. pygpt_net/provider/vector_stores/chroma.py +13 -3
  115. pygpt_net/provider/vector_stores/ctx_attachment.py +31 -12
  116. pygpt_net/provider/vector_stores/elasticsearch.py +12 -3
  117. pygpt_net/provider/vector_stores/pinecode.py +12 -3
  118. pygpt_net/provider/vector_stores/redis.py +12 -3
  119. pygpt_net/provider/vector_stores/simple.py +12 -3
  120. pygpt_net/provider/vector_stores/temp.py +16 -4
  121. pygpt_net/provider/web/base.py +10 -3
  122. pygpt_net/provider/web/google_custom_search.py +9 -3
  123. pygpt_net/provider/web/microsoft_bing.py +9 -3
  124. pygpt_net/tools/__init__.py +13 -5
  125. pygpt_net/tools/audio_transcriber/__init__.py +4 -3
  126. pygpt_net/tools/base.py +15 -8
  127. pygpt_net/tools/code_interpreter/__init__.py +4 -3
  128. pygpt_net/tools/html_canvas/__init__.py +4 -3
  129. pygpt_net/tools/image_viewer/__init__.py +10 -4
  130. pygpt_net/tools/indexer/__init__.py +8 -7
  131. pygpt_net/tools/media_player/__init__.py +4 -3
  132. pygpt_net/tools/text_editor/__init__.py +36 -10
  133. pygpt_net/ui/layout/chat/output.py +2 -2
  134. pygpt_net/ui/menu/audio.py +12 -1
  135. {pygpt_net-2.4.41.dist-info → pygpt_net-2.4.42.dist-info}/METADATA +136 -71
  136. {pygpt_net-2.4.41.dist-info → pygpt_net-2.4.42.dist-info}/RECORD +139 -132
  137. {pygpt_net-2.4.41.dist-info → pygpt_net-2.4.42.dist-info}/LICENSE +0 -0
  138. {pygpt_net-2.4.41.dist-info → pygpt_net-2.4.42.dist-info}/WHEEL +0 -0
  139. {pygpt_net-2.4.41.dist-info → pygpt_net-2.4.42.dist-info}/entry_points.txt +0 -0
@@ -6,9 +6,11 @@
6
6
  # GitHub: https://github.com/szczyglis-dev/py-gpt #
7
7
  # MIT License #
8
8
  # Created By : Marcin Szczygliński #
9
- # Updated Date: 2024.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
 
@@ -6,11 +6,13 @@
6
6
  # GitHub: https://github.com/szczyglis-dev/py-gpt #
7
7
  # MIT License #
8
8
  # Created By : Marcin Szczygliński #
9
- # Updated Date: 2024.11.23 00:00:00 #
9
+ # Updated Date: 2024.12.14 22:00:00 #
10
10
  # ================================================== #
11
11
 
12
12
  import hashlib
13
+ from typing import Optional, Tuple, List
13
14
 
15
+ from llama_index.core.indices.service_context import ServiceContext
14
16
  from llama_index.core.indices.base import BaseIndex
15
17
  from llama_index.core.indices.vector_store.base import VectorStoreIndex
16
18
 
@@ -31,7 +33,7 @@ class Storage:
31
33
  self.indexes = {}
32
34
  self.tmp_storage = TempProvider(window=window)
33
35
 
34
- def get_storage(self) -> BaseStore or None:
36
+ def get_storage(self) -> Optional[BaseStore]:
35
37
  """
36
38
  Get current vector store provider
37
39
 
@@ -44,7 +46,7 @@ class Storage:
44
46
  return None
45
47
  return self.storages[current]
46
48
 
47
- def get_tmp_storage(self) -> BaseStore or None:
49
+ def get_tmp_storage(self) -> Optional[TempProvider]:
48
50
  """
49
51
  Get temp vector store provider
50
52
 
@@ -52,16 +54,19 @@ class Storage:
52
54
  """
53
55
  return self.tmp_storage
54
56
 
55
- def get_ctx_idx_storage(self, path: str) -> BaseStore or None:
57
+ def get_ctx_idx_storage(self, path: str) -> CtxAttachmentProvider:
56
58
  """
57
59
  Get temp vector store provider
58
60
 
59
61
  :param path: Path to index on disk
60
62
  :return: vector store provider instance
61
63
  """
62
- return CtxAttachmentProvider(window=self.window, path=path)
64
+ return CtxAttachmentProvider(
65
+ window=self.window,
66
+ path=path
67
+ )
63
68
 
64
- def register(self, name: str, storage=None):
69
+ def register(self, name: str, storage: BaseStore):
65
70
  """
66
71
  Register vector store provider
67
72
 
@@ -71,7 +76,7 @@ class Storage:
71
76
  storage.attach(window=self.window)
72
77
  self.storages[name] = storage
73
78
 
74
- def get_ids(self) -> list:
79
+ def get_ids(self) -> List[str]:
75
80
  """
76
81
  Return all vector store providers IDs
77
82
 
@@ -79,7 +84,7 @@ class Storage:
79
84
  """
80
85
  return list(self.storages.keys())
81
86
 
82
- def exists(self, id: str = None) -> bool:
87
+ def exists(self, id: Optional[str] = None) -> bool:
83
88
  """
84
89
  Check if index exists
85
90
 
@@ -102,7 +107,11 @@ class Storage:
102
107
  raise Exception('Storage engine not found!')
103
108
  storage.create(id)
104
109
 
105
- def get(self, id: str, service_context=None) -> BaseIndex:
110
+ def get(
111
+ self,
112
+ id: str,
113
+ service_context: Optional[ServiceContext]
114
+ ) -> BaseIndex:
106
115
  """
107
116
  Get index instance
108
117
 
@@ -118,7 +127,11 @@ class Storage:
118
127
  service_context=service_context,
119
128
  )
120
129
 
121
- def store(self, id: str, index: BaseIndex = None):
130
+ def store(
131
+ self,
132
+ id: str,
133
+ index: Optional[BaseIndex] = None
134
+ ):
122
135
  """
123
136
  Store index
124
137
 
@@ -173,7 +186,11 @@ class Storage:
173
186
  doc_id=doc_id,
174
187
  )
175
188
 
176
- def get_tmp(self, identifier: str, service_context=None) -> (str, BaseIndex):
189
+ def get_tmp(
190
+ self,
191
+ identifier: str,
192
+ service_context: Optional[ServiceContext] = None
193
+ ) -> Tuple[str, BaseIndex]:
177
194
  """
178
195
  Get tmp index instance
179
196
 
@@ -191,7 +208,11 @@ class Storage:
191
208
  service_context=service_context,
192
209
  )
193
210
 
194
- def store_tmp(self, id: str, index: BaseIndex = None):
211
+ def store_tmp(
212
+ self,
213
+ id: str,
214
+ index: Optional[BaseIndex] = None
215
+ ):
195
216
  """
196
217
  Store index
197
218
 
@@ -228,7 +249,11 @@ class Storage:
228
249
  raise Exception('Storage engine not found!')
229
250
  storage.clean(id)
230
251
 
231
- def get_ctx_idx(self, path: str, service_context=None) -> (str, BaseIndex):
252
+ def get_ctx_idx(
253
+ self,
254
+ path: str,
255
+ service_context: Optional[ServiceContext] = None
256
+ ) -> BaseIndex:
232
257
  """
233
258
  Get context index instance
234
259
 
@@ -241,10 +266,15 @@ class Storage:
241
266
  if storage is None:
242
267
  raise Exception('Storage engine not found!')
243
268
  return storage.get(
269
+ id="",
244
270
  service_context=service_context,
245
271
  )
246
272
 
247
- def store_ctx_idx(self, path: str, index: BaseIndex = None):
273
+ def store_ctx_idx(
274
+ self,
275
+ path: str,
276
+ index: Optional[BaseIndex] = None
277
+ ):
248
278
  """
249
279
  Store context index
250
280
 
@@ -255,6 +285,7 @@ class Storage:
255
285
  if storage is None:
256
286
  raise Exception('Storage engine not found!')
257
287
  storage.store(
288
+ id="",
258
289
  index=index,
259
290
  )
260
291