pygpt-net 2.4.38__py3-none-any.whl → 2.4.40__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 +25 -2
- pygpt_net/CHANGELOG.txt +19 -0
- pygpt_net/__init__.py +3 -3
- pygpt_net/controller/__init__.py +7 -3
- pygpt_net/controller/audio/__init__.py +9 -1
- pygpt_net/controller/calendar/__init__.py +3 -1
- pygpt_net/controller/chat/input.py +2 -1
- pygpt_net/controller/chat/render.py +8 -5
- pygpt_net/controller/ctx/__init__.py +33 -25
- pygpt_net/controller/ctx/common.py +3 -2
- pygpt_net/controller/debug/__init__.py +13 -2
- pygpt_net/controller/dialogs/confirm.py +2 -2
- pygpt_net/controller/kernel/__init__.py +2 -1
- pygpt_net/controller/lang/custom.py +2 -7
- pygpt_net/controller/lang/mapping.py +2 -2
- pygpt_net/controller/layout.py +2 -2
- pygpt_net/controller/notepad.py +14 -10
- pygpt_net/controller/theme/nodes.py +2 -5
- pygpt_net/controller/tools/__init__.py +37 -1
- pygpt_net/controller/ui/__init__.py +1 -5
- pygpt_net/controller/ui/tabs.py +295 -60
- pygpt_net/core/command.py +3 -1
- pygpt_net/core/ctx/__init__.py +16 -2
- pygpt_net/core/ctx/container.py +18 -11
- pygpt_net/core/ctx/output.py +86 -67
- pygpt_net/core/debug/tabs.py +5 -2
- pygpt_net/core/filesystem/url.py +7 -3
- pygpt_net/core/render/base.py +14 -3
- pygpt_net/core/render/markdown/renderer.py +3 -1
- pygpt_net/core/render/plain/renderer.py +3 -3
- pygpt_net/core/render/web/body.py +10 -4
- pygpt_net/core/render/web/renderer.py +213 -41
- pygpt_net/core/tabs/__init__.py +268 -98
- pygpt_net/core/tabs/tab.py +16 -4
- pygpt_net/core/web.py +127 -1
- pygpt_net/data/config/config.json +12 -5
- pygpt_net/data/config/models.json +3 -3
- pygpt_net/data/config/modes.json +3 -3
- pygpt_net/data/css/web-blocks.css +18 -0
- pygpt_net/data/css/web-blocks.light.css +7 -0
- pygpt_net/data/css/web-chatgpt.css +8 -0
- pygpt_net/data/css/web-chatgpt_wide.css +8 -0
- pygpt_net/data/icons/split_screen.svg +1 -0
- pygpt_net/data/locale/locale.de.ini +3 -0
- pygpt_net/data/locale/locale.en.ini +6 -1
- pygpt_net/data/locale/locale.es.ini +3 -0
- pygpt_net/data/locale/locale.fr.ini +3 -0
- pygpt_net/data/locale/locale.it.ini +3 -0
- pygpt_net/data/locale/locale.pl.ini +4 -1
- pygpt_net/data/locale/locale.uk.ini +3 -0
- pygpt_net/data/locale/locale.zh.ini +3 -0
- pygpt_net/data/locale/plugin.cmd_web.de.ini +2 -0
- pygpt_net/data/locale/plugin.cmd_web.en.ini +20 -10
- pygpt_net/data/locale/plugin.cmd_web.es.ini +2 -0
- pygpt_net/data/locale/plugin.cmd_web.fr.ini +2 -0
- pygpt_net/data/locale/plugin.cmd_web.it.ini +2 -0
- pygpt_net/data/locale/plugin.cmd_web.pl.ini +2 -0
- pygpt_net/data/locale/plugin.cmd_web.uk.ini +2 -0
- pygpt_net/data/locale/plugin.cmd_web.zh.ini +2 -0
- pygpt_net/icons.qrc +1 -0
- pygpt_net/icons_rc.py +165 -136
- pygpt_net/item/ctx.py +46 -24
- pygpt_net/plugin/audio_input/simple.py +4 -2
- pygpt_net/plugin/audio_output/__init__.py +4 -1
- pygpt_net/plugin/base/plugin.py +18 -4
- pygpt_net/plugin/cmd_code_interpreter/__init__.py +39 -37
- pygpt_net/plugin/cmd_code_interpreter/runner.py +25 -12
- pygpt_net/plugin/cmd_web/__init__.py +46 -6
- pygpt_net/plugin/cmd_web/config.py +74 -48
- pygpt_net/plugin/cmd_web/websearch.py +61 -28
- pygpt_net/plugin/cmd_web/worker.py +79 -13
- pygpt_net/provider/core/config/patch.py +29 -1
- pygpt_net/provider/core/ctx/base.py +4 -1
- pygpt_net/provider/core/ctx/db_sqlite/__init__.py +10 -1
- pygpt_net/provider/core/ctx/db_sqlite/storage.py +22 -1
- pygpt_net/tools/__init__.py +9 -1
- pygpt_net/tools/base.py +15 -1
- pygpt_net/tools/code_interpreter/__init__.py +174 -75
- pygpt_net/tools/code_interpreter/ui/dialogs.py +21 -103
- pygpt_net/tools/code_interpreter/ui/widgets.py +284 -9
- pygpt_net/tools/html_canvas/__init__.py +78 -23
- pygpt_net/tools/html_canvas/ui/dialogs.py +46 -62
- pygpt_net/tools/html_canvas/ui/widgets.py +96 -3
- pygpt_net/ui/base/context_menu.py +2 -2
- pygpt_net/ui/layout/chat/input.py +10 -18
- pygpt_net/ui/layout/chat/output.py +26 -44
- pygpt_net/ui/layout/ctx/ctx_list.py +13 -4
- pygpt_net/ui/layout/toolbox/footer.py +18 -2
- pygpt_net/ui/main.py +2 -2
- pygpt_net/ui/menu/debug.py +11 -1
- pygpt_net/ui/widget/filesystem/explorer.py +2 -2
- pygpt_net/ui/widget/lists/context.py +26 -5
- pygpt_net/ui/widget/tabs/Input.py +2 -2
- pygpt_net/ui/widget/tabs/body.py +2 -1
- pygpt_net/ui/widget/tabs/layout.py +195 -0
- pygpt_net/ui/widget/tabs/output.py +209 -55
- pygpt_net/ui/widget/textarea/html.py +11 -1
- pygpt_net/ui/widget/textarea/output.py +10 -1
- pygpt_net/ui/widget/textarea/web.py +49 -9
- {pygpt_net-2.4.38.dist-info → pygpt_net-2.4.40.dist-info}/METADATA +26 -3
- {pygpt_net-2.4.38.dist-info → pygpt_net-2.4.40.dist-info}/RECORD +105 -103
- {pygpt_net-2.4.38.dist-info → pygpt_net-2.4.40.dist-info}/LICENSE +0 -0
- {pygpt_net-2.4.38.dist-info → pygpt_net-2.4.40.dist-info}/WHEEL +0 -0
- {pygpt_net-2.4.38.dist-info → pygpt_net-2.4.40.dist-info}/entry_points.txt +0 -0
pygpt_net/core/tabs/tab.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.09 23:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
|
12
12
|
from datetime import datetime
|
@@ -21,6 +21,7 @@ class Tab:
|
|
21
21
|
TAB_FILES = 2
|
22
22
|
TAB_TOOL_PAINTER = 3
|
23
23
|
TAB_TOOL_CALENDAR = 4
|
24
|
+
TAB_TOOL = 100
|
24
25
|
|
25
26
|
def __init__(self):
|
26
27
|
"""
|
@@ -34,15 +35,23 @@ class Tab:
|
|
34
35
|
self.icon = None
|
35
36
|
self.tooltip = None
|
36
37
|
self.data_id = None
|
37
|
-
self.reference = None
|
38
38
|
self.new_idx = None
|
39
39
|
self.custom_name = False
|
40
|
+
self.child = None
|
41
|
+
self.parent = None
|
42
|
+
self.column_idx = 0
|
43
|
+
self.tool_id = None
|
40
44
|
|
41
45
|
dt = datetime.now()
|
42
46
|
self.created_at = dt
|
43
47
|
self.updated_at = dt
|
44
48
|
|
45
|
-
def to_dict(self):
|
49
|
+
def to_dict(self) -> dict:
|
50
|
+
"""
|
51
|
+
Convert to dict
|
52
|
+
|
53
|
+
:return: dict
|
54
|
+
"""
|
46
55
|
return {
|
47
56
|
"uuid": str(self.uuid),
|
48
57
|
"pid": self.pid,
|
@@ -52,9 +61,12 @@ class Tab:
|
|
52
61
|
"icon": self.icon,
|
53
62
|
"tooltip": self.tooltip,
|
54
63
|
"data_id": self.data_id,
|
55
|
-
"
|
64
|
+
"child": str(self.child), # child widget
|
65
|
+
"parent": str(self.parent), # parent column
|
56
66
|
"custom_name": self.custom_name,
|
57
67
|
"custom_idx": self.new_idx,
|
58
68
|
"created_at": str(self.created_at),
|
59
69
|
"updated_at": str(self.updated_at),
|
70
|
+
"column_idx": self.column_idx,
|
71
|
+
"tool_id": self.tool_id,
|
60
72
|
}
|
pygpt_net/core/web.py
CHANGED
@@ -6,8 +6,15 @@
|
|
6
6
|
# GitHub: https://github.com/szczyglis-dev/py-gpt #
|
7
7
|
# MIT License #
|
8
8
|
# Created By : Marcin Szczygliński #
|
9
|
-
# Updated Date: 2024.
|
9
|
+
# Updated Date: 2024.12.13 00:00:00 #
|
10
10
|
# ================================================== #
|
11
|
+
import os
|
12
|
+
import uuid
|
13
|
+
|
14
|
+
import requests
|
15
|
+
|
16
|
+
from bs4 import BeautifulSoup
|
17
|
+
from urllib.parse import urljoin
|
11
18
|
|
12
19
|
from pygpt_net.provider.web.base import BaseProvider
|
13
20
|
|
@@ -81,3 +88,122 @@ class Web:
|
|
81
88
|
for t in type:
|
82
89
|
if t in self.providers:
|
83
90
|
self.providers[t][id] = provider
|
91
|
+
|
92
|
+
def get_main_image(self, url: str) -> str or None:
|
93
|
+
"""
|
94
|
+
Get main image from URL
|
95
|
+
|
96
|
+
:param url: URL to get image from
|
97
|
+
:return: image URL
|
98
|
+
"""
|
99
|
+
response = requests.get(url)
|
100
|
+
soup = BeautifulSoup(response.content, 'html.parser')
|
101
|
+
|
102
|
+
og_image = soup.find('meta', property='og:image')
|
103
|
+
if og_image and og_image.get('content'):
|
104
|
+
return og_image['content']
|
105
|
+
|
106
|
+
twitter_image = soup.find('meta', attrs={'name': 'twitter:image'})
|
107
|
+
if twitter_image and twitter_image.get('content'):
|
108
|
+
return twitter_image['content']
|
109
|
+
|
110
|
+
link_image = soup.find('link', rel='image_src')
|
111
|
+
if link_image and link_image.get('href'):
|
112
|
+
return link_image['href']
|
113
|
+
|
114
|
+
images = soup.find_all('img')
|
115
|
+
if images:
|
116
|
+
images = [img for img in images if 'logo' not in (img.get('src') or '').lower()]
|
117
|
+
largest_image = None
|
118
|
+
max_area = 0
|
119
|
+
for img in images:
|
120
|
+
src = img.get('src')
|
121
|
+
if not src:
|
122
|
+
continue
|
123
|
+
src = requests.compat.urljoin(url, src)
|
124
|
+
try:
|
125
|
+
img_response = requests.get(src, stream=True, timeout=5)
|
126
|
+
img_response.raw.decode_content = True
|
127
|
+
|
128
|
+
from PIL import Image
|
129
|
+
image = Image.open(img_response.raw)
|
130
|
+
width, height = image.size
|
131
|
+
area = width * height
|
132
|
+
if area > max_area:
|
133
|
+
max_area = area
|
134
|
+
largest_image = src
|
135
|
+
except:
|
136
|
+
continue
|
137
|
+
if largest_image:
|
138
|
+
return largest_image
|
139
|
+
return None
|
140
|
+
|
141
|
+
def get_links(self, url: str) -> list:
|
142
|
+
"""
|
143
|
+
Get links from URL
|
144
|
+
|
145
|
+
:param url: URL to get links from
|
146
|
+
:return: links list
|
147
|
+
"""
|
148
|
+
response = requests.get(url)
|
149
|
+
soup = BeautifulSoup(response.content, 'html.parser')
|
150
|
+
links = []
|
151
|
+
urls = []
|
152
|
+
for link in soup.find_all('a'):
|
153
|
+
try:
|
154
|
+
name = link.get_text(strip=True)
|
155
|
+
address = link.get('href')
|
156
|
+
if address:
|
157
|
+
address = urljoin(url, address)
|
158
|
+
if not name:
|
159
|
+
title = link.get('title')
|
160
|
+
if title:
|
161
|
+
name = title
|
162
|
+
else:
|
163
|
+
name = address
|
164
|
+
if address not in urls:
|
165
|
+
urls.append(address)
|
166
|
+
links.append({name: address})
|
167
|
+
except:
|
168
|
+
continue
|
169
|
+
return links
|
170
|
+
|
171
|
+
|
172
|
+
def get_images(self, url: str) -> list:
|
173
|
+
"""
|
174
|
+
Get images from URL
|
175
|
+
|
176
|
+
:param url: URL to get images from
|
177
|
+
:return: images list
|
178
|
+
"""
|
179
|
+
response = requests.get(url)
|
180
|
+
soup = BeautifulSoup(response.content, 'html.parser')
|
181
|
+
images = []
|
182
|
+
for img in soup.find_all('img'):
|
183
|
+
try:
|
184
|
+
address = img.get('src')
|
185
|
+
if address:
|
186
|
+
address = urljoin(url, address)
|
187
|
+
if address not in images:
|
188
|
+
images.append(address)
|
189
|
+
except:
|
190
|
+
continue
|
191
|
+
return images
|
192
|
+
|
193
|
+
def download_image(self, img: str) -> str:
|
194
|
+
"""
|
195
|
+
Download image from URL
|
196
|
+
|
197
|
+
:param img: URL to download image from
|
198
|
+
:return: local path to image
|
199
|
+
"""
|
200
|
+
dir = self.window.core.config.get_user_dir("img")
|
201
|
+
response = requests.get(img, stream=True)
|
202
|
+
name = img.replace("http://", "").replace("https://", "").replace("/", "_")
|
203
|
+
path = os.path.join(dir, name)
|
204
|
+
if os.path.exists(path):
|
205
|
+
name = name + uuid.uuid4().hex[:6].upper()
|
206
|
+
download_path = os.path.join(dir, name)
|
207
|
+
with open(download_path, 'wb', ) as f:
|
208
|
+
f.write(response.content)
|
209
|
+
return self.window.core.filesystem.make_local(download_path)
|
@@ -1,8 +1,8 @@
|
|
1
1
|
{
|
2
2
|
"__meta__": {
|
3
|
-
"version": "2.4.
|
4
|
-
"app.version": "2.4.
|
5
|
-
"updated_at": "2024-12-
|
3
|
+
"version": "2.4.40",
|
4
|
+
"app.version": "2.4.40",
|
5
|
+
"updated_at": "2024-12-12T00:00:00"
|
6
6
|
},
|
7
7
|
"access.audio.event.speech": false,
|
8
8
|
"access.audio.event.speech.disabled": [],
|
@@ -134,6 +134,7 @@
|
|
134
134
|
"expert": ""
|
135
135
|
},
|
136
136
|
"debug": false,
|
137
|
+
"debug.render": false,
|
137
138
|
"download.dir": "download",
|
138
139
|
"experts.mode": "chat",
|
139
140
|
"font_size": 12,
|
@@ -161,7 +162,13 @@
|
|
161
162
|
"layout.dpi.scaling": true,
|
162
163
|
"layout.dpi.factor": 1.0,
|
163
164
|
"layout.groups": {},
|
164
|
-
"layout.splitters": {
|
165
|
+
"layout.splitters": {
|
166
|
+
"columns": [
|
167
|
+
1,
|
168
|
+
0
|
169
|
+
]
|
170
|
+
},
|
171
|
+
"layout.split": false,
|
165
172
|
"layout.tabs": {},
|
166
173
|
"layout.tooltips": true,
|
167
174
|
"layout.tray": true,
|
@@ -338,7 +345,7 @@
|
|
338
345
|
"temperature": 1.0,
|
339
346
|
"theme": "dark_cyan",
|
340
347
|
"theme.markdown": true,
|
341
|
-
"theme.style": "
|
348
|
+
"theme.style": "blocks",
|
342
349
|
"top_p": 1.0,
|
343
350
|
"upload.store": true,
|
344
351
|
"upload.data_dir": false,
|
pygpt_net/data/config/modes.json
CHANGED
@@ -54,6 +54,7 @@ p {{
|
|
54
54
|
font-family: 'Lato';
|
55
55
|
text-decoration: none;
|
56
56
|
padding-bottom: 0px;
|
57
|
+
font-size: 0.9rem;
|
57
58
|
}}
|
58
59
|
|
59
60
|
/* lists, code */
|
@@ -89,6 +90,7 @@ code {{
|
|
89
90
|
.code-header-lang {{
|
90
91
|
float: left;
|
91
92
|
padding-left: .25rem;
|
93
|
+
padding-top: 4px;
|
92
94
|
}}
|
93
95
|
.code-header-copy {{
|
94
96
|
text-align: right;
|
@@ -102,6 +104,13 @@ code {{
|
|
102
104
|
vertical-align: middle;
|
103
105
|
padding-right: 5px;
|
104
106
|
}}
|
107
|
+
.code-header-copy:hover {{
|
108
|
+
text-decoration: none;
|
109
|
+
cursor: pointer;
|
110
|
+
}}
|
111
|
+
.code-header-copy:hover img {{
|
112
|
+
filter: brightness(130%);
|
113
|
+
}}
|
105
114
|
.code-wrapper {{
|
106
115
|
padding: 0px;
|
107
116
|
margin: 0px;
|
@@ -209,6 +218,7 @@ code {{
|
|
209
218
|
.tool-output .content {{
|
210
219
|
padding: 10px;
|
211
220
|
color: gray !important;
|
221
|
+
font-size: 0.9rem;
|
212
222
|
}}
|
213
223
|
.tool-output .toggle-cmd-output {{
|
214
224
|
cursor: pointer;
|
@@ -318,4 +328,12 @@ code {{
|
|
318
328
|
to {{
|
319
329
|
transform: rotate(360deg);
|
320
330
|
}}
|
331
|
+
}}
|
332
|
+
|
333
|
+
/* debug */
|
334
|
+
.debug {{
|
335
|
+
color: orange !important;
|
336
|
+
background: #0d1117;
|
337
|
+
padding: 10px;
|
338
|
+
font-size: 0.9rem;
|
321
339
|
}}
|
@@ -0,0 +1 @@
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#686868"><path d="M520-320h200v-320H520v320Zm-280 0h200v-320H240v320Zm-80 160q-33 0-56.5-23.5T80-240v-480q0-33 23.5-56.5T160-800h640q33 0 56.5 23.5T880-720v480q0 33-23.5 56.5T800-160H160Zm640-560H160v480h640v-480Zm-640 0v480-480Z"/></svg>
|
@@ -49,6 +49,8 @@ action.tab.add.notepad = Neuen Notizblock hinzufügen
|
|
49
49
|
action.tab.close = Schließen
|
50
50
|
action.tab.close_all.chat = Alle Chats schließen
|
51
51
|
action.tab.close_all.notepad = Alle Notizblöcke schließen
|
52
|
+
action.tab.move.left = In die linke Spalte verschieben
|
53
|
+
action.tab.move.right = In die rechte Spalte verschieben
|
52
54
|
action.touch = Datei erstellen...
|
53
55
|
action.truncate = Alles löschen
|
54
56
|
action.undo = Rückgängig
|
@@ -548,6 +550,7 @@ ipython.docker.build.finish = Erfolg! Das Docker-Image für IPython wurde erstel
|
|
548
550
|
ipython.docker.build.start = Docker-Image wird erstellt... bitte warten...
|
549
551
|
ipython.docker.install = Für die Ausführung von IPython muss Docker installiert sein. Docker wurde auf diesem System nicht erkannt. Bitte installieren Sie zuerst Docker; die Anweisungen finden Sie hier: https://docs.docker.com/engine/install/. Die Ausführung des aktuellen Befehls wurde pausiert.
|
550
552
|
ipython.image.build = Das Docker-Image für IPython wurde noch nicht erstellt. Dies wird jetzt geschehen und es kann eine Weile dauern (aber es ist ein einmaliger Vorgang). Die Ausführung des Befehls wurde pausiert. Sobald das Image erstellt ist, führen Sie den Befehl bitte erneut aus.
|
553
|
+
layout.split = Bildschirm teilen
|
551
554
|
menu.audio = Audio / Stimme
|
552
555
|
menu.audio.cache.clear = Audio-Cache löschen...
|
553
556
|
menu.audio.control.global = Sprachsteuerung (global)
|
@@ -51,9 +51,12 @@ action.save_selection_as = Save selection as...
|
|
51
51
|
action.select_all = Select all
|
52
52
|
action.tab.add.chat = Add a new chat
|
53
53
|
action.tab.add.notepad = Add a new notepad
|
54
|
+
action.tab.add.tool = Add a new tool
|
54
55
|
action.tab.close = Close
|
55
56
|
action.tab.close_all.chat = Close all chats
|
56
57
|
action.tab.close_all.notepad = Close all notepads
|
58
|
+
action.tab.move.left = Move to left column
|
59
|
+
action.tab.move.right = Move to right column
|
57
60
|
action.touch = Create file...
|
58
61
|
action.truncate = Truncate
|
59
62
|
action.undo = Undo
|
@@ -661,7 +664,7 @@ interpreter.clear.confirm = Clear the current window?
|
|
661
664
|
interpreter.edit = Edit mode
|
662
665
|
interpreter.edit_label.edit = Code (history)
|
663
666
|
interpreter.edit_label.output = Output
|
664
|
-
interpreter.input.placeholder = Python code to execute
|
667
|
+
interpreter.input.placeholder = Python code to execute...\n\n/restart - restart kernel\n/clear - clear output
|
665
668
|
interpreter.menu.file = File
|
666
669
|
interpreter.menu.file.clear_all = Clear all
|
667
670
|
interpreter.menu.file.clear_history = Clear history
|
@@ -673,6 +676,7 @@ ipython.docker.build.start = Building Docker image... please wait...
|
|
673
676
|
ipython.docker.install = Running IPython requires Docker to be installed. Docker was not detected on this system. Please install Docker first; you can find the instructions here: https://docs.docker.com/engine/install/. The execution of the current command has been paused.
|
674
677
|
ipython.docker.install.snap = \n\nSNAP VERSION: \nYou are not connected to built-in Docker daemon. Please connect the slots with:\n\nsudo snap connect pygpt:docker-executables docker:docker-executables\n\nsudo snap connect pygpt:docker docker:docker-daemon\n\n...and restart the application.
|
675
678
|
ipython.image.build = The Docker image for IPython has not been built yet. This will happen now, and it may take a while (but it's a one-time procedure). The execution of the command has been paused. Once the image is built, please execute the command again.
|
679
|
+
layout.split = Split screen
|
676
680
|
menu.audio = Audio / Voice
|
677
681
|
menu.audio.cache.clear = Clear audio cache...
|
678
682
|
menu.audio.control.global = Voice control (global)
|
@@ -709,6 +713,7 @@ menu.debug.logger = Open Logger
|
|
709
713
|
menu.debug.models = Models...
|
710
714
|
menu.debug.plugins = Plugins...
|
711
715
|
menu.debug.presets = Presets...
|
716
|
+
menu.debug.render = Render...
|
712
717
|
menu.debug.tabs = Tabs...
|
713
718
|
menu.debug.ui = UI...
|
714
719
|
menu.file = File
|
@@ -49,6 +49,8 @@ action.tab.add.notepad = Agregar un nuevo bloc de notas
|
|
49
49
|
action.tab.close = Cerrar
|
50
50
|
action.tab.close_all.chat = Cerrar todos los chats
|
51
51
|
action.tab.close_all.notepad = Cerrar todos los blocs de notas
|
52
|
+
action.tab.move.left = Mover a la columna izquierda
|
53
|
+
action.tab.move.right = Mover a la columna derecha
|
52
54
|
action.touch = Crear archivo...
|
53
55
|
action.truncate = Borrar todo
|
54
56
|
action.undo = Deshacer
|
@@ -547,6 +549,7 @@ ipython.docker.build.finish = ¡Éxito! La imagen de Docker para IPython ha sido
|
|
547
549
|
ipython.docker.build.start = Construyendo imagen de Docker... por favor espera...
|
548
550
|
ipython.docker.install = Ejecutar IPython requiere que Docker esté instalado. Docker no fue detectado en este sistema. Por favor, instale Docker primero; puede encontrar las instrucciones aquí: https://docs.docker.com/engine/install/. La ejecución del comando actual ha sido pausada.
|
549
551
|
ipython.image.build = La imagen de Docker para IPython aún no ha sido construida. Esto sucederá ahora, y puede tardar un tiempo (pero es un procedimiento único). La ejecución del comando ha sido pausada. Una vez que la imagen esté construida, por favor ejecute el comando nuevamente.
|
552
|
+
layout.split = Pantalla dividida
|
550
553
|
menu.audio = Audio / Voz
|
551
554
|
menu.audio.cache.clear = Limpiar caché de audio...
|
552
555
|
menu.audio.control.global = Control de voz (global)
|
@@ -49,6 +49,8 @@ action.tab.add.notepad = Ajouter un nouveau bloc-notes
|
|
49
49
|
action.tab.close = Fermer
|
50
50
|
action.tab.close_all.chat = Fermer tous les chats
|
51
51
|
action.tab.close_all.notepad = Fermer tous les blocs-notes
|
52
|
+
action.tab.move.left = Déplacer vers la colonne de gauche
|
53
|
+
action.tab.move.right = Déplacer vers la colonne de droite
|
52
54
|
action.touch = Créer un fichier...
|
53
55
|
action.truncate = Tout effacer
|
54
56
|
action.undo = Annuler
|
@@ -548,6 +550,7 @@ ipython.docker.build.finish = Succès! L'image Docker pour IPython a été const
|
|
548
550
|
ipython.docker.build.start = Construction de l'image Docker... veuillez patienter...
|
549
551
|
ipython.docker.install = L'exécution d'IPython nécessite l'installation de Docker. Docker n'a pas été détecté sur ce système. Veuillez d'abord installer Docker ; vous pouvez trouver les instructions ici : https://docs.docker.com/engine/install/. L'exécution de la commande actuelle a été mise en pause.
|
550
552
|
ipython.image.build = L'image Docker pour IPython n'a pas encore été construite. Cela va se produire maintenant, et cela peut prendre un certain temps (mais c'est une procédure unique). L'exécution de la commande a été mise en pause. Une fois l'image construite, veuillez exécuter à nouveau la commande.
|
553
|
+
layout.split = Écran scindé
|
551
554
|
menu.audio = Audio / Voix
|
552
555
|
menu.audio.cache.clear = Effacer le cache audio...
|
553
556
|
menu.audio.control.global = Contrôle vocal (global)
|
@@ -49,6 +49,8 @@ action.tab.add.notepad = Aggiungi un nuovo blocco note
|
|
49
49
|
action.tab.close = Chiudi
|
50
50
|
action.tab.close_all.chat = Chiudi tutte le chat
|
51
51
|
action.tab.close_all.notepad = Chiudi tutti i blocchi note
|
52
|
+
action.tab.move.left = Sposta nella colonna di sinistra
|
53
|
+
action.tab.move.right = Sposta nella colonna di destra
|
52
54
|
action.touch = Crea file...
|
53
55
|
action.truncate = Cancellare tutto
|
54
56
|
action.undo = Annulla
|
@@ -548,6 +550,7 @@ ipython.docker.build.finish = Successo! L'immagine Docker per IPython è stata c
|
|
548
550
|
ipython.docker.build.start = Creazione dell'immagine Docker... per favore aspetta...
|
549
551
|
ipython.docker.install = L'esecuzione di IPython richiede l'installazione di Docker. Docker non è stato rilevato su questo sistema. Si prega di installare prima Docker; puoi trovare le istruzioni qui: https://docs.docker.com/engine/install/. L'esecuzione del comando corrente è stata messa in pausa.
|
550
552
|
ipython.image.build = L'immagine Docker per IPython non è stata ancora costruita. Questo avverrà ora e potrebbe richiedere del tempo (ma è una procedura una tantum). L'esecuzione del comando è stata messa in pausa. Una volta costruita l'immagine, esegui nuovamente il comando.
|
553
|
+
layout.split = Schermo diviso
|
551
554
|
menu.audio = Audio / Voce
|
552
555
|
menu.audio.cache.clear = Cancella cache audio...
|
553
556
|
menu.audio.control.global = Controllo vocale (globale)
|
@@ -49,6 +49,8 @@ action.tab.add.notepad = Dodaj nowy notatnik
|
|
49
49
|
action.tab.close = Zamknij
|
50
50
|
action.tab.close_all.chat = Zamknij wszystkie czaty
|
51
51
|
action.tab.close_all.notepad = Zamknij wszystkie notatniki
|
52
|
+
action.tab.move.left = Przenieś do lewej kolumny
|
53
|
+
action.tab.move.right = Przenieś do prawej kolumny
|
52
54
|
action.touch = Utwórz plik...
|
53
55
|
action.truncate = Wyczyść wszystko
|
54
56
|
action.undo = Cofnij
|
@@ -548,6 +550,7 @@ ipython.docker.build.finish = Sukces! Obraz Docker dla IPython został zbudowany
|
|
548
550
|
ipython.docker.build.start = Budowanie obrazu Dockera... proszę czekać...
|
549
551
|
ipython.docker.install = Uruchomienie IPython wymaga zainstalowania Dockera. Docker nie został wykryty na tym systemie. Proszę najpierw zainstalować Dockera; instrukcje można znaleźć tutaj: https://docs.docker.com/engine/install/. Wykonywanie bieżącego polecenia zostało wstrzymane.
|
550
552
|
ipython.image.build = Obraz Dockera dla IPython nie został jeszcze zbudowany. Nastąpi to teraz i może to potrwać chwilę (ale to jednorazowa procedura). Wykonywanie polecenia zostało wstrzymane. Po zbudowaniu obrazu możesz ponownie poprosić o wykonanie polecenia.
|
553
|
+
layout.split = Podziel ekran
|
551
554
|
menu.audio = Audio / Mowa
|
552
555
|
menu.audio.cache.clear = Wyczyść pamięć podręczną audio...
|
553
556
|
menu.audio.control.global = Kontrola głosowa (globalna)
|
@@ -759,7 +762,7 @@ settings.audio.input.channels.desc = Kanały wejściowe, domyślnie: 1
|
|
759
762
|
settings.audio.input.device = Urządzenie Wejściowe Audio
|
760
763
|
settings.audio.input.device.desc = Wybierz urządzenie audio dla wejścia mikrofonu.
|
761
764
|
settings.audio.input.rate = Częstotliwość próbkowania
|
762
|
-
settings.audio.input.rate.desc = Częstotliwość próbkowania, domyślnie: 44100
|
765
|
+
settings.audio.input.rate.desc = Częstotliwość próbkowania, domyślnie: 44100
|
763
766
|
settings.check_updates = Sprawdź aktualizacje przy starcie
|
764
767
|
settings.check_updates.bg = Sprawdź aktualizacje w tle
|
765
768
|
settings.cmd.field.desc = Włącz narzędzie `{cmd}`.
|
@@ -49,6 +49,8 @@ action.tab.add.notepad = Додати новий блокнот
|
|
49
49
|
action.tab.close = Закрити
|
50
50
|
action.tab.close_all.chat = Закрити всі чати
|
51
51
|
action.tab.close_all.notepad = Закрити всі блокноти
|
52
|
+
action.tab.move.left = Перемістити в ліву колонку
|
53
|
+
action.tab.move.right = Перемістити в праву колонку
|
52
54
|
action.touch = Створити файл...
|
53
55
|
action.truncate = Очистити все
|
54
56
|
action.undo = Скасувати
|
@@ -547,6 +549,7 @@ ipython.docker.build.finish = Успіх! Образ Docker для IPython ст
|
|
547
549
|
ipython.docker.build.start = Створення образу Docker... будь ласка, зачекайте...
|
548
550
|
ipython.docker.install = Для запуску IPython необхідно встановити Docker. Docker не було виявлено на цій системі. Будь ласка, спочатку встановіть Docker; інструкції можна знайти тут: https://docs.docker.com/engine/install/. Виконання поточної команди було призупинено.
|
549
551
|
ipython.image.build = Docker-образ для IPython ще не був створений. Це відбудеться зараз, і це може зайняти деякий час (але це одноразова процедура). Виконання команди було призупинено. Після створення образу, будь ласка, виконайте команду знову.
|
552
|
+
layout.split = Розділити екран
|
550
553
|
menu.audio = Аудіо / Голос
|
551
554
|
menu.audio.cache.clear = Очистити кеш аудіо...
|
552
555
|
menu.audio.control.global = Контроль голосу (глобальний)
|
@@ -50,6 +50,8 @@ action.tab.add.notepad = 添加新记事本
|
|
50
50
|
action.tab.close = 关闭
|
51
51
|
action.tab.close_all.chat = 关闭所有聊天
|
52
52
|
action.tab.close_all.notepad = 关闭所有记事本
|
53
|
+
action.tab.move.left = 移到左列
|
54
|
+
action.tab.move.right = 移到右列
|
53
55
|
action.touch = 創建文件...
|
54
56
|
action.truncate = 截斷
|
55
57
|
action.undo = 撤銷
|
@@ -621,6 +623,7 @@ ipython.docker.build.finish = 成功!IPython 的 Docker 镜像已构建完成
|
|
621
623
|
ipython.docker.build.start = 正在构建 Docker 镜像... 请稍候...
|
622
624
|
ipython.docker.install = 运行 IPython 需要安装 Docker。系统上未检测到 Docker。请先安装 Docker;您可以在此处找到说明:https://docs.docker.com/engine/install/。当前命令的执行已暂停。
|
623
625
|
ipython.image.build = IPython 的 Docker 镜像尚未构建。这将立即发生,可能需要一段时间(但这是一次性过程)。命令的执行已暂停。镜像构建完成后,请再次执行命令。
|
626
|
+
layout.split = 分屏
|
624
627
|
menu.audio = 音頻/語音
|
625
628
|
menu.audio.cache.clear = 清除音频缓存...
|
626
629
|
menu.audio.control.global = 语音控制(全局)
|
@@ -50,6 +50,8 @@ prompt_summarize_url.description = Prompt, der für die Zusammenfassung einer be
|
|
50
50
|
prompt_summarize_url.label = Zusammenfassungs-Prompt (URL öffnen)
|
51
51
|
provider.description = Wählen Sie den Suchmaschinenanbieter, standardmäßig: Google.
|
52
52
|
provider.label = Anbieter
|
53
|
+
raw.label = Verwenden Sie Rohinhalte (ohne Zusammenfassung)
|
54
|
+
raw.description = Ungefilterte Inhalte aus der Websuche zurückgeben, anstatt zusammengefasste Inhalte
|
53
55
|
summary_max_tokens.description = Maximale Tokenanzahl in der Ausgabe beim Generieren einer Zusammenfassung.
|
54
56
|
summary_max_tokens.label = Max. Zusammenfassungs-Tokens
|
55
57
|
summary_model.description = Modell, das für die Zusammenfassung von Webseiten verwendet wird, standardmäßig: gpt-3.5-turbo-1106.
|
@@ -7,22 +7,26 @@ bing_endpoint.description = API endpoint for the Bing Search API, default: https
|
|
7
7
|
bing_endpoint.label = Bing Search API endpoint
|
8
8
|
chunk_size.description = Per-page content chunk size (maximum characters per chunk).
|
9
9
|
chunk_size.label = Per-page content chunk size
|
10
|
+
cmd.web_extract_links.label = Enable: extract_links from webpage
|
11
|
+
cmd.web_extract_links.description = If enabled, model will be able to open URL and get list of all links from it.
|
12
|
+
cmd.web_extract_images.label = Enable: extract_images from webpage
|
13
|
+
cmd.web_extract_images.description = If enabled, model will be able to open URL and get list of all images from it.
|
10
14
|
cmd.web_index.description = Enable `web_index` command execution.\nIf enabled, the model will be able to index pages and external content using LlamaIndex (persistent index).
|
11
15
|
cmd.web_index.label = Enable: indexing web and external content
|
12
16
|
cmd.web_index_query.description = Enable `web_index_query` command execution.\nIf enabled, the model will be able to quickly index and query web content using LlamaIndex (in-memory index).
|
13
|
-
cmd.web_index_query.label = Enable: quick query the
|
14
|
-
cmd.web_index_query.tooltip = Example prompt: Query the
|
15
|
-
cmd.web_index.tooltip = Example prompt: Index the
|
16
|
-
cmd.web_search.description = Enable `web_search` command execution.\nIf enabled, the model will be able to search the
|
17
|
-
cmd.web_search.label = Enable: search the
|
18
|
-
cmd.web_search.tooltip = Example prompt: Search the
|
17
|
+
cmd.web_index_query.label = Enable: quick query the Web and external content
|
18
|
+
cmd.web_index_query.tooltip = Example prompt: Query the Website http://example.com about (question).
|
19
|
+
cmd.web_index.tooltip = Example prompt: Index the Website http://example.com.
|
20
|
+
cmd.web_search.description = Enable `web_search` command execution.\nIf enabled, the model will be able to search the Web.
|
21
|
+
cmd.web_search.label = Enable: search the Web
|
22
|
+
cmd.web_search.tooltip = Example prompt: Search the Web for (question).
|
19
23
|
cmd.web_url_open.description = Enable `web_url_open` command execution.\nIf enabled, the model will be able to open a specified URL and summarize the content.
|
20
24
|
cmd.web_url_open.label = Enable: opening URLs
|
21
|
-
cmd.web_url_open.tooltip = Example prompt: Read the
|
25
|
+
cmd.web_url_open.tooltip = Example prompt: Read the Website http://example.com.
|
22
26
|
cmd.web_url_raw.description = Enable `web_url_raw` command execution.\nIf enabled, the model will be able to open a specified URL and get the raw content.
|
23
27
|
cmd.web_url_raw.label = Enable: reading the raw content from URLs
|
24
28
|
cmd.web_url_raw.tooltip = Example prompt: Give me the raw content of http://example.com.
|
25
|
-
cmd.web_urls.description = Enable `web_urls` command execution.\nIf enabled, the model will be able to search the
|
29
|
+
cmd.web_urls.description = Enable `web_urls` command execution.\nIf enabled, the model will be able to search the Web and get a list of found URLs.
|
26
30
|
cmd.web_urls.label = Enable: getting a list of URLs from search results
|
27
31
|
cmd.web_urls.tooltip = Example prompt: Give me the list of URLs for query (question).
|
28
32
|
disable_ssl.description = Disables SSL verification when crawling web pages.
|
@@ -33,16 +37,20 @@ google_api_key.description = You can obtain your own API key at https://develope
|
|
33
37
|
google_api_key.label = Google Custom Search API KEY
|
34
38
|
idx.description = ID of the index to use for web page indexing (persistent index).
|
35
39
|
idx.label = Index to use
|
40
|
+
img_thumbnail.description = Enable fetching thumbnails from opened websites.
|
41
|
+
img_thumbnail.label = Show thumbnail images
|
42
|
+
max_open_urls.label = Number of max URLs to open at once
|
43
|
+
max_open_urls.description = Number of max URLs to open at once
|
36
44
|
max_page_content_length.description = Maximum characters of page content to retrieve (0 = unlimited).
|
37
45
|
max_page_content_length.label = Max content characters
|
38
|
-
max_result_length.description = Maximum length of the summarized result (characters).
|
46
|
+
max_result_length.description = Maximum length of the summarized or raw result (characters). (0 = unlimited).
|
39
47
|
max_result_length.label = Max result length
|
40
48
|
model_tmp_query.description = Model used to query the temporary index for the `web_index_query` command (in-memory index).
|
41
49
|
model_tmp_query.label = Model for querying in-memory index
|
42
50
|
model_tmp_query.tooltip = Model used to query the temporary index for the `web_index_query` command (in-memory index)
|
43
51
|
num_pages.description = Maximum number of pages to search per query.
|
44
52
|
num_pages.label = Number of pages to search
|
45
|
-
plugin.description = Provides the ability to connect to the
|
53
|
+
plugin.description = Provides the ability to connect to the Web, search web pages for current data, and index external content using LlamaIndex data loaders.
|
46
54
|
plugin.name = Web Search
|
47
55
|
prompt_summarize.description = Prompt used for summarizing web search results, use {query} as a placeholder for the search query.
|
48
56
|
prompt_summarize.label = Summarize prompt
|
@@ -50,6 +58,8 @@ prompt_summarize_url.description = Prompt used for summarizing a specified URL p
|
|
50
58
|
prompt_summarize_url.label = Summarize prompt (URL open)
|
51
59
|
provider.description = Select the search engine provider, default: Google.
|
52
60
|
provider.label = Provider
|
61
|
+
raw.label = Use raw content (without summarization)
|
62
|
+
raw.description = Return raw content from web search instead of summarized content
|
53
63
|
summary_max_tokens.description = Maximum tokens in output when generating a summary.
|
54
64
|
summary_max_tokens.label = Max summary tokens
|
55
65
|
summary_model.description = Model used for summarizing web pages, default: gpt-3.5-turbo-1106.
|
@@ -50,6 +50,8 @@ prompt_summarize_url.description = Prompt utilizado para resumir una página URL
|
|
50
50
|
prompt_summarize_url.label = Prompt de resumen (apertura de URL)
|
51
51
|
provider.description = Seleccione el proveedor del motor de búsqueda, por defecto: Google.
|
52
52
|
provider.label = Proveedor
|
53
|
+
raw.label = Usar contenido bruto (sin resumir)
|
54
|
+
raw.description = Devolver contenido bruto de la búsqueda en la web en lugar de contenido resumido
|
53
55
|
summary_max_tokens.description = Número máximo de tokens en la salida al generar un resumen.
|
54
56
|
summary_max_tokens.label = Máx tokens de resumen
|
55
57
|
summary_model.description = Modelo utilizado para resumir páginas web, por defecto: gpt-3.5-turbo-1106.
|
@@ -50,6 +50,8 @@ prompt_summarize_url.description = Prompt utilisé pour résumer une page URL sp
|
|
50
50
|
prompt_summarize_url.label = Prompt de résumé (ouverture d'URL)
|
51
51
|
provider.description = Sélectionnez le fournisseur du moteur de recherche, par défaut : Google.
|
52
52
|
provider.label = Fournisseur
|
53
|
+
raw.label = Utiliser le contenu brut (sans résumé)
|
54
|
+
raw.description = Retourner le contenu brut de la recherche sur le web au lieu du contenu résumé
|
53
55
|
summary_max_tokens.description = Nombre maximal de tokens dans la sortie lors de la génération d'un résumé.
|
54
56
|
summary_max_tokens.label = Max tokens de résumé
|
55
57
|
summary_model.description = Modèle utilisé pour résumer les pages web, par défaut : gpt-3.5-turbo-1106.
|
@@ -50,6 +50,8 @@ prompt_summarize_url.description = Prompt utilizzato per riassumere una pagina U
|
|
50
50
|
prompt_summarize_url.label = Prompt di riassunto (apertura URL)
|
51
51
|
provider.description = Seleziona il provider del motore di ricerca, predefinito: Google.
|
52
52
|
provider.label = Provider
|
53
|
+
raw.label = Usa contenuto grezzo (senza riassunto)
|
54
|
+
raw.description = Restituisci contenuto grezzo dalla ricerca sul web invece di contenuti riassunti
|
53
55
|
summary_max_tokens.description = Numero massimo di token nell'output durante la generazione di un riassunto.
|
54
56
|
summary_max_tokens.label = Max token di riassunto
|
55
57
|
summary_model.description = Modello utilizzato per riassumere le pagine web, predefinito: gpt-3.5-turbo-1106.
|
@@ -50,6 +50,8 @@ prompt_summarize_url.description = Prompt używany do podsumowywania określonej
|
|
50
50
|
prompt_summarize_url.label = Prompt podsumowujący (otwarte URL)
|
51
51
|
provider.description = Wybierz dostawcę wyszukiwarki, domyślnie: Google.
|
52
52
|
provider.label = Dostawca
|
53
|
+
raw.label = Użyj surowej zawartości (bez podsumowania)
|
54
|
+
raw.description = Zwróć surową zawartość z wyszukiwania w sieci zamiast podsumowanej zawartości
|
53
55
|
summary_max_tokens.description = Maksymalna liczba tokenów w wyniku przy generowaniu podsumowania.
|
54
56
|
summary_max_tokens.label = Maksymalna liczba tokenów podsumowania
|
55
57
|
summary_model.description = Model używany do podsumowywania stron internetowych, domyślnie: gpt-3.5-turbo-1106.
|