pygpt-net 2.6.28__py3-none-any.whl → 2.6.30__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 (115) hide show
  1. pygpt_net/CHANGELOG.txt +13 -0
  2. pygpt_net/__init__.py +3 -3
  3. pygpt_net/{container.py → app_core.py} +5 -6
  4. pygpt_net/controller/access/control.py +1 -9
  5. pygpt_net/controller/assistant/assistant.py +4 -4
  6. pygpt_net/controller/assistant/batch.py +7 -7
  7. pygpt_net/controller/assistant/files.py +4 -4
  8. pygpt_net/controller/assistant/threads.py +3 -3
  9. pygpt_net/controller/attachment/attachment.py +4 -7
  10. pygpt_net/controller/chat/common.py +1 -1
  11. pygpt_net/controller/chat/stream.py +961 -294
  12. pygpt_net/controller/chat/vision.py +11 -19
  13. pygpt_net/controller/config/placeholder.py +1 -1
  14. pygpt_net/controller/ctx/ctx.py +1 -1
  15. pygpt_net/controller/ctx/summarizer.py +1 -1
  16. pygpt_net/controller/mode/mode.py +21 -12
  17. pygpt_net/controller/plugins/settings.py +3 -2
  18. pygpt_net/controller/presets/editor.py +112 -99
  19. pygpt_net/controller/theme/common.py +2 -0
  20. pygpt_net/controller/theme/theme.py +6 -2
  21. pygpt_net/controller/ui/vision.py +4 -4
  22. pygpt_net/core/agents/legacy.py +2 -2
  23. pygpt_net/core/agents/runners/openai_workflow.py +2 -2
  24. pygpt_net/core/assistants/files.py +5 -5
  25. pygpt_net/core/assistants/store.py +4 -4
  26. pygpt_net/core/bridge/bridge.py +3 -3
  27. pygpt_net/core/bridge/worker.py +28 -9
  28. pygpt_net/core/debug/console/console.py +2 -2
  29. pygpt_net/core/debug/presets.py +2 -2
  30. pygpt_net/core/experts/experts.py +2 -2
  31. pygpt_net/core/idx/llm.py +21 -3
  32. pygpt_net/core/modes/modes.py +2 -2
  33. pygpt_net/core/presets/presets.py +3 -3
  34. pygpt_net/core/tokens/tokens.py +4 -4
  35. pygpt_net/core/types/mode.py +5 -2
  36. pygpt_net/core/vision/analyzer.py +1 -1
  37. pygpt_net/data/config/config.json +6 -3
  38. pygpt_net/data/config/models.json +75 -3
  39. pygpt_net/data/config/modes.json +3 -9
  40. pygpt_net/data/config/settings.json +112 -55
  41. pygpt_net/data/config/settings_section.json +2 -2
  42. pygpt_net/data/locale/locale.de.ini +2 -2
  43. pygpt_net/data/locale/locale.en.ini +9 -2
  44. pygpt_net/data/locale/locale.es.ini +2 -2
  45. pygpt_net/data/locale/locale.fr.ini +2 -2
  46. pygpt_net/data/locale/locale.it.ini +2 -2
  47. pygpt_net/data/locale/locale.pl.ini +3 -3
  48. pygpt_net/data/locale/locale.uk.ini +2 -2
  49. pygpt_net/data/locale/locale.zh.ini +2 -2
  50. pygpt_net/item/model.py +23 -3
  51. pygpt_net/plugin/openai_dalle/plugin.py +4 -4
  52. pygpt_net/plugin/openai_vision/plugin.py +12 -13
  53. pygpt_net/provider/agents/openai/agent.py +5 -5
  54. pygpt_net/provider/agents/openai/agent_b2b.py +5 -5
  55. pygpt_net/provider/agents/openai/agent_planner.py +5 -6
  56. pygpt_net/provider/agents/openai/agent_with_experts.py +5 -5
  57. pygpt_net/provider/agents/openai/agent_with_experts_feedback.py +4 -4
  58. pygpt_net/provider/agents/openai/agent_with_feedback.py +4 -4
  59. pygpt_net/provider/agents/openai/bot_researcher.py +2 -2
  60. pygpt_net/provider/agents/openai/bots/research_bot/agents/planner_agent.py +1 -1
  61. pygpt_net/provider/agents/openai/bots/research_bot/agents/search_agent.py +1 -1
  62. pygpt_net/provider/agents/openai/bots/research_bot/agents/writer_agent.py +1 -1
  63. pygpt_net/provider/agents/openai/evolve.py +5 -5
  64. pygpt_net/provider/agents/openai/supervisor.py +4 -4
  65. pygpt_net/provider/api/__init__.py +27 -0
  66. pygpt_net/provider/api/anthropic/__init__.py +68 -0
  67. pygpt_net/provider/api/google/__init__.py +262 -0
  68. pygpt_net/provider/api/google/audio.py +114 -0
  69. pygpt_net/provider/api/google/chat.py +552 -0
  70. pygpt_net/provider/api/google/image.py +287 -0
  71. pygpt_net/provider/api/google/tools.py +222 -0
  72. pygpt_net/provider/api/google/vision.py +129 -0
  73. pygpt_net/provider/{gpt → api/openai}/__init__.py +2 -2
  74. pygpt_net/provider/{gpt → api/openai}/agents/computer.py +1 -1
  75. pygpt_net/provider/{gpt → api/openai}/agents/experts.py +1 -1
  76. pygpt_net/provider/{gpt → api/openai}/agents/response.py +1 -1
  77. pygpt_net/provider/{gpt → api/openai}/assistants.py +1 -1
  78. pygpt_net/provider/{gpt → api/openai}/chat.py +15 -8
  79. pygpt_net/provider/{gpt → api/openai}/completion.py +1 -1
  80. pygpt_net/provider/{gpt → api/openai}/image.py +1 -1
  81. pygpt_net/provider/{gpt → api/openai}/remote_tools.py +1 -1
  82. pygpt_net/provider/{gpt → api/openai}/responses.py +34 -20
  83. pygpt_net/provider/{gpt → api/openai}/store.py +2 -2
  84. pygpt_net/provider/{gpt → api/openai}/vision.py +1 -1
  85. pygpt_net/provider/{gpt → api/openai}/worker/assistants.py +4 -4
  86. pygpt_net/provider/{gpt → api/openai}/worker/importer.py +10 -10
  87. pygpt_net/provider/audio_input/openai_whisper.py +1 -1
  88. pygpt_net/provider/audio_output/google_tts.py +12 -0
  89. pygpt_net/provider/audio_output/openai_tts.py +1 -1
  90. pygpt_net/provider/core/config/patch.py +11 -0
  91. pygpt_net/provider/core/model/patch.py +9 -0
  92. pygpt_net/provider/core/preset/json_file.py +2 -4
  93. pygpt_net/provider/llms/anthropic.py +2 -5
  94. pygpt_net/provider/llms/base.py +4 -3
  95. pygpt_net/provider/llms/openai.py +1 -1
  96. pygpt_net/provider/loaders/hub/image_vision/base.py +1 -1
  97. pygpt_net/ui/dialog/preset.py +71 -55
  98. pygpt_net/ui/main.py +6 -4
  99. pygpt_net/utils.py +9 -0
  100. {pygpt_net-2.6.28.dist-info → pygpt_net-2.6.30.dist-info}/METADATA +42 -48
  101. {pygpt_net-2.6.28.dist-info → pygpt_net-2.6.30.dist-info}/RECORD +115 -107
  102. /pygpt_net/provider/{gpt → api/openai}/agents/__init__.py +0 -0
  103. /pygpt_net/provider/{gpt → api/openai}/agents/client.py +0 -0
  104. /pygpt_net/provider/{gpt → api/openai}/agents/remote_tools.py +0 -0
  105. /pygpt_net/provider/{gpt → api/openai}/agents/utils.py +0 -0
  106. /pygpt_net/provider/{gpt → api/openai}/audio.py +0 -0
  107. /pygpt_net/provider/{gpt → api/openai}/computer.py +0 -0
  108. /pygpt_net/provider/{gpt → api/openai}/container.py +0 -0
  109. /pygpt_net/provider/{gpt → api/openai}/summarizer.py +0 -0
  110. /pygpt_net/provider/{gpt → api/openai}/tools.py +0 -0
  111. /pygpt_net/provider/{gpt → api/openai}/utils.py +0 -0
  112. /pygpt_net/provider/{gpt → api/openai}/worker/__init__.py +0 -0
  113. {pygpt_net-2.6.28.dist-info → pygpt_net-2.6.30.dist-info}/LICENSE +0 -0
  114. {pygpt_net-2.6.28.dist-info → pygpt_net-2.6.30.dist-info}/WHEEL +0 -0
  115. {pygpt_net-2.6.28.dist-info → pygpt_net-2.6.30.dist-info}/entry_points.txt +0 -0
