pygpt-net 2.6.33__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.
Files changed (42) hide show
  1. pygpt_net/CHANGELOG.txt +7 -0
  2. pygpt_net/__init__.py +3 -3
  3. pygpt_net/controller/assistant/batch.py +14 -4
  4. pygpt_net/controller/assistant/files.py +1 -0
  5. pygpt_net/controller/assistant/store.py +195 -1
  6. pygpt_net/controller/camera/camera.py +1 -1
  7. pygpt_net/controller/chat/common.py +50 -46
  8. pygpt_net/controller/config/placeholder.py +95 -75
  9. pygpt_net/controller/dialogs/confirm.py +3 -1
  10. pygpt_net/controller/media/media.py +11 -3
  11. pygpt_net/controller/painter/common.py +231 -13
  12. pygpt_net/core/assistants/files.py +18 -0
  13. pygpt_net/core/camera/camera.py +31 -402
  14. pygpt_net/core/camera/worker.py +430 -0
  15. pygpt_net/core/filesystem/url.py +3 -0
  16. pygpt_net/core/render/web/body.py +65 -9
  17. pygpt_net/core/text/utils.py +3 -0
  18. pygpt_net/data/config/config.json +3 -3
  19. pygpt_net/data/config/models.json +3 -3
  20. pygpt_net/data/config/settings.json +10 -5
  21. pygpt_net/data/locale/locale.de.ini +8 -7
  22. pygpt_net/data/locale/locale.en.ini +9 -6
  23. pygpt_net/data/locale/locale.es.ini +8 -7
  24. pygpt_net/data/locale/locale.fr.ini +8 -7
  25. pygpt_net/data/locale/locale.it.ini +8 -7
  26. pygpt_net/data/locale/locale.pl.ini +8 -7
  27. pygpt_net/data/locale/locale.uk.ini +8 -7
  28. pygpt_net/data/locale/locale.zh.ini +8 -7
  29. pygpt_net/item/assistant.py +13 -1
  30. pygpt_net/provider/api/google/__init__.py +32 -23
  31. pygpt_net/provider/api/openai/store.py +45 -1
  32. pygpt_net/provider/llms/google.py +4 -0
  33. pygpt_net/ui/dialog/assistant_store.py +213 -203
  34. pygpt_net/ui/layout/chat/input.py +3 -3
  35. pygpt_net/ui/widget/draw/painter.py +16 -1
  36. pygpt_net/ui/widget/option/combo.py +5 -1
  37. pygpt_net/ui/widget/textarea/input.py +273 -3
  38. {pygpt_net-2.6.33.dist-info → pygpt_net-2.6.34.dist-info}/METADATA +9 -2
  39. {pygpt_net-2.6.33.dist-info → pygpt_net-2.6.34.dist-info}/RECORD +42 -41
  40. {pygpt_net-2.6.33.dist-info → pygpt_net-2.6.34.dist-info}/LICENSE +0 -0
  41. {pygpt_net-2.6.33.dist-info → pygpt_net-2.6.34.dist-info}/WHEEL +0 -0
  42. {pygpt_net-2.6.33.dist-info → pygpt_net-2.6.34.dist-info}/entry_points.txt +0 -0
@@ -957,10 +957,10 @@ output.tips.7 = Für eine bessere Leistung deaktivieren Sie die Werkzeuge, wenn
957
957
  output.tips.8 = Wenn Sie lokale Modelle verwenden, denken Sie daran, das lokale Modell auch für die Kontextzusammenfassung und Einbettungen einzustellen.
958
958
  output.tips.9 = Um Audio-Ein- und Ausgangsanbieter zu konfigurieren, gehen Sie zu Plugins -> Einstellungen. Um Audiogeräte zu konfigurieren, gehen Sie zu Konfiguration -> Einstellungen -> Audio.
959
959
  output.tips.prefix = Tipp
960
- painter.btn.crop = Zuschneiden
961
960
  painter.btn.camera.capture = Von der Kamera
