pygpt-net 2.5.2__py3-none-any.whl → 2.5.4__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- CHANGELOG.md +12 -0
- README.md +17 -1
- pygpt_net/CHANGELOG.txt +12 -0
- pygpt_net/__init__.py +3 -3
- pygpt_net/controller/chat/input.py +17 -7
- pygpt_net/controller/model/__init__.py +2 -1
- pygpt_net/controller/ui/tabs.py +3 -1
- pygpt_net/core/command/__init__.py +1 -2
- pygpt_net/core/models/ollama.py +38 -2
- pygpt_net/data/config/config.json +3 -3
- pygpt_net/data/config/models.json +313 -6
- pygpt_net/data/config/modes.json +3 -3
- pygpt_net/data/locale/locale.de.ini +3 -1
- pygpt_net/data/locale/locale.en.ini +4 -2
- pygpt_net/data/locale/locale.es.ini +3 -1
- pygpt_net/data/locale/locale.fr.ini +3 -1
- pygpt_net/data/locale/locale.it.ini +3 -1
- pygpt_net/data/locale/locale.pl.ini +3 -1
- pygpt_net/data/locale/locale.uk.ini +3 -1
- pygpt_net/data/locale/locale.zh.ini +3 -1
- pygpt_net/item/model.py +27 -1
- pygpt_net/provider/core/model/json_file.py +5 -4
- pygpt_net/provider/core/model/patch.py +14 -1
- pygpt_net/provider/gpt/__init__.py +11 -1
- pygpt_net/provider/gpt/chat.py +44 -29
- pygpt_net/ui/widget/lists/context.py +2 -2
- {pygpt_net-2.5.2.dist-info → pygpt_net-2.5.4.dist-info}/METADATA +18 -2
- {pygpt_net-2.5.2.dist-info → pygpt_net-2.5.4.dist-info}/RECORD +31 -31
- {pygpt_net-2.5.2.dist-info → pygpt_net-2.5.4.dist-info}/LICENSE +0 -0
- {pygpt_net-2.5.2.dist-info → pygpt_net-2.5.4.dist-info}/WHEEL +0 -0
- {pygpt_net-2.5.2.dist-info → pygpt_net-2.5.4.dist-info}/entry_points.txt +0 -0
@@ -293,6 +293,8 @@ dialog.license.label = Al utilizar este software, usted está aceptando los sigu
|
|
293
293
|
dialog.license.title = Licencia
|
294
294
|
dialog.logger.btn.clear = Limpiar
|
295
295
|
dialog.logger.title = Logger
|
296
|
+
dialog.ollama.model_not_found = El modelo solicitado ({model}) no está disponible en tu Ollama.\nPor favor, descarga el modelo ejecutando el comando:\nollama pull {model}
|
297
|
+
dialog.ollama.not_installed = Ollama no está instalado o no está en funcionamiento.\nPor favor, instala Ollama primero visitando:\nhttps://ollama.com/download
|
296
298
|
dialog.plugin_settings = Configuración de plugins
|
297
299
|
dialog.plugin.settings.btn.defaults.app = Cargar predeterminados
|
298
300
|
dialog.plugin.settings.btn.defaults.user = Deshacer cambios
|
@@ -777,8 +779,8 @@ settings.audio.input.rate.desc = Taux d'échantillonnage, par défaut : 44100
|
|
777
779
|
settings.audio.input.stop_interval = Intervalo de transcripción automática continua
|
778
780
|
settings.audio.input.stop_interval.desc = Intervalo en segundos para transcribir automáticamente el fragmento de audio, predeterminado: 10
|
779
781
|
settings.audio.input.timeout = Tiempo de espera de grabación
|
780
|
-
settings.audio.input.timeout.desc = Tiempo de espera (segundos) para detener la grabación automáticamente, 0 para deshabilitar, por defecto: 120
|
781
782
|
settings.audio.input.timeout.continuous = Habilitar tiempo de espera en modo continuo
|
783
|
+
settings.audio.input.timeout.desc = Tiempo de espera (segundos) para detener la grabación automáticamente, 0 para deshabilitar, por defecto: 120
|
782
784
|
settings.check_updates = Buscar actualizaciones al iniciar
|
783
785
|
settings.check_updates.bg = Buscar actualizaciones en segundo plano
|
784
786
|
settings.cmd.field.desc = Habilitar la herramienta `{cmd}`.
|
@@ -293,6 +293,8 @@ dialog.license.label = En utilisant ce logiciel, vous acceptez les termes suivan
|
|
293
293
|
dialog.license.title = Licence
|
294
294
|
dialog.logger.btn.clear = Effacer
|
295
295
|
dialog.logger.title = Journal
|
296
|
+
dialog.ollama.model_not_found = Le modèle demandé ({model}) n'est pas disponible dans votre Ollama.\nVeuillez télécharger le modèle en exécutant la commande :\nollama pull {model}
|
297
|
+
dialog.ollama.not_installed = Ollama n'est pas installé ou n'est pas en cours d'exécution.\nVeuillez d'abord installer Ollama en visitant :\nhttps://ollama.com/download
|
296
298
|
dialog.plugin_settings = Paramètres des plugins
|
297
299
|
dialog.plugin.settings.btn.defaults.app = Charger les valeurs par défaut
|
298
300
|
dialog.plugin.settings.btn.defaults.user = Annuler les modifications
|
@@ -777,8 +779,8 @@ settings.audio.input.rate.desc = Taux d'échantillonnage, par défaut : 44100
|
|
777
779
|
settings.audio.input.stop_interval = Intervalle d'auto-transcription enregistrement continu
|
778
780
|
settings.audio.input.stop_interval.desc = Intervalle en secondes pour la transcription automatique d'un morceau audio, par défaut : 10
|
779
781
|
settings.audio.input.timeout = Délai d'enregistrement
|
780
|
-
settings.audio.input.timeout.desc = Délai (secondes) pour l'arrêt automatique de l'enregistrement, 0 pour désactiver, par défaut : 120
|
781
782
|
settings.audio.input.timeout.continuous = Activer le délai en mode continu
|
783
|
+
settings.audio.input.timeout.desc = Délai (secondes) pour l'arrêt automatique de l'enregistrement, 0 pour désactiver, par défaut : 120
|
782
784
|
settings.check_updates = Vérifier les mises à jour au démarrage
|
783
785
|
settings.check_updates.bg = Vérifier les mises à jour en arrière-plan
|
784
786
|
settings.cmd.field.desc = Activer l'outil `{cmd}`.
|
@@ -293,6 +293,8 @@ dialog.license.label = Utilizzando questo software si accettano i seguenti termi
|
|
293
293
|
dialog.license.title = Licenza
|
294
294
|
dialog.logger.btn.clear = Pulisci
|
295
295
|
dialog.logger.title = Logger
|
296
|
+
dialog.ollama.model_not_found = Il modello richiesto ({model}) non è disponibile nel tuo Ollama.\nPer favore, scarica il modello eseguendo il comando:\nollama pull {model}
|
297
|
+
dialog.ollama.not_installed = Ollama non è installato o non è in esecuzione.\nSi prega di installare prima Ollama visitando:\nhttps://ollama.com/download
|
296
298
|
dialog.plugin_settings = Impostazioni plugin
|
297
299
|
dialog.plugin.settings.btn.defaults.app = Carica i valori predefiniti
|
298
300
|
dialog.plugin.settings.btn.defaults.user = Annulla modifiche
|
@@ -778,8 +780,8 @@ settings.audio.input.rate.desc = Frequenza di campionamento, predefinito: 44100
|
|
778
780
|
settings.audio.input.stop_interval = Intervallo di trascrizione automatica continua
|
779
781
|
settings.audio.input.stop_interval.desc = Intervallo in secondi per la trascrizione automatica del segmento audio, predefinito: 10
|
780
782
|
settings.audio.input.timeout = Timeout di registrazione
|
781
|
-
settings.audio.input.timeout.desc = Timeout (secondi) per l'arresto automatico della registrazione, 0 per disabilitare, predefinito: 120
|
782
783
|
settings.audio.input.timeout.continuous = Abilita timeout in modalità continua
|
784
|
+
settings.audio.input.timeout.desc = Timeout (secondi) per l'arresto automatico della registrazione, 0 per disabilitare, predefinito: 120
|
783
785
|
settings.check_updates = Controlla aggiornamenti all'avvio
|
784
786
|
settings.check_updates.bg = Controlla gli aggiornamenti in background
|
785
787
|
settings.cmd.field.desc = Abilita lo strumento `{cmd}`.
|
@@ -293,6 +293,8 @@ dialog.license.label = Korzystając z tego oprogramowania, akceptujesz następuj
|
|
293
293
|
dialog.license.title = Licencja
|
294
294
|
dialog.logger.btn.clear = Wyczyść
|
295
295
|
dialog.logger.title = Logger
|
296
|
+
dialog.ollama.model_not_found = Żądany model ({model}) nie jest dostępny w twojej Ollama.\nProszę pobrać model, wykonując polecenie:\nollama pull {model}
|
297
|
+
dialog.ollama.not_installed = Ollama nie jest zainstalowana lub nie działa.\nProszę najpierw zainstalować Ollama, odwiedzając stronę:\nhttps://ollama.com/download
|
296
298
|
dialog.plugin_settings = Ustawienia pluginów
|
297
299
|
dialog.plugin.settings.btn.defaults.app = Wczytaj domyślne
|
298
300
|
dialog.plugin.settings.btn.defaults.user = Cofnij zmiany
|
@@ -778,8 +780,8 @@ settings.audio.input.rate.desc = Częstotliwość próbkowania, domyślnie: 4410
|
|
778
780
|
settings.audio.input.stop_interval = Interwał automatycznego transkrybowania nagrania ciągłego
|
779
781
|
settings.audio.input.stop_interval.desc = Interwał w sekundach dla automatycznego transkrybowania fragmentu audio, domyślnie: 10
|
780
782
|
settings.audio.input.timeout = Limit czasu nagrywania
|
781
|
-
settings.audio.input.timeout.desc = Limit czasu (w sekundach) dla automatycznego zatrzymania nagrywania, 0 aby wyłączyć, domyślnie: 120
|
782
783
|
settings.audio.input.timeout.continuous = Włącz limit czasu w trybie ciągłym
|
784
|
+
settings.audio.input.timeout.desc = Limit czasu (w sekundach) dla automatycznego zatrzymania nagrywania, 0 aby wyłączyć, domyślnie: 120
|
783
785
|
settings.check_updates = Sprawdź aktualizacje przy starcie
|
784
786
|
settings.check_updates.bg = Sprawdź aktualizacje w tle
|
785
787
|
settings.cmd.field.desc = Włącz narzędzie `{cmd}`.
|
@@ -293,6 +293,8 @@ dialog.license.label = Використовуючи це програмне за
|
|
293
293
|
dialog.license.title = Ліцензія
|
294
294
|
dialog.logger.btn.clear = Очистити
|
295
295
|
dialog.logger.title = Логер
|
296
|
+
dialog.ollama.model_not_found = Потрібна модель ({model}) не є доступною у вашій Ollama.\nБудь ласка, завантажте модель, виконавши команду:\nollama pull {model}
|
297
|
+
dialog.ollama.not_installed = Ollama не встановлено або не запущено.\nБудь ласка, спочатку встановіть Ollama, відвідавши:\nhttps://ollama.com/download
|
296
298
|
dialog.plugin_settings = Налаштування плагінів
|
297
299
|
dialog.plugin.settings.btn.defaults.app = Завантажити стандартні значення
|
298
300
|
dialog.plugin.settings.btn.defaults.user = Відмінити зміни
|
@@ -777,8 +779,8 @@ settings.audio.input.rate.desc = Частота дискретизації, за
|
|
777
779
|
settings.audio.input.stop_interval = Інтервал автоматичного транскрибування безперервного запису
|
778
780
|
settings.audio.input.stop_interval.desc = Інтервал у секундах для автоматичного транскрибування фрагмента аудіо, за замовчуванням: 10
|
779
781
|
settings.audio.input.timeout = Тайм-аут запису
|
780
|
-
settings.audio.input.timeout.desc = Тайм-аут (в секундах) для автоматичної зупинки запису, 0 для відключення, за замовчуванням: 120
|
781
782
|
settings.audio.input.timeout.continuous = Увімкнути тайм-аут у безперервному режимі
|
783
|
+
settings.audio.input.timeout.desc = Тайм-аут (в секундах) для автоматичної зупинки запису, 0 для відключення, за замовчуванням: 120
|
782
784
|
settings.check_updates = Перевіряти оновлення при запуску
|
783
785
|
settings.check_updates.bg = Перевіряти оновлення у фоновому режимі
|
784
786
|
settings.cmd.field.desc = Увімкнути інструмент `{cmd}`.
|
@@ -303,6 +303,8 @@ dialog.models.editor.defaults.app.result = 恢復到模型工廠設置。
|
|
303
303
|
dialog.models.editor.defaults.user.confirm = 撤銷當前更改?
|
304
304
|
dialog.models.editor.defaults.user.result = 恢復模型用戶配置
|
305
305
|
dialog.models.editor.delete.confirm = 您確定要刪除模型嗎?
|
306
|
+
dialog.ollama.model_not_found = 您的Ollama中没有请求的模型({model})。\n请先通过执行以下命令下载模型:\nollama pull {model}
|
307
|
+
dialog.ollama.not_installed = 未安装或未运行Ollama。\n请先通过访问以下网址安装Ollama:\nhttps://ollama.com/download
|
306
308
|
dialog.plugin_settings = 插件設置
|
307
309
|
dialog.plugin.settings.btn.defaults.app = 加載默認值
|
308
310
|
dialog.plugin.settings.btn.defaults.user = 撤銷更改
|
@@ -879,8 +881,8 @@ settings.audio.input.rate.desc = 采样率,默认: 44100
|
|
879
881
|
settings.audio.input.stop_interval = 连续录音自动转录间隔
|
880
882
|
settings.audio.input.stop_interval.desc = 自动转录音频片段的间隔(以秒为单位),默认:10
|
881
883
|
settings.audio.input.timeout = 录音超时
|
882
|
-
settings.audio.input.timeout.desc = 自动停止录音的超时时间(秒),0为禁用,默认:120
|
883
884
|
settings.audio.input.timeout.continuous = 在连续模式下启用超时
|
885
|
+
settings.audio.input.timeout.desc = 自动停止录音的超时时间(秒),0为禁用,默认:120
|
884
886
|
settings.check_updates = 啟動時檢查更新
|
885
887
|
settings.check_updates.bg = 在後台檢查更新
|
886
888
|
settings.cmd.field.desc = 启用 `{cmd}` 工具。
|
pygpt_net/item/model.py
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
# GitHub: https://github.com/szczyglis-dev/py-gpt #
|
7
7
|
# MIT License #
|
8
8
|
# Created By : Marcin Szczygliński #
|
9
|
-
# Updated Date:
|
9
|
+
# Updated Date: 2025.02.02 02:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
|
12
12
|
import json
|
@@ -28,6 +28,7 @@ class ModelItem:
|
|
28
28
|
self.ctx = 0
|
29
29
|
self.tokens = 0
|
30
30
|
self.default = False
|
31
|
+
self.extra = {}
|
31
32
|
|
32
33
|
def from_dict(self, data: dict):
|
33
34
|
"""
|
@@ -48,6 +49,8 @@ class ModelItem:
|
|
48
49
|
self.tokens = data['tokens']
|
49
50
|
if 'default' in data:
|
50
51
|
self.default = data['default']
|
52
|
+
if 'extra' in data:
|
53
|
+
self.extra = data['extra']
|
51
54
|
|
52
55
|
# multimodal
|
53
56
|
if 'multimodal' in data:
|
@@ -97,6 +100,7 @@ class ModelItem:
|
|
97
100
|
data['tokens'] = self.tokens
|
98
101
|
data['default'] = self.default
|
99
102
|
data['multimodal'] = ','.join(self.multimodal)
|
103
|
+
data['extra'] = self.extra
|
100
104
|
|
101
105
|
data['langchain.provider'] = None
|
102
106
|
data['langchain.mode'] = ""
|
@@ -180,6 +184,28 @@ class ModelItem:
|
|
180
184
|
"""
|
181
185
|
return len(self.multimodal) > 0
|
182
186
|
|
187
|
+
def is_ollama(self) -> bool:
|
188
|
+
"""
|
189
|
+
Check if model is Ollama
|
190
|
+
|
191
|
+
:return: True if Ollama
|
192
|
+
"""
|
193
|
+
if self.llama_index is None:
|
194
|
+
return False
|
195
|
+
return "ollama" in self.llama_index.get("provider", "")
|
196
|
+
|
197
|
+
def get_ollama_model(self) -> str:
|
198
|
+
"""
|
199
|
+
Get Ollama model ID
|
200
|
+
|
201
|
+
:return: model ID
|
202
|
+
"""
|
203
|
+
if "args" in self.llama_index:
|
204
|
+
for arg in self.llama_index["args"]:
|
205
|
+
if arg["name"] == "model":
|
206
|
+
return arg["value"]
|
207
|
+
return ""
|
208
|
+
|
183
209
|
def has_mode(self, mode: str) -> bool:
|
184
210
|
"""
|
185
211
|
Check if model has mode
|
@@ -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:
|
9
|
+
# Updated Date: 2025.02.02 02:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
|
12
12
|
import json
|
@@ -32,9 +32,7 @@ class JsonFileProvider(BaseProvider):
|
|
32
32
|
self.config_file = 'models.json'
|
33
33
|
|
34
34
|
def install(self):
|
35
|
-
"""
|
36
|
-
Install provider data files
|
37
|
-
"""
|
35
|
+
"""Install provider data files"""
|
38
36
|
dst = os.path.join(self.window.core.config.path, self.config_file)
|
39
37
|
if not os.path.exists(dst):
|
40
38
|
src = os.path.join(self.window.core.config.get_app_path(), 'data', 'config', self.config_file)
|
@@ -166,6 +164,7 @@ class JsonFileProvider(BaseProvider):
|
|
166
164
|
'tokens': item.tokens,
|
167
165
|
'default': item.default,
|
168
166
|
'multimodal': item.multimodal,
|
167
|
+
'extra': item.extra,
|
169
168
|
}
|
170
169
|
|
171
170
|
@staticmethod
|
@@ -194,6 +193,8 @@ class JsonFileProvider(BaseProvider):
|
|
194
193
|
item.default = data['default']
|
195
194
|
if 'multimodal' in data:
|
196
195
|
item.multimodal = data['multimodal']
|
196
|
+
if 'extra' in data:
|
197
|
+
item.extra = data['extra']
|
197
198
|
|
198
199
|
def dump(self, item: ModelItem) -> str:
|
199
200
|
"""
|
@@ -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.02.
|
9
|
+
# Updated Date: 2025.02.02 02:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
|
12
12
|
from packaging.version import parse as parse_version, Version
|
@@ -490,6 +490,19 @@ class Patch:
|
|
490
490
|
model.name = model.id
|
491
491
|
updated = True
|
492
492
|
|
493
|
+
# < 2.5.4 <--- add o3-mini, update output tokens in o1, o1-mini, o1-preview
|
494
|
+
if old < parse_version("2.5.4"):
|
495
|
+
print("Migrating models from < 2.5.4...")
|
496
|
+
for id in data:
|
497
|
+
model = data[id]
|
498
|
+
if model.id == "o1":
|
499
|
+
model.tokens = 100000
|
500
|
+
elif model.id == "o1-mini":
|
501
|
+
model.tokens = 65536
|
502
|
+
elif model.id == "o1-preview":
|
503
|
+
model.tokens = 65536
|
504
|
+
updated = True
|
505
|
+
|
493
506
|
# update file
|
494
507
|
if updated:
|
495
508
|
data = dict(sorted(data.items()))
|
@@ -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:
|
9
|
+
# Updated Date: 2025.02.02 02:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
|
12
12
|
from httpx_socks import SyncProxyTransport
|
@@ -199,6 +199,16 @@ class Gpt:
|
|
199
199
|
ctx.audio_expires_ts = response.choices[0].message.audio.expires_at
|
200
200
|
ctx.is_audio = True
|
201
201
|
output = response.choices[0].message.audio.transcript # from transcript
|
202
|
+
self.chat.audio_prev_expires_ts = ctx.audio_expires_ts
|
203
|
+
self.chat.audio_prev_id = ctx.audio_id
|
204
|
+
elif response.choices[0].message and not response.choices[0].message.audio:
|
205
|
+
output = response.choices[0].message.content
|
206
|
+
ctx.audio_id = self.chat.audio_prev_id
|
207
|
+
ctx.audio_expires_ts = self.chat.audio_prev_expires_ts
|
208
|
+
if response.choices[0].message.tool_calls:
|
209
|
+
ctx.tool_calls = self.window.core.command.unpack_tool_calls(
|
210
|
+
response.choices[0].message.tool_calls,
|
211
|
+
)
|
202
212
|
|
203
213
|
ctx.set_output(output, ai_name)
|
204
214
|
ctx.set_tokens(
|
pygpt_net/provider/gpt/chat.py
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
# GitHub: https://github.com/szczyglis-dev/py-gpt #
|
7
7
|
# MIT License #
|
8
8
|
# Created By : Marcin Szczygliński #
|
9
|
-
# Updated Date: 2025.
|
9
|
+
# Updated Date: 2025.02.02 02:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
|
12
12
|
import json
|
@@ -35,6 +35,8 @@ class Chat:
|
|
35
35
|
"""
|
36
36
|
self.window = window
|
37
37
|
self.input_tokens = 0
|
38
|
+
self.audio_prev_id = None
|
39
|
+
self.audio_prev_expires_ts = None
|
38
40
|
|
39
41
|
def send(
|
40
42
|
self,
|
@@ -91,32 +93,35 @@ class Chat:
|
|
91
93
|
# extra API kwargs
|
92
94
|
response_kwargs = {}
|
93
95
|
|
94
|
-
# tools / functions
|
96
|
+
# tools / functions
|
95
97
|
tools = []
|
96
|
-
if
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
"
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
})
|
98
|
+
if functions is not None and isinstance(functions, list):
|
99
|
+
for function in functions:
|
100
|
+
if str(function['name']).strip() == '' or function['name'] is None:
|
101
|
+
continue
|
102
|
+
params = {}
|
103
|
+
if function['params'] is not None and function['params'] != "":
|
104
|
+
params = json.loads(function['params']) # unpack JSON from string
|
105
|
+
tools.append({
|
106
|
+
"type": "function",
|
107
|
+
"function": {
|
108
|
+
"name": function['name'],
|
109
|
+
"parameters": params,
|
110
|
+
"description": function['desc'],
|
111
|
+
}
|
112
|
+
})
|
112
113
|
|
113
114
|
# fix: o1 compatibility
|
114
|
-
if model.id is not None and not model.id.startswith("o1"):
|
115
|
+
if model.id is not None and not model.id.startswith("o1") and not model.id.startswith("o3"):
|
115
116
|
response_kwargs['presence_penalty'] = self.window.core.config.get('presence_penalty')
|
116
117
|
response_kwargs['frequency_penalty'] = self.window.core.config.get('frequency_penalty')
|
117
118
|
response_kwargs['temperature'] = self.window.core.config.get('temperature')
|
118
119
|
response_kwargs['top_p'] = self.window.core.config.get('top_p')
|
119
120
|
|
121
|
+
# extra arguments, o3 only
|
122
|
+
if model.extra and "reasoning_effort" in model.extra:
|
123
|
+
response_kwargs['reasoning_effort'] = model.extra["reasoning_effort"]
|
124
|
+
|
120
125
|
# tool calls are not supported for o1-mini and o1-preview
|
121
126
|
if (model.id is not None
|
122
127
|
and model.id not in ["o1-mini", "o1-preview"]):
|
@@ -124,11 +129,12 @@ class Chat:
|
|
124
129
|
response_kwargs['tools'] = tools
|
125
130
|
|
126
131
|
if max_tokens > 0:
|
127
|
-
if not model.id.startswith("o1"):
|
132
|
+
if not model.id.startswith("o1") and not model.id.startswith("o3"):
|
128
133
|
response_kwargs['max_tokens'] = max_tokens
|
129
134
|
else:
|
130
135
|
response_kwargs['max_completion_tokens'] = max_tokens
|
131
136
|
|
137
|
+
# o1 models do not support streaming
|
132
138
|
if model.id is not None and model.id.startswith("o1"):
|
133
139
|
stream = False
|
134
140
|
|
@@ -182,7 +188,8 @@ class Chat:
|
|
182
188
|
# tokens config
|
183
189
|
mode = MODE_CHAT
|
184
190
|
allowed_system = True
|
185
|
-
if model.id is not None
|
191
|
+
if (model.id is not None
|
192
|
+
and model.id not in ["o1-mini", "o1-preview"]):
|
186
193
|
allowed_system = False
|
187
194
|
|
188
195
|
used_tokens = self.window.core.tokens.from_user(
|
@@ -235,14 +242,22 @@ class Chat:
|
|
235
242
|
"content": item.final_output,
|
236
243
|
}
|
237
244
|
# append previous audio ID
|
238
|
-
if MODE_AUDIO in model.mode
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
"
|
245
|
-
|
245
|
+
if MODE_AUDIO in model.mode:
|
246
|
+
if item.audio_id:
|
247
|
+
# at first check expires_at - expired audio throws error in API
|
248
|
+
current_timestamp = time.time()
|
249
|
+
audio_timestamp = int(item.audio_expires_ts) if item.audio_expires_ts else 0
|
250
|
+
if audio_timestamp and audio_timestamp > current_timestamp:
|
251
|
+
msg["audio"] = {
|
252
|
+
"id": item.audio_id
|
253
|
+
}
|
254
|
+
elif self.audio_prev_id:
|
255
|
+
current_timestamp = time.time()
|
256
|
+
audio_timestamp = int(self.audio_prev_expires_ts) if self.audio_prev_expires_ts else 0
|
257
|
+
if audio_timestamp and audio_timestamp > current_timestamp:
|
258
|
+
msg["audio"] = {
|
259
|
+
"id": self.audio_prev_id
|
260
|
+
}
|
246
261
|
messages.append(msg)
|
247
262
|
|
248
263
|
# use vision and audio if available in current model
|
@@ -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:
|
9
|
+
# Updated Date: 2025.02.01 16:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
|
12
12
|
import datetime
|
@@ -524,7 +524,7 @@ class SectionItem(QStandardItem):
|
|
524
524
|
self.setSelectable(False)
|
525
525
|
self.setEnabled(False)
|
526
526
|
if self.group:
|
527
|
-
self.setTextAlignment(QtCore.Qt.
|
527
|
+
self.setTextAlignment(QtCore.Qt.AlignRight)
|
528
528
|
else:
|
529
529
|
self.setTextAlignment(QtCore.Qt.AlignRight)
|
530
530
|
font = self.font()
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: pygpt-net
|
3
|
-
Version: 2.5.
|
3
|
+
Version: 2.5.4
|
4
4
|
Summary: Desktop AI Assistant powered by models: OpenAI o1, GPT-4o, GPT-4, GPT-4 Vision, GPT-3.5, DALL-E 3, Llama 3, Mistral, Gemini, Claude, DeepSeek, Bielik, and other models supported by Langchain, Llama Index, and Ollama. Features include chatbot, text completion, image generation, vision analysis, speech-to-text, internet access, file handling, command execution and more.
|
5
5
|
Home-page: https://pygpt.net
|
6
6
|
License: MIT
|
@@ -94,7 +94,7 @@ Description-Content-Type: text/markdown
|
|
94
94
|
|
95
95
|
[](https://snapcraft.io/pygpt)
|
96
96
|
|
97
|
-
Release: **2.5.
|
97
|
+
Release: **2.5.4** | build: **2025.02.02** | Python: **>=3.10, <3.13**
|
98
98
|
|
99
99
|
> Official website: https://pygpt.net | Documentation: https://pygpt.readthedocs.io
|
100
100
|
>
|
@@ -376,6 +376,10 @@ To use microphone in Snap version you must connect the microphone with:
|
|
376
376
|
sudo snap connect pygpt:audio-record :audio-record
|
377
377
|
```
|
378
378
|
|
379
|
+
**Access to microphone and audio in Windows version:**
|
380
|
+
|
381
|
+
If you have a problems with audio or microphone in the non-binary PIP/Python version on Windows, check to see if FFmpeg is installed. If it's not, install it and add it to the PATH. You can find a tutorial on how to do this here: https://phoenixnap.com/kb/ffmpeg-windows. The binary version already includes FFmpeg.
|
382
|
+
|
379
383
|
**Windows and VC++ Redistributable**
|
380
384
|
|
381
385
|
On Windows, the proper functioning requires the installation of the `VC++ Redistributable`, which can be found on the Microsoft website:
|
@@ -4052,6 +4056,18 @@ may consume additional tokens that are not displayed in the main window.
|
|
4052
4056
|
|
4053
4057
|
## Recent changes:
|
4054
4058
|
|
4059
|
+
**2.5.4 (2025-02-02)**
|
4060
|
+
|
4061
|
+
- Added new models: `o3-mini` and `gpt-4o-mini-audio-preview`.
|
4062
|
+
- Enabled tool calls in Chat with Audio mode.
|
4063
|
+
- Added a check to verify if Ollama is running and if the model is available.
|
4064
|
+
|
4065
|
+
**2.5.3 (2025-02-01)**
|
4066
|
+
|
4067
|
+
- Fix: Snap permission denied bug.
|
4068
|
+
- Fix: column focus on tab change.
|
4069
|
+
- Datetime separators in groups moved to right side.
|
4070
|
+
|
4055
4071
|
**2.5.2 (2025-02-01)**
|
4056
4072
|
|
4057
4073
|
- Fix: spinner update after inline image generation.
|
@@ -1,9 +1,9 @@
|
|
1
|
-
CHANGELOG.md,sha256=
|
2
|
-
README.md,sha256=
|
1
|
+
CHANGELOG.md,sha256=alN03jzho7Lrmqylc0gEfrd0BabY_vVNLNaLO1FWSqI,82999
|
2
|
+
README.md,sha256=hgifT65UPuEjcaTZhLrD6Ea2m2axrDesN-zbkIrn_zs,164419
|
3
3
|
icon.png,sha256=CzcINJaU23a9hNjsDlDNbyuiEvKZ4Wg6DQVYF6SpuRg,13970
|
4
|
-
pygpt_net/CHANGELOG.txt,sha256=
|
4
|
+
pygpt_net/CHANGELOG.txt,sha256=UMIs0M4NhbTD-_l2uH3WMF5sXUumsNrOC6s56A0vMLc,81473
|
5
5
|
pygpt_net/LICENSE,sha256=dz9sfFgYahvu2NZbx4C1xCsVn9GVer2wXcMkFRBvqzY,1146
|
6
|
-
pygpt_net/__init__.py,sha256=
|
6
|
+
pygpt_net/__init__.py,sha256=HQFLwwqITxMAdsBEPz8R-zcF1okkqwgVcOCnHvxNk00,1372
|
7
7
|
pygpt_net/app.py,sha256=XXjn9XaKHGRcsHN8mMuqbRHAg8_Da0GLmACUU9ddjBc,16217
|
8
8
|
pygpt_net/config.py,sha256=Qc1FOBtTf3O6A6-6KoqUGtoJ0u8hXQeowvCVbZFwtik,16405
|
9
9
|
pygpt_net/container.py,sha256=BemiVZPpPNIzfB-ZvnZeeBPFu-AcX2c30OqYFylEjJc,4023
|
@@ -34,7 +34,7 @@ pygpt_net/controller/chat/command.py,sha256=3fNYvgt9NmCZPNrlqfLXivmN63ZRsuFseNjj
|
|
34
34
|
pygpt_net/controller/chat/common.py,sha256=-BJa2wHRHLDY-BHgp36GFhSr0yGNclkJGMiJQDktHaA,13958
|
35
35
|
pygpt_net/controller/chat/files.py,sha256=VFiiTeWTYR15Nwf1CTLEmeXqlmRHzNQVkNaU6hY2Gz4,2846
|
36
36
|
pygpt_net/controller/chat/image.py,sha256=XghPvTP8n3DxFgRrZ3bCfeLNTvOKSxbl-ewTwUTd4HM,8308
|
37
|
-
pygpt_net/controller/chat/input.py,sha256=
|
37
|
+
pygpt_net/controller/chat/input.py,sha256=H6gmYjD3fSzSD_Xj7bpR0JooRtNgsyVkU6kobBUoSpk,10946
|
38
38
|
pygpt_net/controller/chat/output.py,sha256=VuziVuI9Lj_4kZmTWvXg8t2tq4w9uD7J1g2MqlMCV6s,9272
|
39
39
|
pygpt_net/controller/chat/render.py,sha256=h23QCvMDIAaCpInqwwADa4G43sSpSn-CE5celnk1LSc,17206
|
40
40
|
pygpt_net/controller/chat/response.py,sha256=UnTnnn2on-Qg2_T_QcQcklTCcuq6XhyLLxs1fn-D9Tg,9450
|
@@ -78,7 +78,7 @@ pygpt_net/controller/lang/settings.py,sha256=awPEshWbHlOt11Zyg_uQKlbYjvABXrQ7QMH
|
|
78
78
|
pygpt_net/controller/launcher/__init__.py,sha256=om6aEZx31cSiCuShnDHp5Fs-Lj6Rb_pmbOO5fBweEWU,1899
|
79
79
|
pygpt_net/controller/layout/__init__.py,sha256=9R30zrZtvedAf1OxQLzxDWt8o2XirUq0bkcFRnpCztg,11433
|
80
80
|
pygpt_net/controller/mode/__init__.py,sha256=TY3y5fD8kpqLCmDyyCoEL_1OTSOXLnHVdIvH2lGUTew,7303
|
81
|
-
pygpt_net/controller/model/__init__.py,sha256=
|
81
|
+
pygpt_net/controller/model/__init__.py,sha256=qRXFmBje0zu_obAku3qTkhnr01z5D5yDN4gbX347NMA,5931
|
82
82
|
pygpt_net/controller/model/editor.py,sha256=8UaNi_Ui5ooPdio9_mw4ECihTxE7Iq5n5hDl41D3hu0,12675
|
83
83
|
pygpt_net/controller/notepad/__init__.py,sha256=wgnvLtTBuq6W6Eio3BgjrESPRNLRRVyqUutpBNb9T7k,9267
|
84
84
|
pygpt_net/controller/painter/__init__.py,sha256=1Ekmr2a3irDkSb2wowiPXhW59rfdZOW1tdbxeubph-k,2747
|
@@ -102,7 +102,7 @@ pygpt_net/controller/theme/nodes.py,sha256=6SCKMGQ5SZdKgy4t69raiikTLQDPPkjoYTPwl
|
|
102
102
|
pygpt_net/controller/tools/__init__.py,sha256=b_yt413iRUI9fWHzZGdtM4333UjzrJb-zmq_exYTgy4,2723
|
103
103
|
pygpt_net/controller/ui/__init__.py,sha256=WsH7OzMS_ixCwuHeSajv2E3irPo9B4H3dQe7Svd_71k,5903
|
104
104
|
pygpt_net/controller/ui/mode.py,sha256=8mw_tmRo7sArvgv-k1yfwx5SCfVOkwdc96U8ZiW83Q0,10231
|
105
|
-
pygpt_net/controller/ui/tabs.py,sha256=
|
105
|
+
pygpt_net/controller/ui/tabs.py,sha256=xl3KMq7uyC-Vja7MTLUG_4Ade7CtU85U5pj3-ka-aO4,20154
|
106
106
|
pygpt_net/controller/ui/vision.py,sha256=KrP8wFuuz-gsO9iwbLDnzvC5iqWVlWjFarQ27HkHdEg,2303
|
107
107
|
pygpt_net/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
108
108
|
pygpt_net/core/access/__init__.py,sha256=rFKp9xMsuJHS_wxiMEMMHVRd5lXdkPj7LuObAIdQFBY,942
|
@@ -136,7 +136,7 @@ pygpt_net/core/camera/__init__.py,sha256=K74D_4Q_GN1M66pTH6H2D1em_FlWohGLgb0aDQ6
|
|
136
136
|
pygpt_net/core/chain/__init__.py,sha256=C7Xm88bRblcyM4e0wZMFG-6SQCdw_frXN9kqnWzce60,3541
|
137
137
|
pygpt_net/core/chain/chat.py,sha256=5LxPWHkocjrIAAwrdDH1ss6knAnh4_owfbHPsOQYSws,5238
|
138
138
|
pygpt_net/core/chain/completion.py,sha256=GGRA-q6sQgPnSibiwHBwk7jgT0MgOkka1_jK2-IiBPg,5698
|
139
|
-
pygpt_net/core/command/__init__.py,sha256=
|
139
|
+
pygpt_net/core/command/__init__.py,sha256=Yj0nL_gtHjSTBbw6A-jpgTDz6JgE86FvfH82eqtM40g,24279
|
140
140
|
pygpt_net/core/ctx/__init__.py,sha256=5W5ZPYE5rkbBRRdL7mT9MFvnWZKjib0cMBiC-9HFl28,43311
|
141
141
|
pygpt_net/core/ctx/bag.py,sha256=-LRhttDRiQkw1Msl3kbGQYaY9w8zqn1o0miNRdqjHtQ,1286
|
142
142
|
pygpt_net/core/ctx/container.py,sha256=tdPHPRfTi8yGY1MZGgFtYtx2lvc5K9OTqhjde16wivY,4232
|
@@ -197,7 +197,7 @@ pygpt_net/core/installer/__init__.py,sha256=I7ALQy8P3SG7iOY04gDQpRVmSFNCtk83sz90
|
|
197
197
|
pygpt_net/core/llm/__init__.py,sha256=cns_L7QeKXwq22Jj09gOG5PPnX0PxB3dagcdiXZvBFI,1291
|
198
198
|
pygpt_net/core/locale/__init__.py,sha256=KcG4lwtiI7mqtS8ojX2A2IuO0kCYGQP0-bwuBqzx_mc,5484
|
199
199
|
pygpt_net/core/models/__init__.py,sha256=W4UaqC8KmlgesV151OGHOLbUDf2GPGNs7SWe7mCL2Fo,10043
|
200
|
-
pygpt_net/core/models/ollama.py,sha256=
|
200
|
+
pygpt_net/core/models/ollama.py,sha256=xkqw1ROy4mnc9bQg69kdbkKG3-j4YBoPb10cG_USN0k,2468
|
201
201
|
pygpt_net/core/modes/__init__.py,sha256=d3Wju5zo8DaUxPINPOAkOaKy0uuL9DryVubB4xiEqAU,3110
|
202
202
|
pygpt_net/core/notepad/__init__.py,sha256=lsgn4zXapg51227oTO3fr93FyltuEMEyJCNSAOki61o,4246
|
203
203
|
pygpt_net/core/platforms/__init__.py,sha256=QygvsQadTpWW1K4_GraO38r7u82sYpgz3FI4iv_Dodw,4563
|
@@ -250,9 +250,9 @@ pygpt_net/css_rc.py,sha256=i13kX7irhbYCWZ5yJbcMmnkFp_UfS4PYnvRFSPF7XXo,11349
|
|
250
250
|
pygpt_net/data/audio/click_off.mp3,sha256=aNiRDP1pt-Jy7ija4YKCNFBwvGWbzU460F4pZWZDS90,65201
|
251
251
|
pygpt_net/data/audio/click_on.mp3,sha256=qfdsSnthAEHVXzeyN4LlC0OvXuyW8p7stb7VXtlvZ1k,65201
|
252
252
|
pygpt_net/data/audio/ok.mp3,sha256=LTiV32pEBkpUGBkKkcOdOFB7Eyt_QoP2Nv6c5AaXftk,32256
|
253
|
-
pygpt_net/data/config/config.json,sha256=
|
254
|
-
pygpt_net/data/config/models.json,sha256=
|
255
|
-
pygpt_net/data/config/modes.json,sha256=
|
253
|
+
pygpt_net/data/config/config.json,sha256=JWVNVXkeXTDYu1B6S9OT5niByJI7vL8KQzH7-7q8s9k,19884
|
254
|
+
pygpt_net/data/config/models.json,sha256=wD1Ub9A7QjwkTIk9wlnqxP5QzU_OK5voT7HbKf_r378,88881
|
255
|
+
pygpt_net/data/config/modes.json,sha256=26SJaHFalVGqRxlclcA60NDwLTvj5op2l_Zk5hzZgKU,1921
|
256
256
|
pygpt_net/data/config/presets/agent_openai.json,sha256=vMTR-soRBiEZrpJJHuFLWyx8a3Ez_BqtqjyXgxCAM_Q,733
|
257
257
|
pygpt_net/data/config/presets/agent_openai_assistant.json,sha256=awJw9lNTGpKML6SJUShVn7lv8AXh0oic7wBeyoN7AYs,798
|
258
258
|
pygpt_net/data/config/presets/agent_planner.json,sha256=a6Rv58Bnm2STNWB0Rw_dGhnsz6Lb3J8_GwsUVZaTIXc,742
|
@@ -1488,14 +1488,14 @@ pygpt_net/data/js/katex/fonts/KaTeX_Typewriter-Regular.woff,sha256=4U_tArGrp86fW
|
|
1488
1488
|
pygpt_net/data/js/katex/fonts/KaTeX_Typewriter-Regular.woff2,sha256=cdUX1ngneHz6vfGGkUzDNY7aU543kxlB8rL9SiH2jAs,13568
|
1489
1489
|
pygpt_net/data/js/katex/katex.min.css,sha256=lVaKnUaQNG4pI71WHffQZVALLQF4LMZEk4nOia8U9ow,23532
|
1490
1490
|
pygpt_net/data/js/katex/katex.min.js,sha256=KLASOtKS2x8pUxWVzCDmlWJ4jhuLb0vtrgakbD6gDDo,276757
|
1491
|
-
pygpt_net/data/locale/locale.de.ini,sha256=
|
1492
|
-
pygpt_net/data/locale/locale.en.ini,sha256=
|
1493
|
-
pygpt_net/data/locale/locale.es.ini,sha256=
|
1494
|
-
pygpt_net/data/locale/locale.fr.ini,sha256=
|
1495
|
-
pygpt_net/data/locale/locale.it.ini,sha256=
|
1496
|
-
pygpt_net/data/locale/locale.pl.ini,sha256=
|
1497
|
-
pygpt_net/data/locale/locale.uk.ini,sha256=
|
1498
|
-
pygpt_net/data/locale/locale.zh.ini,sha256=
|
1491
|
+
pygpt_net/data/locale/locale.de.ini,sha256=j3Wfno6oS_1G_ZyCC8RaicXz6SREpilN8e034zEYPl0,64611
|
1492
|
+
pygpt_net/data/locale/locale.en.ini,sha256=oplJAGOC8JXUtv4o_eOim9CaIZVLm8HqwNE-t4Af5XY,77183
|
1493
|
+
pygpt_net/data/locale/locale.es.ini,sha256=BYaHtKQCIYgXH-dMait7dU5LL_n50uo1PNRhOF9Vayw,64794
|
1494
|
+
pygpt_net/data/locale/locale.fr.ini,sha256=lidia86KWGyWXiKz7pjZx9giTaELVndduS7ai91lAFc,66840
|
1495
|
+
pygpt_net/data/locale/locale.it.ini,sha256=jVsWf8fm3E5FDzVxxm5Y2YMfJsiqU1rAmGRVo0h1jeU,63544
|
1496
|
+
pygpt_net/data/locale/locale.pl.ini,sha256=nItsy01XhY7whQ_kmIloNXHb55AVOxqayfv41DQEbIo,63639
|
1497
|
+
pygpt_net/data/locale/locale.uk.ini,sha256=SnanhyKTGk9uex5OmRGoDW-ywt13e2LNoXkFyrtO34A,88641
|
1498
|
+
pygpt_net/data/locale/locale.zh.ini,sha256=Dp5l607JDnZfinhJn2yw73cbALjQ6VYNZPTPU_fcpBk,65214
|
1499
1499
|
pygpt_net/data/locale/plugin.agent.de.ini,sha256=BY28KpfFvgfVYJzcw2o5ScWnR4uuErIYGyc3NVHlmTw,1714
|
1500
1500
|
pygpt_net/data/locale/plugin.agent.en.ini,sha256=88LkZUpilbV9l4QDbMyIdq_K9sbWt-CQPpavEttPjJU,1489
|
1501
1501
|
pygpt_net/data/locale/plugin.agent.es.ini,sha256=bqaJQne8HPKFVtZ8Ukzo1TSqVW41yhYbGUqW3j2x1p8,1680
|
@@ -1676,7 +1676,7 @@ pygpt_net/item/calendar_note.py,sha256=ZXTIChVaH_E7ju_CJ2LI77C4ikvd2G-c3tRo7UG9u
|
|
1676
1676
|
pygpt_net/item/ctx.py,sha256=kfY_t8-SCKjeSm39xtG2C1sbCBxmXWc0yNr0yf85gtA,18904
|
1677
1677
|
pygpt_net/item/index.py,sha256=gDQYPlhwHF0QVGwX4TFGxHyO7pt5tqHcuyc3DPgPCA0,1681
|
1678
1678
|
pygpt_net/item/mode.py,sha256=bhX6ZOvTKsiLI6-N-7cuJ_9izlAqq6bsXF1FjufJvfw,600
|
1679
|
-
pygpt_net/item/model.py,sha256=
|
1679
|
+
pygpt_net/item/model.py,sha256=gP3WKq9XWwoI-aOnr62t6va-4IV13fjJP_6o0Javg2k,8166
|
1680
1680
|
pygpt_net/item/notepad.py,sha256=EuTgvDEpxQL-4QRfbkUfKtUG7nkTJaYe2K13ZeN173I,1508
|
1681
1681
|
pygpt_net/item/preset.py,sha256=413IdBxlY7zA895dEPNJMI6OJVRTQu0vlacEb0CY8EU,5430
|
1682
1682
|
pygpt_net/item/prompt.py,sha256=oX3BA9n2E6fco2dMZu7DiO3GQgqPj3isFjPcTcFXw9s,1558
|
@@ -1849,8 +1849,8 @@ pygpt_net/provider/core/mode/json_file.py,sha256=JFLwJ2DN-gyWliVDBHEY3W4tmok4u_r
|
|
1849
1849
|
pygpt_net/provider/core/mode/patch.py,sha256=VS2KCYW05jxLd-lcStNY1k4fHKUUrVVLTdRsu5zQwC8,837
|
1850
1850
|
pygpt_net/provider/core/model/__init__.py,sha256=jQQgG9u_ZLsZWXustoc1uvC-abUvj4RBKPAM30-f2Kc,488
|
1851
1851
|
pygpt_net/provider/core/model/base.py,sha256=L1x2rHha8a8hnCUYxZr88utay1EWEx5qBXW_2acpAN0,1319
|
1852
|
-
pygpt_net/provider/core/model/json_file.py,sha256=
|
1853
|
-
pygpt_net/provider/core/model/patch.py,sha256=
|
1852
|
+
pygpt_net/provider/core/model/json_file.py,sha256=k6M6KhiXJ0xsXdYXUFsHPcaJ-v_dMkzX8311Rk-d57s,6566
|
1853
|
+
pygpt_net/provider/core/model/patch.py,sha256=jzBXk1N83tqgIffSLHq165zkUVTIVy9KdSsNftR6kgQ,23816
|
1854
1854
|
pygpt_net/provider/core/notepad/__init__.py,sha256=jQQgG9u_ZLsZWXustoc1uvC-abUvj4RBKPAM30-f2Kc,488
|
1855
1855
|
pygpt_net/provider/core/notepad/base.py,sha256=7aPhild8cALTaN3JEbI0YrkIW1DRIycGQWTfsdH6WcQ,1323
|
1856
1856
|
pygpt_net/provider/core/notepad/db_sqlite/__init__.py,sha256=DQnVKJxvLq-6zlRlLk3MXSQZEObFtcQ5p5mEnuRzwYE,3104
|
@@ -1868,10 +1868,10 @@ pygpt_net/provider/core/preset/patch.py,sha256=uGeOqz-JnFVXHAjnlto5I79O-HNXMLRSJ
|
|
1868
1868
|
pygpt_net/provider/core/prompt/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1869
1869
|
pygpt_net/provider/core/prompt/base.py,sha256=EYUA30T1QwJ9RSD0uW5x6VEstgIXNwgutmaXI64BWhw,1304
|
1870
1870
|
pygpt_net/provider/core/prompt/json_file.py,sha256=5yfW1RgEa36tX4-ntze4PavWLry0YG43D2LO23_MrzE,4838
|
1871
|
-
pygpt_net/provider/gpt/__init__.py,sha256=
|
1871
|
+
pygpt_net/provider/gpt/__init__.py,sha256=QZgTYRhe9rV2m4e60VTtUxgkYZFEwTX0H4aILSGdV0A,9265
|
1872
1872
|
pygpt_net/provider/gpt/assistants.py,sha256=DSw1YB_J9n2rFD5CPDWZy59I38VSG6uLpYydGLTUPMQ,14083
|
1873
1873
|
pygpt_net/provider/gpt/audio.py,sha256=frHElxYVaHYkNDCMJ9tQMoGqxSaZ-s5oPlAEHUAckkc,2032
|
1874
|
-
pygpt_net/provider/gpt/chat.py,sha256=
|
1874
|
+
pygpt_net/provider/gpt/chat.py,sha256=omjGHONCkEpA_hXHmjsxJiKIHAEBjAd1JBuM9A9FY7s,10516
|
1875
1875
|
pygpt_net/provider/gpt/completion.py,sha256=OusKOb4G11aYRJUjRWcMsf80cRQQvee9DzRe99ubLmc,6164
|
1876
1876
|
pygpt_net/provider/gpt/image.py,sha256=ZqYrtVTcfPa8Kf08pWLKy1Zhvi6pu61GBlslRBauoK0,8967
|
1877
1877
|
pygpt_net/provider/gpt/store.py,sha256=FaVd7SBC_QQ0W26_odJwcrLH54CSq0UZXZnuwIhRm54,17315
|
@@ -2129,7 +2129,7 @@ pygpt_net/ui/widget/lists/attachment_ctx.py,sha256=yFqzJj8D6vdNLW8v-8yX5-08kYpAu
|
|
2129
2129
|
pygpt_net/ui/widget/lists/base.py,sha256=TRMhAHI14K3zTI-5JVROzO03QeVqLuFLmILLCOm7mUs,2435
|
2130
2130
|
pygpt_net/ui/widget/lists/base_combo.py,sha256=MP_CaMh3BrB0WOjE1k4axinzVP5YjU5OrZX2lkUIEu8,3871
|
2131
2131
|
pygpt_net/ui/widget/lists/base_list_combo.py,sha256=eCfAE8kYDjX2OtxhAuFpWVe7A0lcb0FGmd_T9Bi3Qzw,3411
|
2132
|
-
pygpt_net/ui/widget/lists/context.py,sha256=
|
2132
|
+
pygpt_net/ui/widget/lists/context.py,sha256=DYfTqaS5b_1fyGBVUlf9D76bzgN-Kn3I9QZaTsdSPlg,19959
|
2133
2133
|
pygpt_net/ui/widget/lists/db.py,sha256=f0EIzTSzjblJtCuGoWBq6PerFt8yqFZrP2hkIoHuzbI,5861
|
2134
2134
|
pygpt_net/ui/widget/lists/debug.py,sha256=bjzshfRXFwFQ4neCY8pFMHPm9b57i5x-pHdk-sY--VI,3658
|
2135
2135
|
pygpt_net/ui/widget/lists/experts.py,sha256=4ztuhpMjU36XWYYjm67wo-zSDfvViSJk2Z48lXdJT2s,5911
|
@@ -2180,8 +2180,8 @@ pygpt_net/ui/widget/textarea/web.py,sha256=2LebPHa_e5lvBqnIVzjwsLcFMoc11BonXgAUs
|
|
2180
2180
|
pygpt_net/ui/widget/vision/__init__.py,sha256=8HT4tQFqQogEEpGYTv2RplKBthlsFKcl5egnv4lzzEw,488
|
2181
2181
|
pygpt_net/ui/widget/vision/camera.py,sha256=T8b5cmK6uhf_WSSxzPt_Qod8JgMnst6q8sQqRvgQiSA,2584
|
2182
2182
|
pygpt_net/utils.py,sha256=WtrdagJ-BlCjxGEEVq2rhsyAZMcU6JqltCXzOs823po,6707
|
2183
|
-
pygpt_net-2.5.
|
2184
|
-
pygpt_net-2.5.
|
2185
|
-
pygpt_net-2.5.
|
2186
|
-
pygpt_net-2.5.
|
2187
|
-
pygpt_net-2.5.
|
2183
|
+
pygpt_net-2.5.4.dist-info/LICENSE,sha256=rbPqNB_xxANH8hKayJyIcTwD4bj4Y2G-Mcm85r1OImM,1126
|
2184
|
+
pygpt_net-2.5.4.dist-info/METADATA,sha256=T0z0gsoSU06Nbx9BcLAlT4_RJvJOFMOfJ1_0gXRlX7c,169374
|
2185
|
+
pygpt_net-2.5.4.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
|
2186
|
+
pygpt_net-2.5.4.dist-info/entry_points.txt,sha256=qvpII6UHIt8XfokmQWnCYQrTgty8FeJ9hJvOuUFCN-8,43
|
2187
|
+
pygpt_net-2.5.4.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|