@@ -133,6 +133,21 @@
133
133
  "advanced": false,
134
134
  "tab": "Google"
135
135
  },
136
+ "api_native_google": {
137
+ "section": "api_keys",
138
+ "type": "bool",
139
+ "slider": false,
140
+ "label": "settings.api_native_google",
141
+ "description": "settings.api_native_google.desc",
142
+ "value": true,
143
+ "min": null,
144
+ "max": null,
145
+ "multiplier": null,
146
+ "step": null,
147
+ "secret": false,
148
+ "advanced": false,
149
+ "tab": "Google"
150
+ },
136
151
  "api_key_anthropic": {
137
152
  "section": "api_keys",
138
153
  "type": "text",
@@ -683,20 +698,7 @@
683
698
  "multiplier": null,
684
699
  "step": null,
685
700
  "advanced": false
686
- },
687
- "ctx.attachment.verbose": {
688
- "section": "files",
689
- "type": "bool",
690
- "slider": false,
691
- "label": "settings.ctx.attachment.verbose",
692
- "description": "settings.ctx.attachment.verbose.desc",
693
- "value": false,
694
- "min": null,
695
- "max": null,
696
- "multiplier": null,
697
- "step": null,
698
- "advanced": false
699
- },
701
+ },
700
702
  "ctx.attachment.img": {
701
703
  "section": "files",
702
704
  "type": "bool",
@@ -1276,7 +1278,22 @@
1276
1278
  {"1024x1024": "[DALL-E 3] 1024x1024"},
1277
1279
  {"1024x1024": "[DALL-E 2] 1024x1024"},
1278
1280
  {"512x512": "[DALL-E 2] 512x512"},
1279
- {"256x256": "[DALL-E 2] 256x256"}
1281
+ {"256x256": "[DALL-E 2] 256x256"},
1282
+ {"1024x1024": "[Imagen 3.0] 1024x1024"},
1283
+ {"896x1280": "[Imagen 3.0] 896x1280"},
1284
+ {"1280x896": "[Imagen 3.0] 1280x896"},
1285
+ {"768x1408": "[Imagen 3.0] 768x1408"},
1286
+ {"1408x768": "[Imagen 3.0] 1408x768"},
1287
+ {"1024x1024": "[Imagen 4.0] 1024x1024"},
1288
+ {"896x1280": "[Imagen 4.0] 896x1280"},
1289
+ {"1280x896": "[Imagen 4.0] 1280x896"},
1290
+ {"768x1408": "[Imagen 4.0] 768x1408"},
1291
+ {"1408x768": "[Imagen 4.0] 1408x768"},
1292
+ {"2048x2048": "[Imagen 4.0] 2048x2048"},
1293
+ {"1792x2560": "[Imagen 4.0] 1792x2560"},
1294
+ {"2560x1792": "[Imagen 4.0] 2560x1792"},
1295
+ {"1536x2816": "[Imagen 4.0] 1536x2816"},
1296
+ {"2816x1536": "[Imagen 4.0] 2816x1536"}
1280
1297
  ]