962
961
  painter.btn.capture = Bild erfassen
963
962
  painter.btn.clear = Löschen
963
+ painter.btn.crop = Zuschneiden
964
964
  painter.capture.manual.captured.success = Bild erfasst:
965
965
  painter.capture.name.prefix = Zeichnung von
966
966
  painter.mode.erase = Radieren
@@ -1364,7 +1364,8 @@ settings.section.remote_tools = Fernwerkzeuge
1364
1364
  settings.section.remote_tools.openai = OpenAI
1365
1365
  settings.section.tab.general = Allgemein
1366
1366
  settings.section.updates = Aktualisierungen
1367
- settings.section.vision = Vision
1367
+ settings.section.vision = Vision und Kamera
1368
+ settings.section.vision.camera = Kamera
1368
1369
  settings.store_history = Verlauf speichern
1369
1370
  settings.store_history_time = Uhrzeit im Verlauf speichern
1370
1371
  settings.temperature = Temperatur
@@ -1394,11 +1395,11 @@ settings.video.seed = Startwert
1394
1395
  settings.video.seed.desc = Optionaler Zufallsstartwert für reproduzierbare Ergebnisse; leer lassen für zufällig
1395
1396
  settings.vision.capture.auto = Automatisches Erfassen
1396
1397
  settings.vision.capture.enabled = Kamera
1397
- settings.vision.capture.height = Kamerabildhöhe (px)
1398
- settings.vision.capture.idx = Kameraindex (Nummer)
1399
- settings.vision.capture.idx.desc = Kamera-Index zur Videoaufzeichnung (Index der Kamera, Standard: 0)
1400
- settings.vision.capture.quality = Bildqualität beim Erfassen (%)
1401
- settings.vision.capture.width = Kamerabildbreite (px)
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)
1402
1403
  settings.zoom = Zoomen des Chat-Ausgabefensters
1403
1404
  speech.enable = Sprachausgabe aktivieren
1404
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?
@@ -958,10 +959,10 @@ output.tips.7 = For better performance, disable tools when using local models if
958
959
  output.tips.8 = When using local models, remember to set the local model for context summary and embeddings as well.
959
960
  output.tips.9 = To configure audio input and output providers, go to Plugins -> Settings. To configure audio devices, go to Config -> Settings -> Audio.
960
961
  output.tips.prefix = Tip
961
- painter.btn.crop = Crop
962
962
  painter.btn.camera.capture = From camera
963
963
  painter.btn.capture = Use image
964
964
  painter.btn.clear = Clear
965
+ painter.btn.crop = Crop
965
966
  painter.capture.manual.captured.success = Image captured:
966
967
  painter.capture.name.prefix = Drawing from
967
968
  painter.mode.erase = Erase
@@ -1406,7 +1407,8 @@ settings.section.remote_tools.google = Google
1406
1407
  settings.section.remote_tools.openai = OpenAI
1407
1408
  settings.section.tab.general = General
1408
1409
  settings.section.updates = Updates
1409
- settings.section.vision = Vision
1410
+ settings.section.vision = Vision and camera
1411
+ settings.section.vision.camera = Camera
1410
1412
  settings.store_history = Store history
1411
1413
  settings.store_history_time = Store time in history
1412
1414
  settings.temperature = Temperature
@@ -1436,11 +1438,11 @@ settings.video.seed = Seed
1436
1438
  settings.video.seed.desc = Optional random seed for reproducible results; leave empty for random
1437
1439
  settings.vision.capture.auto = Auto capture
1438
1440
  settings.vision.capture.enabled = Camera
1439
- settings.vision.capture.height = Camera height (px)
1440
- settings.vision.capture.idx = Camera Input Device
1441
- settings.vision.capture.idx.desc = Video capture camera index (index of the camera, default: 0)
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
1442
1444
  settings.vision.capture.quality = Capture quality (%)
