pygpt-net 2.6.60__py3-none-any.whl → 2.6.62__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 (87) hide show
  1. pygpt_net/CHANGELOG.txt +14 -0
  2. pygpt_net/__init__.py +3 -3
  3. pygpt_net/controller/chat/common.py +115 -6
  4. pygpt_net/controller/chat/input.py +4 -1
  5. pygpt_net/controller/chat/response.py +8 -2
  6. pygpt_net/controller/presets/presets.py +121 -6
  7. pygpt_net/controller/settings/editor.py +0 -15
  8. pygpt_net/controller/settings/profile.py +16 -4
  9. pygpt_net/controller/settings/workdir.py +30 -5
  10. pygpt_net/controller/theme/common.py +4 -2
  11. pygpt_net/controller/theme/markdown.py +4 -7
  12. pygpt_net/controller/theme/theme.py +2 -1
  13. pygpt_net/controller/ui/ui.py +32 -7
  14. pygpt_net/core/agents/custom/__init__.py +7 -1
  15. pygpt_net/core/agents/custom/llama_index/factory.py +17 -6
  16. pygpt_net/core/agents/custom/llama_index/runner.py +52 -4
  17. pygpt_net/core/agents/custom/llama_index/utils.py +12 -1
  18. pygpt_net/core/agents/custom/router.py +45 -6
  19. pygpt_net/core/agents/custom/runner.py +11 -5
  20. pygpt_net/core/agents/custom/schema.py +3 -1
  21. pygpt_net/core/agents/custom/utils.py +13 -1
  22. pygpt_net/core/agents/runners/llama_workflow.py +65 -5
  23. pygpt_net/core/agents/runners/openai_workflow.py +2 -1
  24. pygpt_net/core/db/viewer.py +11 -5
  25. pygpt_net/core/node_editor/graph.py +18 -9
  26. pygpt_net/core/node_editor/models.py +9 -2
  27. pygpt_net/core/node_editor/types.py +15 -1
  28. pygpt_net/core/presets/presets.py +216 -29
  29. pygpt_net/core/render/markdown/parser.py +0 -2
  30. pygpt_net/core/render/web/renderer.py +76 -11
  31. pygpt_net/data/config/config.json +5 -6
  32. pygpt_net/data/config/models.json +3 -3
  33. pygpt_net/data/config/settings.json +2 -38
  34. pygpt_net/data/css/style.dark.css +18 -0
  35. pygpt_net/data/css/style.light.css +20 -1
  36. pygpt_net/data/locale/locale.de.ini +66 -1
  37. pygpt_net/data/locale/locale.en.ini +64 -3
  38. pygpt_net/data/locale/locale.es.ini +66 -1
  39. pygpt_net/data/locale/locale.fr.ini +66 -1
  40. pygpt_net/data/locale/locale.it.ini +66 -1
  41. pygpt_net/data/locale/locale.pl.ini +67 -2
  42. pygpt_net/data/locale/locale.uk.ini +66 -1
  43. pygpt_net/data/locale/locale.zh.ini +66 -1
  44. pygpt_net/data/locale/plugin.cmd_system.en.ini +62 -66
  45. pygpt_net/item/ctx.py +23 -1
  46. pygpt_net/provider/agents/llama_index/flow_from_schema.py +2 -2
  47. pygpt_net/provider/agents/llama_index/workflow/codeact.py +9 -6
  48. pygpt_net/provider/agents/llama_index/workflow/openai.py +38 -11
  49. pygpt_net/provider/agents/llama_index/workflow/planner.py +36 -16
  50. pygpt_net/provider/agents/llama_index/workflow/supervisor.py +60 -10
  51. pygpt_net/provider/agents/openai/agent.py +3 -1
  52. pygpt_net/provider/agents/openai/agent_b2b.py +13 -9
  53. pygpt_net/provider/agents/openai/agent_planner.py +6 -2
  54. pygpt_net/provider/agents/openai/agent_with_experts.py +4 -1
  55. pygpt_net/provider/agents/openai/agent_with_experts_feedback.py +4 -2
  56. pygpt_net/provider/agents/openai/agent_with_feedback.py +4 -2
  57. pygpt_net/provider/agents/openai/evolve.py +6 -2
  58. pygpt_net/provider/agents/openai/supervisor.py +3 -1
  59. pygpt_net/provider/api/openai/agents/response.py +1 -0
  60. pygpt_net/provider/core/config/patch.py +18 -1
  61. pygpt_net/provider/core/config/patches/patch_before_2_6_42.py +0 -6
  62. pygpt_net/tools/agent_builder/tool.py +48 -26
  63. pygpt_net/tools/agent_builder/ui/dialogs.py +36 -28
  64. pygpt_net/ui/__init__.py +2 -4
  65. pygpt_net/ui/dialog/about.py +58 -38
  66. pygpt_net/ui/dialog/db.py +142 -3
  67. pygpt_net/ui/dialog/preset.py +47 -8
  68. pygpt_net/ui/layout/toolbox/presets.py +64 -16
  69. pygpt_net/ui/main.py +2 -2
  70. pygpt_net/ui/widget/dialog/confirm.py +27 -3
  71. pygpt_net/ui/widget/dialog/db.py +0 -0
  72. pygpt_net/ui/widget/draw/painter.py +90 -1
  73. pygpt_net/ui/widget/lists/preset.py +908 -60
  74. pygpt_net/ui/widget/node_editor/command.py +10 -10
  75. pygpt_net/ui/widget/node_editor/config.py +157 -0
  76. pygpt_net/ui/widget/node_editor/editor.py +223 -153
  77. pygpt_net/ui/widget/node_editor/item.py +12 -11
  78. pygpt_net/ui/widget/node_editor/node.py +246 -13
  79. pygpt_net/ui/widget/node_editor/view.py +179 -63
  80. pygpt_net/ui/widget/tabs/output.py +1 -1
  81. pygpt_net/ui/widget/textarea/input.py +157 -23
  82. pygpt_net/utils.py +114 -2
  83. {pygpt_net-2.6.60.dist-info → pygpt_net-2.6.62.dist-info}/METADATA +26 -100
  84. {pygpt_net-2.6.60.dist-info → pygpt_net-2.6.62.dist-info}/RECORD +86 -85
  85. {pygpt_net-2.6.60.dist-info → pygpt_net-2.6.62.dist-info}/LICENSE +0 -0
  86. {pygpt_net-2.6.60.dist-info → pygpt_net-2.6.62.dist-info}/WHEEL +0 -0
  87. {pygpt_net-2.6.60.dist-info → pygpt_net-2.6.62.dist-info}/entry_points.txt +0 -0