1281
1298
  },
1282
1299
  "img_quality": {
@@ -1610,6 +1627,34 @@
1610
1627
  "OpenAI Docs": "https://platform.openai.com/docs/guides/tools-file-search"
1611
1628
  }
1612
1629
  },
1630
+ "remote_tools.google.web_search": {
1631
+ "section": "remote_tools",
1632
+ "type": "bool",
1633
+ "slider": false,
1634
+ "label": "settings.remote_tools.google.web_search",
1635
+ "description": "settings.remote_tools.google.web_search.desc",
1636
+ "value": true,
1637
+ "min": null,
1638
+ "max": null,
1639
+ "multiplier": null,
1640
+ "step": null,
1641
+ "advanced": false,
1642
+ "tab": "Google"
1643
+ },
1644
+ "remote_tools.google.code_interpreter": {
1645
+ "section": "remote_tools",
1646
+ "type": "bool",
1647
+ "slider": false,
1648
+ "label": "settings.remote_tools.google.code_interpreter",
1649
+ "description": "settings.remote_tools.google.code_interpreter.desc",
1650
+ "value": true,
1651
+ "min": null,
1652
+ "max": null,
1653
+ "multiplier": null,
1654
+ "step": null,
1655
+ "advanced": false,
1656
+ "tab": "Google"
1657
+ },
1613
1658
  "llama.idx.list": {
1614
1659
  "section": "llama-index",
1615
1660
  "type": "dict",
@@ -2047,20 +2092,7 @@
2047
2092
  "step": 1,
2048
2093
  "advanced": false,
2049
2094
  "tab": "llama"
2050
- },
2051
- "agent.llama.verbose": {
2052
- "section": "agent",
2053
- "type": "bool",
2054
- "slider": false,
2055
- "label": "settings.agent.llama.verbose",
2056
- "value": false,
2057
- "min": 0,
2058
- "max": 0,
2059
- "multiplier": 1,
2060
- "step": 1,
2061
- "advanced": false,
2062
- "tab": "general"
2063
- },
2095
+ },
2064
2096
  "agent.idx.auto_retrieve": {
2065
2097
  "section": "agent",
2066
2098
  "type": "bool",
@@ -2259,10 +2291,10 @@
2259
2291
  "advanced": false
2260
2292
  },
2261
2293
  "debug": {
2262
- "section": "developer",
2294
+ "section": "debug",
2263
2295
  "type": "bool",
2264
2296
  "slider": false,
2265
- "label": "settings.developer.debug",
2297
+ "label": "settings.debug.show_menu",
2266
2298
  "value": false,
2267
2299
  "min": 0,
2268
2300
  "max": 0,
@@ -2270,8 +2302,27 @@
2270
2302
  "step": 1,
2271
2303
  "advanced": false
2272
2304
  },
2305
+ "log.level": {
2306
+ "section": "debug",
2307
+ "description": "Tip: Running application with --debug=1 or --debug=2 command line arguments overwrites this settings and force enables logging to %workdir%/app.log file. Log levels: 1 = INFO, 2 = DEBUG",
2308
+ "type": "combo",
2309
+ "slider": false,
2310
+ "label": "Log Level",
2311
+ "value": "",
2312
+ "min": null,
2313
+ "max": null,
2314
+ "multiplier": null,
2315
+ "step": null,
2316
+ "advanced": false,
2317
+ "keys": [
2318
+ {"error": "ERROR (default)"},
2319
+ {"warning": "WARNING"},
2320
+ {"info": "INFO"},
2321
+ {"debug": "DEBUG"}
2322
+ ]
2323
+ },
2273
2324
  "log.ctx": {
2274
- "section": "developer",
2325
+ "section": "debug",
2275
2326
  "type": "bool",
2276
2327
  "slider": false,
2277
2328
  "label": "Log and debug context",
@@ -2283,7 +2334,7 @@
2283
2334
  "advanced": false
2284
2335
  },