1443
- settings.vision.capture.width = Camera width (px)
1445
+ settings.vision.capture.width = Capture width (in pixels)
1444
1446
  settings.zoom = Chat output window zoom
1445
1447
  speech.enable = Speak
1446
1448
  speech.listening = Speak now...
@@ -1612,3 +1614,4 @@ vision.capture.manual.captured.success = Image captured from the camera:
1612
1614
  vision.capture.name.prefix = Camera capture:
1613
1615
  vision.capture.options.title = Video capture
1614
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
@@ -958,10 +958,10 @@ output.tips.7 = Para un mejor rendimiento, desactiva las herramientas cuando uti
958
958
  output.tips.8 = Al utilizar modelos locales, recuerda establecer el modelo local también para el resumen de contexto y las incrustaciones.
959
959
  output.tips.9 = Para configurar los proveedores de entrada y salida de audio, ve a Plugins -> Configuración. Para configurar los dispositivos de audio, ve a Configuración -> Configuración -> Audio.
960
960
  output.tips.prefix = Consejo
961
- painter.btn.crop = Recortar
962
961
  painter.btn.camera.capture = De la cámara
963
962
  painter.btn.capture = Capturar imagen
964
963
  painter.btn.clear = Limpiar
964
+ painter.btn.crop = Recortar
965
965
  painter.capture.manual.captured.success = Imagen capturada:
966
966
  painter.capture.name.prefix = Dibujo de
967
967
  painter.mode.erase = Borrar
@@ -1365,7 +1365,8 @@ settings.section.remote_tools = Herramientas remotas
1365
1365
  settings.section.remote_tools.openai = OpenAI
1366
1366
  settings.section.tab.general = General
1367
1367
  settings.section.updates = Actualizaciones
1368
- settings.section.vision = Visión
1368
+ settings.section.vision = Visión y cámara
1369
+ settings.section.vision.camera = Cámara
1369
1370
  settings.store_history = Almacenar historial
1370
1371
  settings.store_history_time = Almacenar hora en el historial
1371
1372
  settings.temperature = Temperatura
@@ -1395,11 +1396,11 @@ settings.video.seed = Semilla
1395
1396
  settings.video.seed.desc = Semilla aleatoria opcional para resultados reproducibles; déjelo vacío para aleatorio
1396
1397
  settings.vision.capture.auto = Captura automática
1397
1398
  settings.vision.capture.enabled = Cámara
1398
- settings.vision.capture.height = Altura de captura de cámara (px)
1399
- settings.vision.capture.idx = IDX de cámara (número)
1400
- settings.vision.capture.idx.desc = Índice de cámara para captura de video (índice de la cámara, predeterminado: 0)
1401
- settings.vision.capture.quality = Calidad de captura de imagen (%)
1402
- settings.vision.capture.width = Ancho de captura de cámara (px)
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)
1403
1404
  settings.zoom = Zoom de ventana de salida del chat
1404
1405
  speech.enable = Hablar
1405
1406
  speech.listening = Hable ahora...
@@ -957,10 +957,10 @@ output.tips.7 = Pour de meilleures performances, désactivez les outils lorsque
957
957
  output.tips.8 = Lorsque vous utilisez des modèles locaux, n’oubliez pas de définir également le modèle local pour le résumé de contexte et les embeddings.
958
958
  output.tips.9 = Pour configurer les fournisseurs d'entrée et de sortie audio, allez dans Plugins -> Paramètres. Pour configurer les appareils audio, allez dans Configuration -> Paramètres -> Audio.
959
959
  output.tips.prefix = Astuce
960
- painter.btn.crop = Rogner
961
960
  painter.btn.camera.capture = De la caméra
962
961
  painter.btn.capture = Capturer l'image
963
962
  painter.btn.clear = Effacer
963
+ painter.btn.crop = Rogner
964
964
  painter.capture.manual.captured.success = Image capturée:
