pygpt-net 2.6.59__py3-none-any.whl → 2.6.60__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.
- pygpt_net/CHANGELOG.txt +4 -0
- pygpt_net/__init__.py +3 -3
- pygpt_net/app.py +9 -5
- pygpt_net/controller/__init__.py +1 -0
- pygpt_net/controller/presets/editor.py +442 -39
- pygpt_net/core/agents/custom/__init__.py +275 -0
- pygpt_net/core/agents/custom/debug.py +64 -0
- pygpt_net/core/agents/custom/factory.py +109 -0
- pygpt_net/core/agents/custom/graph.py +71 -0
- pygpt_net/core/agents/custom/llama_index/__init__.py +10 -0
- pygpt_net/core/agents/custom/llama_index/factory.py +89 -0
- pygpt_net/core/agents/custom/llama_index/router_streamer.py +106 -0
- pygpt_net/core/agents/custom/llama_index/runner.py +529 -0
- pygpt_net/core/agents/custom/llama_index/stream.py +56 -0
- pygpt_net/core/agents/custom/llama_index/utils.py +242 -0
- pygpt_net/core/agents/custom/logging.py +50 -0
- pygpt_net/core/agents/custom/memory.py +51 -0
- pygpt_net/core/agents/custom/router.py +116 -0
- pygpt_net/core/agents/custom/router_streamer.py +187 -0
- pygpt_net/core/agents/custom/runner.py +454 -0
- pygpt_net/core/agents/custom/schema.py +125 -0
- pygpt_net/core/agents/custom/utils.py +181 -0
- pygpt_net/core/agents/provider.py +72 -7
- pygpt_net/core/agents/runner.py +7 -4
- pygpt_net/core/agents/runners/helpers.py +1 -1
- pygpt_net/core/agents/runners/llama_workflow.py +3 -0
- pygpt_net/core/agents/runners/openai_workflow.py +8 -1
- pygpt_net/{ui/widget/builder → core/node_editor}/__init__.py +2 -2
- pygpt_net/core/{builder → node_editor}/graph.py +11 -218
- pygpt_net/core/node_editor/models.py +111 -0
- pygpt_net/core/node_editor/types.py +76 -0
- pygpt_net/core/node_editor/utils.py +17 -0
- pygpt_net/core/render/web/renderer.py +10 -8
- pygpt_net/data/config/config.json +3 -3
- pygpt_net/data/config/models.json +3 -3
- pygpt_net/data/locale/locale.en.ini +4 -4
- pygpt_net/item/agent.py +5 -1
- pygpt_net/item/preset.py +19 -1
- pygpt_net/provider/agents/base.py +33 -2
- pygpt_net/provider/agents/llama_index/flow_from_schema.py +92 -0
- pygpt_net/provider/agents/openai/flow_from_schema.py +96 -0
- pygpt_net/provider/core/agent/json_file.py +11 -5
- pygpt_net/tools/agent_builder/tool.py +217 -52
- pygpt_net/tools/agent_builder/ui/dialogs.py +119 -24
- pygpt_net/tools/agent_builder/ui/list.py +37 -10
- pygpt_net/ui/dialog/preset.py +16 -1
- pygpt_net/ui/main.py +1 -1
- pygpt_net/{core/builder → ui/widget/node_editor}/__init__.py +2 -2
- pygpt_net/ui/widget/node_editor/command.py +373 -0
- pygpt_net/ui/widget/node_editor/editor.py +2038 -0
- pygpt_net/ui/widget/node_editor/item.py +492 -0
- pygpt_net/ui/widget/node_editor/node.py +1205 -0
- pygpt_net/ui/widget/node_editor/utils.py +17 -0
- pygpt_net/ui/widget/node_editor/view.py +247 -0
- {pygpt_net-2.6.59.dist-info → pygpt_net-2.6.60.dist-info}/METADATA +72 -2
- {pygpt_net-2.6.59.dist-info → pygpt_net-2.6.60.dist-info}/RECORD +59 -33
- pygpt_net/core/agents/custom.py +0 -150
- pygpt_net/ui/widget/builder/editor.py +0 -2001
- {pygpt_net-2.6.59.dist-info → pygpt_net-2.6.60.dist-info}/LICENSE +0 -0
- {pygpt_net-2.6.59.dist-info → pygpt_net-2.6.60.dist-info}/WHEEL +0 -0
- {pygpt_net-2.6.59.dist-info → pygpt_net-2.6.60.dist-info}/entry_points.txt +0 -0
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# ================================================== #
|
|
4
|
+
# This file is a part of PYGPT package #
|
|
5
|
+
# Website: https://pygpt.net #
|
|
6
|
+
# GitHub: https://github.com/szczyglis-dev/py-gpt #
|
|
7
|
+
# MIT License #
|
|
8
|
+
# Created By : Marcin Szczygliński #
|
|
9
|
+
# Updated Date: 2025.09.24 00:00:00 #
|
|
10
|
+
# ================================================== #
|
|
11
|
+
|
|
12
|
+
# Safety: check C++ pointer validity to avoid calling methods on deleted Qt objects
|
|
13
|
+
try:
|
|
14
|
+
from shiboken6 import isValid as _qt_is_valid
|
|
15
|
+
except Exception:
|
|
16
|
+
def _qt_is_valid(obj) -> bool:
|
|
17
|
+
return obj is not None
|
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# ================================================== #
|
|
4
|
+
# This file is a part of PYGPT package #
|
|
5
|
+
# Website: https://pygpt.net #
|
|
6
|
+
# GitHub: https://github.com/szczyglis-dev/py-gpt #
|
|
7
|
+
# MIT License #
|
|
8
|
+
# Created By : Marcin Szczygliński #
|
|
9
|
+
# Updated Date: 2025.09.24 00:00:00 #
|
|
10
|
+
# ================================================== #
|
|
11
|
+
|
|
12
|
+
from __future__ import annotations
|
|
13
|
+
from typing import Optional, Tuple
|
|
14
|
+
|
|
15
|
+
from PySide6.QtCore import Qt, QPointF, QRectF, QObject, Signal
|
|
16
|
+
from PySide6.QtGui import QColor, QPainter, QPen, QTransform
|
|
17
|
+
from PySide6.QtWidgets import QWidget, QGraphicsView, QGraphicsScene
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
# ------------------------ Graphics View / Scene ------------------------
|
|
21
|
+
|
|
22
|
+
class NodeGraphicsView(QGraphicsView):
|
|
23
|
+
"""Zoomable, pannable view with a grid background.
|
|
24
|
+
|
|
25
|
+
The view renders a lightweight grid and supports:
|
|
26
|
+
- Ctrl + Mouse Wheel zooming
|
|
27
|
+
- Middle Mouse Button panning
|
|
28
|
+
- Rubber band selection
|
|
29
|
+
|
|
30
|
+
Notes:
|
|
31
|
+
- Space-panning is intentionally disabled to not conflict with typing in editors.
|
|
32
|
+
- All keyboard shortcuts (e.g., Delete) are handled at the NodeEditor level.
|
|
33
|
+
|
|
34
|
+
Args:
|
|
35
|
+
scene: Shared QGraphicsScene instance for the editor.
|
|
36
|
+
parent: Optional parent widget.
|
|
37
|
+
"""
|
|
38
|
+
def __init__(self, scene: QGraphicsScene, parent: Optional[QWidget] = None):
|
|
39
|
+
super().__init__(scene, parent)
|
|
40
|
+
self.setRenderHints(self.renderHints() |
|
|
41
|
+
QPainter.Antialiasing | QPainter.TextAntialiasing | QPainter.SmoothPixmapTransform)
|
|
42
|
+
self.setViewportUpdateMode(QGraphicsView.FullViewportUpdate)
|
|
43
|
+
self.setDragMode(QGraphicsView.RubberBandDrag)
|
|
44
|
+
self.setTransformationAnchor(QGraphicsView.AnchorUnderMouse)
|
|
45
|
+
a = QGraphicsView.AnchorViewCenter
|
|
46
|
+
self.setResizeAnchor(a)
|
|
47
|
+
self.setFocusPolicy(Qt.StrongFocus)
|
|
48
|
+
|
|
49
|
+
self._zoom = 1.0
|
|
50
|
+
self._zoom_step = 1.15
|
|
51
|
+
self._min_zoom = 0.2
|
|
52
|
+
self._max_zoom = 3.0
|
|
53
|
+
|
|
54
|
+
self._panning = False
|
|
55
|
+
self._last_pan_pos = None
|
|
56
|
+
|
|
57
|
+
def drawBackground(self, painter: QPainter, rect: QRectF):
|
|
58
|
+
"""Draw the checker grid in the background.
|
|
59
|
+
|
|
60
|
+
The grid spacing is fixed (20 px). Colors are read from the owning NodeEditor
|
|
61
|
+
instance if available, which allows dynamic theming.
|
|
62
|
+
|
|
63
|
+
Args:
|
|
64
|
+
painter: Active QPainter provided by Qt.
|
|
65
|
+
rect: The exposed background rect to be filled.
|
|
66
|
+
"""
|
|
67
|
+
parent_editor = self.parent() # NodeEditor
|
|
68
|
+
color_back = getattr(parent_editor, "_grid_back_color", QColor(35, 35, 38))
|
|
69
|
+
color_pen = getattr(parent_editor, "_grid_pen_color", QColor(55, 55, 60))
|
|
70
|
+
painter.fillRect(rect, color_back)
|
|
71
|
+
pen = QPen(color_pen)
|
|
72
|
+
pen.setWidthF(1.0)
|
|
73
|
+
painter.setPen(pen)
|
|
74
|
+
grid = 20
|
|
75
|
+
left = int(rect.left()) - (int(rect.left()) % grid)
|
|
76
|
+
top = int(rect.top()) - (int(rect.top()) % grid)
|
|
77
|
+
x = left
|
|
78
|
+
while x < rect.right():
|
|
79
|
+
painter.drawLine(x, rect.top(), x, rect.bottom())
|
|
80
|
+
x += grid
|
|
81
|
+
y = top
|
|
82
|
+
while y < rect.bottom():
|
|
83
|
+
painter.drawLine(rect.left(), y, rect.right(), y)
|
|
84
|
+
y += grid
|
|
85
|
+
|
|
86
|
+
def keyPressEvent(self, e):
|
|
87
|
+
"""Pass-through: the view does not handle special keys.
|
|
88
|
+
|
|
89
|
+
ESC and other keys are intentionally left for the host application/editor.
|
|
90
|
+
"""
|
|
91
|
+
super().keyPressEvent(e)
|
|
92
|
+
|
|
93
|
+
def keyReleaseEvent(self, e):
|
|
94
|
+
"""Pass-through for key release."""
|
|
95
|
+
super().keyReleaseEvent(e)
|
|
96
|
+
|
|
97
|
+
def wheelEvent(self, e):
|
|
98
|
+
"""Handle Ctrl + Wheel zoom. Otherwise, default wheel behavior (scroll)."""
|
|
99
|
+
if e.modifiers() & Qt.ControlModifier:
|
|
100
|
+
self._apply_zoom(self._zoom_step if e.angleDelta().y() > 0 else 1.0 / self._zoom_step)
|
|
101
|
+
e.accept()
|
|
102
|
+
return
|
|
103
|
+
super().wheelEvent(e)
|
|
104
|
+
|
|
105
|
+
def mousePressEvent(self, e):
|
|
106
|
+
"""Start panning with Middle Mouse Button; otherwise defer to base implementation."""
|
|
107
|
+
if e.button() == Qt.MiddleButton:
|
|
108
|
+
self._panning = True
|
|
109
|
+
self._last_pan_pos = e.position()
|
|
110
|
+
self.setCursor(Qt.ClosedHandCursor)
|
|
111
|
+
e.accept()
|
|
112
|
+
return
|
|
113
|
+
super().mousePressEvent(e)
|
|
114
|
+
|
|
115
|
+
def mouseMoveEvent(self, e):
|
|
116
|
+
"""While panning, translate scrollbars. Otherwise defer."""
|
|
117
|
+
if self._panning and self._last_pan_pos is not None:
|
|
118
|
+
delta = e.position() - self._last_pan_pos
|
|
119
|
+
self._last_pan_pos = e.position()
|
|
120
|
+
self.horizontalScrollBar().setValue(self.horizontalScrollBar().value() - int(delta.x()))
|
|
121
|
+
self.verticalScrollBar().setValue(self.verticalScrollBar().value() - int(delta.y()))
|
|
122
|
+
e.accept()
|
|
123
|
+
return
|
|
124
|
+
super().mouseMoveEvent(e)
|
|
125
|
+
|
|
126
|
+
def mouseReleaseEvent(self, e):
|
|
127
|
+
"""Stop panning on Middle Mouse Button release; otherwise defer."""
|
|
128
|
+
if self._panning and e.button() == Qt.MiddleButton:
|
|
129
|
+
self._panning = False
|
|
130
|
+
self.setCursor(Qt.ArrowCursor)
|
|
131
|
+
e.accept()
|
|
132
|
+
return
|
|
133
|
+
super().mouseReleaseEvent(e)
|
|
134
|
+
|
|
135
|
+
def zoom_in(self):
|
|
136
|
+
"""Programmatically zoom in by a predefined step."""
|
|
137
|
+
self._apply_zoom(self._zoom_step)
|
|
138
|
+
|
|
139
|
+
def zoom_out(self):
|
|
140
|
+
"""Programmatically zoom out by a predefined step."""
|
|
141
|
+
self._apply_zoom(1.0 / self._zoom_step)
|
|
142
|
+
|
|
143
|
+
def _apply_zoom(self, factor: float):
|
|
144
|
+
"""Apply zoom scaling factor within configured bounds.
|
|
145
|
+
|
|
146
|
+
Args:
|
|
147
|
+
factor: Multiplicative factor to apply to the current zoom.
|
|
148
|
+
|
|
149
|
+
Notes:
|
|
150
|
+
The method clamps the result to [_min_zoom, _max_zoom] to prevent
|
|
151
|
+
excessive zooming.
|
|
152
|
+
"""
|
|
153
|
+
new_zoom = self._zoom * factor
|
|
154
|
+
if not (self._min_zoom <= new_zoom <= self._max_zoom):
|
|
155
|
+
return
|
|
156
|
+
self._zoom = new_zoom
|
|
157
|
+
self.scale(factor, factor)
|
|
158
|
+
|
|
159
|
+
def zoom_value(self) -> float:
|
|
160
|
+
"""Return the current zoom factor."""
|
|
161
|
+
return float(self._zoom)
|
|
162
|
+
|
|
163
|
+
def set_zoom_value(self, zoom: float, keep_center: bool = False):
|
|
164
|
+
"""Set an absolute zoom factor and optionally keep the current viewport center."""
|
|
165
|
+
if zoom is None:
|
|
166
|
+
return
|
|
167
|
+
z = max(self._min_zoom, min(self._max_zoom, float(zoom)))
|
|
168
|
+
center_scene = None
|
|
169
|
+
if keep_center and self.viewport() is not None and self.viewport().rect().isValid():
|
|
170
|
+
center_scene = self.mapToScene(self.viewport().rect().center())
|
|
171
|
+
|
|
172
|
+
# Reset and apply new transform to avoid cumulative floating errors
|
|
173
|
+
self.resetTransform()
|
|
174
|
+
self._zoom = 1.0
|
|
175
|
+
if abs(z - 1.0) > 1e-9:
|
|
176
|
+
self.scale(z, z)
|
|
177
|
+
self._zoom = z
|
|
178
|
+
|
|
179
|
+
if keep_center and center_scene is not None:
|
|
180
|
+
self.centerOn(center_scene)
|
|
181
|
+
|
|
182
|
+
def get_scroll_values(self) -> Tuple[int, int]:
|
|
183
|
+
"""Return (horizontal, vertical) scrollbar values."""
|
|
184
|
+
h = self.horizontalScrollBar().value() if self.horizontalScrollBar() else 0
|
|
185
|
+
v = self.verticalScrollBar().value() if self.verticalScrollBar() else 0
|
|
186
|
+
return int(h), int(v)
|
|
187
|
+
|
|
188
|
+
def set_scroll_values(self, h: int, v: int):
|
|
189
|
+
"""Set horizontal and vertical scrollbar values."""
|
|
190
|
+
if self.horizontalScrollBar():
|
|
191
|
+
self.horizontalScrollBar().setValue(int(h))
|
|
192
|
+
if self.verticalScrollBar():
|
|
193
|
+
self.verticalScrollBar().setValue(int(v))
|
|
194
|
+
|
|
195
|
+
def view_state(self) -> dict:
|
|
196
|
+
"""Return a serializable view state: zoom and scrollbars."""
|
|
197
|
+
h, v = self.get_scroll_values()
|
|
198
|
+
return {"zoom": float(self._zoom), "h": h, "v": v}
|
|
199
|
+
|
|
200
|
+
def set_view_state(self, state: dict):
|
|
201
|
+
"""Apply a view state previously produced by view_state()."""
|
|
202
|
+
if not isinstance(state, dict):
|
|
203
|
+
return
|
|
204
|
+
z = state.get("zoom") or state.get("scale")
|
|
205
|
+
if z is not None:
|
|
206
|
+
try:
|
|
207
|
+
self.set_zoom_value(float(z), keep_center=False)
|
|
208
|
+
except Exception:
|
|
209
|
+
pass
|
|
210
|
+
h = state.get("h") or state.get("hScroll") or state.get("x")
|
|
211
|
+
v = state.get("v") or state.get("vScroll") or state.get("y")
|
|
212
|
+
try:
|
|
213
|
+
if h is not None:
|
|
214
|
+
self.set_scroll_values(int(h), int(v if v is not None else 0))
|
|
215
|
+
elif v is not None:
|
|
216
|
+
# set vertical if only v present
|
|
217
|
+
self.set_scroll_values(self.get_scroll_values()[0], int(v))
|
|
218
|
+
except Exception:
|
|
219
|
+
pass
|
|
220
|
+
|
|
221
|
+
|
|
222
|
+
class NodeGraphicsScene(QGraphicsScene):
|
|
223
|
+
"""Graphics scene extended with custom context menu emission."""
|
|
224
|
+
sceneContextRequested = Signal(QPointF)
|
|
225
|
+
|
|
226
|
+
def __init__(self, parent: Optional[QObject] = None):
|
|
227
|
+
"""Initialize the scene and set a very large scene rect.
|
|
228
|
+
|
|
229
|
+
Using a large default rect avoids sudden scene rect changes while panning/zooming.
|
|
230
|
+
"""
|
|
231
|
+
super().__init__(parent)
|
|
232
|
+
self.setSceneRect(-5000, -5000, 10000, 10000)
|
|
233
|
+
|
|
234
|
+
def contextMenuEvent(self, event):
|
|
235
|
+
"""Emit a scene-level context menu request when clicking empty space.
|
|
236
|
+
|
|
237
|
+
If the click is not on any item, the signal sceneContextRequested is emitted with
|
|
238
|
+
the scene position. Otherwise, default handling is used (propagating to items).
|
|
239
|
+
"""
|
|
240
|
+
transform = self.views()[0].transform() if self.views() else QTransform()
|
|
241
|
+
item = self.itemAt(event.scenePos(), transform)
|
|
242
|
+
if item is None:
|
|
243
|
+
self.sceneContextRequested.emit(event.scenePos())
|
|
244
|
+
event.accept()
|
|
245
|
+
return
|
|
246
|
+
super().contextMenuEvent(event)
|
|
247
|
+
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: pygpt-net
|
|
3
|
-
Version: 2.6.
|
|
3
|
+
Version: 2.6.60
|
|
4
4
|
Summary: Desktop AI Assistant powered by: OpenAI GPT-5, GPT-4, o1, o3, Gemini, Claude, Grok, DeepSeek, and other models supported by Llama Index, and Ollama. Chatbot, agents, completion, image generation, vision analysis, speech-to-text, plugins, MCP, internet access, file handling, command execution and more.
|
|
5
5
|
License: MIT
|
|
6
6
|
Keywords: ai,api,api key,app,assistant,bielik,chat,chatbot,chatgpt,claude,dall-e,deepseek,desktop,gemini,gpt,gpt-3.5,gpt-4,gpt-4-vision,gpt-4o,gpt-5,gpt-oss,gpt3.5,gpt4,grok,langchain,llama-index,llama3,mistral,o1,o3,ollama,openai,presets,py-gpt,py_gpt,pygpt,pyside,qt,text completion,tts,ui,vision,whisper
|
|
@@ -117,7 +117,7 @@ Description-Content-Type: text/markdown
|
|
|
117
117
|
|
|
118
118
|
[](https://snapcraft.io/pygpt)
|
|
119
119
|
|
|
120
|
-
Release: **2.6.
|
|
120
|
+
Release: **2.6.60** | build: **2025-09-25** | Python: **>=3.10, <3.14**
|
|
121
121
|
|
|
122
122
|
> Official website: https://pygpt.net | Documentation: https://pygpt.readthedocs.io
|
|
123
123
|
>
|
|
@@ -180,6 +180,7 @@ You can download compiled 64-bit versions for Windows and Linux here: https://py
|
|
|
180
180
|
- Provides an intuitive operation and interface.
|
|
181
181
|
- Includes a notepad.
|
|
182
182
|
- Includes simple painter / drawing tool.
|
|
183
|
+
- Includes an node-based Agents Builder.
|
|
183
184
|
- Supports multiple languages.
|
|
184
185
|
- Requires no previous knowledge of using AI models.
|
|
185
186
|
- Simplifies image generation using image models like `DALL-E` and `Imagen`.
|
|
@@ -2088,6 +2089,7 @@ PyGPT features several useful tools, including:
|
|
|
2088
2089
|
- HTML/JS Canvas (built-in HTML renderer)
|
|
2089
2090
|
- Translator
|
|
2090
2091
|
- Web Browser (Chromium)
|
|
2092
|
+
- Agents Builder (beta)
|
|
2091
2093
|
|
|
2092
2094
|

|
|
2093
2095
|
|
|
@@ -2165,6 +2167,70 @@ Enables translation between multiple languages using an AI model.
|
|
|
2165
2167
|
|
|
2166
2168
|
A built-in web browser based on Chromium, allowing you to open webpages directly within the app. **SECURITY NOTICE:** For your protection, avoid using the built-in browser for sensitive or critical tasks. It is intended for basic use only.
|
|
2167
2169
|
|
|
2170
|
+
# Agents Builder (beta)
|
|
2171
|
+
|
|
2172
|
+
To launch the Agent Editor, navigate to:
|
|
2173
|
+
|
|
2174
|
+
`Tools -> Agents Builder`
|
|
2175
|
+
|
|
2176
|
+

|
|
2177
|
+
|
|
2178
|
+
This tool allows you to create workflows for agents using a node editor, without writing any code. You can add a new agent type, and it will appear in the list of presets.
|
|
2179
|
+
|
|
2180
|
+
To add a new element, right-click on the editor grid and select `Add` to insert a new node.
|
|
2181
|
+
|
|
2182
|
+
**Types of Nodes:**
|
|
2183
|
+
|
|
2184
|
+
- **Flow/Start**: The starting point for agents (user input).
|
|
2185
|
+
- **Flow/Agent**: A single agent with customizable default parameters, such as system instructions and tool usage. These settings can be overridden in the preset.
|
|
2186
|
+
- **Flow/Memory**: Shared memory between agents (shared Context).
|
|
2187
|
+
- **Flow/End**: The endpoint, returning control to the user.
|
|
2188
|
+
|
|
2189
|
+
Agents with connected shared memory share it among themselves. Agents without shared memory only receive the latest output from the previous agent.
|
|
2190
|
+
|
|
2191
|
+
The first agent in the sequence always receives the full context passed by the user.
|
|
2192
|
+
|
|
2193
|
+
Connecting agents and memory is done using node connections via slots. To connect slots, simply drag from the input port to the output port (Ctrl + mouse button removes a connection).
|
|
2194
|
+
|
|
2195
|
+
**Node Editor Navigation:**
|
|
2196
|
+
|
|
2197
|
+
- **Right-click**: Add node, undo, redo, clear
|
|
2198
|
+
- **Middle-click + drag**: Pan view
|
|
2199
|
+
- **Ctrl + Mouse wheel**: Zoom
|
|
2200
|
+
- **Left-click a port**: Create connection
|
|
2201
|
+
- **Ctrl + Left-click a port**: Rewire or detach connection
|
|
2202
|
+
- **Right-click or DELETE a node/connection**: Remove node/connection
|
|
2203
|
+
|
|
2204
|
+
**Tip:** Enable agent debugging in `Settings -> Debug -> Log Agents usage to console` to log the full workflow to the console.
|
|
2205
|
+
|
|
2206
|
+
Agents built using this tool are compatible with both OpenAI Agents and LlamaIndex.
|
|
2207
|
+
|
|
2208
|
+
**Notes:**
|
|
2209
|
+
|
|
2210
|
+
Routing and system instruction: for every agent that has more than one connection leading to the next agent, a routing instruction is automatically injected just before your system prompt:
|
|
2211
|
+
|
|
2212
|
+
```
|
|
2213
|
+
You are a routing-capable agent in a multi-agent flow.
|
|
2214
|
+
Your id is: <current_id>, name: <agent_name>.
|
|
2215
|
+
You MUST respond ONLY with a single JSON object and nothing else.
|
|
2216
|
+
Schema:
|
|
2217
|
+
{
|
|
2218
|
+
"route": "<ID of the next agent from allowed_routes OR the string 'end'>",
|
|
2219
|
+
"content": "<final response text for the user (or tool result)>"
|
|
2220
|
+
}
|
|
2221
|
+
Rules:
|
|
2222
|
+
- allowed_routes: [<allowed>]
|
|
2223
|
+
- If you want to finish the flow, set route to "end".
|
|
2224
|
+
- content must contain the user-facing answer (you may include structured data as JSON or Markdown inside content).
|
|
2225
|
+
- Do NOT add any commentary outside of the JSON. No leading or trailing text.
|
|
2226
|
+
- If using tools, still return the final JSON with tool results summarized in content.
|
|
2227
|
+
- Human-friendly route names: <friendly>
|
|
2228
|
+
|
|
2229
|
+
<here begins your system instruction>
|
|
2230
|
+
```
|
|
2231
|
+
|
|
2232
|
+
**INFO:** Agents Builder is in beta.
|
|
2233
|
+
|
|
2168
2234
|
|
|
2169
2235
|
# Token usage calculation
|
|
2170
2236
|
|
|
@@ -3658,6 +3724,10 @@ may consume additional tokens that are not displayed in the main window.
|
|
|
3658
3724
|
|
|
3659
3725
|
## Recent changes:
|
|
3660
3726
|
|
|
3727
|
+
**2.6.60 (2025-09-25)**
|
|
3728
|
+
|
|
3729
|
+
- Added a new tool: Agents Builder - allowing visual design of agent workflows using nodes - available in Tools -> Agents Builder (beta).
|
|
3730
|
+
|
|
3661
3731
|
**2.6.59 (2025-09-23)**
|
|
3662
3732
|
|
|
3663
3733
|
- LlamaIndex has been upgraded to v0.13.6.
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
pygpt_net/CHANGELOG.txt,sha256=
|
|
1
|
+
pygpt_net/CHANGELOG.txt,sha256=alDVWf6Sf6ONpTwD1j8LG4JR3rpiKnCszZFeLf1LQHk,108502
|
|
2
2
|
pygpt_net/LICENSE,sha256=dz9sfFgYahvu2NZbx4C1xCsVn9GVer2wXcMkFRBvqzY,1146
|
|
3
|
-
pygpt_net/__init__.py,sha256=
|
|
4
|
-
pygpt_net/app.py,sha256=
|
|
3
|
+
pygpt_net/__init__.py,sha256=Hys_e5hziFZkUxaE_F5rHQxBwwSPLXDZw3QIwvgt6h0,1373
|
|
4
|
+
pygpt_net/app.py,sha256=4rPvsX2wFIWFzfhHSejh6VyKLawuJ38Pm4dQClXF0iI,23127
|
|
5
5
|
pygpt_net/app_core.py,sha256=PwBOV9wZLtr-O6SxBiazABhYXMHH8kZ6OgbvSv2OiZA,3827
|
|
6
6
|
pygpt_net/config.py,sha256=3CA7xXPKQsdRie1CY8_b5-Kk1taWMciUP9CesXRQNNY,18302
|
|
7
|
-
pygpt_net/controller/__init__.py,sha256=
|
|
7
|
+
pygpt_net/controller/__init__.py,sha256=X3LX0CrGWK-hqHx5NO5-WUkiDwS0Tqde3MPGt6RbFrM,6152
|
|
8
8
|
pygpt_net/controller/access/__init__.py,sha256=_XZxGy5U93JGU49GbIB9E_I26_uRV_Zbz18lcp7u23A,510
|
|
9
9
|
pygpt_net/controller/access/access.py,sha256=nPttwQf6RZHJAlXZ-3fnlcplwXxcJWp8ciq3FMsSssI,3974
|
|
10
10
|
pygpt_net/controller/access/control.py,sha256=MhtgCBB2eIpr358qB5uzBkGX8EkT48u84dhZqyuXDss,17182
|
|
@@ -126,7 +126,7 @@ pygpt_net/controller/plugins/plugins.py,sha256=2y__KawXRKCKD-UR4yFnwJxo9bERfOUFB
|
|
|
126
126
|
pygpt_net/controller/plugins/presets.py,sha256=8EsEwpU2MjWMQu1kcY4JTcyqqN8pjBrcxA2uW2tFU_A,11674
|
|
127
127
|
pygpt_net/controller/plugins/settings.py,sha256=7eHGbn1DDCnLJfOGIqfdIPrIyi_QMkTmjyruaGZwSnw,6107
|
|
128
128
|
pygpt_net/controller/presets/__init__.py,sha256=Bb9_aAvGxQcKCW2fvG5CAJ6ZUwNYN3GaCf3BXB9eGfI,511
|
|
129
|
-
pygpt_net/controller/presets/editor.py,sha256=
|
|
129
|
+
pygpt_net/controller/presets/editor.py,sha256=CASqSJnXIr4bEi3Pg51OPhhztscJNYNEJYMr35z5xBE,56570
|
|
130
130
|
pygpt_net/controller/presets/experts.py,sha256=dfPKmAPO-7gaUD2ILs3lR005ir32G5vV-Sa5TGEHwOU,5820
|
|
131
131
|
pygpt_net/controller/presets/presets.py,sha256=RwCQeWKEWmV8PdVak9S6pVFCml2Gz0GjCoS23DRv_O4,22154
|
|
132
132
|
pygpt_net/controller/realtime/__init__.py,sha256=MhvJb5wBqcpX6uylof01qEDRdU3SepTD88sU2lXNtIQ,519
|
|
@@ -160,22 +160,38 @@ pygpt_net/core/access/voice.py,sha256=xUnvvdSWG2I5ezpfxEHcmYdgAD-ArtsiqUo0CeHTx4
|
|
|
160
160
|
pygpt_net/core/agents/__init__.py,sha256=JOb-fSWSQFdQTCQvlQmTfcjnZfHtGxwBF1csYQqy4DU,516
|
|
161
161
|
pygpt_net/core/agents/agents.py,sha256=Q2LeixLPbH5JMJIK3-miWcKscTTHC6kxxcqgvd9Wi6o,1114
|
|
162
162
|
pygpt_net/core/agents/bridge.py,sha256=KhCbMTZNigNlgOhXEMN1kqWGNUhkEdjFdiHBBVTAr2g,1553
|
|
163
|
-
pygpt_net/core/agents/custom.py,sha256=
|
|
163
|
+
pygpt_net/core/agents/custom/__init__.py,sha256=Bo-0ZyoQ0FXJWm8DOi3sqO9Xf9ErJOpJ06QvhUjoCG4,8564
|
|
164
|
+
pygpt_net/core/agents/custom/debug.py,sha256=2_ByivZWxuS4VwwXgNQr10T07PVKWA4IJptx5gyIsCU,2351
|
|
165
|
+
pygpt_net/core/agents/custom/factory.py,sha256=vJZcCTJjhDxmErU8NKj-A9OExbLypUlRESk3UguVJYo,3621
|
|
166
|
+
pygpt_net/core/agents/custom/graph.py,sha256=IlUNpdYFctAe913s9TNEI277WfH9TmgFUihU8WAjs2s,2650
|
|
167
|
+
pygpt_net/core/agents/custom/llama_index/__init__.py,sha256=ffFdq3JICFBMNig4ifymqJdBkdoLWbp0fVzsbbmrkgs,487
|
|
168
|
+
pygpt_net/core/agents/custom/llama_index/factory.py,sha256=400PQJhyPYOy_p3q2lF81FVTsCxcbh4jcu-Z6C8t2x4,3144
|
|
169
|
+
pygpt_net/core/agents/custom/llama_index/router_streamer.py,sha256=kpo_XM6iTvZFvGSyKptWhOKzlbh8wy3uWsuHKejPsYI,3224
|
|
170
|
+
pygpt_net/core/agents/custom/llama_index/runner.py,sha256=44_7ggs5nOZZ-mqS22yUjHzBUtiWrjbYNRGQ_JCYWUM,23579
|
|
171
|
+
pygpt_net/core/agents/custom/llama_index/stream.py,sha256=94Cd_2J20LHkFFZOXSkh6LQWGtfXiU8-FrbJz4NAfrQ,1708
|
|
172
|
+
pygpt_net/core/agents/custom/llama_index/utils.py,sha256=JobIU7aBrnt6cFxqJSK7n-AXzjZwa7wDY4_geXMsah0,8173
|
|
173
|
+
pygpt_net/core/agents/custom/logging.py,sha256=xDjJCRK3xhgc5FhtI-QZOlSevf4NlatBjsGnjApF-h0,1825
|
|
174
|
+
pygpt_net/core/agents/custom/memory.py,sha256=Qc2CUc1sYVjK5GTYrYGxGcdRYb-HThklYIMQ2Of-1yE,1877
|
|
175
|
+
pygpt_net/core/agents/custom/router.py,sha256=b1djqhF-0MLa4svH_0IfwTwGaRw2gaPkRZ3wuuq0Uko,4424
|
|
176
|
+
pygpt_net/core/agents/custom/router_streamer.py,sha256=AttgufIMw8Yqc2Ef0CvPLoiPwpApzsCGyaHsB1ZnVCk,6205
|
|
177
|
+
pygpt_net/core/agents/custom/runner.py,sha256=vSK0W7LIcCG7PTQKMlyRp7gy5czYM_IyCrllH-B7ycY,20031
|
|
178
|
+
pygpt_net/core/agents/custom/schema.py,sha256=gVvbptuPSbwEyhCBoOaP9BtInXf6g0CmXeVDjEDrhtk,3999
|
|
179
|
+
pygpt_net/core/agents/custom/utils.py,sha256=seDZhM9udSN9m_av_247Z_WK-GgoaaP_tX-4lZm6EB4,5847
|
|
164
180
|
pygpt_net/core/agents/legacy.py,sha256=OiiiK0zrTfNbWu2dKukg_Ro0vTZyiHlHHCTn1hU0bWg,1733
|
|
165
181
|
pygpt_net/core/agents/memory.py,sha256=9Jz9kT-xT8QPpGeXEpWopJUGBLLHu6Ys_-fRrg6BWDg,5210
|
|
166
182
|
pygpt_net/core/agents/observer/__init__.py,sha256=qVIBJKpGbc0k7PTESAwAR7SbN-pbkBMJUTzeliCAaJU,651
|
|
167
183
|
pygpt_net/core/agents/observer/evaluation.py,sha256=AEcXfoMNNER1yRu5WeVnQypC53QPJMRXh4QlPzJzEYM,8115
|
|
168
|
-
pygpt_net/core/agents/provider.py,sha256=
|
|
169
|
-
pygpt_net/core/agents/runner.py,sha256=
|
|
184
|
+
pygpt_net/core/agents/provider.py,sha256=e4FCF_6syvo7HdatHeVV21g0Kw6F1mTrnGwnQH97y-A,5971
|
|
185
|
+
pygpt_net/core/agents/runner.py,sha256=n5Oih4HbkWlU2hv6AupvPySEVSz3Ye5iL3866RVYdbc,12618
|
|
170
186
|
pygpt_net/core/agents/runners/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
171
187
|
pygpt_net/core/agents/runners/base.py,sha256=XjheBYhBZan51r3vkUh5uf00sYiRj8btZUeUP1jpqlA,5687
|
|
172
|
-
pygpt_net/core/agents/runners/helpers.py,sha256=
|
|
188
|
+
pygpt_net/core/agents/runners/helpers.py,sha256=MLBcDo59ACH5_HzQUZ3PzPwvZYzlEjYa9FOSdqiJqn0,8327
|
|
173
189
|
pygpt_net/core/agents/runners/llama_assistant.py,sha256=a_Abkc8u1S8vr6lUIDRrzTM9sQnEvyZA8nZxXaYp05w,2492
|
|
174
190
|
pygpt_net/core/agents/runners/llama_plan.py,sha256=CC3WPG9KUxd_dRjPZROOrmPQrWQ_u8C0nRx0TCzi9bE,13391
|
|
175
191
|
pygpt_net/core/agents/runners/llama_steps.py,sha256=1SBLp5t4TUsxpYIUtSSnBy5Sd2AxheDlv2AXimls-Vg,7328
|
|
176
|
-
pygpt_net/core/agents/runners/llama_workflow.py,sha256=
|
|
192
|
+
pygpt_net/core/agents/runners/llama_workflow.py,sha256=NeBbna8tfhBFnOvCz9rRfWV8ovXztVxiwq-jq1ghCvI,12833
|
|
177
193
|
pygpt_net/core/agents/runners/loop.py,sha256=7Vu50yidu2HSOifOX6bhbyTEHBS5An4GmGUBMYdHOco,7273
|
|
178
|
-
pygpt_net/core/agents/runners/openai_workflow.py,sha256=
|
|
194
|
+
pygpt_net/core/agents/runners/openai_workflow.py,sha256=uKv6wvceORbnkeOze7GvZ3qmEl78ibjonNAyKKynFw0,9012
|
|
179
195
|
pygpt_net/core/agents/tools.py,sha256=UW5-3q-cPpmx_FlDyuF2qymbgIJRmkklNmng3IokEUM,22116
|
|
180
196
|
pygpt_net/core/assistants/__init__.py,sha256=FujLn0ia5S3-7nX-Td_0S5Zqiw6Yublh58c4Di7rRgY,514
|
|
181
197
|
pygpt_net/core/assistants/assistants.py,sha256=JVseBSjDJh9vJYjxoZVwU93EFTBJk_rUtRh_Ml550H0,4391
|
|
@@ -211,8 +227,6 @@ pygpt_net/core/bridge/__init__.py,sha256=RCrT3CuP8-Gf_APr5mBXyNcRigrfHcgS-SYVVP_
|
|
|
211
227
|
pygpt_net/core/bridge/bridge.py,sha256=1pTbVza_CZMdrnXiRxq9sDROeJtMNofBMMkFzA1VQOE,10496
|
|
212
228
|
pygpt_net/core/bridge/context.py,sha256=YBqeR5PgV0x5KK5otN-DYQNSqQtVaNddtRLDwSSLC2Y,7154
|
|
213
229
|
pygpt_net/core/bridge/worker.py,sha256=RukudDq6IAxcg2w-wfQmu7Ia-YTT3NPgAybr1OMpxF4,8498
|
|
214
|
-
pygpt_net/core/builder/__init__.py,sha256=x-1fJoeSQsNwPgs600_uvLDXT8XHvCtaoEah9bm_PDs,578
|
|
215
|
-
pygpt_net/core/builder/graph.py,sha256=mhpg5LUBP0aVlxYZw6DzXpTLNmf3__1gRULQo_2hCXc,19002
|
|
216
230
|
pygpt_net/core/calendar/__init__.py,sha256=AyzoNqYgxV35CMEzoi_SCSsQh4ehg_Wu_2nsK3xsbyg,512
|
|
217
231
|
pygpt_net/core/calendar/calendar.py,sha256=mHWU8jPTYWqxd-35tIHM6GuKaFWzmB6Up7lq8ewV2_U,7224
|
|
218
232
|
pygpt_net/core/camera/__init__.py,sha256=cny2EajFmwkFdo_pUkErJY4BhpyHp1kJVDcTCOOvkjY,510
|
|
@@ -313,6 +327,11 @@ pygpt_net/core/models/models.py,sha256=S5Liz5wnrfrvm5gMf4gHrtesrUhQ2yIZEUWOK-omV
|
|
|
313
327
|
pygpt_net/core/models/ollama.py,sha256=MiCt1Nzd3VHjnj7a0CmGjqUkPuD7401obd7G7KQIZzU,3189
|
|
314
328
|
pygpt_net/core/modes/__init__.py,sha256=dKpce7VTQCzmSfNBT1WHd_zKzXRthRs7ZKqHQSEtftc,509
|
|
315
329
|
pygpt_net/core/modes/modes.py,sha256=tlVP9OnQqwOIrv0qt-OMwivslcHEC3WY1X-0r-o0lqI,3067
|
|
330
|
+
pygpt_net/core/node_editor/__init__.py,sha256=4rnR6TdYCl9M0U914MNsvOoE8CRiRnKfx819xBypbxo,517
|
|
331
|
+
pygpt_net/core/node_editor/graph.py,sha256=8bQvSQNqYqN8hdWNrpjyUK-l78mE8WGnx6fR5DBo0Ow,11791
|
|
332
|
+
pygpt_net/core/node_editor/models.py,sha256=WHzCr4rd9rx5zvKcODuyMCe97NsYGJfaFVO2WFx4a_4,3366
|
|
333
|
+
pygpt_net/core/node_editor/types.py,sha256=dHqjQHmD0bWowdo2EZWCmieVB3sptnshs7I9x0Kh_Jc,2959
|
|
334
|
+
pygpt_net/core/node_editor/utils.py,sha256=FLnHXHQ6W2ZPYz39e5WqVY7SkBLoqVtPFGVNbPBj3FI,595
|
|
316
335
|
pygpt_net/core/notepad/__init__.py,sha256=Uro9_4CfihHzn92I2Ar0q0t-MAGkikUMrY5kGAuLlSw,511
|
|
317
336
|
pygpt_net/core/notepad/notepad.py,sha256=zYE7BRERDOxROMMfjTwS6M5Vk08DXxXqHdKi1aX33i0,4243
|
|
318
337
|
pygpt_net/core/platforms/__init__.py,sha256=NRmTzf4xFxcYseYs1mgCPZA0YUH2v0Aufq4CG1_mKDE,513
|
|
@@ -359,7 +378,7 @@ pygpt_net/core/render/web/debug.py,sha256=784RYXF6inn_bkRtYD1_FllQSyk67JmxKGWPiA
|
|
|
359
378
|
pygpt_net/core/render/web/helpers.py,sha256=8-JkbEOOLoCEAkylJWr8yk3aIliQBMyqcatsyW99VWY,7340
|
|
360
379
|
pygpt_net/core/render/web/parser.py,sha256=pDFc9Tf8P-jvrDilXyT1fukcQHbixHRJ9Dn9hF10Gko,12892
|
|
361
380
|
pygpt_net/core/render/web/pid.py,sha256=F33x_OtrHL9BDMXx_JUbfo8-DOiN4vo1Tv4rrRVADTo,4343
|
|
362
|
-
pygpt_net/core/render/web/renderer.py,sha256=
|
|
381
|
+
pygpt_net/core/render/web/renderer.py,sha256=n5ov53m-JA5cKBRXtprf_9FuPQpy_9hKGaNwlFeWRhk,68793
|
|
363
382
|
pygpt_net/core/render/web/syntax_highlight.py,sha256=QSLGF5cJL_Xeqej7_TYwY_5C2w9enXV_cMEuaJ3C43U,2005
|
|
364
383
|
pygpt_net/core/settings/__init__.py,sha256=GQ6_gJ2jf_Chm7ZuZLvkcvEh_sfMDVMBieeoJi2iPI4,512
|
|
365
384
|
pygpt_net/core/settings/settings.py,sha256=Ix06y-gJ3q7NJDf55XAWBBYulBLpinBqzYqsytH_9mo,8686
|
|
@@ -400,8 +419,8 @@ pygpt_net/css_rc.py,sha256=PX6g9z5BsD-DXISuR2oq3jHcjiKfcJ4HsgcHez6wGMc,27762
|
|
|
400
419
|
pygpt_net/data/audio/click_off.mp3,sha256=aNiRDP1pt-Jy7ija4YKCNFBwvGWbzU460F4pZWZDS90,65201
|
|
401
420
|
pygpt_net/data/audio/click_on.mp3,sha256=qfdsSnthAEHVXzeyN4LlC0OvXuyW8p7stb7VXtlvZ1k,65201
|
|
402
421
|
pygpt_net/data/audio/ok.mp3,sha256=LTiV32pEBkpUGBkKkcOdOFB7Eyt_QoP2Nv6c5AaXftk,32256
|
|
403
|
-
pygpt_net/data/config/config.json,sha256=
|
|
404
|
-
pygpt_net/data/config/models.json,sha256=
|
|
422
|
+
pygpt_net/data/config/config.json,sha256=knoJ0lpwKQ9vJig3HZjnxVWRmRZPQIk5RaSXHV3Z3Mc,30943
|
|
423
|
+
pygpt_net/data/config/models.json,sha256=KTO74tFW3mhfsxAqPRo493yMZ2rsyTvWmNYKP6PSU6s,118192
|
|
405
424
|
pygpt_net/data/config/modes.json,sha256=IpjLOm428_vs6Ma9U-YQTNKJNtZw-qyM1lwhh73xl1w,2111
|
|
406
425
|
pygpt_net/data/config/presets/agent_code_act.json,sha256=GYHqhxtKFLUCvRI3IJAJ7Qe1k8yD9wGGNwManldWzlI,754
|
|
407
426
|
pygpt_net/data/config/presets/agent_openai.json,sha256=bpDJgLRey_effQkzFRoOEGd4aHUrmzeODSDdNzrf62I,730
|
|
@@ -1707,7 +1726,7 @@ pygpt_net/data/js/markdown-it/markdown-it-katex.min.js,sha256=-wMst2a9i8Borapa9_
|
|
|
1707
1726
|
pygpt_net/data/js/markdown-it/markdown-it.min.js,sha256=OMcKHnypGrQOLZ5uYBKYUacX7Rx9Ssu91Bv5UDeRz2g,123618
|
|
1708
1727
|
pygpt_net/data/languages.csv,sha256=fvtER6vnTXFHQslCh-e0xCfZDQ-ijgW4GYpOJG4U7LY,8289
|
|
1709
1728
|
pygpt_net/data/locale/locale.de.ini,sha256=ZX_31ZDOgqG2X7YN7eTeZF3Y2TyZ93aoZ3OjtHgy4xg,106996
|
|
1710
|
-
pygpt_net/data/locale/locale.en.ini,sha256=
|
|
1729
|
+
pygpt_net/data/locale/locale.en.ini,sha256=h8OklvRMKWNfK_ruTojQIvCXJ9KxMARrX8hc_sXl0qI,101145
|
|
1711
1730
|
pygpt_net/data/locale/locale.es.ini,sha256=3gyUk0kFo76eThhttbT2U0HS8uF19VQVE3Oueb8MwVk,107621
|
|
1712
1731
|
pygpt_net/data/locale/locale.fr.ini,sha256=GLqZn8nLwOYEM09WBoLO61UyjZbL2_OVxWp3GDsge6Y,110394
|
|
1713
1732
|
pygpt_net/data/locale/locale.it.ini,sha256=warvdCX_vdt7w5qWvdrSWF7pxNL1xPREaUvksTnHJIc,105292
|
|
@@ -1903,7 +1922,7 @@ pygpt_net/fonts_rc.py,sha256=iBYh-MsobIYZJDrsY6BSpaC51vKaJ7yiNpyU1FbfY9M,3236175
|
|
|
1903
1922
|
pygpt_net/icons.qrc,sha256=xLApyj7e7MOwvugDMiFL_bqm5IYqAOEmHEUWy-flzcQ,9729
|
|
1904
1923
|
pygpt_net/icons_rc.py,sha256=o6QKV61aBU7SxHUV1YhsUyVcnDWwWe7eiIh-SlYc7Fg,98200
|
|
1905
1924
|
pygpt_net/item/__init__.py,sha256=jQQgG9u_ZLsZWXustoc1uvC-abUvj4RBKPAM30-f2Kc,488
|
|
1906
|
-
pygpt_net/item/agent.py,sha256=
|
|
1925
|
+
pygpt_net/item/agent.py,sha256=1nClOB1g4vZE6py6J9tMVBQHv8E6vPxbkwBNoyuBAvw,1650
|
|
1907
1926
|
pygpt_net/item/assistant.py,sha256=FYIbh48J3aOC9IXaopFYqbzQ5vWG_hvWW76UFnUjvGM,11484
|
|
1908
1927
|
pygpt_net/item/attachment.py,sha256=nsyvOnTS_gimcdzwJNI7bC-1KSrSu66XkMtaNwg2IYk,2970
|
|
1909
1928
|
pygpt_net/item/builder_layout.py,sha256=u_VxSs_JrbVArVL7x6vMXmHNChmSpeCeqAoNjvJb9CA,1509
|
|
@@ -1913,7 +1932,7 @@ pygpt_net/item/index.py,sha256=NTDBgNjiyaixTFJu_1oBqoVajf92c2U1Oa3BKQ11poU,1920
|
|
|
1913
1932
|
pygpt_net/item/mode.py,sha256=0uPU7ciqVLaEcijUA-D73ABMoLUFtgPytdXUuwqtews,688
|
|
1914
1933
|
pygpt_net/item/model.py,sha256=1s6aRxLs7Y8bgpVef7Yv7_ERmvjePjwNQLrZ0p7KHhU,10152
|
|
1915
1934
|
pygpt_net/item/notepad.py,sha256=7v3A3HJjew0IoFM65Li0xfoSEdJzfEUZM1IH1ND0Bxw,1805
|
|
1916
|
-
pygpt_net/item/preset.py,sha256=
|
|
1935
|
+
pygpt_net/item/preset.py,sha256=nkLoyfHoZnjoqKKynDo0alJDb_o8BFxTZRYk7_2uQss,8991
|
|
1917
1936
|
pygpt_net/item/prompt.py,sha256=xequZDTEv4eKjmC5OLqZnNrbyy0YA4LHe0k2RpPiBw0,1745
|
|
1918
1937
|
pygpt_net/js.qrc,sha256=0ur8_O4TeD2NEmj2gPb7z1XKH5PRxgDo3H8awPPb7zg,2001
|
|
1919
1938
|
pygpt_net/js_rc.py,sha256=9a5ssTYXTM6vVa2A0ZWbtM8hK34Expblqe4gD4F1nBk,2789149
|
|
@@ -2086,9 +2105,10 @@ pygpt_net/plugin/wolfram/plugin.py,sha256=_DD0Y6oWTwPpcAFinwklLJjmRnK-6yJI7eBzu5
|
|
|
2086
2105
|
pygpt_net/plugin/wolfram/worker.py,sha256=gu5HjeqwOi2F_HdlR0mqx1wZszKIsfzalfiLrGHCZVI,23048
|
|
2087
2106
|
pygpt_net/provider/__init__.py,sha256=lOkgAiuNUqkAl_QrIG3ZsUznIZeJYtokgzEnDB8gRic,488
|
|
2088
2107
|
pygpt_net/provider/agents/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2089
|
-
pygpt_net/provider/agents/base.py,sha256=
|
|
2108
|
+
pygpt_net/provider/agents/base.py,sha256=2Bjt-4yyj1OZkN6Qh_QS_W5Iq0SwcTC7Nt3VFDesEIk,4540
|
|
2090
2109
|
pygpt_net/provider/agents/llama_index/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2091
2110
|
pygpt_net/provider/agents/llama_index/codeact_workflow.py,sha256=NmJy2y4i0Hu7daGVSS9fVzeV3TbVeG01s8phEKnyg7c,3556
|
|
2111
|
+
pygpt_net/provider/agents/llama_index/flow_from_schema.py,sha256=ovOW2VqWmbdH1tyMF9Gc2V6ARi10v5letetc_HEKweg,4085
|
|
2092
2112
|
pygpt_net/provider/agents/llama_index/legacy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2093
2113
|
pygpt_net/provider/agents/llama_index/legacy/openai.py,sha256=j3Od0FPIh1NyMh-jb3CaocxuCUi_4b4CijEqaPA2PeQ,1644
|
|
2094
2114
|
pygpt_net/provider/agents/llama_index/legacy/openai_assistant.py,sha256=ZjxhMvltzDNGCmzCCS64wWYK6Z5Zn2V8CJBv12skyk4,3956
|
|
@@ -2120,6 +2140,7 @@ pygpt_net/provider/agents/openai/bots/research_bot/agents/search_agent.py,sha256
|
|
|
2120
2140
|
pygpt_net/provider/agents/openai/bots/research_bot/agents/writer_agent.py,sha256=loW8ujW7NrWZkCdfYCD7t3GO5HXYzRk85Afs9-lNBEE,1823
|
|
2121
2141
|
pygpt_net/provider/agents/openai/bots/research_bot/manager.py,sha256=n3BJiEogkfPvWsbA7ieHWnMoLve5koQ1ihAKO5ty7jk,7310
|
|
2122
2142
|
pygpt_net/provider/agents/openai/evolve.py,sha256=hBsYIokVCWLWB0syHoLQqWgEiEfR9JhmiiaETjQMx1c,22976
|
|
2143
|
+
pygpt_net/provider/agents/openai/flow_from_schema.py,sha256=Ih8HMsjGBVLqQ0khLHR_VHkEs56hKfab0cfYc03MYDE,3986
|
|
2123
2144
|
pygpt_net/provider/agents/openai/supervisor.py,sha256=cUsVns-ZZ7kK78SNcHRt3UgfePjB6NWCOrauSfn_BnI,13229
|
|
2124
2145
|
pygpt_net/provider/api/__init__.py,sha256=Daaev4XktvnciogLCfXcuokzrBUrbeoeRfU7usY5Svw,933
|
|
2125
2146
|
pygpt_net/provider/api/anthropic/__init__.py,sha256=IVWpeh5TxGug3kMCkYMkyC27wdjjZeDjlp0U3kW3SvM,7583
|
|
@@ -2191,7 +2212,7 @@ pygpt_net/provider/audio_output/openai_tts.py,sha256=7A2FybS2HBlGRPdFWgsXxlr4KI_
|
|
|
2191
2212
|
pygpt_net/provider/core/__init__.py,sha256=YHQ86AUqjoP79N5vRqOmK-6FUDLQhCl_0y6Z4Tun3dU,488
|
|
2192
2213
|
pygpt_net/provider/core/agent/__init__.py,sha256=jwPZQU-LLHDmWMicfBT5a0XVuVBbM0AxRNojnirp1UY,487
|
|
2193
2214
|
pygpt_net/provider/core/agent/base.py,sha256=oPlxc3Smo3BTaJPgDO4bq7NGIQjODekI06md_oAUkoA,1306
|
|
2194
|
-
pygpt_net/provider/core/agent/json_file.py,sha256=
|
|
2215
|
+
pygpt_net/provider/core/agent/json_file.py,sha256=ZLKmlVHEahop3GElmvUx3rf4FZU7bvsgQ49lJQvwuTE,5883
|
|
2195
2216
|
pygpt_net/provider/core/assistant/__init__.py,sha256=jQQgG9u_ZLsZWXustoc1uvC-abUvj4RBKPAM30-f2Kc,488
|
|
2196
2217
|
pygpt_net/provider/core/assistant/base.py,sha256=zFJs4LxnBvUBri9-FgOYjv1wyfDFEzEu9H01GcTYL0s,1251
|
|
2197
2218
|
pygpt_net/provider/core/assistant/json_file.py,sha256=uNnxBEWWbShrjzrhYKfgVQRLQcoLGIHzEkTYCmTfD_A,6530
|
|
@@ -2382,10 +2403,10 @@ pygpt_net/provider/web/google_custom_search.py,sha256=T99QIkkh21QhsFbtNr3XXBZ4_k
|
|
|
2382
2403
|
pygpt_net/provider/web/microsoft_bing.py,sha256=Y4VoI7eJFfHFDN1g7zYT3cI1xwLrPEDdozqoLeh3BqQ,4199
|
|
2383
2404
|
pygpt_net/tools/__init__.py,sha256=MdlCuI4chc1hFf402oIFfEebiksgtPT_95ddpYSYTVM,4520
|
|
2384
2405
|
pygpt_net/tools/agent_builder/__init__.py,sha256=BMAd560SEU0GcVRUDaWWLiLoU2SYdAWDABhs7xrORwI,508
|
|
2385
|
-
pygpt_net/tools/agent_builder/tool.py,sha256=
|
|
2406
|
+
pygpt_net/tools/agent_builder/tool.py,sha256=W8ECARY7z_9aJeTeSta8ga5BOuSWj6gGuucp2YrzfHg,15613
|
|
2386
2407
|
pygpt_net/tools/agent_builder/ui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2387
|
-
pygpt_net/tools/agent_builder/ui/dialogs.py,sha256=
|
|
2388
|
-
pygpt_net/tools/agent_builder/ui/list.py,sha256=
|
|
2408
|
+
pygpt_net/tools/agent_builder/ui/dialogs.py,sha256=KXGMgRAzcK77NNaRcLFVBVen0iEWK1xyEIFQo_cGQGw,8583
|
|
2409
|
+
pygpt_net/tools/agent_builder/ui/list.py,sha256=XU_6QiiZ4AlddBu9ecahRoMrxUKTzk-3UEV6ly-Dpyg,7922
|
|
2389
2410
|
pygpt_net/tools/audio_transcriber/__init__.py,sha256=BQLr8Kg670xPAyv_qoRA_EjWq5WZclqoc4OpTk5V11k,508
|
|
2390
2411
|
pygpt_net/tools/audio_transcriber/tool.py,sha256=Qzyd3lnzSjm40LoF9Isz-Yvc-Ex3WmEUFi5H0mjcTfo,9836
|
|
2391
2412
|
pygpt_net/tools/audio_transcriber/ui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -2459,7 +2480,7 @@ pygpt_net/ui/dialog/logger.py,sha256=OGFKlAyeMgNQI4a-VW9bDXSrcsPtEC6rLhtdu11lsJc
|
|
|
2459
2480
|
pygpt_net/ui/dialog/models.py,sha256=WnVvv1pFwTTXmK3uM9bNX59GMccDGxvKhAYxJXW88fs,19717
|
|
2460
2481
|
pygpt_net/ui/dialog/models_importer.py,sha256=14kxf7KkOdTP-tcgTN5OphNZajlivDPTDKBosebuyog,4505
|
|
2461
2482
|
pygpt_net/ui/dialog/plugins.py,sha256=88TsvYWHdmR5hepld6ouSEa4BDhewAQ-JFE7RWGSdy8,20287
|
|
2462
|
-
pygpt_net/ui/dialog/preset.py,sha256=
|
|
2483
|
+
pygpt_net/ui/dialog/preset.py,sha256=DfnTsNpqtJRln-zCEM_Da11hYQ8v24mPw5gCzp-Xqt0,18008
|
|
2463
2484
|
pygpt_net/ui/dialog/preset_plugins.py,sha256=ynqc0aWjU7MTL4jxcVKaRH_tC9uzeWJCUzUjI74ADb0,3796
|
|
2464
2485
|
pygpt_net/ui/dialog/profile.py,sha256=Xk9NNQmr1A5pRUxdedu7ePEBq5OYhLT8UInuRWYBktU,4105
|
|
2465
2486
|
pygpt_net/ui/dialog/rename.py,sha256=Spb7cUVq1ivy3Zg28SBACJ7p_GwJ1gm82Oz9Ld_a_FU,973
|
|
@@ -2506,7 +2527,7 @@ pygpt_net/ui/layout/toolbox/split.py,sha256=Hs9hZPciLXCRV_izoayrBlJSCuTGumdNki6z
|
|
|
2506
2527
|
pygpt_net/ui/layout/toolbox/toolbox.py,sha256=VHzyzm7LjcAN30h111SEP6fdXwi84DYyf8CE1X3pdt8,2799
|
|
2507
2528
|
pygpt_net/ui/layout/toolbox/video.py,sha256=JyDVkJIh1m6RSbJFGQqIBKrsQgbfx2O08ybJ7bEZyWg,1477
|
|
2508
2529
|
pygpt_net/ui/layout/toolbox/vision.py,sha256=E6-lLfU3vrWdlprayr6gxFs7F7AGkn4OIrFXrQ9p5XA,2035
|
|
2509
|
-
pygpt_net/ui/main.py,sha256=
|
|
2530
|
+
pygpt_net/ui/main.py,sha256=WfCWnf7OiPbFazwMyhH4yWUdomU2N12sy7i4K5Sa9zI,14259
|
|
2510
2531
|
pygpt_net/ui/menu/__init__.py,sha256=wAIKG9wLWfYv6tpXCTXptWb_XKoCc-4lYWLDvV1bVYk,508
|
|
2511
2532
|
pygpt_net/ui/menu/about.py,sha256=BtelbYhpXJGgsoEwsPuw61wVuGkzogpY3FVvWtd09HE,4619
|
|
2512
2533
|
pygpt_net/ui/menu/audio.py,sha256=3vQhMq8vk_h7yb_Gk2dZMRviFR2PExgR_ynpgOkyl-g,4226
|
|
@@ -2528,8 +2549,6 @@ pygpt_net/ui/widget/audio/bar.py,sha256=1TnNx5x4sXx-Iu4zPtwID7DGf97TH3OABG8BKyiC
|
|
|
2528
2549
|
pygpt_net/ui/widget/audio/input.py,sha256=t9VAhP15HkSOvNV2crI3Kg6AgrQDj-wSQiiYTMlvK60,1721
|
|
2529
2550
|
pygpt_net/ui/widget/audio/input_button.py,sha256=QDfA8WBskY0pkN8EMXZ97017Sj11t4p9b_jCz4Q6aRY,4498
|
|
2530
2551
|
pygpt_net/ui/widget/audio/output.py,sha256=UxkiCnVT9DNFeByDGTFW_CK0LW8xSvhEK1zygtHvx4k,1586
|
|
2531
|
-
pygpt_net/ui/widget/builder/__init__.py,sha256=veIDrPtqCZNLdgtSD5cFCF3OLra9bRce1gBdpmK7sKU,519
|
|
2532
|
-
pygpt_net/ui/widget/builder/editor.py,sha256=WYzR6GtOq1JhSFvMfPQSwifIhquT6NnBZNZAGHlPQlo,83881
|
|
2533
2552
|
pygpt_net/ui/widget/calendar/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2534
2553
|
pygpt_net/ui/widget/calendar/select.py,sha256=iQgD7djD9ZTD8csje3DVZhQu0onIn5Ai5Nse08FcV7Q,10667
|
|
2535
2554
|
pygpt_net/ui/widget/dialog/__init__.py,sha256=8HT4tQFqQogEEpGYTv2RplKBthlsFKcl5egnv4lzzEw,488
|
|
@@ -2598,6 +2617,13 @@ pygpt_net/ui/widget/lists/preset_plugins.py,sha256=3ONjBKPv2buTdgtO6BLSaW-z-Cui4
|
|
|
2598
2617
|
pygpt_net/ui/widget/lists/profile.py,sha256=d8VE9i35MVjZkNFJ-VuHJZeTiMwnF64pYP8-A7zCmv8,4406
|
|
2599
2618
|
pygpt_net/ui/widget/lists/settings.py,sha256=ZMOPvpu_h3NMQ2WTb5SfoAmSmBTW_lbtm7M-oAp1zA8,1052
|
|
2600
2619
|
pygpt_net/ui/widget/lists/uploaded.py,sha256=yVIqySvkcXKZICIB3SwKx1Q-oTEupjLOzhopj9-O5h0,4356
|
|
2620
|
+
pygpt_net/ui/widget/node_editor/__init__.py,sha256=zq9BnwcUk-wFRVNCb4tt-6S1c7aqLARjLpDOtpneyqg,519
|
|
2621
|
+
pygpt_net/ui/widget/node_editor/command.py,sha256=jAMLUYyWDs5dZ4rChBGHHMh-IDrta2DjW5OOwOAKck8,15217
|
|
2622
|
+
pygpt_net/ui/widget/node_editor/editor.py,sha256=WWyQNEApYAvxszB5ORzIMwu_nGZUkOylpRIIYYmP_dA,90711
|
|
2623
|
+
pygpt_net/ui/widget/node_editor/item.py,sha256=FIYtM-2hktmFaaJiD14ttPpUCZTjgADhAk7vZevRpg0,19786
|
|
2624
|
+
pygpt_net/ui/widget/node_editor/node.py,sha256=3G2mDE3lH_tnRFX6oon7-TC1Nz6WW6djQ6xYNYSG6aY,49516
|
|
2625
|
+
pygpt_net/ui/widget/node_editor/utils.py,sha256=mD46jTdJ3gB7TyCSIx2CnUsBPBBE3ucm1TUHH9qfJjA,711
|
|
2626
|
+
pygpt_net/ui/widget/node_editor/view.py,sha256=aOJnNlnmN8vBphGmMKSHXSWVcgqllhfDZVF11xbrdJI,9641
|
|
2601
2627
|
pygpt_net/ui/widget/option/__init__.py,sha256=8HT4tQFqQogEEpGYTv2RplKBthlsFKcl5egnv4lzzEw,488
|
|
2602
2628
|
pygpt_net/ui/widget/option/checkbox.py,sha256=duzgGPOVbHFnWILVEu5gDUa6sHeDOvQaaj9IsY-HbU8,3954
|
|
2603
2629
|
pygpt_net/ui/widget/option/checkbox_list.py,sha256=j3lks2qPaZZdfZEV9EbN5kH8gEquVZFUDF_rq7uxjn0,5770
|
|
@@ -2633,8 +2659,8 @@ pygpt_net/ui/widget/textarea/web.py,sha256=CDpsjv8OorG1mO0NoXp-otgx1YHZES9DilZ_w
|
|
|
2633
2659
|
pygpt_net/ui/widget/vision/__init__.py,sha256=8HT4tQFqQogEEpGYTv2RplKBthlsFKcl5egnv4lzzEw,488
|
|
2634
2660
|
pygpt_net/ui/widget/vision/camera.py,sha256=v1qEncaZr5pXocO5Cpk_lsgfCMvfFigdJmzsYfzvCl0,1877
|
|
2635
2661
|
pygpt_net/utils.py,sha256=m0fkJ06JaUKvTbxZQgdY-mpYt7ReZZhq1D90a2ANOQ0,10832
|
|
2636
|
-
pygpt_net-2.6.
|
|
2637
|
-
pygpt_net-2.6.
|
|
2638
|
-
pygpt_net-2.6.
|
|
2639
|
-
pygpt_net-2.6.
|
|
2640
|
-
pygpt_net-2.6.
|
|
2662
|
+
pygpt_net-2.6.60.dist-info/LICENSE,sha256=rbPqNB_xxANH8hKayJyIcTwD4bj4Y2G-Mcm85r1OImM,1126
|
|
2663
|
+
pygpt_net-2.6.60.dist-info/METADATA,sha256=FXViUrzMB6qSCr2cFMI9GWBUdxwNQzhJWjqsr6xkwtI,170764
|
|
2664
|
+
pygpt_net-2.6.60.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
|
2665
|
+
pygpt_net-2.6.60.dist-info/entry_points.txt,sha256=qvpII6UHIt8XfokmQWnCYQrTgty8FeJ9hJvOuUFCN-8,43
|
|
2666
|
+
pygpt_net-2.6.60.dist-info/RECORD,,
|