2285
2336
  "log.events": {
2286
- "section": "developer",
2337
+ "section": "debug",
2287
2338
  "type": "bool",
2288
2339
  "slider": false,
2289
2340
  "label": "Log and debug events",
@@ -2295,7 +2346,7 @@
2295
2346
  "advanced": false
2296
2347
  },
2297
2348
  "log.plugins": {
2298
- "section": "developer",
2349
+ "section": "debug",
2299
2350
  "type": "bool",
2300
2351
  "slider": false,
2301
2352
  "label": "Log plugin usage to console",
@@ -2307,7 +2358,7 @@
2307
2358
  "advanced": false
2308
2359
  },
2309
2360
  "log.dalle": {
2310
- "section": "developer",
2361
+ "section": "debug",
2311
2362
  "type": "bool",
2312
2363
  "slider": false,
2313
2364
  "label": "Log DALL-E usage to console",
@@ -2318,11 +2369,11 @@
2318
2369
  "step": null,
2319
2370
  "advanced": false
2320
2371
  },
2321
- "log.llama": {
2322
- "section": "developer",
2372
+ "ctx.attachment.verbose": {
2373
+ "section": "debug",
2323
2374
  "type": "bool",
2324
2375
  "slider": false,
2325
- "label": "Log LlamaIndex usage to console",
2376
+ "label": "Log attachments usage to console",
2326
2377
  "value": false,
2327
2378
  "min": null,
2328
2379
  "max": null,
@@ -2330,11 +2381,24 @@
2330
2381
  "step": null,
2331
2382
  "advanced": false
2332
2383
  },
2333
- "log.assistants": {
2334
- "section": "developer",
2384
+ "agent.llama.verbose": {
2385
+ "section": "debug",
2335
2386
  "type": "bool",
2336
2387
  "slider": false,
2337
- "label": "Log Assistants usage to console",
2388
+ "label": "Log Agents usage to console",
2389
+ "value": false,
2390
+ "min": 0,
2391
+ "max": 0,
2392
+ "multiplier": 1,
2393
+ "step": 1,
2394
+ "advanced": false,
2395
+ "tab": "general"
2396
+ },
2397
+ "log.llama": {
2398
+ "section": "debug",
2399
+ "type": "bool",
2400
+ "slider": false,
2401
+ "label": "Log LlamaIndex usage to console",
2338
2402
  "value": false,
2339
2403
  "min": null,
2340
2404
  "max": null,
@@ -2342,25 +2406,18 @@
2342
2406
  "step": null,
2343
2407
  "advanced": false
2344
2408
  },
2345
- "log.level": {
2346
- "section": "developer",
2347
- "description": "Tip: Running application with --debug=1 or --debug=2 command line arguments overwrites this settings and force enables logging to %workdir%/app.log file. Log levels: 1 = INFO, 2 = DEBUG",
2348
- "type": "combo",
2409
+ "log.assistants": {
2410
+ "section": "debug",
2411
+ "type": "bool",
2349
2412
  "slider": false,
2350
- "label": "Log Level",
2351
- "value": "",
2413
+ "label": "Log Assistants usage to console",
2414
+ "value": false,
2352
2415
  "min": null,
2353
2416
  "max": null,
2354
2417
  "multiplier": null,
2355
2418
  "step": null,
2356
- "advanced": false,
2357
- "keys": [
2358
- {"error": "ERROR (default)"},
2359
- {"warning": "WARNING"},
2360
- {"info": "INFO"},
2361
- {"debug": "DEBUG"}
2362
- ]
2363
- },
2419
+ "advanced": false
2420
+ },
2364
2421
  "access.voice_control": {
2365
2422
  "section": "access",
2366
2423
  "type": "bool",
@@ -47,7 +47,7 @@
47
47
  "updates": {
48
48
  "label": "settings.section.updates"
49
49
  },
50
- "developer": {
51
- "label": "settings.section.developer"
50
+ "debug": {
51
+ "label": "settings.section.debug"
52
52
  }
53
53
  }
@@ -1174,9 +1174,9 @@ settings.ctx.sources = Zeige Llama-Indexquellen
1174
1174
  settings.ctx.sources.desc = Falls aktiviert, werden die genutzten Quellen in der Antwort angezeigt (falls verfügbar, funktioniert nicht im gestreamten Chat)
1175
1175
  settings.ctx.use_extra = Verwenden Sie zusätzlichen Kontextoutput
1176
1176
  settings.ctx.use_extra.desc = Wenn aktiviert, wird die einfache Textausgabe (falls verfügbar) aus den Befehlsausgaben zusätzlich zur JSON-Ausgabe angezeigt.
1177
+ settings.debug.show_menu = Debug-Menü anzeigen
1177
1178
  settings.defaults.app.confirm = Werksseitige App-Einstellungen laden?
1178
1179
  settings.defaults.user.confirm = Aktuelle Änderungen rückgängig machen?
1179
- settings.developer.debug = Debug-Menü anzeigen
1180
1180
  settings.dict.delete.confirm = Eintrag aus der Liste entfernen?
1181
1181
  settings.download.dir = Verzeichnis für Dateidownloads
1182
1182
  settings.download.dir.desc = Unterordner für heruntergeladene Dateien, z.B. im Assistentenmodus, innerhalb von "data"
@@ -1336,7 +1336,7 @@ settings.section.audio.cache = Cache
1336
1336
  settings.section.audio.device = Geräte
1337
1337
  settings.section.audio.options = Optionen
1338
1338
  settings.section.ctx = Kontext
1339
- settings.section.developer = Entwickler
1339
+ settings.section.debug = Fehlerbehebung
1340
1340
  settings.section.files = Dateien und Anhänge
1341
1341
  settings.section.general = Allgemein
1342
1342
  settings.section.images = Bilder
@@ -1118,6 +1118,8 @@ settings.api_key.voyage = VoyageAI API KEY
1118
1118
  settings.api_key.voyage.desc = Required for the Voyage API - embeddings for Anthropic and DeepSeek API.
1119
1119
  settings.api_key.xai = xAI API KEY
1120
1120
  settings.api_key.xai.desc = Required for the xAI API and Grok models.
1121
+ settings.api_native_google = Use native API SDK
1122
+ settings.api_native_google.desc = Use native GenAI SDK instead of compatible OpenAI client
1121
1123
  settings.api_proxy = Proxy address
1122
1124
  settings.api_proxy.desc = Optional, proxy for OpenAI API, e.g. http://proxy.example.com or socks5://user:pass@host:port
1123
1125
  settings.api_use_responses = Use Responses API in Chat mode
@@ -1192,9 +1194,9 @@ settings.ctx.sources = Show LlamaIndex sources
1192
1194
  settings.ctx.sources.desc = If enabled, sources used will be displayed in the response (if available, it will not work in streamed chat)
1193
1195
  settings.ctx.use_extra = Use extra context output
1194
1196
  settings.ctx.use_extra.desc = If enabled, plain text output (if available) from command results will be displayed alongside the JSON output.
1197
+ settings.debug.show_menu = Show debug menu
1195
1198
  settings.defaults.app.confirm = Load factory app settings?
1196
1199
  settings.defaults.user.confirm = Undo current changes?
1197
- settings.developer.debug = Show debug menu
1198
1200
  settings.dict.delete.confirm = Remove item from list?
1199
1201
  settings.download.dir = Directory for file downloads
1200
1202
  settings.download.dir.desc = Subdirectory for downloaded files, e.g. in Assistants mode, inside "data"
@@ -1324,6 +1326,10 @@ settings.remote_tools.file_search = File search
1324
1326
  settings.remote_tools.file_search.args = File search vector store IDs
1325
1327
  settings.remote_tools.file_search.args.desc = Vector store IDs, separated by comma (,)
1326
1328
  settings.remote_tools.file_search.desc = Enable `file_search` remote tool in Chat mode / via OpenAI Responses API.
1329
+ settings.remote_tools.google.code_interpreter = Code Interpreter
1330
+ settings.remote_tools.google.code_interpreter.desc = Enable Code Interpreter remote tool in Chat mode.
1331
+ settings.remote_tools.google.web_search = Google Web Search
1332
+ settings.remote_tools.google.web_search.desc = Enable Google Search remote tool in Chat mode.
1327
1333
  settings.remote_tools.image = Image generation
1328
1334
  settings.remote_tools.image.desc = Enable `image_generation` remote tool in Chat mode / via OpenAI Responses API.
1329
1335
  settings.remote_tools.mcp = Remote MCP
@@ -1360,7 +1366,7 @@ settings.section.audio.cache = Cache
1360
1366
  settings.section.audio.device = Devices
1361
1367
  settings.section.audio.options = Options
1362
1368
  settings.section.ctx = Context
1363
- settings.section.developer = Developer
1369
+ settings.section.debug = Debug
1364
1370
  settings.section.files = Files and attachments
1365
1371
  settings.section.general = General
1366
1372
  settings.section.images = Images
@@ -1376,6 +1382,7 @@ settings.section.model = Models
1376
1382
  settings.section.personalize = Personalize
1377
1383
  settings.section.prompts = Prompts
1378
1384
  settings.section.remote_tools = Remote tools
1385
+ settings.section.remote_tools.google = Google
1379
1386
  settings.section.remote_tools.openai = OpenAI
1380
1387
  settings.section.tab.general = General
1381
1388
  settings.section.updates = Updates
@@ -1175,9 +1175,9 @@ settings.ctx.sources = Mostrar fuentes del índice Llama
1175
1175
  settings.ctx.sources.desc = Si está habilitado, las fuentes utilizadas se mostrarán en la respuesta (si están disponibles, no funcionará en el chat en vivo)
1176
1176
  settings.ctx.use_extra = Usar salida de contexto extra
1177
1177
  settings.ctx.use_extra.desc = Si está habilitado, la salida de texto sin formato (si está disponible) de los resultados de los comandos se mostrará junto con la salida JSON.
1178
+ settings.debug.show_menu = Mostrar menú de depuración
1178
1179
  settings.defaults.app.confirm = ¿Cargar ajustes predeterminados de la aplicación?
1179
1180
  settings.defaults.user.confirm = ¿Deshacer cambios actuales?
1180
- settings.developer.debug = Mostrar menú de depuración
1181
1181
  settings.dict.delete.confirm = ¿Eliminar elemento de la lista?
1182
1182
  settings.download.dir = Directorio para descargas de archivos
1183
1183
  settings.download.dir.desc = Subdirectorio para archivos descargados, por ejemplo, en modo Asistentes, dentro de "data"
@@ -1337,7 +1337,7 @@ settings.section.audio.cache = Caché
1337
1337
  settings.section.audio.device = Dispositivos
1338
1338
  settings.section.audio.options = Opciones
1339
1339
  settings.section.ctx = Contexto
1340
- settings.section.developer = Desarrollador
1340
+ settings.section.debug = Depuración
1341
1341
  settings.section.files = Archivos y adjuntos
1342
1342
  settings.section.general = General
1343
1343
  settings.section.images = Imágenes
@@ -1174,9 +1174,9 @@ settings.ctx.sources = Afficher les sources de l'index Llama
1174
1174
  settings.ctx.sources.desc = Si activé, les sources utilisées seront affichées dans la réponse (si disponibles, cela ne fonctionnera pas dans le chat en continu)
1175
1175
  settings.ctx.use_extra = Utiliser une sortie de contexte supplémentaire
1176
1176
  settings.ctx.use_extra.desc = Si activé, la sortie en texte brut (si disponible) des résultats de commande sera affichée aux côtés de la sortie JSON.
1177
+ settings.debug.show_menu = Afficher le menu de débogage
1177
1178
  settings.defaults.app.confirm = Charger les réglages par défaut de l'application ?
1178
1179
  settings.defaults.user.confirm = Annuler les modifications actuelles ?
1179
- settings.developer.debug = Afficher le menu de débogage
1180
1180
  settings.dict.delete.confirm = Supprimer l'élément de la liste ?
1181
1181
  settings.download.dir = Répertoire pour les téléchargements de fichiers
1182
1182
  settings.download.dir.desc = Sous-répertoire pour les fichiers téléchargés, par exemple en mode Assistants, à l'intérieur de "data"
@@ -1336,7 +1336,7 @@ settings.section.audio.cache = Cache
1336
1336
  settings.section.audio.device = Appareils
1337
1337
  settings.section.audio.options = Options
1338
1338
  settings.section.ctx = Contexte
1339
- settings.section.developer = Développeur
1339
+ settings.section.debug = Débogage
1340
1340
  settings.section.files = Fichiers et pièces jointes
1341
1341
  settings.section.general = Général
1342
1342
  settings.section.images = Images
@@ -1174,9 +1174,9 @@ settings.ctx.sources = Mostra le fonti dell'indice Llama
1174
1174
  settings.ctx.sources.desc = Se abilitato, le fonti utilizzate saranno mostrate nella risposta (se disponibili, non funzionerà nella chat in streaming)
1175
1175
  settings.ctx.use_extra = Usa output di contesto extra
1176
1176
  settings.ctx.use_extra.desc = Se abilitato, l'output di testo normale (se disponibile) dai risultati dei comandi sarà visualizzato accanto all'output JSON.
1177
+ settings.debug.show_menu = Mostra menu debug
1177
1178
  settings.defaults.app.confirm = Caricare le impostazioni predefinite dell'applicazione?
1178
1179
  settings.defaults.user.confirm = Annullare le modifiche correnti?
1179
- settings.developer.debug = Mostra menu debug
1180
1180
  settings.dict.delete.confirm = Rimuovere l'elemento dall'elenco?
1181
1181
  settings.download.dir = Directory per il download dei file
1182
1182
  settings.download.dir.desc = Sottodirectory per i file scaricati, ad esempio in modalità Assistenti, all'interno di "data"
@@ -1336,7 +1336,7 @@ settings.section.audio.cache = Cache
1336
1336
  settings.section.audio.device = Dispositivi
1337
1337
  settings.section.audio.options = Opzioni
1338
1338
  settings.section.ctx = Contesto
1339
- settings.section.developer = Sviluppatore
1339
+ settings.section.debug = Debug
1340
1340
  settings.section.files = File e allegati
1341
1341
  settings.section.general = Generale
1342
1342
  settings.section.images = Immagini
@@ -1118,7 +1118,7 @@ settings.audio.input.backend.desc = Wybierz backend dla wejścia audio.
1118
1118
  settings.audio.input.channels = Kanały
1119
1119
  settings.audio.input.channels.desc = Kanały wejściowe, domyślnie: 1
1120
1120
  settings.audio.input.continuous = Ciągłe Nagrywanie Dźwięku (Kawałki)
1121
- settings.audio.input.continuous.desc = Włącz nagrywanie w kawałkach dla długich nagrań audio w notatniku (notatki głosowe).
1121
+ settings.audio.input.continuous.desc = Włącz nagrywanie w kawałkach dla długich nagrań audio w notatniku (notatki głosowe).
1122
1122
  settings.audio.input.device = Urządzenie do wejścia audio
1123
1123
  settings.audio.input.device.desc = Wybierz urządzenie do wejścia mikrofonu.
1124
1124
  settings.audio.input.rate = Częstotliwość próbkowania
@@ -1175,9 +1175,9 @@ settings.ctx.sources = Pokaż źródła LlamaIndex
1175
1175
  settings.ctx.sources.desc = Jeśli opcja jest włączona, wykorzystane źródła będą wyświetlane w odpowiedzi (jeśli dostępne, nie zadziała w czacie z wł. opcją stream)
1176
1176
  settings.ctx.use_extra = Używaj dodatkowego kontekstu outputu
1177
1177
  settings.ctx.use_extra.desc = Jeśli włączone, zwykły tekst outputu (jeśli dostępny) z wyników poleceń będzie wyświetlany obok outputu JSON.
1178
+ settings.debug.show_menu = Pokaż menu debugowania
1178
1179
  settings.defaults.app.confirm = Wczytać fabryczne ustawienia aplikacji?
1179
1180
  settings.defaults.user.confirm = Przywrócić dokonane zmiany?
1180
- settings.developer.debug = Pokaż menu debugowania
1181
1181
  settings.dict.delete.confirm = Usunąć pozycję z listy?
1182
1182
  settings.download.dir = Katalog na pliki do pobrania
1183
1183
  settings.download.dir.desc = Podkatalog na pobrane pliki, np. w trybie Asystentów, wewnątrz "data"
@@ -1337,7 +1337,7 @@ settings.section.audio.cache = Pamięć podręczna
1337
1337
  settings.section.audio.device = Urządzenia
1338
1338
  settings.section.audio.options = Opcje
1339
1339
  settings.section.ctx = Kontekst
1340
- settings.section.developer = Deweloper
1340
+ settings.section.debug = Debugowanie
1341
1341
  settings.section.files = Pliki i załączniki
1342
1342
  settings.section.general = Ogólne
1343
1343
  settings.section.images = Obrazy
@@ -1174,9 +1174,9 @@ settings.ctx.sources = Показати джерела індексу Llama
1174
1174
  settings.ctx.sources.desc = Якщо включено, використані джерела будуть відображатися в відповіді (якщо доступно, не працюватиме в потоковому чаті)
1175
1175
  settings.ctx.use_extra = Використовувати додатковий контекст виводу
1176
1176
  settings.ctx.use_extra.desc = Якщо увімкнено, звичайний текстовий вивід (якщо доступний) з результатів команд буде відображений поруч з JSON виводом.
1177
+ settings.debug.show_menu = Показати меню налагодження
1177
1178
  settings.defaults.app.confirm = Завантажити заводські налаштування додатку?
1178
1179
  settings.defaults.user.confirm = Відмінити поточні зміни?
1179
- settings.developer.debug = Показати меню налагодження
1180
1180
  settings.dict.delete.confirm = Видалити елемент зі списку?
1181
1181
  settings.download.dir = Директорія для завантаження файлів
1182
1182
  settings.download.dir.desc = Піддиректорія для завантажених файлів, наприклад, у режимі помічників, всередині "data"
@@ -1336,7 +1336,7 @@ settings.section.audio.cache = Кеш
1336
1336
  settings.section.audio.device = Пристрої
1337
1337
  settings.section.audio.options = Параметри
1338
1338
  settings.section.ctx = Контекст
1339
- settings.section.developer = Розробник
1339
+ settings.section.debug = Налагодження
1340
1340
  settings.section.files = Файли та вкладення
1341
1341
  settings.section.general = Загальні
1342
1342
  settings.section.images = Зображення
@@ -1174,9 +1174,9 @@ settings.ctx.sources = 显示Llama索引源
1174
1174
  settings.ctx.sources.desc = 如果启用,使用的源将在回应中显示(如果可用,不适用于流式聊天)
1175
1175
  settings.ctx.use_extra = 使用额外的上下文输出
1176
1176
  settings.ctx.use_extra.desc = 如果启用,将在命令结果的 JSON 输出旁边显示纯文本输出(如果有)。
1177
+ settings.debug.show_menu = 显示调试菜单
1177
1178
  settings.defaults.app.confirm = 加载出厂应用程序设置?
1178
1179
  settings.defaults.user.confirm = 撤销当前更改?
1179
- settings.developer.debug = 显示调试菜单
1180
1180
  settings.dict.delete.confirm = 从列表中移除项目?
1181
1181
  settings.download.dir = 文件下载目录
1182
1182
  settings.download.dir.desc = 下载文件的子目录,例如在助手模式下,位于 "data" 内部
@@ -1336,7 +1336,7 @@ settings.section.audio.cache = 缓存
1336
1336
  settings.section.audio.device = 设备
1337
1337
  settings.section.audio.options = 选项
1338
1338
  settings.section.ctx = 上下文
1339
- settings.section.developer = 開發者
1339
+ settings.section.debug = 调试
1340
1340
  settings.section.files = 文件和附件
1341
1341
  settings.section.general = 一般
1342
1342
  settings.section.images = 圖像
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: 2025.08.23 15:00:00 #
9
+ # Updated Date: 2025.08.28 09:00:00 #
10
10
  # ================================================== #
11
11
 
12
12
  import json
@@ -253,7 +253,17 @@ class ModelItem:
253
253
 
254
254
  :return: True if supports image input
255
255
  """
256
- if MODE_VISION in self.mode or MULTIMODAL_IMAGE in self.input:
256
+ if MULTIMODAL_IMAGE in self.input:
257
+ return True
258
+ return False
259
+
260
+ def is_image_output(self) -> bool:
261
+ """
262
+ Check if model supports image output
263
+
264
+ :return: True if supports image output
265
+ """
266
+ if "image" in self.output or MODE_VISION in self.mode:
257
267
  return True
258
268
  return False
259
269
 
@@ -263,7 +273,17 @@ class ModelItem:
263
273
 
264
274
  :return: True if supports audio input
265
275
  """
266
- if MODE_AUDIO in self.mode or MULTIMODAL_AUDIO in self.input:
276
+ if MULTIMODAL_AUDIO in self.input:
277
+ return True
278
+ return False
279
+
280
+ def is_audio_output(self) -> bool:
281
+ """
282
+ Check if model supports audio output
283
+
284
+ :return: True if supports audio output
285
+ """
286
+ if MULTIMODAL_AUDIO in self.output:
267
287
  return True
268
288
  return False
269
289
 
@@ -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.30 00:00:00 #
9
+ # Updated Date: 2025.08.28 09:00:00 #
10
10
  # ================================================== #
11
11
 
12
12
  from pygpt_net.core.types import (
@@ -42,8 +42,8 @@ class Plugin(BasePlugin):
42
42
  ]
43
43
  self.allowed_modes = [
44
44
  MODE_CHAT,
45
- MODE_LANGCHAIN,
46
- MODE_VISION,
45
+ # MODE_LANGCHAIN,
46
+ # MODE_VISION,
47
47
  MODE_LLAMA_INDEX,
48
48
  MODE_ASSISTANT,
49
49
  MODE_AGENT,
@@ -166,7 +166,7 @@ class Plugin(BasePlugin):
166
166
  sync = False
167
167
  if self.window.core.config.get("mode") in [MODE_AGENT_LLAMA, MODE_AGENT_OPENAI]:
168
168
  sync = True
169
- self.window.core.gpt.image.generate(bridge_context, extra, sync) # force inline mode, async call
169
+ self.window.core.api.openai.image.generate(bridge_context, extra, sync) # force inline mode, async call
170
170
  except Exception as e:
171
171
  self.log("Error: " + str(e))
172
172
  return
@@ -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.15 23:00:00 #
9
+ # Updated Date: 2025.08.28 09:00:00 #
10
10
  # ================================================== #
11
11
 
12
12
  from pygpt_net.core.types import (
@@ -102,7 +102,7 @@ class Plugin(BasePlugin):
102
102
  ) # mode change
103
103
 
104
104
  elif name == Event.MODEL_BEFORE:
105
- if "mode" in data and data["mode"] == MODE_VISION:
105
+ if data.get("mode") == MODE_CHAT:
106
106
  key = self.get_option_value("model")
107
107
  if self.window.core.models.has(key):
108
108
  data['model'] = self.window.core.models.get(key)
@@ -119,7 +119,7 @@ class Plugin(BasePlugin):
119
119
  data['value'] = self.on_system_prompt(data['value'])
120
120
 
121
121
  elif name == Event.UI_ATTACHMENTS:
122
- mode = data["mode"]
122
+ mode = data.get("mode")
123
123
  if mode in [MODE_AGENT, MODE_AGENT_LLAMA, MODE_AGENT_OPENAI] and not self.window.core.config.get("cmd"):
124
124
  pass
125
125
  else:
@@ -263,8 +263,7 @@ class Plugin(BasePlugin):
263
263
  # append vision prompt only if vision is provided or enabled
264
264
  if not self.is_vision_provided():
265
265
  return prompt
266
- prompt = "Image attachment has been already sent.\n\n" + prompt
267
- return prompt
266
+ return "Image attachment has been already sent.\n\n" + prompt
268
267
 
269
268
  def on_pre_prompt(self, prompt: str) -> str:
270
269
  """
@@ -294,12 +293,12 @@ class Plugin(BasePlugin):
294
293
  """
295
294
  mode = self.window.core.config.get('mode')
296
295
  attachments = self.window.core.attachments.get_all(mode)
297
- self.window.core.gpt.vision.build_content(
296
+ self.window.core.api.openai.vision.build_content(
298
297
  str(self.prompt),
299
298
  attachments,
300
299
  ) # tmp build content, provide attachments from global mode
301
300
 
302
- built_attachments = self.window.core.gpt.vision.attachments
301
+ built_attachments = self.window.core.api.openai.vision.attachments
303
302
  if len(built_attachments) > 0:
304
303
  return True
305
304
  return False
@@ -313,13 +312,13 @@ class Plugin(BasePlugin):
313
312
  result = False
314
313
  mode = self.window.core.config.get('mode')
315
314
  attachments = self.window.core.attachments.get_all(mode) # from global mode
316
- self.window.core.gpt.vision.build_content(
315
+ self.window.core.api.openai.vision.build_content(
317
316
  str(self.prompt),
318
317
  attachments,
319
318
  ) # tmp build content, provide attachments from global mode
320
319
 
321
- built_attachments = self.window.core.gpt.vision.attachments
322
- built_urls = self.window.core.gpt.vision.urls
320
+ built_attachments = self.window.core.api.openai.vision.attachments
321
+ built_urls = self.window.core.api.openai.vision.urls
323
322
 
324
323
  # check for images in URLs found in prompt
325
324
  img_urls = []
@@ -343,13 +342,13 @@ class Plugin(BasePlugin):
343
342
  :return: updated mode
344
343
  """
345
344
  # abort if already in vision mode or command enabled
346
- if mode == MODE_VISION or mode in self.disabled_mode_switch:
345
+ if mode in self.disabled_mode_switch:
347
346
  return mode # keep current mode
348
347
 
349
- # if already used in this ctx then keep vision mode
348
+ # if already used in this ctx then keep vision (in CHAT) mode
350
349
  if self.is_vision_provided():
351
350
  ctx.is_vision = True
352
- return MODE_VISION
351
+ return MODE_CHAT
353
352
 
354
353
  return mode # keep current mode
355
354