pygpt-net 2.6.29__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 (113) hide show
  1. pygpt_net/CHANGELOG.txt +7 -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/theme.py +3 -2
  20. pygpt_net/controller/ui/vision.py +4 -4
  21. pygpt_net/core/agents/legacy.py +2 -2
  22. pygpt_net/core/agents/runners/openai_workflow.py +2 -2
  23. pygpt_net/core/assistants/files.py +5 -5
  24. pygpt_net/core/assistants/store.py +4 -4
  25. pygpt_net/core/bridge/bridge.py +3 -3
  26. pygpt_net/core/bridge/worker.py +28 -9
  27. pygpt_net/core/debug/console/console.py +2 -2
  28. pygpt_net/core/debug/presets.py +2 -2
  29. pygpt_net/core/experts/experts.py +2 -2
  30. pygpt_net/core/modes/modes.py +2 -2
  31. pygpt_net/core/presets/presets.py +3 -3
  32. pygpt_net/core/tokens/tokens.py +4 -4
  33. pygpt_net/core/types/mode.py +5 -2
  34. pygpt_net/core/vision/analyzer.py +1 -1
  35. pygpt_net/data/config/config.json +6 -3
  36. pygpt_net/data/config/models.json +75 -3
  37. pygpt_net/data/config/modes.json +3 -9
  38. pygpt_net/data/config/settings.json +89 -31
  39. pygpt_net/data/config/settings_section.json +2 -2
  40. pygpt_net/data/locale/locale.de.ini +2 -2
  41. pygpt_net/data/locale/locale.en.ini +9 -2
  42. pygpt_net/data/locale/locale.es.ini +2 -2
  43. pygpt_net/data/locale/locale.fr.ini +2 -2
  44. pygpt_net/data/locale/locale.it.ini +2 -2
  45. pygpt_net/data/locale/locale.pl.ini +3 -3
  46. pygpt_net/data/locale/locale.uk.ini +2 -2
  47. pygpt_net/data/locale/locale.zh.ini +2 -2
  48. pygpt_net/item/model.py +23 -3
  49. pygpt_net/plugin/openai_dalle/plugin.py +4 -4
  50. pygpt_net/plugin/openai_vision/plugin.py +12 -13
  51. pygpt_net/provider/agents/openai/agent.py +5 -5
  52. pygpt_net/provider/agents/openai/agent_b2b.py +5 -5
  53. pygpt_net/provider/agents/openai/agent_planner.py +5 -6
  54. pygpt_net/provider/agents/openai/agent_with_experts.py +5 -5
  55. pygpt_net/provider/agents/openai/agent_with_experts_feedback.py +4 -4
  56. pygpt_net/provider/agents/openai/agent_with_feedback.py +4 -4
  57. pygpt_net/provider/agents/openai/bot_researcher.py +2 -2
  58. pygpt_net/provider/agents/openai/bots/research_bot/agents/planner_agent.py +1 -1
  59. pygpt_net/provider/agents/openai/bots/research_bot/agents/search_agent.py +1 -1
  60. pygpt_net/provider/agents/openai/bots/research_bot/agents/writer_agent.py +1 -1
  61. pygpt_net/provider/agents/openai/evolve.py +5 -5
  62. pygpt_net/provider/agents/openai/supervisor.py +4 -4
  63. pygpt_net/provider/api/__init__.py +27 -0
  64. pygpt_net/provider/api/anthropic/__init__.py +68 -0
  65. pygpt_net/provider/api/google/__init__.py +262 -0
  66. pygpt_net/provider/api/google/audio.py +114 -0
  67. pygpt_net/provider/api/google/chat.py +552 -0
  68. pygpt_net/provider/api/google/image.py +287 -0
  69. pygpt_net/provider/api/google/tools.py +222 -0
  70. pygpt_net/provider/api/google/vision.py +129 -0
  71. pygpt_net/provider/{gpt → api/openai}/__init__.py +2 -2
  72. pygpt_net/provider/{gpt → api/openai}/agents/computer.py +1 -1
  73. pygpt_net/provider/{gpt → api/openai}/agents/experts.py +1 -1
  74. pygpt_net/provider/{gpt → api/openai}/agents/response.py +1 -1
  75. pygpt_net/provider/{gpt → api/openai}/assistants.py +1 -1
  76. pygpt_net/provider/{gpt → api/openai}/chat.py +15 -8
  77. pygpt_net/provider/{gpt → api/openai}/completion.py +1 -1
  78. pygpt_net/provider/{gpt → api/openai}/image.py +1 -1
  79. pygpt_net/provider/{gpt → api/openai}/remote_tools.py +1 -1
  80. pygpt_net/provider/{gpt → api/openai}/responses.py +34 -20
  81. pygpt_net/provider/{gpt → api/openai}/store.py +2 -2
  82. pygpt_net/provider/{gpt → api/openai}/vision.py +1 -1
  83. pygpt_net/provider/{gpt → api/openai}/worker/assistants.py +4 -4
  84. pygpt_net/provider/{gpt → api/openai}/worker/importer.py +10 -10
  85. pygpt_net/provider/audio_input/openai_whisper.py +1 -1
  86. pygpt_net/provider/audio_output/google_tts.py +12 -0
  87. pygpt_net/provider/audio_output/openai_tts.py +1 -1
  88. pygpt_net/provider/core/config/patch.py +11 -0
  89. pygpt_net/provider/core/model/patch.py +9 -0
  90. pygpt_net/provider/core/preset/json_file.py +2 -4
  91. pygpt_net/provider/llms/anthropic.py +2 -5
  92. pygpt_net/provider/llms/base.py +4 -3
  93. pygpt_net/provider/llms/openai.py +1 -1
  94. pygpt_net/provider/loaders/hub/image_vision/base.py +1 -1
  95. pygpt_net/ui/dialog/preset.py +71 -55
  96. pygpt_net/ui/main.py +6 -4
  97. pygpt_net/utils.py +9 -0
  98. {pygpt_net-2.6.29.dist-info → pygpt_net-2.6.30.dist-info}/METADATA +32 -44
  99. {pygpt_net-2.6.29.dist-info → pygpt_net-2.6.30.dist-info}/RECORD +113 -105
  100. /pygpt_net/provider/{gpt → api/openai}/agents/__init__.py +0 -0
  101. /pygpt_net/provider/{gpt → api/openai}/agents/client.py +0 -0
  102. /pygpt_net/provider/{gpt → api/openai}/agents/remote_tools.py +0 -0
  103. /pygpt_net/provider/{gpt → api/openai}/agents/utils.py +0 -0
  104. /pygpt_net/provider/{gpt → api/openai}/audio.py +0 -0
  105. /pygpt_net/provider/{gpt → api/openai}/computer.py +0 -0
  106. /pygpt_net/provider/{gpt → api/openai}/container.py +0 -0
  107. /pygpt_net/provider/{gpt → api/openai}/summarizer.py +0 -0
  108. /pygpt_net/provider/{gpt → api/openai}/tools.py +0 -0
  109. /pygpt_net/provider/{gpt → api/openai}/utils.py +0 -0
  110. /pygpt_net/provider/{gpt → api/openai}/worker/__init__.py +0 -0
  111. {pygpt_net-2.6.29.dist-info → pygpt_net-2.6.30.dist-info}/LICENSE +0 -0
  112. {pygpt_net-2.6.29.dist-info → pygpt_net-2.6.30.dist-info}/WHEEL +0 -0
  113. {pygpt_net-2.6.29.dist-info → pygpt_net-2.6.30.dist-info}/entry_points.txt +0 -0