965
965
  painter.capture.name.prefix = Dessin de
966
966
  painter.mode.erase = Effacer
@@ -1364,7 +1364,8 @@ settings.section.remote_tools = Outils distants
1364
1364
  settings.section.remote_tools.openai = OpenAI
1365
1365
  settings.section.tab.general = Général
1366
1366
  settings.section.updates = Mises à jour
1367
- settings.section.vision = Vision
1367
+ settings.section.vision = Vision et caméra
1368
+ settings.section.vision.camera = Caméra
1368
1369
  settings.store_history = Stocker l'historique
1369
1370
  settings.store_history_time = Stocker l'heure dans l'historique
1370
1371
  settings.temperature = Température
@@ -1394,11 +1395,11 @@ settings.video.seed = Graine
1394
1395
  settings.video.seed.desc = Graine aléatoire facultative pour des résultats reproductibles; laisser vide pour aléatoire
1395
1396
  settings.vision.capture.auto = Capture automatique
1396
1397
  settings.vision.capture.enabled = Caméra
1397
- settings.vision.capture.height = Hauteur de capture par caméra (px)
1398
- settings.vision.capture.idx = IDX de la caméra (numéro)
1399
- settings.vision.capture.idx.desc = Indice de la caméra de capture vidéo (indice de la caméra, par défaut : 0)
1400
- settings.vision.capture.quality = Qualité de capture d'image (%)
1401
- settings.vision.capture.width = Largeur de capture par caméra (px)
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)
1402
1403
  settings.zoom = Zoom de la fenêtre de sortie du chat
1403
1404
  speech.enable = Parler
1404
1405
  speech.listening = Parler maintenant...
@@ -957,10 +957,10 @@ output.tips.7 = Per prestazioni migliori, disattiva gli strumenti quando usi mod
957
957
  output.tips.8 = Quando usi modelli locali, ricorda di impostare anche il modello locale per il riassunto del contesto e gli embeddings.
958
958
  output.tips.9 = Per configurare i fornitori di input e output audio, vai su Plugin -> Impostazioni. Per configurare i dispositivi audio, vai su Configurazione -> Impostazioni -> Audio.
959
959
  output.tips.prefix = Suggerimento
960
- painter.btn.crop = Ritaglia
961
960
  painter.btn.camera.capture = Dalla fotocamera
962
961
  painter.btn.capture = Cattura immagine
963
962
  painter.btn.clear = Pulire
963
+ painter.btn.crop = Ritaglia
964
964
  painter.capture.manual.captured.success = Immagine catturata:
965
965
  painter.capture.name.prefix = Disegno da
966
966
  painter.mode.erase = Cancellare
@@ -1364,7 +1364,8 @@ settings.section.remote_tools = Strumenti remoti
1364
1364
  settings.section.remote_tools.openai = OpenAI
1365
1365
  settings.section.tab.general = Generale
1366
1366
  settings.section.updates = Aggiornamenti
1367
- settings.section.vision = Visione
1367
+ settings.section.vision = Visione e fotocamera
1368
+ settings.section.vision.camera = Fotocamera
1368
1369
  settings.store_history = Conserva la cronologia
1369
1370
  settings.store_history_time = Conserva l'orario nella cronologia
1370
1371
  settings.temperature = Temperatura
@@ -1394,11 +1395,11 @@ settings.video.seed = Seme
1394
1395
  settings.video.seed.desc = Seme casuale opzionale per risultati riproducibili; lascia vuoto per casuale
1395
1396
  settings.vision.capture.auto = Cattura automatica
1396
1397
  settings.vision.capture.enabled = Fotocamera
1397
- settings.vision.capture.height = Altezza cattura fotocamera (px)
1398
- settings.vision.capture.idx = IDX fotocamera (numero)
1399
- settings.vision.capture.idx.desc = Indice videocamera per la cattura video (indice della videocamera, predefinito: 0)
1400
- settings.vision.capture.quality = Qualità cattura immagine (%)
1401
- settings.vision.capture.width = Larghezza cattura fotocamera (px)
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)
1402
1403
  settings.zoom = Zoom finestra output chat