@@ -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: 2025.09.17 05:00:00 #
9
+ # Updated Date: 2025.09.26 17:00:00 #
10
10
  # ================================================== #
11
11
 
12
12
  import json
@@ -16,15 +16,13 @@ import html as _html
16
16
  from dataclasses import dataclass, field
17
17
 
18
18
  from datetime import datetime
19
- from typing import Optional, List, Any, Dict, Tuple
19
+ from typing import Optional, List, Any, Tuple
20
20
  from time import monotonic
21
21
  from io import StringIO
22
22
 
23
- from PySide6.QtCore import QTimer, QUrl, QCoreApplication, QEventLoop, QEvent
24
- from PySide6.QtWebEngineCore import QWebEnginePage
23
+ from PySide6.QtCore import QTimer, QCoreApplication, QEventLoop, QEvent
25
24
 
26
25
  from pygpt_net.core.render.base import BaseRenderer
27
- from pygpt_net.core.text.utils import has_unclosed_code_tag
28
26
  from pygpt_net.item.ctx import CtxItem, CtxMeta
29
27
  from pygpt_net.ui.widget.textarea.input import ChatInput
30
28
  from pygpt_net.ui.widget.textarea.web import ChatWebOutput
@@ -155,6 +153,7 @@ class Renderer(BaseRenderer):
155
153
  app_path = self.window.core.config.get_app_path() if self.window else ""
156
154
  self._icon_expand = os.path.join(app_path, "data", "icons", "expand.svg")
157
155
  self._icon_sync = os.path.join(app_path, "data", "icons", "sync.svg")
156
+ self._agent_avatar = os.path.join(app_path, "data", "icons", "robot.svg")
158
157
  self._file_prefix = 'file:///' if self.window and self.window.core.platforms.is_windows() else 'file://'
159
158
 
160
159
  # Bridge readiness for node append/replace path
@@ -378,6 +377,15 @@ class Renderer(BaseRenderer):
378
377
  self.tool_output_end()
379
378
  self.prev_chunk_replace = False
380
379
 
380
+ # Ensure stream header identity is up-to-date (agent/preset override)
381
+ try:
382
+ header = self.get_name_header(ctx, stream=True)
383
+ if pid is not None:
384
+ self.pids[pid].header = header
385
+ self._stream_header[pid] = header or ""
386
+ except Exception:
387
+ pass
388
+
381
389
  def end(self, meta: CtxMeta, ctx: CtxItem, stream: bool = False):
382
390
  """
383
391
  Render end
@@ -1163,6 +1171,26 @@ class Renderer(BaseRenderer):
1163
1171
  meta = ctx.meta
1164
1172
  if meta is None:
1165
1173
  return ""
1174
+
1175
+ # Agent-provided display name override:
1176
+ # If ctx.get_agent_name() returns a non-empty name, force "fake personalize":
1177
+ # - use that name
1178
+ # - optionally attach default avatar when enabled via config
1179
+ # - treat as personalized header regardless of preset
1180
+ agent_name = self._get_agent_name(ctx)
1181
+ if agent_name:
1182
+ avatar_html = ""
1183
+ try:
1184
+ use_default = self.window.core.config.get("agent.avatar.default", True)
1185
+ if use_default and os.path.exists(self._agent_avatar):
1186
+ avatar_html = f"<img src=\"{self._file_prefix}{self._agent_avatar}\" class=\"avatar\"> "
1187
+ except Exception:
1188
+ pass
1189
+ if stream:
1190
+ return f"{avatar_html}{agent_name}"
1191
+ else:
1192
+ return f"<div class=\"name-header name-bot\">{avatar_html}{agent_name}</div>"
1193
+
1166
1194
  preset_id = meta.preset
1167
1195
  if preset_id is None or preset_id == "":
1168
1196
  return ""
@@ -1904,23 +1932,60 @@ class Renderer(BaseRenderer):
1904
1932
 
1905
1933
  # ------------------------- Helpers: build JSON blocks -------------------------
1906
1934
 
1935
+ def _get_agent_name(self, ctx: CtxItem) -> Optional[str]:
1936
+ """
1937
+ Resolve agent-provided name from ctx if available.
1938
+
1939
+ This is used to force "fake personalize" on the UI:
1940
+ - when present and non-empty, we use this name,
1941
+ - optionally attach default avatar when enabled via config,
1942
+ - we set personalize flag to True in node payloads.
1943
+ """
1944
+ try:
1945
+ if hasattr(ctx, "get_agent_name"):
1946
+ name = ctx.get_agent_name()
1947
+ if isinstance(name, str):
1948
+ name = name.strip()
1949
+ return name or None
1950
+ except Exception:
1951
+ pass
1952
+ return None
1953
+
1907
1954
  def _output_identity(self, ctx: CtxItem) -> Tuple[str, Optional[str], bool]:
1908
1955
  """
