pygpt-net 2.6.32__py3-none-any.whl → 2.6.34__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 +12 -0
- pygpt_net/__init__.py +3 -3
- pygpt_net/controller/assistant/batch.py +14 -4
- pygpt_net/controller/assistant/files.py +1 -0
- pygpt_net/controller/assistant/store.py +195 -1
- pygpt_net/controller/camera/camera.py +1 -1
- pygpt_net/controller/chat/attachment.py +2 -0
- pygpt_net/controller/chat/common.py +50 -46
- pygpt_net/controller/config/placeholder.py +95 -75
- pygpt_net/controller/dialogs/confirm.py +3 -1
- pygpt_net/controller/media/media.py +11 -3
- pygpt_net/controller/painter/common.py +227 -10
- pygpt_net/controller/painter/painter.py +4 -12
- pygpt_net/core/assistants/files.py +18 -0
- pygpt_net/core/camera/camera.py +38 -93
- pygpt_net/core/camera/worker.py +430 -0
- pygpt_net/core/filesystem/url.py +3 -0
- pygpt_net/core/render/web/body.py +65 -9
- pygpt_net/core/text/utils.py +3 -0
- pygpt_net/data/config/config.json +234 -221
- pygpt_net/data/config/models.json +179 -180
- pygpt_net/data/config/settings.json +10 -5
- pygpt_net/data/locale/locale.de.ini +8 -6
- pygpt_net/data/locale/locale.en.ini +9 -5
- pygpt_net/data/locale/locale.es.ini +8 -6
- pygpt_net/data/locale/locale.fr.ini +8 -6
- pygpt_net/data/locale/locale.it.ini +8 -6
- pygpt_net/data/locale/locale.pl.ini +8 -6
- pygpt_net/data/locale/locale.uk.ini +8 -6
- pygpt_net/data/locale/locale.zh.ini +8 -6
- pygpt_net/item/assistant.py +13 -1
- pygpt_net/provider/api/google/__init__.py +32 -23
- pygpt_net/provider/api/openai/store.py +45 -1
- pygpt_net/provider/llms/google.py +4 -0
- pygpt_net/ui/dialog/assistant_store.py +213 -203
- pygpt_net/ui/layout/chat/input.py +3 -3
- pygpt_net/ui/widget/draw/painter.py +458 -75
- pygpt_net/ui/widget/option/combo.py +5 -1
- pygpt_net/ui/widget/textarea/input.py +273 -3
- {pygpt_net-2.6.32.dist-info → pygpt_net-2.6.34.dist-info}/METADATA +14 -2
- {pygpt_net-2.6.32.dist-info → pygpt_net-2.6.34.dist-info}/RECORD +44 -43
- {pygpt_net-2.6.32.dist-info → pygpt_net-2.6.34.dist-info}/LICENSE +0 -0
- {pygpt_net-2.6.32.dist-info → pygpt_net-2.6.34.dist-info}/WHEEL +0 -0
- {pygpt_net-2.6.32.dist-info → pygpt_net-2.6.34.dist-info}/entry_points.txt +0 -0
|
@@ -1520,7 +1520,8 @@
|
|
|
1520
1520
|
},
|
|
1521
1521
|
"vision.capture.idx": {
|
|
1522
1522
|
"section": "vision",
|
|
1523
|
-
"type": "
|
|
1523
|
+
"type": "combo",
|
|
1524
|
+
"use": "camera_devices",
|
|
1524
1525
|
"slider": true,
|
|
1525
1526
|
"label": "settings.vision.capture.idx",
|
|
1526
1527
|
"description": "settings.vision.capture.idx.desc",
|
|
@@ -1529,7 +1530,8 @@
|
|
|
1529
1530
|
"max": 3,
|
|
1530
1531
|
"multiplier": 1,
|
|
1531
1532
|
"step": 1,
|
|
1532
|
-
"advanced": false
|
|
1533
|
+
"advanced": false,
|
|
1534
|
+
"tab": "camera"
|
|
1533
1535
|
},
|
|
1534
1536
|
"vision.capture.width": {
|
|
1535
1537
|
"section": "vision",
|
|
@@ -1541,7 +1543,8 @@
|
|
|
1541
1543
|
"max": 4096,
|
|
1542
1544
|
"multiplier": 1,
|
|
1543
1545
|
"step": 1,
|
|
1544
|
-
"advanced": false
|
|
1546
|
+
"advanced": false,
|
|
1547
|
+
"tab": "camera"
|
|
1545
1548
|
},
|
|
1546
1549
|
"vision.capture.height": {
|
|
1547
1550
|
"section": "vision",
|
|
@@ -1553,7 +1556,8 @@
|
|
|
1553
1556
|
"max": 4096,
|
|
1554
1557
|
"multiplier": 1,
|
|
1555
1558
|
"step": 1,
|
|
1556
|
-
"advanced": false
|
|
1559
|
+
"advanced": false,
|
|
1560
|
+
"tab": "camera"
|
|
1557
1561
|
},
|
|
1558
1562
|
"vision.capture.quality": {
|
|
1559
1563
|
"section": "vision",
|
|
@@ -1565,7 +1569,8 @@
|
|
|
1565
1569
|
"max": 100,
|
|
1566
1570
|
"multiplier": 1,
|
|
1567
1571
|
"step": 1,
|
|
1568
|
-
"advanced": false
|
|
1572
|
+
"advanced": false,
|
|
1573
|
+
"tab": "camera"
|
|
1569
1574
|
},
|
|
1570
1575
|
"audio.input.backend": {
|
|
1571
1576
|
"section": "audio",
|
|
@@ -960,6 +960,7 @@ output.tips.prefix = Tipp
|
|
|
960
960
|
painter.btn.camera.capture = Von der Kamera
|
|
961
961
|
painter.btn.capture = Bild erfassen
|
|
962
962
|
painter.btn.clear = Löschen
|
|
963
|
+
painter.btn.crop = Zuschneiden
|
|
963
964
|
painter.capture.manual.captured.success = Bild erfasst:
|
|
964
965
|
painter.capture.name.prefix = Zeichnung von
|
|
965
966
|
painter.mode.erase = Radieren
|
|
@@ -1363,7 +1364,8 @@ settings.section.remote_tools = Fernwerkzeuge
|
|
|
1363
1364
|
settings.section.remote_tools.openai = OpenAI
|
|
1364
1365
|
settings.section.tab.general = Allgemein
|
|
1365
1366
|
settings.section.updates = Aktualisierungen
|
|
1366
|
-
settings.section.vision = Vision
|
|
1367
|
+
settings.section.vision = Vision und Kamera
|
|
1368
|
+
settings.section.vision.camera = Kamera
|
|
1367
1369
|
settings.store_history = Verlauf speichern
|
|
1368
1370
|
settings.store_history_time = Uhrzeit im Verlauf speichern
|
|
1369
1371
|
settings.temperature = Temperatur
|
|
@@ -1393,11 +1395,11 @@ settings.video.seed = Startwert
|
|
|
1393
1395
|
settings.video.seed.desc = Optionaler Zufallsstartwert für reproduzierbare Ergebnisse; leer lassen für zufällig
|
|
1394
1396
|
settings.vision.capture.auto = Automatisches Erfassen
|
|
1395
1397
|
settings.vision.capture.enabled = Kamera
|
|
1396
|
-
settings.vision.capture.height =
|
|
1397
|
-
settings.vision.capture.idx =
|
|
1398
|
-
settings.vision.capture.idx.desc =
|
|
1399
|
-
settings.vision.capture.quality =
|
|
1400
|
-
settings.vision.capture.width =
|
|
1398
|
+
settings.vision.capture.height = Aufnahmehöhe (in Pixeln)
|
|
1399
|
+
settings.vision.capture.idx = Kameragerät
|
|
1400
|
+
settings.vision.capture.idx.desc = Wählen Sie ein Kameragerät für die Echtzeit-Videoaufnahme
|
|
1401
|
+
settings.vision.capture.quality = Aufnahmequalität (%)
|
|
1402
|
+
settings.vision.capture.width = Aufnahmewidth (in Pixeln)
|
|
1401
1403
|
settings.zoom = Zoomen des Chat-Ausgabefensters
|
|
1402
1404
|
speech.enable = Sprachausgabe aktivieren
|
|
1403
1405
|
speech.listening = Sprechen Sie jetzt...
|
|
@@ -253,6 +253,7 @@ confirm.assistant.store.clear = Clear vector stores (local only)?
|
|
|
253
253
|
confirm.assistant.store.import = Import all vector stores from API?
|
|
254
254
|
confirm.assistant.store.refresh = Refresh all stores?
|
|
255
255
|
confirm.assistant.store.truncate = Delete all vector stores in API?
|
|
256
|
+
confirm.assistant.store.file.delete = Delete selected file in API?
|
|
256
257
|
confirm.ctx.delete = Delete group?
|
|
257
258
|
confirm.ctx.delete.all = Delete group and all items?
|
|
258
259
|
confirm.img.delete = Delete file from disk?
|
|
@@ -961,6 +962,7 @@ output.tips.prefix = Tip
|
|
|
961
962
|
painter.btn.camera.capture = From camera
|
|
962
963
|
painter.btn.capture = Use image
|
|
963
964
|
painter.btn.clear = Clear
|
|
965
|
+
painter.btn.crop = Crop
|
|
964
966
|
painter.capture.manual.captured.success = Image captured:
|
|
965
967
|
painter.capture.name.prefix = Drawing from
|
|
966
968
|
painter.mode.erase = Erase
|
|
@@ -1405,7 +1407,8 @@ settings.section.remote_tools.google = Google
|
|
|
1405
1407
|
settings.section.remote_tools.openai = OpenAI
|
|
1406
1408
|
settings.section.tab.general = General
|
|
1407
1409
|
settings.section.updates = Updates
|
|
1408
|
-
settings.section.vision = Vision
|
|
1410
|
+
settings.section.vision = Vision and camera
|
|
1411
|
+
settings.section.vision.camera = Camera
|
|
1409
1412
|
settings.store_history = Store history
|
|
1410
1413
|
settings.store_history_time = Store time in history
|
|
1411
1414
|
settings.temperature = Temperature
|
|
@@ -1435,11 +1438,11 @@ settings.video.seed = Seed
|
|
|
1435
1438
|
settings.video.seed.desc = Optional random seed for reproducible results; leave empty for random
|
|
1436
1439
|
settings.vision.capture.auto = Auto capture
|
|
1437
1440
|
settings.vision.capture.enabled = Camera
|
|
1438
|
-
settings.vision.capture.height =
|
|
1439
|
-
settings.vision.capture.idx = Camera
|
|
1440
|
-
settings.vision.capture.idx.desc =
|
|
1441
|
+
settings.vision.capture.height = Capture height (in pixels)
|
|
1442
|
+
settings.vision.capture.idx = Camera Device
|
|
1443
|
+
settings.vision.capture.idx.desc = Select a camera device for real-time video capture
|
|
1441
1444
|
settings.vision.capture.quality = Capture quality (%)
|
|
1442
|
-
settings.vision.capture.width =
|
|
1445
|
+
settings.vision.capture.width = Capture width (in pixels)
|
|
1443
1446
|
settings.zoom = Chat output window zoom
|
|
1444
1447
|
speech.enable = Speak
|
|
1445
1448
|
speech.listening = Speak now...
|
|
@@ -1611,3 +1614,4 @@ vision.capture.manual.captured.success = Image captured from the camera:
|
|
|
1611
1614
|
vision.capture.name.prefix = Camera capture:
|
|
1612
1615
|
vision.capture.options.title = Video capture
|
|
1613
1616
|
vision.checkbox.tooltip = If checked, the vision model is active. It will be automatically activated upon image upload. You can deactivate it in real-time.
|
|
1617
|
+
assistant.store.menu.file.delete = Delete file
|
|
@@ -961,6 +961,7 @@ output.tips.prefix = Consejo
|
|
|
961
961
|
painter.btn.camera.capture = De la cámara
|
|
962
962
|
painter.btn.capture = Capturar imagen
|
|
963
963
|
painter.btn.clear = Limpiar
|
|
964
|
+
painter.btn.crop = Recortar
|
|
964
965
|
painter.capture.manual.captured.success = Imagen capturada:
|
|
965
966
|
painter.capture.name.prefix = Dibujo de
|
|
966
967
|
painter.mode.erase = Borrar
|
|
@@ -1364,7 +1365,8 @@ settings.section.remote_tools = Herramientas remotas
|
|
|
1364
1365
|
settings.section.remote_tools.openai = OpenAI
|
|
1365
1366
|
settings.section.tab.general = General
|
|
1366
1367
|
settings.section.updates = Actualizaciones
|
|
1367
|
-
settings.section.vision = Visión
|
|
1368
|
+
settings.section.vision = Visión y cámara
|
|
1369
|
+
settings.section.vision.camera = Cámara
|
|
1368
1370
|
settings.store_history = Almacenar historial
|
|
1369
1371
|
settings.store_history_time = Almacenar hora en el historial
|
|
1370
1372
|
settings.temperature = Temperatura
|
|
@@ -1394,11 +1396,11 @@ settings.video.seed = Semilla
|
|
|
1394
1396
|
settings.video.seed.desc = Semilla aleatoria opcional para resultados reproducibles; déjelo vacío para aleatorio
|
|
1395
1397
|
settings.vision.capture.auto = Captura automática
|
|
1396
1398
|
settings.vision.capture.enabled = Cámara
|
|
1397
|
-
settings.vision.capture.height = Altura de captura
|
|
1398
|
-
settings.vision.capture.idx =
|
|
1399
|
-
settings.vision.capture.idx.desc =
|
|
1400
|
-
settings.vision.capture.quality = Calidad de captura
|
|
1401
|
-
settings.vision.capture.width = Ancho de captura
|
|
1399
|
+
settings.vision.capture.height = Altura de captura (en píxeles)
|
|
1400
|
+
settings.vision.capture.idx = Dispositivo de Cámara
|
|
1401
|
+
settings.vision.capture.idx.desc = Seleccione un dispositivo de cámara para la captura de video en tiempo real
|
|
1402
|
+
settings.vision.capture.quality = Calidad de captura (%)
|
|
1403
|
+
settings.vision.capture.width = Ancho de captura (en píxeles)
|
|
1402
1404
|
settings.zoom = Zoom de ventana de salida del chat
|
|
1403
1405
|
speech.enable = Hablar
|
|
1404
1406
|
speech.listening = Hable ahora...
|
|
@@ -960,6 +960,7 @@ output.tips.prefix = Astuce
|
|
|
960
960
|
painter.btn.camera.capture = De la caméra
|
|
961
961
|
painter.btn.capture = Capturer l'image
|
|
962
962
|
painter.btn.clear = Effacer
|
|
963
|
+
painter.btn.crop = Rogner
|
|
963
964
|
painter.capture.manual.captured.success = Image capturée:
|
|
964
965
|
painter.capture.name.prefix = Dessin de
|
|
965
966
|
painter.mode.erase = Effacer
|
|
@@ -1363,7 +1364,8 @@ settings.section.remote_tools = Outils distants
|
|
|
1363
1364
|
settings.section.remote_tools.openai = OpenAI
|
|
1364
1365
|
settings.section.tab.general = Général
|
|
1365
1366
|
settings.section.updates = Mises à jour
|
|
1366
|
-
settings.section.vision = Vision
|
|
1367
|
+
settings.section.vision = Vision et caméra
|
|
1368
|
+
settings.section.vision.camera = Caméra
|
|
1367
1369
|
settings.store_history = Stocker l'historique
|
|
1368
1370
|
settings.store_history_time = Stocker l'heure dans l'historique
|
|
1369
1371
|
settings.temperature = Température
|
|
@@ -1393,11 +1395,11 @@ settings.video.seed = Graine
|
|
|
1393
1395
|
settings.video.seed.desc = Graine aléatoire facultative pour des résultats reproductibles; laisser vide pour aléatoire
|
|
1394
1396
|
settings.vision.capture.auto = Capture automatique
|
|
1395
1397
|
settings.vision.capture.enabled = Caméra
|
|
1396
|
-
settings.vision.capture.height = Hauteur de capture
|
|
1397
|
-
settings.vision.capture.idx =
|
|
1398
|
-
settings.vision.capture.idx.desc =
|
|
1399
|
-
settings.vision.capture.quality = Qualité de capture
|
|
1400
|
-
settings.vision.capture.width = Largeur de capture
|
|
1398
|
+
settings.vision.capture.height = Hauteur de capture (en pixels)
|
|
1399
|
+
settings.vision.capture.idx = Appareil Photo
|
|
1400
|
+
settings.vision.capture.idx.desc = Sélectionnez un appareil photo pour la capture vidéo en temps réel
|
|
1401
|
+
settings.vision.capture.quality = Qualité de capture (%)
|
|
1402
|
+
settings.vision.capture.width = Largeur de capture (en pixels)
|
|
1401
1403
|
settings.zoom = Zoom de la fenêtre de sortie du chat
|
|
1402
1404
|
speech.enable = Parler
|
|
1403
1405
|
speech.listening = Parler maintenant...
|
|
@@ -960,6 +960,7 @@ output.tips.prefix = Suggerimento
|
|
|
960
960
|
painter.btn.camera.capture = Dalla fotocamera
|
|
961
961
|
painter.btn.capture = Cattura immagine
|
|
962
962
|
painter.btn.clear = Pulire
|
|
963
|
+
painter.btn.crop = Ritaglia
|
|
963
964
|
painter.capture.manual.captured.success = Immagine catturata:
|
|
964
965
|
painter.capture.name.prefix = Disegno da
|
|
965
966
|
painter.mode.erase = Cancellare
|
|
@@ -1363,7 +1364,8 @@ settings.section.remote_tools = Strumenti remoti
|
|
|
1363
1364
|
settings.section.remote_tools.openai = OpenAI
|
|
1364
1365
|
settings.section.tab.general = Generale
|
|
1365
1366
|
settings.section.updates = Aggiornamenti
|
|
1366
|
-
settings.section.vision = Visione
|
|
1367
|
+
settings.section.vision = Visione e fotocamera
|
|
1368
|
+
settings.section.vision.camera = Fotocamera
|
|
1367
1369
|
settings.store_history = Conserva la cronologia
|
|
1368
1370
|
settings.store_history_time = Conserva l'orario nella cronologia
|
|
1369
1371
|
settings.temperature = Temperatura
|
|
@@ -1393,11 +1395,11 @@ settings.video.seed = Seme
|
|
|
1393
1395
|
settings.video.seed.desc = Seme casuale opzionale per risultati riproducibili; lascia vuoto per casuale
|
|
1394
1396
|
settings.vision.capture.auto = Cattura automatica
|
|
1395
1397
|
settings.vision.capture.enabled = Fotocamera
|
|
1396
|
-
settings.vision.capture.height = Altezza cattura
|
|
1397
|
-
settings.vision.capture.idx =
|
|
1398
|
-
settings.vision.capture.idx.desc =
|
|
1399
|
-
settings.vision.capture.quality = Qualità cattura
|
|
1400
|
-
settings.vision.capture.width = Larghezza cattura
|
|
1398
|
+
settings.vision.capture.height = Altezza della cattura (in pixel)
|
|
1399
|
+
settings.vision.capture.idx = Dispositivo Fotocamera
|
|
1400
|
+
settings.vision.capture.idx.desc = Seleziona un dispositivo fotocamera per la cattura video in tempo reale
|
|
1401
|
+
settings.vision.capture.quality = Qualità della cattura (%)
|
|
1402
|
+
settings.vision.capture.width = Larghezza della cattura (in pixel)
|
|
1401
1403
|
settings.zoom = Zoom finestra output chat
|
|
1402
1404
|
speech.enable = Parla
|
|
1403
1405
|
speech.listening = Parla ora...
|
|
@@ -964,6 +964,7 @@ output.tips.prefix = Tip
|
|
|
964
964
|
painter.btn.camera.capture = Z kamery
|
|
965
965
|
painter.btn.capture = Użyj obrazu
|
|
966
966
|
painter.btn.clear = Wyczyść
|
|
967
|
+
painter.btn.crop = Przytnij
|
|
967
968
|
painter.capture.manual.captured.success = Image captured:
|
|
968
969
|
painter.capture.name.prefix = Drawing from
|
|
969
970
|
painter.mode.erase = Gumka
|
|
@@ -1367,7 +1368,8 @@ settings.section.remote_tools = Zdalne narzędzia
|
|
|
1367
1368
|
settings.section.remote_tools.openai = OpenAI
|
|
1368
1369
|
settings.section.tab.general = Ogólne
|
|
1369
1370
|
settings.section.updates = Aktualizacje
|
|
1370
|
-
settings.section.vision = Wizja
|
|
1371
|
+
settings.section.vision = Wizja i kamera
|
|
1372
|
+
settings.section.vision.camera = Kamera
|
|
1371
1373
|
settings.store_history = Zapisuj historię
|
|
1372
1374
|
settings.store_history_time = Zapisuj czas w historii
|
|
1373
1375
|
settings.temperature = Temperatura
|
|
@@ -1397,11 +1399,11 @@ settings.video.seed = Seed
|
|
|
1397
1399
|
settings.video.seed.desc = Optional random seed for reproducible results; leave empty for random
|
|
1398
1400
|
settings.vision.capture.auto = Auto przechwyt.
|
|
1399
1401
|
settings.vision.capture.enabled = Kamera
|
|
1400
|
-
settings.vision.capture.height =
|
|
1401
|
-
settings.vision.capture.idx =
|
|
1402
|
-
settings.vision.capture.idx.desc =
|
|
1403
|
-
settings.vision.capture.quality = Jakość
|
|
1404
|
-
settings.vision.capture.width =
|
|
1402
|
+
settings.vision.capture.height = Wysokość przechwytywania (w pikselach)
|
|
1403
|
+
settings.vision.capture.idx = Urządzenie Kamery
|
|
1404
|
+
settings.vision.capture.idx.desc = Wybierz urządzenie kamery do przechwytywania wideo w czasie rzeczywistym
|
|
1405
|
+
settings.vision.capture.quality = Jakość przechwytywania (%)
|
|
1406
|
+
settings.vision.capture.width = Szerokość przechwytywania (w pikselach)
|
|
1405
1407
|
settings.zoom = Powiększenie okna outputu czatu
|
|
1406
1408
|
speech.enable = Mowa
|
|
1407
1409
|
speech.listening = Mów teraz...
|
|
@@ -960,6 +960,7 @@ output.tips.prefix = Порада
|
|
|
960
960
|
painter.btn.camera.capture = З камери
|
|
961
961
|
painter.btn.capture = Захопити зображення
|
|
962
962
|
painter.btn.clear = Очистити
|
|
963
|
+
painter.btn.crop = Обрізати
|
|
963
964
|
painter.capture.manual.captured.success = Зображення захоплено:
|
|
964
965
|
painter.capture.name.prefix = Малюнок з
|
|
965
966
|
painter.mode.erase = Стерти
|
|
@@ -1363,7 +1364,8 @@ settings.section.remote_tools = Віддалені інструменти
|
|
|
1363
1364
|
settings.section.remote_tools.openai = OpenAI
|
|
1364
1365
|
settings.section.tab.general = Загальні
|
|
1365
1366
|
settings.section.updates = Оновлення
|
|
1366
|
-
settings.section.vision =
|
|
1367
|
+
settings.section.vision = Зір і камера
|
|
1368
|
+
settings.section.vision.camera = Камера
|
|
1367
1369
|
settings.store_history = Зберігати історію
|
|
1368
1370
|
settings.store_history_time = Зберігати час в історії
|
|
1369
1371
|
settings.temperature = Температура
|
|
@@ -1393,11 +1395,11 @@ settings.video.seed = Seed
|
|
|
1393
1395
|
settings.video.seed.desc = Опціональний випадковий seed для відтворюваних результатів; залиште порожнім для випадкового
|
|
1394
1396
|
settings.vision.capture.auto = Автоматичне захоплення
|
|
1395
1397
|
settings.vision.capture.enabled = Камера
|
|
1396
|
-
settings.vision.capture.height = Висота
|
|
1397
|
-
settings.vision.capture.idx =
|
|
1398
|
-
settings.vision.capture.idx.desc =
|
|
1399
|
-
settings.vision.capture.quality = Якість
|
|
1400
|
-
settings.vision.capture.width = Ширина
|
|
1398
|
+
settings.vision.capture.height = Висота зйомки (у пікселях)
|
|
1399
|
+
settings.vision.capture.idx = Пристрій Камери
|
|
1400
|
+
settings.vision.capture.idx.desc = Виберіть пристрій камери для відеозйомки в реальному часі
|
|
1401
|
+
settings.vision.capture.quality = Якість зйомки (%)
|
|
1402
|
+
settings.vision.capture.width = Ширина зйомки (у пікселях)
|
|
1401
1403
|
settings.zoom = Збільшення вікна виводу чату
|
|
1402
1404
|
speech.enable = Говоріть
|
|
1403
1405
|
speech.listening = Говоріть зараз...
|
|
@@ -960,6 +960,7 @@ output.tips.prefix = 提示
|
|
|
960
960
|
painter.btn.camera.capture = 从相机
|
|
961
961
|
painter.btn.capture = 使用图像
|
|
962
962
|
painter.btn.clear = 清除
|
|
963
|
+
painter.btn.crop = 裁剪
|
|
963
964
|
painter.capture.manual.captured.success = 图像已捕获:
|
|
964
965
|
painter.capture.name.prefix = 绘制自
|
|
965
966
|
painter.mode.erase = 擦除
|
|
@@ -1363,7 +1364,8 @@ settings.section.remote_tools = 远程工具
|
|
|
1363
1364
|
settings.section.remote_tools.openai = OpenAI
|
|
1364
1365
|
settings.section.tab.general = 一般設置
|
|
1365
1366
|
settings.section.updates = 更新
|
|
1366
|
-
settings.section.vision =
|
|
1367
|
+
settings.section.vision = 视觉和摄像头
|
|
1368
|
+
settings.section.vision.camera = 摄像头
|
|
1367
1369
|
settings.store_history = 存儲歷史記錄
|
|
1368
1370
|
settings.store_history_time = 在歷史記錄中存儲時間
|
|
1369
1371
|
settings.temperature = 溫度
|
|
@@ -1393,11 +1395,11 @@ settings.video.seed = 随机种子
|
|
|
1393
1395
|
settings.video.seed.desc = 可选的随机种子以获得可重复的结果;留空为随机
|
|
1394
1396
|
settings.vision.capture.auto = 自动捕获
|
|
1395
1397
|
settings.vision.capture.enabled = 相机
|
|
1396
|
-
settings.vision.capture.height =
|
|
1397
|
-
settings.vision.capture.idx =
|
|
1398
|
-
settings.vision.capture.idx.desc =
|
|
1399
|
-
settings.vision.capture.quality =
|
|
1400
|
-
settings.vision.capture.width =
|
|
1398
|
+
settings.vision.capture.height = 拍摄高度(像素)
|
|
1399
|
+
settings.vision.capture.idx = 摄像设备
|
|
1400
|
+
settings.vision.capture.idx.desc = 选择实时视频捕捉的摄像设备
|
|
1401
|
+
settings.vision.capture.quality = 拍摄质量(%)
|
|
1402
|
+
settings.vision.capture.width = 拍摄宽度(像素)
|
|
1401
1403
|
settings.zoom = 聊天输出窗口缩放
|
|
1402
1404
|
speech.enable = 启用语音
|
|
1403
1405
|
speech.listening = 现在说话...
|
pygpt_net/item/assistant.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.09.02 22:00:00 #
|
|
10
10
|
# ================================================== #
|
|
11
11
|
|
|
12
12
|
import json
|
|
@@ -271,6 +271,18 @@ class AssistantStoreItem:
|
|
|
271
271
|
self.expire_days = data.get('expire_days', 0)
|
|
272
272
|
self.status = data.get('status', {})
|
|
273
273
|
|
|
274
|
+
def get_file_count(self):
|
|
275
|
+
"""
|
|
276
|
+
Return number of files in store
|
|
277
|
+
|
|
278
|
+
:return: number of files
|
|
279
|
+
"""
|
|
280
|
+
num = self.num_files
|
|
281
|
+
if self.status and isinstance(self.status, dict) and 'file_counts' in self.status:
|
|
282
|
+
if 'completed' in self.status['file_counts']:
|
|
283
|
+
num = int(self.status['file_counts']['completed'] or 0)
|
|
284
|
+
return num
|
|
285
|
+
|
|
274
286
|
def dump(self) -> str:
|
|
275
287
|
"""
|
|
276
288
|
Dump item to string
|
|
@@ -69,32 +69,12 @@ class ApiGoogle:
|
|
|
69
69
|
model = ModelItem()
|
|
70
70
|
model.provider = "google"
|
|
71
71
|
args = self.window.core.models.prepare_client_args(mode, model)
|
|
72
|
-
config = self.window.core.config
|
|
73
|
-
|
|
74
72
|
filtered = {}
|
|
75
73
|
if args.get("api_key"):
|
|
76
74
|
filtered["api_key"] = args["api_key"]
|
|
77
75
|
|
|
78
|
-
# setup VertexAI
|
|
79
|
-
use_vertex =
|
|
80
|
-
if config.get("api_native_google.use_vertex", False):
|
|
81
|
-
use_vertex = True
|
|
82
|
-
os.environ["GOOGLE_GENAI_USE_VERTEXAI"] = "1"
|
|
83
|
-
os.environ["GOOGLE_CLOUD_PROJECT"] = config.get("api_native_google.cloud_project", "")
|
|
84
|
-
os.environ["GOOGLE_CLOUD_LOCATION"] = config.get("api_native_google.cloud_location", "us-central1")
|
|
85
|
-
if config.get("api_native_google.app_credentials", ""):
|
|
86
|
-
os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = config.get("api_native_google.app_credentials", "")
|
|
87
|
-
else:
|
|
88
|
-
if os.environ.get("GOOGLE_GENAI_USE_VERTEXAI"):
|
|
89
|
-
del os.environ["GOOGLE_GENAI_USE_VERTEXAI"]
|
|
90
|
-
if os.environ.get("GOOGLE_CLOUD_PROJECT"):
|
|
91
|
-
del os.environ["GOOGLE_CLOUD_PROJECT"]
|
|
92
|
-
if os.environ.get("GOOGLE_CLOUD_LOCATION"):
|
|
93
|
-
del os.environ["GOOGLE_CLOUD_LOCATION"]
|
|
94
|
-
if os.environ.get("GOOGLE_APPLICATION_CREDENTIALS"):
|
|
95
|
-
del os.environ["GOOGLE_APPLICATION_CREDENTIALS"]
|
|
96
|
-
|
|
97
|
-
# append VertexAI params to client args
|
|
76
|
+
# setup VertexAI if enabled
|
|
77
|
+
use_vertex = self.setup_env()
|
|
98
78
|
if use_vertex:
|
|
99
79
|
filtered["vertexai"] = True
|
|
100
80
|
filtered["project"] = os.environ.get("GOOGLE_CLOUD_PROJECT")
|
|
@@ -104,7 +84,6 @@ class ApiGoogle:
|
|
|
104
84
|
if self.client is None or self.last_client_args != filtered:
|
|
105
85
|
self.client = genai.Client(**filtered)
|
|
106
86
|
self.last_client_args = filtered
|
|
107
|
-
|
|
108
87
|
return self.client
|
|
109
88
|
|
|
110
89
|
def call(
|
|
@@ -313,6 +292,36 @@ class ApiGoogle:
|
|
|
313
292
|
|
|
314
293
|
return tools
|
|
315
294
|
|
|
295
|
+
def setup_env(self) -> bool:
|
|
296
|
+
"""
|
|
297
|
+
Setup environment variables for VertexAI via Google GenAI API
|
|
298
|
+
|
|
299
|
+
- GOOGLE_GENAI_USE_VERTEXAI
|
|
300
|
+
- GOOGLE_CLOUD_PROJECT
|
|
301
|
+
- GOOGLE_CLOUD_LOCATION
|
|
302
|
+
- GOOGLE_APPLICATION_CREDENTIALS
|
|
303
|
+
|
|
304
|
+
:return: bool: True if VertexAI is used, False otherwise
|
|
305
|
+
"""
|
|
306
|
+
config = self.window.core.config
|
|
307
|
+
use_vertex = False
|
|
308
|
+
if config.get("api_native_google.use_vertex", False):
|
|
309
|
+
use_vertex = True
|
|
310
|
+
os.environ["GOOGLE_GENAI_USE_VERTEXAI"] = "1"
|
|
311
|
+
os.environ["GOOGLE_CLOUD_PROJECT"] = config.get("api_native_google.cloud_project", "")
|
|
312
|
+
os.environ["GOOGLE_CLOUD_LOCATION"] = config.get("api_native_google.cloud_location", "us-central1")
|
|
313
|
+
if config.get("api_native_google.app_credentials", ""):
|
|
314
|
+
os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = config.get("api_native_google.app_credentials", "")
|
|
315
|
+
else:
|
|
316
|
+
if os.environ.get("GOOGLE_GENAI_USE_VERTEXAI"):
|
|
317
|
+
del os.environ["GOOGLE_GENAI_USE_VERTEXAI"]
|
|
318
|
+
if os.environ.get("GOOGLE_CLOUD_PROJECT"):
|
|
319
|
+
del os.environ["GOOGLE_CLOUD_PROJECT"]
|
|
320
|
+
if os.environ.get("GOOGLE_CLOUD_LOCATION"):
|
|
321
|
+
del os.environ["GOOGLE_CLOUD_LOCATION"]
|
|
322
|
+
if os.environ.get("GOOGLE_APPLICATION_CREDENTIALS"):
|
|
323
|
+
del os.environ["GOOGLE_APPLICATION_CREDENTIALS"]
|
|
324
|
+
return use_vertex
|
|
316
325
|
|
|
317
326
|
def stop(self):
|
|
318
327
|
"""On global event stop"""
|
|
@@ -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.09.02 22:00:00 #
|
|
10
10
|
# ================================================== #
|
|
11
11
|
|
|
12
12
|
import os
|
|
@@ -175,6 +175,50 @@ class Store:
|
|
|
175
175
|
self.log(msg, callback)
|
|
176
176
|
return num
|
|
177
177
|
|
|
178
|
+
def remove_file(
|
|
179
|
+
self,
|
|
180
|
+
file_id: str,
|
|
181
|
+
callback: Optional[callable] = None
|
|
182
|
+
) -> bool:
|
|
183
|
+
"""
|
|
184
|
+
Remove a single file using the Files API.
|
|
185
|
+
|
|
186
|
+
:param file_id: file ID
|
|
187
|
+
:param callback: callback function for logging
|
|
188
|
+
:return: True if removed
|
|
189
|
+
"""
|
|
190
|
+
self.log("Removing file: " + file_id, callback)
|
|
191
|
+
try:
|
|
192
|
+
res = self.delete_file(file_id)
|
|
193
|
+
return res is not None
|
|
194
|
+
except Exception as e:
|
|
195
|
+
msg = "Error removing file {}: {}".format(file_id, str(e))
|
|
196
|
+
self.log(msg, callback)
|
|
197
|
+
raise
|
|
198
|
+
|
|
199
|
+
def remove_store_file(
|
|
200
|
+
self,
|
|
201
|
+
store_id: str,
|
|
202
|
+
file_id: str,
|
|
203
|
+
callback: Optional[callable] = None
|
|
204
|
+
) -> bool:
|
|
205
|
+
"""
|
|
206
|
+
Remove a single file from a specific vector store.
|
|
207
|
+
|
|
208
|
+
:param store_id: store ID
|
|
209
|
+
:param file_id: file ID
|
|
210
|
+
:param callback: callback function for logging
|
|
211
|
+
:return: True if removed
|
|
212
|
+
"""
|
|
213
|
+
self.log("Removing file from vector store [{}]: {}".format(store_id, file_id), callback)
|
|
214
|
+
try:
|
|
215
|
+
res = self.delete_store_file(store_id, file_id)
|
|
216
|
+
return res is not None
|
|
217
|
+
except Exception as e:
|
|
218
|
+
msg = "Error removing file {} from store {}: {}".format(file_id, store_id, str(e))
|
|
219
|
+
self.log(msg, callback)
|
|
220
|
+
raise
|
|
221
|
+
|
|
178
222
|
def remove_store_files(
|
|
179
223
|
self,
|
|
180
224
|
store_id: str,
|
|
@@ -55,6 +55,8 @@ class GoogleLLM(BaseLLM):
|
|
|
55
55
|
args["model"] = model.id
|
|
56
56
|
if "api_key" not in args or args["api_key"] == "":
|
|
57
57
|
args["api_key"] = window.core.config.get("api_key_google", "")
|
|
58
|
+
|
|
59
|
+
window.core.api.google.setup_env() # setup VertexAI if configured
|
|
58
60
|
return GoogleGenAI(**args)
|
|
59
61
|
|
|
60
62
|
def get_embeddings_model(
|
|
@@ -79,6 +81,8 @@ class GoogleLLM(BaseLLM):
|
|
|
79
81
|
args["api_key"] = window.core.config.get("api_key_google", "")
|
|
80
82
|
if "model" in args and "model_name" not in args:
|
|
81
83
|
args["model_name"] = args.pop("model")
|
|
84
|
+
|
|
85
|
+
window.core.api.google.setup_env() # setup VertexAI if configured
|
|
82
86
|
return GoogleGenAIEmbedding(**args)
|
|
83
87
|
|
|
84
88
|
def get_models(
|