@@ -106,7 +106,7 @@ class Store:
106
106
  :return: store item
107
107
  """
108
108
  name = "New vector store"
109
- vector_store = self.window.core.gpt.store.create_store(name, 0)
109
+ vector_store = self.window.core.api.openai.store.create_store(name, 0)
110
110
  if vector_store is None:
111
111
  return None
112
112
  store = AssistantStoreItem()
@@ -124,7 +124,7 @@ class Store:
124
124
  :param store: store
125
125
  :return: updated store or None if failed
126
126
  """
127
- vector_store = self.window.core.gpt.store.update_store(store.id, store.name, store.expire_days)
127
+ vector_store = self.window.core.api.openai.store.update_store(store.id, store.name, store.expire_days)
128
128
  if vector_store is None:
129
129
  return None
130
130
  self.items[store.id] = store
@@ -139,7 +139,7 @@ class Store:
139
139
  :return: status data, store data
140
140
  """
141
141
  status = {}
142
- data = self.window.core.gpt.store.get_store(id)
142
+ data = self.window.core.api.openai.store.get_store(id)
143
143
  if data is not None:
144
144
  status = self.parse_status(data)
145
145
  return status, data
@@ -236,7 +236,7 @@ class Store:
236
236
  if id in self.items:
237
237
  store = self.items[id]
238
238
  self.provider.delete_by_id(store.record_id)
239
- self.window.core.gpt.store.remove_store(id)
239
+ self.window.core.api.openai.store.remove_store(id)
240
240
  del self.items[id]
241
241
  return True
242
242
  return False
@@ -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
  import time
@@ -59,7 +59,7 @@ class Bridge:
59
59
  if self.window.controller.kernel.stopped():
60
60
  return False
61
61
 
62
- allowed_model_change = MODE_VISION
62
+ allowed_model_change = [MODE_CHAT]
63
63
  is_virtual = False
64
64
  force_sync = False
65
65
 
@@ -254,7 +254,7 @@ class Bridge:
254
254
  context.mode = MODE_RESEARCH
255
255
 
256
256
  # default: OpenAI API call
257
- return self.window.core.gpt.quick_call(
257
+ return self.window.core.api.openai.quick_call(
258
258
  context=context,
259
259
  extra=extra,
260
260
  )
@@ -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.11 14:00:00 #
9
+ # Updated Date: 2025.08.28 20:00:00 #
10
10
  # ================================================== #
11
11
 
12
12
  from PySide6.QtCore import QObject, Signal, QRunnable, Slot
@@ -17,6 +17,8 @@ from pygpt_net.core.types import (
17
17
  MODE_LANGCHAIN,
18
18
  MODE_LLAMA_INDEX,
19
19
  MODE_ASSISTANT,
20
+ MODE_VISION,
21
+ MODE_LOOP_NEXT,
20
22
  )
21
23
  from pygpt_net.core.events import KernelEvent, Event
22
24
 
@@ -29,7 +31,7 @@ class BridgeSignals(QObject):
29
31
  class BridgeWorker(QRunnable):
30
32
  """Bridge worker"""
31
33
  def __init__(self, *args, **kwargs):
32
- QRunnable.__init__(self)
34
+ super().__init__()
33
35
  self.signals = BridgeSignals()
34
36
  self.args = args
35
37
  self.kwargs = kwargs
@@ -64,6 +66,8 @@ class BridgeWorker(QRunnable):
64
66
  extra=self.extra,
65
67
  )
66
68
  """