1909
- Resolve output identity (name, avatar file:// path) based on preset.
1956
+ Resolve output identity (name, avatar file:// path) based on preset or ctx-provided agent name.
1910
1957
 
1911
1958
  :param ctx: context item
1912
1959
  :return: (name, avatar, personalize)
1913
1960
  """
1961
+ # 1) Agent-provided name override -> force personalize, optionally default avatar
1962
+ agent_name = self._get_agent_name(ctx)
1963
+ if agent_name:
1964
+ avatar = None
1965
+ try:
1966
+ if self.window.core.config.get("agent.avatar.default", True) and os.path.exists(self._agent_avatar):
1967
+ avatar = f"{self._file_prefix}{self._agent_avatar}"
1968
+ except Exception:
1969
+ pass
1970
+ return agent_name, avatar, True
1971
+
1972
+ # 2) Fallback to preset-based personalize
1914
1973
  meta = ctx.meta
1915
1974
  if meta is None:
1916
- return self.pids[self.get_or_create_pid(meta)].name_bot if meta else "", None, False
1975
+ return "", None, False
1976
+
1977
+ pid = self.get_or_create_pid(meta)
1978
+ default_name = self.pids[pid].name_bot if pid in self.pids else ""
1979
+
1917
1980
  preset_id = meta.preset
1918
1981
  if not preset_id:
1919
- return self.pids[self.get_or_create_pid(meta)].name_bot, None, False
1982
+ return default_name, None, False
1983
+
1920
1984
  preset = self.window.core.presets.get(preset_id)
1921
1985
  if preset is None or not preset.ai_personalize:
1922
- return self.pids[self.get_or_create_pid(meta)].name_bot, None, False
1923
- name = preset.ai_name or self.pids[self.get_or_create_pid(meta)].name_bot
1986
+ return default_name, None, False
1987
+
1988
+ name = preset.ai_name or default_name
1924
1989
  avatar = None
1925
1990
  if preset.ai_avatar:
1926
1991
  presets_dir = self.window.core.config.get_user_dir("presets")
@@ -1928,7 +1993,7 @@ class Renderer(BaseRenderer):
1928
1993
  avatar_path = os.path.join(avatars_dir, preset.ai_avatar)
1929
1994
  if os.path.exists(avatar_path):
1930
1995
  avatar = f"{self._file_prefix}{avatar_path}"
1931
- return name, avatar, bool(preset.ai_personalize)
1996
+ return name, avatar, True
1932
1997
 
1933
1998
  def _build_render_block(
1934
1999
  self,
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "__meta__": {
3
- "version": "2.6.60",
4
- "app.version": "2.6.60",
5
- "updated_at": "2025-09-25T00:00:00"
3
+ "version": "2.6.62",
4
+ "app.version": "2.6.62",
5
+ "updated_at": "2025-09-26T00:00:00"
6
6
  },
7
7
  "access.audio.event.speech": false,
8
8
  "access.audio.event.speech.disabled": [],
@@ -141,7 +141,6 @@
141
141
  "ctx.auto_summary": true,
142
142
  "ctx.auto_summary.model": "gpt-4o-mini",
143
143
  "ctx.code_interpreter": true,
144
- "ctx.convert_lists": false,
145
144
  "ctx.counters.all": false,
146
145
  "ctx.edit_icons": true,
147
146
  "ctx.list.expanded": [],
@@ -219,7 +218,6 @@
219
218
  "interpreter.input": "",
220
219
  "interpreter.ipython": true,
221
220
  "lang": "en",
222
- "layout.animation.disable": false,
223
221
  "layout.density": -1,
224
222
  "layout.dialog.geometry.store": true,
225
223
  "layout.dialog.geometry": {},
@@ -398,6 +396,8 @@
398
396
  "presence_penalty": 0.0,
399
397
  "preset": "current.chat",
400
398
  "preset.plugins": "",
399
+ "presets.drag_and_drop.enabled": true,
400
+ "presets_order": {},
401
401
  "prompt": "",
402
402
  "prompt.agent.continue": "Continue, or complete the run if the goal is fully achieved.",
403
403
  "prompt.agent.continue.always": "Continue reasoning...",
@@ -522,7 +522,6 @@
522
522
  },
523
523
  "temperature": 1.0,
524
524
  "theme": "dark_darker",
525
- "theme.markdown": true,
526
525
  "theme.style": "chatgpt",
527
526
  "top_p": 1.0,
528
527
  "upload.data_dir": false,
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "__meta__": {
3
- "version": "2.6.60",
4
- "app.version": "2.6.60",
5
- "updated_at": "2025-09-25T00:00:00"
3
+ "version": "2.6.62",
4
+ "app.version": "2.6.62",
5
+ "updated_at": "2025-09-26T00:00:00"
6
6
  },
7
7
  "items": {
8
8
  "SpeakLeash/bielik-11b-v2.3-instruct:Q4_K_M": {
@@ -838,19 +838,6 @@
838
838
  "step": 1,
839
839
  "advanced": false
840
840
  },
841
- "layout.animation.disable": {
842
- "section": "layout",
843
- "type": "bool",
844
- "slider": false,
845
- "label": "settings.layout.animation.disable",
846
- "description": "settings.layout.animation.disable.desc",
847
- "value": false,
848
- "min": 0,
849
- "max": 0,
850
- "multiplier": 1,
851
- "step": 1,
852
- "advanced": false
853
- },
854
841
  "layout.dialog.geometry.store": {
855
842
  "section": "layout",
856
843
  "type": "bool",
@@ -863,18 +850,6 @@
863
850
  "step": 1,
864
851
  "advanced": false
865
852
  },
866
- "theme.markdown": {
867
- "section": "layout",
868
- "type": "bool",
869
- "slider": false,
870
- "label": "settings.theme.markdown",
871
- "value": true,
872
- "min": 0,
873
- "max": 0,
874
- "multiplier": 1,
875
- "step": 1,
876
- "advanced": false
877
- },
878
853
  "upload.store": {
879
854
  "section": "files",
880
855
  "type": "bool",
@@ -1179,24 +1154,12 @@
1179
1154
  "step": null,
1180
1155
  "secret": false
1181
1156
  },
1182
- "ctx.convert_lists": {
1183
- "section": "ctx",
1184
- "type": "bool",
1185
- "slider": false,
1186
- "label": "settings.ctx.convert_lists",
1187
- "description": "settings.ctx.convert_lists.desc",
1188
- "value": true,
1189
- "min": null,
1190
- "max": null,
1191
- "multiplier": null,
1192
- "step": null,
1193
- "advanced": false
1194
- },
1195
1157
  "max_output_tokens": {
1196
1158
  "section": "model",
1197
1159
  "type": "int",
1198
1160
  "slider": true,
1199
1161
  "label": "settings.max_output_tokens",
1162
+ "description": "settings.zero.limit.desc",
1200
1163
  "value": 50,
1201
1164
  "min": 0,
1202
1165
  "max": 32000,
@@ -1209,6 +1172,7 @@
1209
1172
  "type": "int",
1210
1173
  "slider": true,
1211
1174
  "label": "settings.max_total_tokens",
1175
+ "description": "settings.zero.limit.desc",
1212
1176
  "value": 400,
1213
1177
  "min": 0,
1214
1178
  "max": 256000,
@@ -144,4 +144,22 @@ QCalendarWidget QAbstractItemView::item:hover {{
144
144
  QCalendarWidget QMenu::item:selected:focus,
145
145
  QCalendarWidget QMenu::item:selected {{
146
146
  background: #3a4045;
147
+ }}
148
+
149
+ /* Node editor */
150
+ NodeEditor {{
151
+ qproperty-gridBackColor: #242629;
152
+ qproperty-gridPenColor: #3b3f46;
153
+
154
+ qproperty-nodeBackgroundColor: #2d2f34;
155
+ qproperty-nodeBorderColor: #4b4f57;
156
+ qproperty-nodeSelectionColor: #ff9900;
157
+ qproperty-nodeTitleColor: #3a3d44;
158
+
159
+ qproperty-portInputColor: #66b2ff;
160
+ qproperty-portOutputColor: #70e070;
161
+ qproperty-portConnectedColor: #ffd166;
162
+
163
+ qproperty-edgeColor: #c0c0c0;
164
+ qproperty-edgeSelectedColor: #ff8a5c;
147
165
  }}
@@ -6,6 +6,7 @@
6
6
  QWidget {{
7
7
  color: #000;
8
8
  margin: 1px;
9
+ background-color: #eeeeee;
9
10
  }}
10
11
 
11
12
  QListView,
@@ -248,7 +249,7 @@ QCalendarWidget QToolButton:hover {{
248
249
  height: 20px;
249
250
  }}
250
251
  QMenu::indicator {{
251
- border: 1px solid gray; /* tu ustawiasz border */
252
+ border: 1px solid gray;
252
253
  }}
253
254
  QCalendarWidget QAbstractItemView::item:selected:focus,
254
255
  QCalendarWidget QAbstractItemView::item:selected {{
@@ -259,4 +260,22 @@ QCalendarWidget QAbstractItemView::item:hover {{
259
260
  }}
260
261
  .file-explorer QTreeView::branch {{
261
262
  background: #fff;
263
+ }}
264
+
265
+ /* Node editor */
266
+ NodeEditor {{
267
+ qproperty-gridBackColor: #ffffff;
268
+ qproperty-gridPenColor: #eaeaea;
269
+
270
+ qproperty-nodeBackgroundColor: #2d2f34;
271
+ qproperty-nodeBorderColor: #4b4f57;
272
+ qproperty-nodeSelectionColor: #ff9900;
273
+ qproperty-nodeTitleColor: #3a3d44;
274
+
275
+ qproperty-portInputColor: #66b2ff;
276
+ qproperty-portOutputColor: #70e070;
277
+ qproperty-portConnectedColor: #ffd166;
278
+
279
+ qproperty-edgeColor: #c0c0c0;
280
+ qproperty-edgeSelectedColor: #ff8a5c;
262
281
  }}
@@ -43,6 +43,7 @@ action.profile.delete = Profil entfernen (nur aus Liste)
43
43
  action.profile.delete_all = Profil löschen (und alle Benutzerdateien)
44
44
  action.redo = Wiederholen
45
45
  action.refresh = Aktualisieren
46
+ action.reload: Neuladen
46
47
  action.rename = Umbenennen
47
48
  action.reset = Zurücksetzen
48
49
  action.restore = Wiederherstellen
@@ -50,7 +51,8 @@ action.save = Speichern
50
51
  action.save_as = Speichern unter...
51
52
  action.save_selection_as = Auswahl speichern unter...
52
53
  action.select_all = Alle auswählen
53
- action.tab.add.chat = Neuen Chat hinzufügen
54
+ action.tab.add.chat: Neuen Chat hinzufügen
55
+ action.tab.add.chat.tooltip: Neuen Chat hinzufügen (RMT für mehr Optionen...)
54
56
  action.tab.add.notepad = Neuen Notizblock hinzufügen
55
57
  action.tab.add.tool = Neues Werkzeug hinzufügen
56
58
  action.tab.close = Schließen
@@ -72,6 +74,8 @@ action.use.read_cmd = Bitten, diese Datei zu lesen...
72
74
  action.video.open = Video oder Audio öffnen...
73
75
  action.video.play = Video oder Audio abspielen...
74
76
  action.video.transcribe = Ton transkribieren...
77
+ agent.builder.title = Agenten-Editor
78
+ agent.builder.tooltip = Öffne den Agenten-Editor
75
79
  agent.coder.additional.label = Zusätzlicher Prompt
76
80
  agent.coder.additional.prompt.desc = Zusätzlicher Prompt für Agent (wird zum Basis-Prompt hinzugefügt)
77
81
  agent.coder.base.label = Basis-Prompt
@@ -101,6 +105,7 @@ agent.option.prompt.planner.desc = Prompt für Planer-Agent
101
105
  agent.option.prompt.search.desc = Prompt für Such-Agent
102
106
  agent.option.prompt.supervisor.desc = Prompt für Supervisor
103
107
  agent.option.prompt.worker.desc = Prompt für Arbeiter
108
+ agent.option.role = Kurze Beschreibung des Betriebs des Agents zur Anweisung des Modells (optional)
104
109
  agent.option.section.base = Basisagent
105
110
  agent.option.section.chooser = Wähler
106
111
  agent.option.section.feedback = Feedback
@@ -239,6 +244,8 @@ clipboard.copied_to = In die Zwischenablage kopiert:
239
244
  cmd.enabled = + Werkzeuge
240
245
  cmd.tip = Tipp: Um die Ausführung von Werkzeugen aus Plugins zu ermöglichen, müssen Sie die Option "+ Werkzeuge" aktivieren.
241
246
  coming_soon = Demnächst...
247
+ common.down = Nach unten verschieben
248
+ common.up = Nach oben verschieben
242
249
  confirm.assistant.delete = Assistent löschen?
243
250
  confirm.assistant.files.clear = Dateien löschen (nur lokal)?
244
251
  confirm.assistant.files.truncate = Sind Sie sicher, dass Sie alle Dateien von allen Speichern entfernen möchten?
@@ -651,6 +658,7 @@ event.control.voice_cmd.toggle = Sprachsteuerung: Umschalten
651
658
  event.control.voice_msg.start = Spracheingabe: Start
652
659
  event.control.voice_msg.stop = Spracheingabe: Stopp
653
660
  event.control.voice_msg.toggle = Spracheingabe: Umschalten
661
+ exit.msg = Gefällt dir PyGPT? Unterstütze die Entwicklung des Projekts:
654
662
  expert.wait.failed: Aufruf des Experten fehlgeschlagen
655
663
  expert.wait.status: Warten auf Experten...
656
664
  files.delete.confirm = Datei/Verzeichnis löschen?
@@ -678,6 +686,8 @@ html_canvas.clear.confirm = HTML-Canvas-Ausgabe löschen?
678
686
  icon.audio.input = Audioeingang aktivieren/deaktivieren
679
687
  icon.audio.output = Audioausgang aktivieren/deaktivieren
680
688
  icon.remote_tool.web = Websuche (ferngesteuertes Werkzeug, kein lokales Werkzeug)
689
+ icon.remote_tool.web.disabled: Websuche (Remote-Tool, kein lokales Tool) - deaktiviert
690
+ icon.remote_tool.web.enabled: Websuche (Remote-Tool, kein lokales Tool) - aktiviert
681
691
  icon.video.capture = Videoaufnahme von der Kamera aktivieren/deaktivieren
682
692
  idx.btn.clear = Index löschen
683
693
  idx.btn.index_all = Alles indizieren
@@ -725,6 +735,7 @@ input.search.placeholder = Suchen...
725
735
  input.send_clear = Nach dem Senden löschen
726
736
  input.stream = Streamen
727
737
  input.tab = Eingabe
738
+ input.tab.tooltip = {chars} Zeichen (~{tokens} Token)
728
739
  interpreter.all = Verlauf ausführen (alle)
729
740
  interpreter.auto_clear = Bei Senden löschen
730
741
  interpreter.btn.clear = Ausgabe löschen
@@ -773,6 +784,7 @@ menu.config.save = Konfiguration speichern
773
784
  menu.config.settings = Einstellungen...
774
785
  menu.debug = Debug
775
786
  menu.debug.agent = Agent...
787
+ menu.debug.agent_builder = Agenten-Editor
776
788
  menu.debug.app.log = Logdatei ansehen (app.log)
777
789
  menu.debug.assistants = Assistenten...
778
790
  menu.debug.attachments = Dateien/Anhänge...
@@ -826,6 +838,7 @@ menu.theme.style = Stil...
826
838
  menu.theme.syntax = Syntaxhervorhebung des Codes...
827
839
  menu.theme.tooltips = Tooltips anzeigen
828
840
  menu.tools = Werkzeuge
841
+ menu.tools.agent.builder = Agenten-Editor
829
842
  menu.tools.audio.transcribe = Audio-/Videodateien transkribieren
830
843
  menu.tools.html_canvas = HTML/JS-Canvas
831
844
  menu.tools.image.viewer = Bildbetrachter
@@ -933,6 +946,57 @@ multimodal.audio = Audio
933
946
  multimodal.image = Bild
934
947
  multimodal.text = Text
935
948
  multimodal.video = Video
949
+ node.editor.bottom.tip: Rechtsklick: Knoten hinzufügen / rückgängig machen / wiederherstellen • Mittelklick: Ansichts verschieben • Strg + Mausrad: zoom; Linksklick auf Port: Verbindung erstellen • Strg + Linksklick auf Port: neu verdrahten/lösen • Rechtsklick oder ENTF auf Knoten/Verbindung: entfernen
950
+ node.editor.cap.na: k.A.
951
+ node.editor.cap.unlimited: unbegrenzt (∞)
952
+ node.editor.cmd.add: Hinzufügen
953
+ node.editor.cmd.clear: Leeren
954
+ node.editor.cmd.connect: Verbinden
955
+ node.editor.cmd.delete_connection: Verbindung löschen
956
+ node.editor.cmd.delete_node: Knoten löschen
957
+ node.editor.cmd.move_node: Knoten verschieben
958
+ node.editor.cmd.resize_node: Knotengröße ändern
959
+ node.editor.cmd.rewire_connection: Verbindung neu verdrahten
960
+ node.editor.edge.delete: Verbindung löschen
961
+ node.editor.hint.click_start: Klicken: eine neue Verbindung starten
962
+ node.editor.hint.ctrl_rewire: Strg+Klicken: bestehende neu verdrahten/lösen
963
+ node.editor.label.id: ID
964
+ node.editor.lbl.allowed: Erlaubte Verbindungen:
965
+ node.editor.lbl.node: Knoten:
966
+ node.editor.lbl.port: Anschluss:
967
+ node.editor.list.tip: Liste der hinzugefügten benutzerdefinierten Agenten-Workflows
968
+ node.editor.macro.delete_selection: Auswahl löschen
969
+ node.editor.menu.add: Hinzufügen
970
+ node.editor.menu.clear: Leeren
971
+ node.editor.menu.redo: Wiederherstellen
972
+ node.editor.menu.undo: Rückgängig
973
+ node.editor.node.delete: Löschen
974
+ node.editor.node.rename: Umbenennen
975
+ node.editor.overlay.grab: Greifen: globales Schwenken mit LMT umschalten
976
+ node.editor.overlay.zoom_in: Vergrößern
977
+ node.editor.overlay.zoom_out: Verkleinern
978
+ node.editor.property.agent.name = Agent
979
+ node.editor.property.input.name = Eingabe
980
+ node.editor.property.instruction.name = Anweisung
981
+ node.editor.property.instruction.placeholder = Systemanweisung für den Agenten
982
+ node.editor.property.local_tools.name = Lokale Werkzeuge
983
+ node.editor.property.memory.name = Speicher
984
+ node.editor.property.name.name = Name
985
+ node.editor.property.name.placeholder = Name des Agenten
986
+ node.editor.property.output.name = Ausgabe
987
+ node.editor.property.remote_tools.name = Remote-Werkzeuge
988
+ node.editor.property.role.name = Rolle
989
+ node.editor.property.role.placeholder = Optionale kurze Beschreibung des Zwecks des Agenten
990
+ node.editor.rename.label: Name:
991
+ node.editor.rename.title: Knoten umbenennen
992
+ node.editor.side.input: Eingang
993
+ node.editor.side.output: Ausgang
994
+ node.editor.spec.agent.title = Agent
995
+ node.editor.spec.end.title = Ende
996
+ node.editor.spec.memory.title = Speicher (Kontext)
997
+ node.editor.spec.start.title = Start
998
+ node.editor.status.no_nodes: Keine Knoten
999
+ node.editor.type.unknown: Unbekannt
936
1000
  notify.agent.goal.content = Agent: das Ziel wurde erreicht.
937
1001
  notify.agent.goal.title = Ziel erreicht
938
1002
  notify.agent.stop.content = Agent: gestoppt
@@ -1418,6 +1482,7 @@ settings.vision.capture.idx = Kameragerät
1418
1482
  settings.vision.capture.idx.desc = Wählen Sie ein Kameragerät für die Echtzeit-Videoaufnahme
1419
1483
  settings.vision.capture.quality = Aufnahmequalität (%)
1420
1484
  settings.vision.capture.width = Aufnahmewidth (in Pixeln)
1485
+ settings.zero.limit.desc: Stellen Sie 0 ein, um das Limit zu deaktivieren.
1421
1486
  settings.zoom = Zoomen des Chat-Ausgabefensters
1422
1487
  speech.enable = Sprachausgabe aktivieren
1423
1488
  speech.listening = Sprechen Sie jetzt...
@@ -43,6 +43,7 @@ action.profile.delete = Remove profile (from list only)
43
43
  action.profile.delete_all = Delete profile (with all user files)
44
44
  action.redo = Redo
45
45
  action.refresh = Refresh
46
+ action.reload = Reload
46
47
  action.rename = Rename
47
48
  action.reset = Reset
48
49
  action.restore = Restore
@@ -51,6 +52,7 @@ action.save_as = Save as...
51
52
  action.save_selection_as = Save selection as...
52
53
  action.select_all = Select all
53
54
  action.tab.add.chat = Add a new chat
55
+ action.tab.add.chat.tooltip = Add a new chat (RMB click to more options...)
54
56
  action.tab.add.notepad = Add a new notepad
55
57
  action.tab.add.tool = Add a new tool
56
58
  action.tab.close = Close
@@ -75,7 +77,7 @@ action.video.transcribe = Transcribe audio...
75
77
  agent.builder.confirm.clear.msg = Do you really want to clear the graph?
76
78
  agent.builder.confirm.clear.title = Clear
77
79
  agent.builder.confirm.delete.msg = Do you really want to delete the agent?
78
- agent.builder.title = Agents Builder (beta)
80
+ agent.builder.title = Agents Builder
79
81
  agent.coder.additional.label = Additional prompt
80
82
  agent.coder.additional.prompt.desc = Additional prompt for agent (will be added to the base prompt)
81
83
  agent.coder.base.label = Base prompt
@@ -105,6 +107,7 @@ agent.option.prompt.planner.desc = Prompt for Planner agent
105
107
  agent.option.prompt.search.desc = Prompt for search agent
106
108
  agent.option.prompt.supervisor.desc = Prompt for Supervisor
107
109
  agent.option.prompt.worker.desc = Prompt for Worker
110
+ agent.option.role = Short description of the agent's operation for instructing the model (optional)
108
111
  agent.option.section.base = Base agent
109
112
  agent.option.section.chooser = Chooser
110
113
  agent.option.section.feedback = Feedback
@@ -245,6 +248,8 @@ clipboard.copied_to = Copied to clipboard:
245
248
  cmd.enabled = + Tools
246
249
  cmd.tip = Tip: To enable the execution of tools from plugins you must enable the "+ Tools" option.
247
250
  coming_soon = Coming soon...
251
+ common.down = Move down
252
+ common.up = Move up
248
253
  confirm.assistant.delete = Delete assistant?
249
254
  confirm.assistant.files.clear = Clear files (local only)?
250
255
  confirm.assistant.files.truncate = Are you sure you want to remove all files from all Assistants?
@@ -658,6 +663,7 @@ event.control.voice_cmd.toggle = Voice control: Toggle
658
663
  event.control.voice_msg.start = Voice input: Start
659
664
  event.control.voice_msg.stop = Voice input: Stop
660
665
  event.control.voice_msg.toggle = Voice input: Toggle
666
+ exit.msg = Do you like PyGPT? Support the development of the project:
661
667
  expert.wait.failed: Failed calling expert
662
668
  expert.wait.status: Waiting for expert...
663
669
  files.delete.confirm = Delete file/directory?
@@ -685,6 +691,8 @@ html_canvas.clear.confirm = Clear HTML canvas output?
685
691
  icon.audio.input = Enable/disable audio input
686
692
  icon.audio.output = Enable/disable audio output
687
693
  icon.remote_tool.web = Web Search (remote tool, not a local tool)
694
+ icon.remote_tool.web.disabled = Web Search (remote tool, not a local tool) - disabled
695
+ icon.remote_tool.web.enabled = Web Search (remote tool, not a local tool) - enabled
688
696
  icon.video.capture = Enable/disable camera capture
689
697
  idx.btn.clear = Clear index
690
698
  idx.btn.index_all = Index all
@@ -732,6 +740,7 @@ input.search.placeholder = Search...
732
740
  input.send_clear = Clear on send
733
741
  input.stream = Stream
734
742
  input.tab = Input
743
+ input.tab.tooltip = {chars} chars (~{tokens} tokens)
735
744
  interpreter.all = Execute history (all)
736
745
  interpreter.auto_clear = Clear output on send
737
746
  interpreter.btn.clear = Clear output
@@ -780,7 +789,7 @@ menu.config.save = Save config
780
789
  menu.config.settings = Settings...
781
790
  menu.debug = Debug
782
791
  menu.debug.agent = Agent...
783
- menu.debug.agent_builder = Agents Builder (beta)
792
+ menu.debug.agent_builder = Agents Builder
784
793
  menu.debug.app.log = View log file (app.log)
785
794
  menu.debug.assistants = Assistants...
786
795
  menu.debug.attachments = Files / attachments...
@@ -835,7 +844,7 @@ menu.theme.style = Style...
835
844
  menu.theme.syntax = Code syntax highlight...
836
845
  menu.theme.tooltips = Show tooltips
837
846
  menu.tools = Tools
838
- menu.tools.agent.builder = Agents Builder (beta)
847
+ menu.tools.agent.builder = Agents Builder
839
848
  menu.tools.audio.transcribe = Transcribe Audio/Video Files
840
849
  menu.tools.html_canvas = HTML/JS Canvas
841
850
  menu.tools.image.viewer = Image Viewer
@@ -943,6 +952,57 @@ multimodal.audio = Audio
943
952
  multimodal.image = Image
944
953
  multimodal.text = Text
945
954
  multimodal.video = Video
955
+ node.editor.bottom.tip = Right-click: add node / undo / redo • Middle-click: pan view • Ctrl + Mouse wheel: zoom Left-click a port: create connection • Ctrl + Left-click a port: rewire or detach • Right-click or DEL a node/connection: remove
956
+ node.editor.cap.na = n/a
957
+ node.editor.cap.unlimited = unlimited (∞)
958
+ node.editor.cmd.add = Add
959
+ node.editor.cmd.clear = Clear
960
+ node.editor.cmd.connect = Connect
961
+ node.editor.cmd.delete_connection = Delete Connection
962
+ node.editor.cmd.delete_node = Delete Node
963
+ node.editor.cmd.move_node = Move Node
964
+ node.editor.cmd.resize_node = Resize Node
965
+ node.editor.cmd.rewire_connection = Rewire Connection
966
+ node.editor.edge.delete = Delete connection
967
+ node.editor.hint.click_start = Click: start a new connection
968
+ node.editor.hint.ctrl_rewire = Ctrl+Click: rewire/detach existing
969
+ node.editor.label.id = ID
970
+ node.editor.lbl.allowed = Allowed connections:
971
+ node.editor.lbl.node = Node:
972
+ node.editor.lbl.port = Port:
973
+ node.editor.list.tip = List of added custom agent workflows (available in the agent type section of the presets editor)
974
+ node.editor.macro.delete_selection = Delete selection
975
+ node.editor.menu.add = Add
976
+ node.editor.menu.clear = Clear
977
+ node.editor.menu.redo = Redo
978
+ node.editor.menu.undo = Undo
979
+ node.editor.node.delete = Delete
980
+ node.editor.node.rename = Rename
981
+ node.editor.overlay.grab = Grab: toggle global panning with Left Mouse Button
982
+ node.editor.overlay.zoom_in = Zoom In
983
+ node.editor.overlay.zoom_out = Zoom Out
984
+ node.editor.property.agent.name = Agent
985
+ node.editor.property.input.name = Input
986
+ node.editor.property.instruction.name = Instruction
987
+ node.editor.property.instruction.placeholder = System instruction for the agent
988
+ node.editor.property.local_tools.name = Local tools
989
+ node.editor.property.memory.name = Memory
990
+ node.editor.property.name.name = Name
991
+ node.editor.property.name.placeholder = Name of the agent
992
+ node.editor.property.output.name = Output
993
+ node.editor.property.remote_tools.name = Remote tools
994
+ node.editor.property.role.name = Role
995
+ node.editor.property.role.placeholder = Optional short description of agent's purpose
996
+ node.editor.rename.label = Name:
997
+ node.editor.rename.title = Rename Node
998
+ node.editor.side.input = Input
999
+ node.editor.side.output = Output
1000
+ node.editor.spec.agent.title = Agent
1001
+ node.editor.spec.end.title = End
1002
+ node.editor.spec.memory.title = Memory (Context)
1003
+ node.editor.spec.start.title = Start
1004
+ node.editor.status.no_nodes = No nodes
1005
+ node.editor.type.unknown = Unknown
946
1006
  notify.agent.goal.content = Agent: the goal has been achieved.
947
1007
  notify.agent.goal.title = Goal achieved
948
1008
  notify.agent.stop.content = Agent: stopped
@@ -1492,6 +1552,7 @@ settings.vision.capture.idx = Camera Device
1492
1552
  settings.vision.capture.idx.desc = Select a camera device for real-time video capture
1493
1553
  settings.vision.capture.quality = Capture quality (%)
1494
1554
  settings.vision.capture.width = Capture width (in pixels)
1555
+ settings.zero.limit.desc = Set to 0 to disable the limit.
1495
1556
  settings.zoom = Chat output window zoom
1496
1557
  speech.enable = Speak
1497
1558
  speech.listening = Speak now...