1403
1404
  speech.enable = Parla
1404
1405
  speech.listening = Parla ora...
@@ -961,10 +961,10 @@ output.tips.7 = Dla lepszej wydajności wyłącz narzędzia podczas korzystania
961
961
  output.tips.8 = Kiedy korzystasz z lokalnych modeli, pamiętaj o ustawieniu lokalnego modelu dla podsumowania kontekstu i osadzeń.
962
962
  output.tips.9 = Aby skonfigurować dostawców wejścia i wyjścia audio, przejdź do Pluginy -> Ustawienia. Aby skonfigurować urządzenia audio, przejdź do Opcje -> Ustawienia -> Audio.
963
963
  output.tips.prefix = Tip
964
- painter.btn.crop = Przytnij
965
964
  painter.btn.camera.capture = Z kamery
966
965
  painter.btn.capture = Użyj obrazu
967
966
  painter.btn.clear = Wyczyść
967
+ painter.btn.crop = Przytnij
968
968
  painter.capture.manual.captured.success = Image captured:
969
969
  painter.capture.name.prefix = Drawing from
970
970
  painter.mode.erase = Gumka
@@ -1368,7 +1368,8 @@ settings.section.remote_tools = Zdalne narzędzia
1368
1368
  settings.section.remote_tools.openai = OpenAI
1369
1369
  settings.section.tab.general = Ogólne
1370
1370
  settings.section.updates = Aktualizacje
1371
- settings.section.vision = Wizja
1371
+ settings.section.vision = Wizja i kamera
1372
+ settings.section.vision.camera = Kamera
1372
1373
  settings.store_history = Zapisuj historię
1373
1374
  settings.store_history_time = Zapisuj czas w historii
1374
1375
  settings.temperature = Temperatura
@@ -1398,11 +1399,11 @@ settings.video.seed = Seed
1398
1399
  settings.video.seed.desc = Optional random seed for reproducible results; leave empty for random
1399
1400
  settings.vision.capture.auto = Auto przechwyt.
1400
1401
  settings.vision.capture.enabled = Kamera
1401
- settings.vision.capture.height = Kamera - obraz szerokość (px)
1402
- settings.vision.capture.idx = Nr. kamery (index)
1403
- settings.vision.capture.idx.desc = Indeks kamery do przechwytywania wideo (indeks kamery, domyślnie: 0)
1404
- settings.vision.capture.quality = Jakość przechwyt. obrazu (%)
1405
- settings.vision.capture.width = Kamera - obraz wysokość (px)
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)
1406
1407
  settings.zoom = Powiększenie okna outputu czatu
1407
1408
  speech.enable = Mowa
1408
1409
  speech.listening = Mów teraz...
@@ -957,10 +957,10 @@ output.tips.7 = Для кращої продуктивності відключ
957
957
  output.tips.8 = При використанні локальних моделей пам’ятайте встановлювати локальну модель також для зведення контексту та вбудовувань.
958
958
  output.tips.9 = Щоб налаштувати постачальників вхідних та вихідних аудіосигналів, перейдіть до Плагіни -> Налаштування. Щоб налаштувати аудіопристрої, перейдіть до Конфігурація -> Налаштування -> Аудіо.
959
959
  output.tips.prefix = Порада
960
- painter.btn.crop = Обрізати
961
960
  painter.btn.camera.capture = З камери
962
961
  painter.btn.capture = Захопити зображення
963
962
  painter.btn.clear = Очистити
963
+ painter.btn.crop = Обрізати
964
964
  painter.capture.manual.captured.success = Зображення захоплено:
965
965
  painter.capture.name.prefix = Малюнок з
966
966
  painter.mode.erase = Стерти
