pygpt-net 2.6.64__py3-none-any.whl → 2.6.66__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 +21 -0
- pygpt_net/__init__.py +3 -3
- pygpt_net/app.py +5 -1
- pygpt_net/controller/chat/chat.py +0 -0
- pygpt_net/controller/chat/handler/openai_stream.py +137 -7
- pygpt_net/controller/chat/render.py +0 -0
- pygpt_net/controller/config/field/checkbox_list.py +34 -1
- pygpt_net/controller/files/files.py +71 -2
- pygpt_net/controller/media/media.py +20 -1
- pygpt_net/controller/presets/editor.py +137 -22
- pygpt_net/controller/presets/presets.py +4 -1
- pygpt_net/controller/ui/mode.py +14 -10
- pygpt_net/controller/ui/ui.py +18 -1
- pygpt_net/core/agents/custom/__init__.py +18 -2
- pygpt_net/core/agents/custom/runner.py +2 -2
- pygpt_net/core/attachments/clipboard.py +146 -0
- pygpt_net/core/image/image.py +34 -1
- pygpt_net/core/render/web/renderer.py +33 -11
- pygpt_net/core/tabs/tabs.py +0 -0
- pygpt_net/core/types/image.py +61 -3
- pygpt_net/data/config/config.json +4 -3
- pygpt_net/data/config/models.json +629 -41
- pygpt_net/data/css/style.dark.css +12 -0
- pygpt_net/data/css/style.light.css +12 -0
- pygpt_net/data/icons/pin2.svg +1 -0
- pygpt_net/data/icons/pin3.svg +3 -0
- pygpt_net/data/icons/point.svg +1 -0
- pygpt_net/data/icons/target.svg +1 -0
- pygpt_net/data/js/app/ui.js +19 -2
- pygpt_net/data/js/app/user.js +22 -54
- pygpt_net/data/js/app.min.js +7 -9
- pygpt_net/data/locale/locale.de.ini +4 -0
- pygpt_net/data/locale/locale.en.ini +8 -0
- pygpt_net/data/locale/locale.es.ini +4 -0
- pygpt_net/data/locale/locale.fr.ini +4 -0
- pygpt_net/data/locale/locale.it.ini +4 -0
- pygpt_net/data/locale/locale.pl.ini +4 -0
- pygpt_net/data/locale/locale.uk.ini +4 -0
- pygpt_net/data/locale/locale.zh.ini +4 -0
- pygpt_net/icons.qrc +4 -0
- pygpt_net/icons_rc.py +274 -137
- pygpt_net/item/model.py +15 -19
- pygpt_net/js_rc.py +2038 -2075
- pygpt_net/provider/agents/openai/agent.py +0 -0
- pygpt_net/provider/api/google/__init__.py +20 -9
- pygpt_net/provider/api/google/image.py +161 -28
- pygpt_net/provider/api/google/video.py +73 -36
- pygpt_net/provider/api/openai/__init__.py +21 -11
- pygpt_net/provider/api/openai/agents/client.py +0 -0
- pygpt_net/provider/api/openai/video.py +562 -0
- pygpt_net/provider/core/config/patch.py +15 -0
- pygpt_net/provider/core/model/patch.py +29 -3
- pygpt_net/provider/vector_stores/qdrant.py +117 -0
- pygpt_net/ui/__init__.py +6 -1
- pygpt_net/ui/dialog/preset.py +9 -4
- pygpt_net/ui/layout/chat/attachments.py +18 -1
- pygpt_net/ui/layout/status.py +3 -3
- pygpt_net/ui/layout/toolbox/raw.py +7 -1
- pygpt_net/ui/widget/element/status.py +55 -0
- pygpt_net/ui/widget/filesystem/explorer.py +116 -2
- pygpt_net/ui/widget/lists/context.py +26 -16
- pygpt_net/ui/widget/option/checkbox_list.py +14 -2
- pygpt_net/ui/widget/textarea/input.py +71 -17
- {pygpt_net-2.6.64.dist-info → pygpt_net-2.6.66.dist-info}/METADATA +76 -25
- {pygpt_net-2.6.64.dist-info → pygpt_net-2.6.66.dist-info}/RECORD +63 -55
- {pygpt_net-2.6.64.dist-info → pygpt_net-2.6.66.dist-info}/LICENSE +0 -0
- {pygpt_net-2.6.64.dist-info → pygpt_net-2.6.66.dist-info}/WHEEL +0 -0
- {pygpt_net-2.6.64.dist-info → pygpt_net-2.6.66.dist-info}/entry_points.txt +0 -0
|
@@ -6,11 +6,12 @@
|
|
|
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.
|
|
9
|
+
# Updated Date: 2025.09.28 08:00:00 #
|
|
10
10
|
# ================================================== #
|
|
11
11
|
|
|
12
12
|
from typing import Optional
|
|
13
13
|
import math
|
|
14
|
+
import os
|
|
14
15
|
|
|
15
16
|
from PySide6.QtCore import Qt, QSize, QTimer, QEvent
|
|
16
17
|
from PySide6.QtGui import QAction, QIcon, QImage
|
|
@@ -24,6 +25,8 @@ from PySide6.QtWidgets import (
|
|
|
24
25
|
|
|
25
26
|
from pygpt_net.core.events import Event
|
|
26
27
|
from pygpt_net.utils import trans
|
|
28
|
+
from pygpt_net.core.attachments.clipboard import AttachmentDropHandler
|
|
29
|
+
|
|
27
30
|
|
|
28
31
|
class ChatInput(QTextEdit):
|
|
29
32
|
|
|
@@ -127,6 +130,12 @@ class ChatInput(QTextEdit):
|
|
|
127
130
|
# Paste/input safety limits
|
|
128
131
|
self._paste_max_chars = 1000000000 # hard cap to prevent pathological pastes from freezing/crashing
|
|
129
132
|
|
|
133
|
+
# One-shot guard to avoid duplicate attachment processing on drops that also insert text.
|
|
134
|
+
self._skip_clipboard_on_next_insert = False
|
|
135
|
+
|
|
136
|
+
# Drag & Drop: add as attachments; do not insert file paths into text
|
|
137
|
+
self._dnd_handler = AttachmentDropHandler(self.window, self, policy=AttachmentDropHandler.INPUT_MIX)
|
|
138
|
+
|
|
130
139
|
def _on_text_changed_tokens(self):
|
|
131
140
|
"""Schedule token count update with debounce."""
|
|
132
141
|
self._tokens_timer.start()
|
|
@@ -157,27 +166,46 @@ class ChatInput(QTextEdit):
|
|
|
157
166
|
except Exception:
|
|
158
167
|
return False
|
|
159
168
|
|
|
169
|
+
def _mime_has_local_file_urls(self, source) -> bool:
|
|
170
|
+
"""
|
|
171
|
+
Detects whether mime data contains any local file/directory URLs.
|
|
172
|
+
"""
|
|
173
|
+
try:
|
|
174
|
+
if source and source.hasUrls():
|
|
175
|
+
for url in source.urls():
|
|
176
|
+
if url.isLocalFile():
|
|
177
|
+
return True
|
|
178
|
+
except Exception:
|
|
179
|
+
pass
|
|
180
|
+
return False
|
|
181
|
+
|
|
160
182
|
def insertFromMimeData(self, source):
|
|
161
183
|
"""
|
|
162
184
|
Insert from mime data
|
|
163
185
|
|
|
164
186
|
:param source: source
|
|
165
187
|
"""
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
188
|
+
has_local_files = self._mime_has_local_file_urls(source)
|
|
189
|
+
|
|
190
|
+
# Avoid double-processing when drop is allowed to fall through to default insertion.
|
|
191
|
+
should_skip = bool(getattr(self, "_skip_clipboard_on_next_insert", False))
|
|
192
|
+
if should_skip:
|
|
193
|
+
self._skip_clipboard_on_next_insert = False
|
|
194
|
+
else:
|
|
195
|
+
# Always process attachments first; never break input pipeline on errors.
|
|
170
196
|
try:
|
|
171
|
-
self.
|
|
172
|
-
except Exception:
|
|
173
|
-
|
|
197
|
+
self.handle_clipboard(source)
|
|
198
|
+
except Exception as e:
|
|
199
|
+
try:
|
|
200
|
+
self.window.core.debug.log(e)
|
|
201
|
+
except Exception:
|
|
202
|
+
pass
|
|
174
203
|
|
|
175
|
-
#
|
|
204
|
+
# Do not insert textual representation for images nor local file URLs (including directories).
|
|
176
205
|
try:
|
|
177
|
-
if source and source.hasImage():
|
|
206
|
+
if source and (source.hasImage() or has_local_files):
|
|
178
207
|
return
|
|
179
208
|
except Exception:
|
|
180
|
-
# fallback to text extraction below
|
|
181
209
|
pass
|
|
182
210
|
|
|
183
211
|
# Insert only sanitized plain text (no HTML, no custom formats).
|
|
@@ -194,24 +222,27 @@ class ChatInput(QTextEdit):
|
|
|
194
222
|
def _safe_text_from_mime(self, source) -> str:
|
|
195
223
|
"""
|
|
196
224
|
Extracts plain text from QMimeData safely, normalizes and sanitizes it.
|
|
197
|
-
Falls back to URLs joined by space
|
|
225
|
+
Falls back to URLs joined by space only for non-local URLs.
|
|
198
226
|
"""
|
|
199
227
|
try:
|
|
200
228
|
if source is None:
|
|
201
229
|
return ""
|
|
230
|
+
# Prefer real text if present
|
|
202
231
|
if source.hasText():
|
|
203
232
|
return self._sanitize_text(source.text())
|
|
233
|
+
# Fallback: for non-local URLs we allow insertion as text (e.g., http/https)
|
|
204
234
|
if source.hasUrls():
|
|
205
235
|
parts = []
|
|
206
236
|
for url in source.urls():
|
|
207
237
|
try:
|
|
208
238
|
if url.isLocalFile():
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
239
|
+
# Skip local files/dirs textual fallback; they are handled as attachments
|
|
240
|
+
continue
|
|
241
|
+
parts.append(url.toString())
|
|
212
242
|
except Exception:
|
|
213
243
|
continue
|
|
214
|
-
|
|
244
|
+
if parts:
|
|
245
|
+
return self._sanitize_text(" ".join([p for p in parts if p]))
|
|
215
246
|
except Exception as e:
|
|
216
247
|
try:
|
|
217
248
|
self.window.core.debug.log(e)
|
|
@@ -286,13 +317,36 @@ class ChatInput(QTextEdit):
|
|
|
286
317
|
image = source.imageData()
|
|
287
318
|
if isinstance(image, QImage):
|
|
288
319
|
self.window.controller.attachment.from_clipboard_image(image)
|
|
320
|
+
else:
|
|
321
|
+
# Some platforms provide QPixmap; convert to QImage if possible
|
|
322
|
+
try:
|
|
323
|
+
img = image.toImage()
|
|
324
|
+
if isinstance(img, QImage):
|
|
325
|
+
self.window.controller.attachment.from_clipboard_image(img)
|
|
326
|
+
except Exception:
|
|
327
|
+
pass
|
|
289
328
|
elif source.hasUrls():
|
|
290
329
|
urls = source.urls()
|
|
291
330
|
for url in urls:
|
|
292
331
|
try:
|
|
293
332
|
if url.isLocalFile():
|
|
294
333
|
local_path = url.toLocalFile()
|
|
295
|
-
|
|
334
|
+
if not local_path:
|
|
335
|
+
continue
|
|
336
|
+
if os.path.isdir(local_path):
|
|
337
|
+
# Recursively add all files from the dropped directory
|
|
338
|
+
for root, _, files in os.walk(local_path):
|
|
339
|
+
for name in files:
|
|
340
|
+
fpath = os.path.join(root, name)
|
|
341
|
+
try:
|
|
342
|
+
self.window.controller.attachment.from_clipboard_url(fpath, all=True)
|
|
343
|
+
except Exception:
|
|
344
|
+
continue
|
|
345
|
+
else:
|
|
346
|
+
self.window.controller.attachment.from_clipboard_url(local_path, all=True)
|
|
347
|
+
else:
|
|
348
|
+
# Non-local URLs are handled as text (if any) by _safe_text_from_mime
|
|
349
|
+
pass
|
|
296
350
|
except Exception:
|
|
297
351
|
# Ignore broken URL entries
|
|
298
352
|
continue
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: pygpt-net
|
|
3
|
-
Version: 2.6.
|
|
3
|
+
Version: 2.6.66
|
|
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
|
|
@@ -24,44 +24,45 @@ Requires-Dist: Pygments (==2.19.2)
|
|
|
24
24
|
Requires-Dist: SQLAlchemy (==2.0.43)
|
|
25
25
|
Requires-Dist: SpeechRecognition (>=3.14.3,<4.0.0)
|
|
26
26
|
Requires-Dist: Telethon (>=1.40.0,<2.0.0)
|
|
27
|
-
Requires-Dist: anthropic (>=0.
|
|
28
|
-
Requires-Dist: azure-core (==1.
|
|
27
|
+
Requires-Dist: anthropic (>=0.75.0,<0.76.0)
|
|
28
|
+
Requires-Dist: azure-core (==1.37.0)
|
|
29
29
|
Requires-Dist: beautifulsoup4 (==4.13.5)
|
|
30
|
+
Requires-Dist: charset-normalizer (>=2.0,!=3.2.0)
|
|
30
31
|
Requires-Dist: chromadb (==1.1.0)
|
|
31
32
|
Requires-Dist: croniter (>=2.0.7,<3.0.0)
|
|
32
33
|
Requires-Dist: ddgs (>=9.5.5,<10.0.0)
|
|
33
34
|
Requires-Dist: docker (>=7.1.0,<8.0.0)
|
|
34
35
|
Requires-Dist: docx2txt (>=0.8,<0.9)
|
|
35
36
|
Requires-Dist: gkeepapi (==0.15.1)
|
|
36
|
-
Requires-Dist: google-api-python-client (==2.
|
|
37
|
-
Requires-Dist: google-
|
|
37
|
+
Requires-Dist: google-api-python-client (==2.187.0)
|
|
38
|
+
Requires-Dist: google-genai (>=1.56.0,<2.0.0)
|
|
38
39
|
Requires-Dist: grpcio (==1.75.0)
|
|
39
40
|
Requires-Dist: httpx (==0.28.1)
|
|
40
41
|
Requires-Dist: httpx-socks (>=0.10.1,<0.11.0)
|
|
41
42
|
Requires-Dist: huggingface-hub (==0.35.0)
|
|
42
43
|
Requires-Dist: ipykernel (>=6.30.1,<7.0.0)
|
|
43
44
|
Requires-Dist: jupyter_client (>=8.6.3,<9.0.0)
|
|
44
|
-
Requires-Dist: llama-index (==0.
|
|
45
|
-
Requires-Dist: llama-index-core (==0.
|
|
45
|
+
Requires-Dist: llama-index (==0.14.10)
|
|
46
|
+
Requires-Dist: llama-index-core (==0.14.10)
|
|
46
47
|
Requires-Dist: llama-index-embeddings-azure-openai (>=0.4.1,<0.5.0)
|
|
47
48
|
Requires-Dist: llama-index-embeddings-gemini (>=0.4.1,<0.5.0)
|
|
48
49
|
Requires-Dist: llama-index-embeddings-google-genai (>=0.3.1,<0.4.0)
|
|
49
50
|
Requires-Dist: llama-index-embeddings-huggingface-api (>=0.4.1,<0.5.0)
|
|
50
51
|
Requires-Dist: llama-index-embeddings-mistralai (>=0.4.1,<0.5.0)
|
|
51
|
-
Requires-Dist: llama-index-embeddings-ollama (>=0.8.
|
|
52
|
+
Requires-Dist: llama-index-embeddings-ollama (>=0.8.5,<0.9.0)
|
|
52
53
|
Requires-Dist: llama-index-embeddings-openai (>=0.5.1,<0.6.0)
|
|
53
54
|
Requires-Dist: llama-index-embeddings-openai-like (>=0.2.2,<0.3.0)
|
|
54
|
-
Requires-Dist: llama-index-embeddings-voyageai (>=0.
|
|
55
|
-
Requires-Dist: llama-index-llms-anthropic (>=0.
|
|
56
|
-
Requires-Dist: llama-index-llms-azure-openai (>=0.4.
|
|
55
|
+
Requires-Dist: llama-index-embeddings-voyageai (>=0.5.2,<0.6.0)
|
|
56
|
+
Requires-Dist: llama-index-llms-anthropic (>=0.10.4,<0.11.0)
|
|
57
|
+
Requires-Dist: llama-index-llms-azure-openai (>=0.4.2,<0.5.0)
|
|
57
58
|
Requires-Dist: llama-index-llms-deepseek (>=0.2.2,<0.3.0)
|
|
58
59
|
Requires-Dist: llama-index-llms-gemini (>=0.6.1,<0.7.0)
|
|
59
|
-
Requires-Dist: llama-index-llms-google-genai (>=0.
|
|
60
|
+
Requires-Dist: llama-index-llms-google-genai (>=0.8.2,<0.9.0)
|
|
60
61
|
Requires-Dist: llama-index-llms-huggingface-api (>=0.6.1,<0.7.0)
|
|
61
|
-
Requires-Dist: llama-index-llms-mistralai (>=0.
|
|
62
|
-
Requires-Dist: llama-index-llms-ollama (>=0.
|
|
63
|
-
Requires-Dist: llama-index-llms-openai (>=0.
|
|
64
|
-
Requires-Dist: llama-index-llms-openai-like (>=0.5.
|
|
62
|
+
Requires-Dist: llama-index-llms-mistralai (>=0.9.0,<0.10.0)
|
|
63
|
+
Requires-Dist: llama-index-llms-ollama (>=0.9.1,<0.10.0)
|
|
64
|
+
Requires-Dist: llama-index-llms-openai (>=0.6.12,<0.7.0)
|
|
65
|
+
Requires-Dist: llama-index-llms-openai-like (>=0.5.3,<0.6.0)
|
|
65
66
|
Requires-Dist: llama-index-llms-perplexity (>=0.4.1,<0.5.0)
|
|
66
67
|
Requires-Dist: llama-index-multi-modal-llms-openai (>=0.6.1,<0.7.0)
|
|
67
68
|
Requires-Dist: llama-index-readers-chatgpt-plugin (>=0.4.1,<0.5.0)
|
|
@@ -75,14 +76,15 @@ Requires-Dist: llama-index-readers-web (>=0.5.3,<0.6.0)
|
|
|
75
76
|
Requires-Dist: llama-index-vector-stores-chroma (>=0.5.3,<0.6.0)
|
|
76
77
|
Requires-Dist: llama-index-vector-stores-elasticsearch (==0.5.1)
|
|
77
78
|
Requires-Dist: llama-index-vector-stores-pinecone (>=0.7.1,<0.8.0)
|
|
78
|
-
Requires-Dist: llama-index-vector-stores-
|
|
79
|
+
Requires-Dist: llama-index-vector-stores-qdrant (>=0.8.5,<0.9.0)
|
|
80
|
+
Requires-Dist: llama-index-vector-stores-redis (>=0.6.2,<0.7.0)
|
|
79
81
|
Requires-Dist: mcp (>=1.13.1,<2.0.0)
|
|
80
82
|
Requires-Dist: mss (>=9.0.2,<10.0.0)
|
|
81
83
|
Requires-Dist: nbconvert (>=7.16.6,<8.0.0)
|
|
82
84
|
Requires-Dist: numpy (==1.26.4)
|
|
83
85
|
Requires-Dist: onnxruntime (==1.22.1)
|
|
84
|
-
Requires-Dist: openai (==
|
|
85
|
-
Requires-Dist: openai-agents (>=0.
|
|
86
|
+
Requires-Dist: openai (==2.14.0)
|
|
87
|
+
Requires-Dist: openai-agents (>=0.6.4,<0.7.0)
|
|
86
88
|
Requires-Dist: opencv-python (>=4.11.0.86,<5.0.0.0)
|
|
87
89
|
Requires-Dist: packaging (>=25.0,<26.0)
|
|
88
90
|
Requires-Dist: pandas (==2.2.3)
|
|
@@ -104,7 +106,7 @@ Requires-Dist: tiktoken (==0.11.0)
|
|
|
104
106
|
Requires-Dist: transformers (==4.56.2)
|
|
105
107
|
Requires-Dist: urllib3 (==2.5.0)
|
|
106
108
|
Requires-Dist: wikipedia (>=1.4.0,<2.0.0)
|
|
107
|
-
Requires-Dist: xai-sdk (>=1.
|
|
109
|
+
Requires-Dist: xai-sdk (>=1.5.0,<2.0.0)
|
|
108
110
|
Requires-Dist: youtube-transcript-api (>=0.6.3,<0.7.0)
|
|
109
111
|
Project-URL: Changelog, https://github.com/szczyglis-dev/py-gpt/blob/master/CHANGELOG.md
|
|
110
112
|
Project-URL: Documentation, https://pygpt.readthedocs.io/
|
|
@@ -117,7 +119,7 @@ Description-Content-Type: text/markdown
|
|
|
117
119
|
|
|
118
120
|
[](https://snapcraft.io/pygpt)
|
|
119
121
|
|
|
120
|
-
Release: **2.6.
|
|
122
|
+
Release: **2.6.66** | build: **2025-12-25** | Python: **>=3.10, <3.14**
|
|
121
123
|
|
|
122
124
|
> Official website: https://pygpt.net | Documentation: https://pygpt.readthedocs.io
|
|
123
125
|
>
|
|
@@ -183,7 +185,8 @@ You can download compiled 64-bit versions for Windows and Linux here: https://py
|
|
|
183
185
|
- Includes an node-based Agents Builder.
|
|
184
186
|
- Supports multiple languages.
|
|
185
187
|
- Requires no previous knowledge of using AI models.
|
|
186
|
-
-
|
|
188
|
+
- Image generation via models like `DALL-E`, `gpt-image`, `Imagen` and `Nano Banana`.
|
|
189
|
+
- Video generation via models like `Veo3` and `Sora2`.
|
|
187
190
|
- Fully configurable.
|
|
188
191
|
- Themes support.
|
|
189
192
|
- Real-time code syntax highlighting.
|
|
@@ -650,6 +653,7 @@ Options for indexing existing context history or enabling real-time indexing new
|
|
|
650
653
|
- ChromaVectorStore
|
|
651
654
|
- ElasticsearchStore
|
|
652
655
|
- PinecodeVectorStore
|
|
656
|
+
- QdrantVectorStore
|
|
653
657
|
- RedisVectorStore
|
|
654
658
|
- SimpleVectorStore
|
|
655
659
|
```
|
|
@@ -706,7 +710,10 @@ Plugin allows you to generate images in Chat mode:
|
|
|
706
710
|
|
|
707
711
|

|
|
708
712
|
|
|
709
|
-
**Video generation**:
|
|
713
|
+
**Video generation**:
|
|
714
|
+
|
|
715
|
+
From version `2.6.32`, video generation (using `Google Veo 3`) is also available.
|
|
716
|
+
From version `2.6.66`, video generation (using `OpenAI Sora 2`) is also available.
|
|
710
717
|
|
|
711
718
|
### Multiple variants
|
|
712
719
|
|
|
@@ -1154,7 +1161,7 @@ The name of the currently active profile is shown as (Profile Name) in the windo
|
|
|
1154
1161
|
|
|
1155
1162
|
## Built-in models
|
|
1156
1163
|
|
|
1157
|
-
PyGPT has a preconfigured list of models (as of 2025-
|
|
1164
|
+
PyGPT has a preconfigured list of models (as of 2025-12-25):
|
|
1158
1165
|
|
|
1159
1166
|
- `bielik-11b-v2.3-instruct:Q4_K_M` (Ollama)
|
|
1160
1167
|
- `chatgpt-4o-latest` (OpenAI)
|
|
@@ -1164,6 +1171,8 @@ PyGPT has a preconfigured list of models (as of 2025-08-31):
|
|
|
1164
1171
|
- `claude-3-opus` (Anthropic)
|
|
1165
1172
|
- `claude-opus-4-0` (Anthropic)
|
|
1166
1173
|
- `claude-sonnet-4-0` (Anthropic)
|
|
1174
|
+
- `claude-opus-4-5` (Anthropic)
|
|
1175
|
+
- `claude-sonnet-4-5` (Anthropic)
|
|
1167
1176
|
- `codellama` (Ollama)
|
|
1168
1177
|
- `codex-mini` (OpenAI)
|
|
1169
1178
|
- `dall-e-2` (OpenAI)
|
|
@@ -1180,6 +1189,9 @@ PyGPT has a preconfigured list of models (as of 2025-08-31):
|
|
|
1180
1189
|
- `gemini-2.5-flash` (Google)
|
|
1181
1190
|
- `gemini-2.5-flash-preview-native-audio-dialog` (Google, real-time)
|
|
1182
1191
|
- `gemini-2.5-pro` (Google)
|
|
1192
|
+
- `gemini-3-flash-preview` (Google)
|
|
1193
|
+
- `gemini-3-pro-image-preview` (Google)
|
|
1194
|
+
- `gemini-3-pro-preview` (Google)
|
|
1183
1195
|
- `gpt-3.5-turbo` (OpenAI)
|
|
1184
1196
|
- `gpt-3.5-turbo-16k` (OpenAI)
|
|
1185
1197
|
- `gpt-3.5-turbo-instruct` (OpenAI)
|
|
@@ -1196,7 +1208,9 @@ PyGPT has a preconfigured list of models (as of 2025-08-31):
|
|
|
1196
1208
|
- `gpt-5` (OpenAI)
|
|
1197
1209
|
- `gpt-5-mini` (OpenAI)
|
|
1198
1210
|
- `gpt-5-nano` (OpenAI)
|
|
1211
|
+
- `gpt-5.2` (OpenAI)
|
|
1199
1212
|
- `gpt-image-1` (OpenAI)
|
|
1213
|
+
- `gpt-image-1.5` (OpenAI)
|
|
1200
1214
|
- `gpt-oss:20b` (OpenAI - via Ollama and HuggingFace Router)
|
|
1201
1215
|
- `gpt-oss:120b` (OpenAI - via Ollama and HuggingFace Router)
|
|
1202
1216
|
- `gpt-realtime` (OpenAI, real-time)
|
|
@@ -1212,6 +1226,7 @@ PyGPT has a preconfigured list of models (as of 2025-08-31):
|
|
|
1212
1226
|
- `mistral` (Ollama)
|
|
1213
1227
|
- `mistral-large` (Ollama)
|
|
1214
1228
|
- `mistral-small3.1` (Ollama)
|
|
1229
|
+
- `nano-banana-pro-preview` (Google)
|
|
1215
1230
|
- `o1` (OpenAI)
|
|
1216
1231
|
- `o1-mini` (OpenAI)
|
|
1217
1232
|
- `o1-pro` (OpenAI)
|
|
@@ -1231,11 +1246,14 @@ PyGPT has a preconfigured list of models (as of 2025-08-31):
|
|
|
1231
1246
|
- `sonar-pro` (Perplexity)
|
|
1232
1247
|
- `sonar-reasoning` (Perplexity)
|
|
1233
1248
|
- `sonar-reasoning-pro` (Perplexity)
|
|
1249
|
+
- `sora-2` (OpenAI)
|
|
1234
1250
|
- `veo-3.0-generate-preview` (Google)
|
|
1235
1251
|
- `veo-3.0-fast-generate-preview` (Google)
|
|
1252
|
+
- `veo-3.1-generate-preview` (Google)
|
|
1253
|
+
- `veo-3.1-fast-generate-preview` (Google)
|
|
1236
1254
|
|
|
1237
1255
|
All models are specified in the configuration file `models.json`, which you can customize.
|
|
1238
|
-
This file is located in your working directory. You can add new models provided directly by `OpenAI API` (or compatible) and those supported by `LlamaIndex` or `Ollama` to this file. Configuration for LlamaIndex
|
|
1256
|
+
This file is located in your working directory. You can add new models provided directly by `OpenAI API` (or compatible), `Google Gen AI API`, `Anthropic API`, `xAI API`, and those supported by `LlamaIndex` or `Ollama` to this file. Configuration for LlamaIndex in placed in `llama_index` key.
|
|
1239
1257
|
|
|
1240
1258
|
You can import new models by manually editing `models.json` or by using the model importer in the `Config -> Models -> Import` menu.
|
|
1241
1259
|
|
|
@@ -3088,6 +3106,7 @@ You can provide a single URI in the form of: `{scheme}://{user}:{password}@{host
|
|
|
3088
3106
|
- ChromaVectorStore
|
|
3089
3107
|
- ElasticsearchStore
|
|
3090
3108
|
- PinecodeVectorStore
|
|
3109
|
+
- QdrantVectorStore
|
|
3091
3110
|
- RedisVectorStore
|
|
3092
3111
|
- SimpleVectorStore
|
|
3093
3112
|
```
|
|
@@ -3118,6 +3137,15 @@ Keyword arguments for Pinecone(`**kwargs`):
|
|
|
3118
3137
|
- `api_key`
|
|
3119
3138
|
- index_name (default: current index ID, already set, not required)
|
|
3120
3139
|
|
|
3140
|
+
**QdrantVectorStore**
|
|
3141
|
+
|
|
3142
|
+
Keyword arguments for QdrantVectorStore(`**kwargs`):
|
|
3143
|
+
|
|
3144
|
+
- `url` - str, default: `http://localhost:6333`
|
|
3145
|
+
- `api_key` - str, default: `None` (for Qdrant Cloud)
|
|
3146
|
+
- `collection_name` (default: current index ID, already set, not required)
|
|
3147
|
+
- any other keyword arguments provided on list
|
|
3148
|
+
|
|
3121
3149
|
**RedisVectorStore**
|
|
3122
3150
|
|
|
3123
3151
|
Keyword arguments for RedisVectorStore(`**kwargs`):
|
|
@@ -3615,6 +3643,7 @@ You can create a custom vector store provider or data loader for your data and d
|
|
|
3615
3643
|
from pygpt_net.provider.vector_stores.chroma import ChromaProvider
|
|
3616
3644
|
from pygpt_net.provider.vector_stores.elasticsearch import ElasticsearchProvider
|
|
3617
3645
|
from pygpt_net.provider.vector_stores.pinecode import PinecodeProvider
|
|
3646
|
+
from pygpt_net.provider.vector_stores.qdrant import QdrantProvider
|
|
3618
3647
|
from pygpt_net.provider.vector_stores.redis import RedisProvider
|
|
3619
3648
|
from pygpt_net.provider.vector_stores.simple import SimpleProvider
|
|
3620
3649
|
|
|
@@ -3624,6 +3653,7 @@ def run(**kwargs):
|
|
|
3624
3653
|
launcher.add_vector_store(ChromaProvider())
|
|
3625
3654
|
launcher.add_vector_store(ElasticsearchProvider())
|
|
3626
3655
|
launcher.add_vector_store(PinecodeProvider())
|
|
3656
|
+
launcher.add_vector_store(QdrantProvider())
|
|
3627
3657
|
launcher.add_vector_store(RedisProvider())
|
|
3628
3658
|
launcher.add_vector_store(SimpleProvider())
|
|
3629
3659
|
|
|
@@ -3723,6 +3753,27 @@ may consume additional tokens that are not displayed in the main window.
|
|
|
3723
3753
|
|
|
3724
3754
|
## Recent changes:
|
|
3725
3755
|
|
|
3756
|
+
**2.6.66 (2025-12-25)**
|
|
3757
|
+
|
|
3758
|
+
- Added Sora 2 support - #155.
|
|
3759
|
+
- Added Nano Banana support.
|
|
3760
|
+
- Added Qdrant Vector Store - merged PR #147 by @Anush008.
|
|
3761
|
+
- Added models: gpt-5.2, gpt-image-1.5, gemini-3, nano-banana-pro, sora-2, claude-sonnet-4.5, claude-opus-4.5, veo-3.1.
|
|
3762
|
+
- Added Select/unselect All option in checkbox lists.
|
|
3763
|
+
- OpenAI SDK upgraded to 2.14.0, Anthropic SDK upgraded to 0.75.0, xAI SDK upgraded to 1.5.0, Google GenAI upgraded to 1.56.0, LlamaIndex upgraded to 0.14.10.
|
|
3764
|
+
- Fix: charset-normalizer 3.2.0 circular import - #152.
|
|
3765
|
+
- Fix: Google client closed state.
|
|
3766
|
+
|
|
3767
|
+
**2.6.65 (2025-09-28)**
|
|
3768
|
+
|
|
3769
|
+
- Added drag and drop functionality for files and directories from the filesystem in attachments and file explorer.
|
|
3770
|
+
- Added automatic thumbnail generation when uploading avatars.
|
|
3771
|
+
- Added a last status timer.
|
|
3772
|
+
- Added a fade effect to collapsed user messages.
|
|
3773
|
+
- Added a scroll area to the agent options in the presets editor.
|
|
3774
|
+
- Added a hover effect to lists.
|
|
3775
|
+
- Improved UI/UX.
|
|
3776
|
+
|
|
3726
3777
|
**2.6.64 (2025-09-27)**
|
|
3727
3778
|
|
|
3728
3779
|
- Added translations to agent headers.
|