pygpt-net 2.4.41__py3-none-any.whl → 2.4.44__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- CHANGELOG.md +19 -0
- README.md +151 -71
- pygpt_net/CHANGELOG.txt +19 -0
- pygpt_net/__init__.py +3 -3
- pygpt_net/app.py +3 -1
- pygpt_net/controller/attachment.py +31 -3
- pygpt_net/controller/audio/__init__.py +2 -2
- pygpt_net/controller/camera.py +1 -10
- pygpt_net/controller/chat/attachment.py +37 -36
- pygpt_net/controller/chat/audio.py +2 -2
- pygpt_net/controller/config/placeholder.py +20 -4
- pygpt_net/controller/idx/common.py +7 -3
- pygpt_net/controller/ui/mode.py +16 -21
- pygpt_net/core/attachments/__init__.py +7 -2
- pygpt_net/core/attachments/context.py +52 -34
- pygpt_net/core/audio/__init__.py +4 -1
- pygpt_net/core/audio/whisper.py +37 -0
- pygpt_net/core/bridge/worker.py +2 -2
- pygpt_net/core/db/__init__.py +2 -1
- pygpt_net/core/debug/attachments.py +1 -0
- pygpt_net/core/debug/events.py +22 -10
- pygpt_net/core/debug/tabs.py +6 -3
- pygpt_net/core/history.py +3 -2
- pygpt_net/core/idx/__init__.py +23 -6
- pygpt_net/core/idx/chat.py +15 -5
- pygpt_net/core/idx/indexing.py +47 -14
- pygpt_net/core/idx/ui/__init__.py +22 -0
- pygpt_net/core/idx/ui/loaders.py +217 -0
- pygpt_net/core/installer.py +2 -4
- pygpt_net/core/models.py +62 -17
- pygpt_net/core/modes.py +11 -13
- pygpt_net/core/notepad.py +4 -4
- pygpt_net/core/plugins.py +27 -16
- pygpt_net/core/presets.py +20 -9
- pygpt_net/core/profile.py +11 -3
- pygpt_net/core/render/web/parser.py +3 -1
- pygpt_net/core/settings.py +5 -5
- pygpt_net/core/tabs/tab.py +10 -2
- pygpt_net/core/tokens.py +8 -6
- pygpt_net/core/web/__init__.py +105 -0
- pygpt_net/core/{web.py → web/helpers.py} +93 -67
- pygpt_net/data/config/config.json +4 -4
- pygpt_net/data/config/models.json +3 -3
- pygpt_net/data/config/modes.json +3 -3
- pygpt_net/data/config/settings.json +5 -5
- pygpt_net/data/locale/locale.de.ini +3 -3
- pygpt_net/data/locale/locale.en.ini +12 -9
- pygpt_net/data/locale/locale.es.ini +3 -3
- pygpt_net/data/locale/locale.fr.ini +3 -3
- pygpt_net/data/locale/locale.it.ini +3 -3
- pygpt_net/data/locale/locale.pl.ini +3 -3
- pygpt_net/data/locale/locale.uk.ini +3 -3
- pygpt_net/data/locale/locale.zh.ini +3 -3
- pygpt_net/data/locale/plugin.cmd_web.en.ini +2 -0
- pygpt_net/data/locale/plugin.mailer.en.ini +21 -0
- pygpt_net/item/attachment.py +5 -1
- pygpt_net/item/ctx.py +111 -3
- pygpt_net/migrations/Version20241215110000.py +25 -0
- pygpt_net/migrations/__init__.py +3 -1
- pygpt_net/plugin/agent/__init__.py +7 -2
- pygpt_net/plugin/audio_output/__init__.py +6 -1
- pygpt_net/plugin/base/plugin.py +58 -26
- pygpt_net/plugin/base/worker.py +20 -17
- pygpt_net/plugin/cmd_files/__init__.py +3 -2
- pygpt_net/plugin/cmd_history/config.py +2 -2
- pygpt_net/plugin/cmd_web/__init__.py +3 -4
- pygpt_net/plugin/cmd_web/config.py +71 -3
- pygpt_net/plugin/cmd_web/websearch.py +20 -12
- pygpt_net/plugin/cmd_web/worker.py +67 -4
- pygpt_net/plugin/idx_llama_index/config.py +3 -3
- pygpt_net/plugin/mailer/__init__.py +123 -0
- pygpt_net/plugin/mailer/config.py +149 -0
- pygpt_net/plugin/mailer/runner.py +285 -0
- pygpt_net/plugin/mailer/worker.py +123 -0
- pygpt_net/provider/agents/base.py +5 -2
- pygpt_net/provider/agents/openai.py +4 -2
- pygpt_net/provider/agents/openai_assistant.py +4 -2
- pygpt_net/provider/agents/planner.py +4 -2
- pygpt_net/provider/agents/react.py +4 -2
- pygpt_net/provider/audio_output/openai_tts.py +5 -11
- pygpt_net/provider/core/assistant/base.py +5 -3
- pygpt_net/provider/core/assistant/json_file.py +8 -5
- pygpt_net/provider/core/assistant_file/base.py +4 -3
- pygpt_net/provider/core/assistant_file/db_sqlite/__init__.py +4 -3
- pygpt_net/provider/core/assistant_file/db_sqlite/storage.py +3 -2
- pygpt_net/provider/core/assistant_store/base.py +6 -4
- pygpt_net/provider/core/assistant_store/db_sqlite/__init__.py +5 -4
- pygpt_net/provider/core/assistant_store/db_sqlite/storage.py +5 -3
- pygpt_net/provider/core/attachment/base.py +5 -3
- pygpt_net/provider/core/attachment/json_file.py +7 -3
- pygpt_net/provider/core/calendar/base.py +5 -3
- pygpt_net/provider/core/calendar/db_sqlite/__init__.py +6 -5
- pygpt_net/provider/core/calendar/db_sqlite/storage.py +5 -4
- pygpt_net/provider/core/config/base.py +8 -6
- pygpt_net/provider/core/config/json_file.py +9 -7
- pygpt_net/provider/core/config/patch.py +6 -0
- pygpt_net/provider/core/ctx/base.py +27 -25
- pygpt_net/provider/core/ctx/db_sqlite/__init__.py +51 -35
- pygpt_net/provider/core/ctx/db_sqlite/storage.py +92 -38
- pygpt_net/provider/core/ctx/db_sqlite/utils.py +37 -11
- pygpt_net/provider/core/index/base.py +129 -23
- pygpt_net/provider/core/index/db_sqlite/__init__.py +130 -23
- pygpt_net/provider/core/index/db_sqlite/storage.py +130 -23
- pygpt_net/provider/core/index/db_sqlite/utils.py +4 -2
- pygpt_net/provider/core/mode/base.py +5 -3
- pygpt_net/provider/core/mode/json_file.py +7 -6
- pygpt_net/provider/core/model/base.py +6 -4
- pygpt_net/provider/core/model/json_file.py +9 -7
- pygpt_net/provider/core/notepad/base.py +5 -3
- pygpt_net/provider/core/notepad/db_sqlite/__init__.py +5 -4
- pygpt_net/provider/core/notepad/db_sqlite/storage.py +4 -3
- pygpt_net/provider/core/plugin_preset/base.py +4 -2
- pygpt_net/provider/core/plugin_preset/json_file.py +5 -3
- pygpt_net/provider/core/preset/base.py +6 -4
- pygpt_net/provider/core/preset/json_file.py +9 -9
- pygpt_net/provider/core/prompt/base.py +6 -3
- pygpt_net/provider/core/prompt/json_file.py +11 -6
- pygpt_net/provider/gpt/assistants.py +15 -6
- pygpt_net/provider/gpt/audio.py +5 -5
- pygpt_net/provider/gpt/chat.py +7 -5
- pygpt_net/provider/gpt/completion.py +8 -4
- pygpt_net/provider/gpt/image.py +3 -3
- pygpt_net/provider/gpt/store.py +46 -12
- pygpt_net/provider/gpt/vision.py +16 -11
- pygpt_net/provider/llms/anthropic.py +7 -2
- pygpt_net/provider/llms/azure_openai.py +26 -5
- pygpt_net/provider/llms/base.py +47 -9
- pygpt_net/provider/llms/google.py +7 -2
- pygpt_net/provider/llms/hugging_face.py +13 -3
- pygpt_net/provider/llms/hugging_face_api.py +18 -4
- pygpt_net/provider/llms/local.py +7 -2
- pygpt_net/provider/llms/ollama.py +30 -6
- pygpt_net/provider/llms/openai.py +32 -6
- pygpt_net/provider/loaders/base.py +14 -0
- pygpt_net/provider/loaders/hub/yt/base.py +5 -0
- pygpt_net/provider/loaders/web_database.py +13 -5
- pygpt_net/provider/loaders/web_github_issues.py +5 -1
- pygpt_net/provider/loaders/web_google_calendar.py +9 -1
- pygpt_net/provider/loaders/web_google_docs.py +6 -1
- pygpt_net/provider/loaders/web_google_drive.py +10 -1
- pygpt_net/provider/loaders/web_google_gmail.py +2 -1
- pygpt_net/provider/loaders/web_google_keep.py +5 -1
- pygpt_net/provider/loaders/web_google_sheets.py +5 -1
- pygpt_net/provider/loaders/web_microsoft_onedrive.py +15 -1
- pygpt_net/provider/loaders/web_page.py +4 -2
- pygpt_net/provider/loaders/web_rss.py +2 -1
- pygpt_net/provider/loaders/web_sitemap.py +2 -1
- pygpt_net/provider/loaders/web_twitter.py +4 -2
- pygpt_net/provider/loaders/web_yt.py +17 -2
- pygpt_net/provider/vector_stores/__init__.py +45 -14
- pygpt_net/provider/vector_stores/base.py +35 -8
- pygpt_net/provider/vector_stores/chroma.py +13 -3
- pygpt_net/provider/vector_stores/ctx_attachment.py +32 -13
- pygpt_net/provider/vector_stores/elasticsearch.py +12 -3
- pygpt_net/provider/vector_stores/pinecode.py +12 -3
- pygpt_net/provider/vector_stores/redis.py +12 -3
- pygpt_net/provider/vector_stores/simple.py +12 -3
- pygpt_net/provider/vector_stores/temp.py +16 -4
- pygpt_net/provider/web/base.py +10 -3
- pygpt_net/provider/web/google_custom_search.py +9 -3
- pygpt_net/provider/web/microsoft_bing.py +9 -3
- pygpt_net/tools/__init__.py +13 -5
- pygpt_net/tools/audio_transcriber/__init__.py +4 -3
- pygpt_net/tools/base.py +15 -8
- pygpt_net/tools/code_interpreter/__init__.py +4 -3
- pygpt_net/tools/html_canvas/__init__.py +4 -3
- pygpt_net/tools/image_viewer/__init__.py +10 -4
- pygpt_net/tools/indexer/__init__.py +15 -46
- pygpt_net/tools/indexer/ui/web.py +20 -78
- pygpt_net/tools/media_player/__init__.py +4 -3
- pygpt_net/tools/text_editor/__init__.py +36 -10
- pygpt_net/ui/layout/chat/output.py +2 -2
- pygpt_net/ui/layout/ctx/ctx_list.py +86 -18
- pygpt_net/ui/menu/audio.py +12 -1
- pygpt_net/ui/widget/dialog/url.py +151 -14
- pygpt_net/ui/widget/element/group.py +15 -2
- pygpt_net/ui/widget/lists/context.py +23 -9
- pygpt_net/utils.py +1 -1
- {pygpt_net-2.4.41.dist-info → pygpt_net-2.4.44.dist-info}/METADATA +152 -72
- {pygpt_net-2.4.41.dist-info → pygpt_net-2.4.44.dist-info}/RECORD +183 -173
- {pygpt_net-2.4.41.dist-info → pygpt_net-2.4.44.dist-info}/LICENSE +0 -0
- {pygpt_net-2.4.41.dist-info → pygpt_net-2.4.44.dist-info}/WHEEL +0 -0
- {pygpt_net-2.4.41.dist-info → pygpt_net-2.4.44.dist-info}/entry_points.txt +0 -0
@@ -6,9 +6,11 @@
|
|
6
6
|
# GitHub: https://github.com/szczyglis-dev/py-gpt #
|
7
7
|
# MIT License #
|
8
8
|
# Created By : Marcin Szczygliński #
|
9
|
-
# Updated Date: 2024.
|
9
|
+
# Updated Date: 2024.12.14 22:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
|
12
|
+
from typing import Optional, 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(
|
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(
|
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(
|
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(
|
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
|
|
pygpt_net/provider/llms/base.py
CHANGED
@@ -6,10 +6,11 @@
|
|
6
6
|
# GitHub: https://github.com/szczyglis-dev/py-gpt #
|
7
7
|
# MIT License #
|
8
8
|
# Created By : Marcin Szczygliński #
|
9
|
-
# Updated Date: 2024.
|
9
|
+
# Updated Date: 2024.12.14 22:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
|
12
12
|
import os
|
13
|
+
from typing import Optional, List, 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(
|
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(
|
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(
|
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(
|
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(
|
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(
|
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(
|
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(
|
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.
|
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(
|
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.
|
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(
|
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(
|
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.
|
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(
|
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(
|
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(
|
68
|
+
def init_embeddings(
|
69
|
+
self,
|
70
|
+
window,
|
71
|
+
env: Optional[List[Dict]] = None
|
72
|
+
):
|
59
73
|
"""
|
60
74
|
Initialize embeddings provider
|
61
75
|
|
pygpt_net/provider/llms/local.py
CHANGED
@@ -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.
|
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(
|
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.
|
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(
|
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(
|
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(
|
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(
|
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(
|
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.
|
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(
|
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(
|
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(
|
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(
|
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(
|
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
|
|
@@ -22,7 +22,9 @@ class BaseLoader:
|
|
22
22
|
self.instructions = [] # list of instructions for 'web_index' command for how to handle this type
|
23
23
|
self.args = {} # custom keyword arguments
|
24
24
|
self.init_args = {} # initial keyword arguments
|
25
|
+
self.init_args_labels = {}
|
25
26
|
self.init_args_types = {}
|
27
|
+
self.init_args_desc = {}
|
26
28
|
self.allow_compiled = True # allow in compiled and Snap versions
|
27
29
|
# This is required due to some readers may require Python environment to install additional packages
|
28
30
|
|
@@ -42,6 +44,18 @@ class BaseLoader:
|
|
42
44
|
"""
|
43
45
|
self.args = args
|
44
46
|
|
47
|
+
def explode(self, value: str) -> list:
|
48
|
+
"""
|
49
|
+
Explode list from string
|
50
|
+
|
51
|
+
:param value: value string
|
52
|
+
:return: list
|
53
|
+
"""
|
54
|
+
if value:
|
55
|
+
items = value.split(",")
|
56
|
+
return [item.strip() for item in items]
|
57
|
+
return []
|
58
|
+
|
45
59
|
def get_args(self):
|
46
60
|
"""
|
47
61
|
Prepare keyword arguments for reader init method
|
@@ -15,6 +15,7 @@ class YoutubeTranscriptReader(BasePydanticReader):
|
|
15
15
|
"""Youtube Transcript reader."""
|
16
16
|
|
17
17
|
is_remote: bool = True
|
18
|
+
languages: List[str] = ["en"]
|
18
19
|
|
19
20
|
@classmethod
|
20
21
|
def class_name(cls) -> str:
|
@@ -34,6 +35,10 @@ class YoutubeTranscriptReader(BasePydanticReader):
|
|
34
35
|
for which transcripts are to be read.
|
35
36
|
|
36
37
|
"""
|
38
|
+
languages = self.languages
|
39
|
+
if not languages:
|
40
|
+
languages = ["en"]
|
41
|
+
|
37
42
|
results = []
|
38
43
|
for link in ytlinks:
|
39
44
|
video_id = self._extract_video_id(link)
|
@@ -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.
|
9
|
+
# Updated Date: 2024.12.16 01:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
|
12
12
|
import json
|
@@ -30,14 +30,16 @@ class Loader(BaseLoader):
|
|
30
30
|
"args": {
|
31
31
|
"query": {
|
32
32
|
"type": "str",
|
33
|
+
"label": "SQL query",
|
34
|
+
"description": "SQL query to read data from database, e.g. SELECT * FROM table",
|
33
35
|
},
|
34
36
|
},
|
35
37
|
}
|
36
38
|
}
|
37
39
|
]
|
38
40
|
self.init_args = {
|
39
|
-
"sql_database": None,
|
40
|
-
"engine": None,
|
41
|
+
# "sql_database": None,
|
42
|
+
# "engine": None,
|
41
43
|
"uri": None,
|
42
44
|
"scheme": None,
|
43
45
|
"host": None,
|
@@ -47,8 +49,8 @@ class Loader(BaseLoader):
|
|
47
49
|
"dbname": None,
|
48
50
|
}
|
49
51
|
self.init_args_types = {
|
50
|
-
"sql_database": "str",
|
51
|
-
"engine": "str",
|
52
|
+
# "sql_database": "str",
|
53
|
+
# "engine": "str",
|
52
54
|
"uri": "str",
|
53
55
|
"scheme": "str",
|
54
56
|
"host": "str",
|
@@ -57,6 +59,12 @@ class Loader(BaseLoader):
|
|
57
59
|
"password": "str",
|
58
60
|
"dbname": "str",
|
59
61
|
}
|
62
|
+
self.init_args_desc = {
|
63
|
+
# "sql_database": "str",
|
64
|
+
# "engine": "str",
|
65
|
+
"uri": "You can provide a single URI in the form of: {scheme}://{user}:{password}@{host}:{port}/{dbname}, "
|
66
|
+
"or you can provide each field manually:",
|
67
|
+
}
|
60
68
|
|
61
69
|
def get(self) -> BaseReader:
|
62
70
|
"""
|
@@ -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.
|
9
|
+
# Updated Date: 2024.12.16 01:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
|
12
12
|
import json
|
@@ -103,8 +103,12 @@ class Loader(BaseLoader):
|
|
103
103
|
if "label_filters_include" in kwargs and kwargs.get("label_filters_include"):
|
104
104
|
if isinstance(kwargs.get("label_filters_include"), list):
|
105
105
|
args["label_filters_include"] = kwargs.get("label_filters_include")
|
106
|
+
elif isinstance(kwargs.get("label_filters_include"), str):
|
107
|
+
args["label_filters_include"] = self.explode(kwargs.get("label_filters_include"))
|
106
108
|
if "label_filters_exclude" in kwargs and kwargs.get("label_filters_exclude"):
|
107
109
|
if isinstance(kwargs.get("label_filters_exclude"), list):
|
108
110
|
args["label_filters_exclude"] = kwargs.get("label_filters_exclude")
|
111
|
+
elif isinstance(kwargs.get("label_filters_exclude"), str):
|
112
|
+
args["label_filters_exclude"] = self.explode(kwargs.get("label_filters_exclude"))
|
109
113
|
|
110
114
|
return args
|
@@ -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.
|
9
|
+
# Updated Date: 2024.12.16 01:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
|
12
12
|
import json
|
@@ -30,9 +30,13 @@ class Loader(BaseLoader):
|
|
30
30
|
"args": {
|
31
31
|
"number_of_results": {
|
32
32
|
"type": "int",
|
33
|
+
"label": "Number of results",
|
34
|
+
"description": "Number of results to fetch, default: 100",
|
33
35
|
},
|
34
36
|
"start_date": {
|
35
37
|
"type": "str",
|
38
|
+
"label": "Start date",
|
39
|
+
"description": "Start date for events, ISO format: YYYY-MM-DD, default: today",
|
36
40
|
},
|
37
41
|
},
|
38
42
|
}
|
@@ -79,8 +83,12 @@ class Loader(BaseLoader):
|
|
79
83
|
if "number_of_results" in kwargs and kwargs.get("number_of_results"):
|
80
84
|
if isinstance(kwargs.get("number_of_results"), int):
|
81
85
|
args["number_of_results"] = kwargs.get("number_of_results") # number of results
|
86
|
+
if args["number_of_results"] == 0:
|
87
|
+
args["number_of_results"] = None
|
82
88
|
|
83
89
|
if "start_date" in kwargs and kwargs.get("start_date"):
|
84
90
|
if isinstance(kwargs.get("start_date"), str):
|
85
91
|
args["start_date"] = kwargs.get("start_date") # start date
|
92
|
+
if args["start_date"] == "today" or args["start_date"] == "":
|
93
|
+
args["start_date"] = None
|
86
94
|
return args
|
@@ -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.
|
9
|
+
# Updated Date: 2024.12.16 01:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
|
12
12
|
import json
|
@@ -30,6 +30,9 @@ class Loader(BaseLoader):
|
|
30
30
|
"args": {
|
31
31
|
"document_ids": {
|
32
32
|
"type": "list",
|
33
|
+
"label": "Document IDs",
|
34
|
+
"description": "List of document IDs to index, separated by comma (,)",
|
35
|
+
"required": True,
|
33
36
|
},
|
34
37
|
},
|
35
38
|
}
|
@@ -76,4 +79,6 @@ class Loader(BaseLoader):
|
|
76
79
|
if "document_ids" in kwargs and kwargs.get("document_ids"):
|
77
80
|
if isinstance(kwargs.get("document_ids"), list):
|
78
81
|
args["document_ids"] = kwargs.get("document_ids") # list of document ids
|
82
|
+
elif isinstance(kwargs.get("document_ids"), str):
|
83
|
+
args["document_ids"] = self.explode(kwargs.get("document_ids"))
|
79
84
|
return args
|