69
+ elif self.mode == MODE_VISION:
70
+ raise Exception("Vision mode is deprecated from v2.6.30 and integrated into Chat. ")
67
71
 
68
72
  # LlamaIndex: chat with files
69
73
  if self.mode == MODE_LLAMA_INDEX:
@@ -87,7 +91,7 @@ class BridgeWorker(QRunnable):
87
91
  self.extra["error"] = str(self.window.core.agents.runner.get_error())
88
92
 
89
93
  # Loop: next step
90
- elif self.mode == "loop_next": # virtual mode
94
+ elif self.mode == MODE_LOOP_NEXT: # virtual mode
91
95
  result = self.window.core.agents.runner.loop.run_next(
92
96
  context=self.context,
93
97
  extra=self.extra,
@@ -98,12 +102,27 @@ class BridgeWorker(QRunnable):
98
102
  else:
99
103
  self.extra["error"] = str(self.window.core.agents.runner.get_error())
100
104
 
101
- # API OpenAI: chat, completion, vision, image, assistants
105
+ # API SDK: chat, completion, vision, image, assistants
102
106
  else:
103
- result = self.window.core.gpt.call(
104
- context=self.context,
105
- extra=self.extra,
106
- )
107
+ sdk = "openai"
108
+ model = self.context.model
109
+ if model.provider == "google":
110
+ if self.window.core.config.get("api_native_google", False):
111
+ sdk = "google"
112
+
113
+ # call appropriate SDK
114
+ if sdk == "google":
115
+ # print("Using Google SDK")
116
+ result = self.window.core.api.google.call(
117
+ context=self.context,
118
+ extra=self.extra,
119
+ )
120
+ elif sdk == "openai":
121
+ # print("Using OpenAI SDK")
122
+ result = self.window.core.api.openai.call(
123
+ context=self.context,
124
+ extra=self.extra,
125
+ )
107
126
  except Exception as e:
108
127
  if self.signals:
109
128
  self.extra["error"] = e
@@ -170,7 +189,7 @@ class BridgeWorker(QRunnable):
170
189
  ad_context = self.window.controller.chat.attachment.get_context(ctx, self.context.history)
171
190
  ad_mode = self.window.controller.chat.attachment.get_mode()
172
191
  if ad_context:
173
- self.context.prompt += "\n\n" + ad_context # append to input text
192
+ self.context.prompt += f"\n\n{ad_context}" # append to input text
174
193
  if (ad_mode == self.window.controller.chat.attachment.MODE_QUERY_CONTEXT
175
194
  or self.mode in [MODE_AGENT_LLAMA, MODE_AGENT_OPENAI]):
176
195
  ctx.hidden_input = ad_context # store for future use, only if query context
@@ -69,8 +69,8 @@ class Console:
69
69
  elif msg.lower() == "mpkfa":
70
70
  self.log("GOD MODE ACTIVATED ;)")
71
71
  elif msg == "oclr":
72
- if self.window.core.gpt.client:
73
- self.window.core.gpt.client.close()
72
+ if self.window.core.api.openai.client:
73
+ self.window.core.api.openai.client.close()
74
74
  self.log("OpenAI client closed")
75
75
  else:
76
76
  self.log("OpenAI client not initialized")
@@ -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
  import os
@@ -62,7 +62,7 @@ class PresetsDebug:
62
62
  MODE_CHAT: preset.chat,
63
63
  MODE_COMPLETION: preset.completion,
64
64
  MODE_IMAGE: preset.img,
65
- MODE_VISION: preset.vision,
65
+ # MODE_VISION: preset.vision,
66
66
  # MODE_LANGCHAIN: preset.langchain,
67
67
  MODE_ASSISTANT: preset.assistant,
68
68
  MODE_LLAMA_INDEX: preset.llama_index,
@@ -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
@@ -49,7 +49,7 @@ class Experts:
49
49
  self.allowed_modes = [
50
50
  MODE_CHAT,
51
51
  MODE_COMPLETION,
52
- MODE_VISION,
52
+ # MODE_VISION,
53
53
  # MODE_LANGCHAIN,
54
54
  MODE_LLAMA_INDEX,
55
55
  MODE_AUDIO,
@@ -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 typing import Dict, List
@@ -53,7 +53,7 @@ class Modes:
53
53
  MODE_IMAGE,
54
54
  # MODE_LANGCHAIN,
55
55
  MODE_LLAMA_INDEX,
56
- MODE_VISION,
56
+ # MODE_VISION,
57
57
  MODE_RESEARCH,
58
58
  MODE_COMPUTER,
59
59
  )
@@ -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
  import copy
@@ -165,8 +165,8 @@ class Presets:
165
165
  return MODE_COMPLETION
166
166
  if preset.img:
167
167
  return MODE_IMAGE
168
- if preset.vision:
169
- return MODE_VISION
168
+ # if preset.vision:
169
+ # return MODE_VISION
170
170
  # if preset.langchain:
171
171
  # return MODE_LANGCHAIN
172
172
  if preset.assistant:
@@ -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 typing import Tuple, List
@@ -36,8 +36,8 @@ from pygpt_net.item.ctx import CtxItem
36
36
 
37
37
  CHAT_MODES = [
38
38
  MODE_CHAT,
39
- MODE_VISION,
40
- MODE_LANGCHAIN,
39
+ # MODE_VISION,
40
+ # MODE_LANGCHAIN,
41
41
  MODE_ASSISTANT,
42
42
  MODE_LLAMA_INDEX,
43
43
  MODE_AGENT,
@@ -328,7 +328,7 @@ class Tokens:
328
328
  model_id = self.window.core.models.get_id(model)
329
329
  mode = self.window.core.config.get('mode')
330
330
  tokens = 0
331
- if mode in [MODE_CHAT, MODE_VISION, MODE_AUDIO, MODE_RESEARCH]:
331
+ if mode in [MODE_CHAT, MODE_AUDIO, MODE_RESEARCH]:
332
332
  tokens += self.from_prompt(system_prompt, "", model_id)
333
333
  tokens += self.from_text("system", model_id)
334
334
  tokens += self.from_prompt(input_prompt, "", model_id)
@@ -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 21:00:00 #
9
+ # Updated Date: 2025.08.28 09:00:00 #
10
10
  # ================================================== #
11
11
 
12
12
  MODE_AGENT = "agent"
@@ -22,4 +22,7 @@ MODE_IMAGE = "img"
22
22
  MODE_LANGCHAIN = "langchain"
23
23
  MODE_LLAMA_INDEX = "llama_index"
24
24
  MODE_RESEARCH = "research"
25
- MODE_VISION = "vision"
25
+ MODE_VISION = "vision"
26
+
27
+ # virtual modes
28
+ MODE_LOOP_NEXT = "loop_next"
@@ -51,7 +51,7 @@ class Analyzer:
51
51
 
52
52
  extra = {}
53
53
  output = ""
54
- response = self.window.core.gpt.vision.send(context, extra)
54
+ response = self.window.core.api.openai.vision.send(context, extra)
55
55
  if response.choices[0] and response.choices[0].message.content:
56
56
  output = response.choices[0].message.content.strip()
57
57
  for id in files:
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "__meta__": {
3
- "version": "2.6.29",
4
- "app.version": "2.6.29",
5
- "updated_at": "2025-08-28T00:00:00"
3
+ "version": "2.6.30",
4
+ "app.version": "2.6.30",
5
+ "updated_at": "2025-08-29T00:00:00"
6
6
  },
7
7
  "access.audio.event.speech": false,
8
8
  "access.audio.event.speech.disabled": [],
@@ -88,6 +88,7 @@
88
88
  "api_key_mistral": "",
89
89
  "api_key_voyage": "",
90
90
  "api_key_open_router": "",
91
+ "api_native_google": true,
91
92
  "api_proxy": "",
92
93
  "api_use_responses": true,
93
94
  "api_use_responses_llama": false,
@@ -396,6 +397,8 @@
396
397
  "remote_tools.file_search": false,
397
398
  "remote_tools.file_search.args": "",
398
399
  "remote_tools.computer_use.env": "",
400
+ "remote_tools.google.web_search": true,
401
+ "remote_tools.google.code_interpreter": false,
399
402
  "send_clear": true,
400
403
  "send_mode": 2,
401
404
  "store_history": true,
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "__meta__": {
3
- "version": "2.6.29",
4
- "app.version": "2.6.29",
5
- "updated_at": "2025-08-28T23:07:35"
3
+ "version": "2.6.30",
4
+ "app.version": "2.6.30",
5
+ "updated_at": "2025-08-29T23:07:35"
6
6
  },
7
7
  "items": {
8
8
  "SpeakLeash/bielik-11b-v2.3-instruct:Q4_K_M": {
@@ -2565,6 +2565,78 @@
2565
2565
  "provider": "x_ai",
2566
2566
  "tool_calls": true
2567
2567
  },
2568
+ "imagen-3.0-generate-002": {
2569
+ "id": "imagen-3.0-generate-002",
2570
+ "name": "imagen-3.0-generate-002",
2571
+ "mode": [
2572
+ "img"
2573
+ ],
2574
+ "llama_index": {
2575
+ "args": [
2576
+ {
2577
+ "name": "model",
2578
+ "value": "models/imagen-3.0-generate-002",
2579
+ "type": "str"
2580
+ }
2581
+ ],
2582
+ "env": [
2583
+ {
2584
+ "name": "GOOGLE_API_KEY",
2585
+ "value": "{api_key_google}",
2586
+ "type": "str"
2587
+ }
2588
+ ]
2589
+ },
2590
+ "ctx": 128000,
2591
+ "tokens": 0,
2592
+ "default": false,
2593
+ "input": [
2594
+ "text"
2595
+ ],
2596
+ "output": [
2597
+ "image"
2598
+ ],
2599
+ "extra": {},
2600
+ "imported": true,
2601
+ "provider": "google",
2602
+ "tool_calls": true
2603
+ },
2604
+ "imagen-4.0-generate-001": {
2605
+ "id": "imagen-4.0-generate-001",
2606
+ "name": "imagen-4.0-generate-001",
2607
+ "mode": [
2608
+ "img"
2609
+ ],
2610
+ "llama_index": {
2611
+ "args": [
2612
+ {
2613
+ "name": "model",
2614
+ "value": "models/imagen-4.0-generate-001",
2615
+ "type": "str"
2616
+ }
2617
+ ],
2618
+ "env": [
2619
+ {
2620
+ "name": "GOOGLE_API_KEY",
2621
+ "value": "{api_key_google}",
2622
+ "type": "str"
2623
+ }
2624
+ ]
2625
+ },
2626
+ "ctx": 128000,
2627
+ "tokens": 0,
2628
+ "default": false,
2629
+ "input": [
2630
+ "text"
2631
+ ],
2632
+ "output": [
2633
+ "image"
2634
+ ],
2635
+ "extra": {},
2636
+ "imported": true,
2637
+ "provider": "google",
2638
+ "tool_calls": true
2639
+ },
2568
2640
  "llama2-uncensored": {
2569
2641
  "id": "llama2-uncensored",
2570
2642
  "name": "llama2-uncensored",
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "__meta__": {
3
- "version": "2.5.28",
4
- "app.version": "2.5.28",
5
- "updated_at": "2025-07-08T00:00:00"
3
+ "version": "2.6.30",
4
+ "app.version": "2.6.30",
5
+ "updated_at": "2025-08-28T09:00:00"
6
6
  },
7
7
  "items": {
8
8
  "chat": {
@@ -41,12 +41,6 @@
41
41
  "label": "mode.img",
42
42
  "default": false
43
43
  },
44
- "vision": {
45
- "id": "vision",
46
- "name": "vision",
47
- "label": "mode.vision",
48
- "default": false
49
- },
50
44
  "assistant": {
51
45
  "id": "assistant",
52
46
  "name": "assistant",
@@ -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",
@@ -1263,7 +1278,22 @@
1263
1278
  {"1024x1024": "[DALL-E 3] 1024x1024"},
1264
1279
  {"1024x1024": "[DALL-E 2] 1024x1024"},
1265
1280
  {"512x512": "[DALL-E 2] 512x512"},
1266
- {"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"}
1267
1297
  ]
1268
1298
  },
1269
1299
  "img_quality": {
@@ -1597,6 +1627,34 @@
1597
1627
  "OpenAI Docs": "https://platform.openai.com/docs/guides/tools-file-search"
1598
1628
  }
1599
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
+ },
1600
1658
  "llama.idx.list": {
1601
1659
  "section": "llama-index",
1602
1660
  "type": "dict",
@@ -2233,10 +2291,10 @@
2233
2291
  "advanced": false
2234
2292
  },
2235
2293
  "debug": {
2236
- "section": "developer",
2294
+ "section": "debug",
2237
2295
  "type": "bool",
2238
2296
  "slider": false,
2239
- "label": "settings.developer.debug",
2297
+ "label": "settings.debug.show_menu",
2240
2298
  "value": false,
2241
2299
  "min": 0,
2242
2300
  "max": 0,
@@ -2244,8 +2302,27 @@
2244
2302
  "step": 1,
2245
2303
  "advanced": false
2246
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
+ },
2247
2324
  "log.ctx": {
2248
- "section": "developer",
2325
+ "section": "debug",
2249
2326
  "type": "bool",
2250
2327
  "slider": false,
2251
2328
  "label": "Log and debug context",
@@ -2257,7 +2334,7 @@
2257
2334
  "advanced": false
2258
2335
  },
2259
2336
  "log.events": {
2260
- "section": "developer",
2337
+ "section": "debug",
2261
2338
  "type": "bool",
2262
2339
  "slider": false,
2263
2340
  "label": "Log and debug events",
@@ -2269,7 +2346,7 @@
2269
2346
  "advanced": false
2270
2347
  },
2271
2348
  "log.plugins": {
2272
- "section": "developer",
2349
+ "section": "debug",
2273
2350
  "type": "bool",
2274
2351
  "slider": false,
2275
2352
  "label": "Log plugin usage to console",
@@ -2281,7 +2358,7 @@
2281
2358
  "advanced": false
2282
2359
  },
2283
2360
  "log.dalle": {
2284
- "section": "developer",
2361
+ "section": "debug",
2285
2362
  "type": "bool",
2286
2363
  "slider": false,
2287
2364
  "label": "Log DALL-E usage to console",
@@ -2293,7 +2370,7 @@
2293
2370
  "advanced": false
2294
2371
  },
2295
2372
  "ctx.attachment.verbose": {
2296
- "section": "developer",
2373
+ "section": "debug",
2297
2374
  "type": "bool",
2298
2375
  "slider": false,
2299
2376
  "label": "Log attachments usage to console",
@@ -2305,7 +2382,7 @@
2305
2382
  "advanced": false
2306
2383
  },
2307
2384
  "agent.llama.verbose": {
2308
- "section": "developer",
2385
+ "section": "debug",
2309
2386
  "type": "bool",
2310
2387
  "slider": false,
2311
2388
  "label": "Log Agents usage to console",
@@ -2318,7 +2395,7 @@
2318
2395
  "tab": "general"
2319
2396
  },
2320
2397
  "log.llama": {
2321
- "section": "developer",
2398
+ "section": "debug",
2322
2399
  "type": "bool",
2323
2400
  "slider": false,
2324
2401
  "label": "Log LlamaIndex usage to console",
@@ -2330,7 +2407,7 @@
2330
2407
  "advanced": false
2331
2408
  },
2332
2409
  "log.assistants": {
2333
- "section": "developer",
2410
+ "section": "debug",
2334
2411
  "type": "bool",
2335
2412
  "slider": false,
2336
2413
  "label": "Log Assistants usage to console",
@@ -2340,26 +2417,7 @@
2340
2417
  "multiplier": null,
2341
2418
  "step": null,
2342
2419
  "advanced": false
2343
- },
2344
- "log.level": {
2345
- "section": "developer",
2346
- "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",
2347
- "type": "combo",
2348
- "slider": false,
2349
- "label": "Log Level",
2350
- "value": "",
2351
- "min": null,
2352
- "max": null,
2353
- "multiplier": null,
2354
- "step": null,
2355
- "advanced": false,
2356
- "keys": [
2357
- {"error": "ERROR (default)"},
2358
- {"warning": "WARNING"},
2359
- {"info": "INFO"},
2360
- {"debug": "DEBUG"}
2361
- ]
2362
- },
2420
+ },
2363
2421
  "access.voice_control": {
2364
2422
  "section": "access",
2365
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
  }