@@ -1364,7 +1364,8 @@ settings.section.remote_tools = Віддалені інструменти
1364
1364
  settings.section.remote_tools.openai = OpenAI
1365
1365
  settings.section.tab.general = Загальні
1366
1366
  settings.section.updates = Оновлення
1367
- settings.section.vision = Візія
1367
+ settings.section.vision = Зір і камера
1368
+ settings.section.vision.camera = Камера
1368
1369
  settings.store_history = Зберігати історію
1369
1370
  settings.store_history_time = Зберігати час в історії
1370
1371
  settings.temperature = Температура
@@ -1394,11 +1395,11 @@ settings.video.seed = Seed
1394
1395
  settings.video.seed.desc = Опціональний випадковий seed для відтворюваних результатів; залиште порожнім для випадкового
1395
1396
  settings.vision.capture.auto = Автоматичне захоплення
1396
1397
  settings.vision.capture.enabled = Камера
1397
- settings.vision.capture.height = Висота захоплення з камери (пікселі)
1398
- settings.vision.capture.idx = IDX камери (число)
1399
- settings.vision.capture.idx.desc = Індекс камери для захоплення відео (індекс камери, за замовчуванням: 0)
1400
- settings.vision.capture.quality = Якість захоплення зображення (%)
1401
- 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 = Ширина зйомки пікселях)
1402
1403
  settings.zoom = Збільшення вікна виводу чату
1403
1404
  speech.enable = Говоріть
1404
1405
  speech.listening = Говоріть зараз...
@@ -957,10 +957,10 @@ output.tips.7 = 为更好的性能,当不需要工具时,请在使用本地
957
957
  output.tips.8 = 在使用本地模型时,记得也为上下文摘要和嵌入设置本地模型。
958
958
  output.tips.9 = 要配置音频输入和输出提供商,请转到插件 -> 设置。要配置音频设备,请转到配置 -> 设置 -> 音频。
959
959
  output.tips.prefix = 提示
960
- painter.btn.crop = 裁剪
961
960
  painter.btn.camera.capture = 从相机
962
961
  painter.btn.capture = 使用图像
963
962
  painter.btn.clear = 清除
963
+ painter.btn.crop = 裁剪
964
964
  painter.capture.manual.captured.success = 图像已捕获:
965
965
  painter.capture.name.prefix = 绘制自
966
966
  painter.mode.erase = 擦除
@@ -1364,7 +1364,8 @@ settings.section.remote_tools = 远程工具
1364
1364
  settings.section.remote_tools.openai = OpenAI
1365
1365
  settings.section.tab.general = 一般設置
1366
1366
  settings.section.updates = 更新
1367
- settings.section.vision = 視覺
1367
+ settings.section.vision = 视觉和摄像头
1368
+ settings.section.vision.camera = 摄像头
1368
1369
  settings.store_history = 存儲歷史記錄
1369
1370
  settings.store_history_time = 在歷史記錄中存儲時間
1370
1371
  settings.temperature = 溫度
@@ -1394,11 +1395,11 @@ settings.video.seed = 随机种子
1394
1395
  settings.video.seed.desc = 可选的随机种子以获得可重复的结果;留空为随机
1395
1396
  settings.vision.capture.auto = 自动捕获
1396
1397
  settings.vision.capture.enabled = 相机
1397
- settings.vision.capture.height = 相机高度(px)
1398
- settings.vision.capture.idx = 相机输入设备
1399
- settings.vision.capture.idx.desc = 视频捕获相机索引(相机索引,默认值:0)
1400
- settings.vision.capture.quality = 捕获质量(%)
1401
- settings.vision.capture.width = 相机宽度(px)
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 = 拍摄宽度(像素)
1402
1403
  settings.zoom = 聊天输出窗口缩放
1403
1404
  speech.enable = 启用语音
1404
1405
  speech.listening = 现在说话...
@@ -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.08.06 19:00:00 #
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 = False
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.07.14 18:00:00 #
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(