pygpt-net 2.6.36__py3-none-any.whl → 2.6.38__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 (96) hide show
  1. pygpt_net/CHANGELOG.txt +12 -0
  2. pygpt_net/__init__.py +3 -3
  3. pygpt_net/controller/chat/handler/anthropic_stream.py +164 -0
  4. pygpt_net/controller/chat/handler/google_stream.py +181 -0
  5. pygpt_net/controller/chat/handler/langchain_stream.py +24 -0
  6. pygpt_net/controller/chat/handler/llamaindex_stream.py +47 -0
  7. pygpt_net/controller/chat/handler/openai_stream.py +260 -0
  8. pygpt_net/controller/chat/handler/utils.py +210 -0
  9. pygpt_net/controller/chat/handler/worker.py +570 -0
  10. pygpt_net/controller/chat/handler/xai_stream.py +135 -0
  11. pygpt_net/controller/chat/stream.py +1 -1
  12. pygpt_net/controller/ctx/ctx.py +1 -1
  13. pygpt_net/controller/debug/debug.py +6 -6
  14. pygpt_net/controller/model/editor.py +3 -0
  15. pygpt_net/controller/model/importer.py +9 -2
  16. pygpt_net/controller/plugins/plugins.py +11 -3
  17. pygpt_net/controller/presets/presets.py +2 -2
  18. pygpt_net/core/bridge/context.py +35 -35
  19. pygpt_net/core/bridge/worker.py +40 -16
  20. pygpt_net/core/ctx/bag.py +7 -2
  21. pygpt_net/core/ctx/reply.py +17 -2
  22. pygpt_net/core/db/viewer.py +19 -34
  23. pygpt_net/core/render/plain/pid.py +12 -1
  24. pygpt_net/core/render/web/body.py +30 -39
  25. pygpt_net/core/tabs/tab.py +24 -1
  26. pygpt_net/data/config/config.json +10 -3
  27. pygpt_net/data/config/models.json +3 -3
  28. pygpt_net/data/config/settings.json +105 -0
  29. pygpt_net/data/css/style.dark.css +2 -3
  30. pygpt_net/data/css/style.light.css +2 -3
  31. pygpt_net/data/locale/locale.de.ini +3 -1
  32. pygpt_net/data/locale/locale.en.ini +19 -1
  33. pygpt_net/data/locale/locale.es.ini +3 -1
  34. pygpt_net/data/locale/locale.fr.ini +3 -1
  35. pygpt_net/data/locale/locale.it.ini +3 -1
  36. pygpt_net/data/locale/locale.pl.ini +4 -2
  37. pygpt_net/data/locale/locale.uk.ini +3 -1
  38. pygpt_net/data/locale/locale.zh.ini +3 -1
  39. pygpt_net/item/assistant.py +51 -2
  40. pygpt_net/item/attachment.py +21 -20
  41. pygpt_net/item/calendar_note.py +19 -2
  42. pygpt_net/item/ctx.py +115 -2
  43. pygpt_net/item/index.py +9 -2
  44. pygpt_net/item/mode.py +9 -6
  45. pygpt_net/item/model.py +20 -3
  46. pygpt_net/item/notepad.py +14 -2
  47. pygpt_net/item/preset.py +42 -2
  48. pygpt_net/item/prompt.py +8 -2
  49. pygpt_net/plugin/cmd_files/plugin.py +2 -2
  50. pygpt_net/provider/api/__init__.py +5 -3
  51. pygpt_net/provider/api/anthropic/__init__.py +190 -29
  52. pygpt_net/provider/api/anthropic/audio.py +30 -0
  53. pygpt_net/provider/api/anthropic/chat.py +341 -0
  54. pygpt_net/provider/api/anthropic/image.py +25 -0
  55. pygpt_net/provider/api/anthropic/tools.py +266 -0
  56. pygpt_net/provider/api/anthropic/vision.py +142 -0
  57. pygpt_net/provider/api/google/chat.py +2 -2
  58. pygpt_net/provider/api/google/realtime/client.py +2 -2
  59. pygpt_net/provider/api/google/tools.py +58 -48
  60. pygpt_net/provider/api/google/vision.py +7 -1
  61. pygpt_net/provider/api/openai/chat.py +1 -0
  62. pygpt_net/provider/api/openai/vision.py +6 -0
  63. pygpt_net/provider/api/x_ai/__init__.py +247 -0
  64. pygpt_net/provider/api/x_ai/audio.py +32 -0
  65. pygpt_net/provider/api/x_ai/chat.py +968 -0
  66. pygpt_net/provider/api/x_ai/image.py +208 -0
  67. pygpt_net/provider/api/x_ai/remote.py +262 -0
  68. pygpt_net/provider/api/x_ai/tools.py +120 -0
  69. pygpt_net/provider/api/x_ai/vision.py +119 -0
  70. pygpt_net/provider/core/attachment/json_file.py +2 -2
  71. pygpt_net/provider/core/config/patch.py +28 -0
  72. pygpt_net/provider/llms/anthropic.py +4 -2
  73. pygpt_net/tools/text_editor/tool.py +4 -1
  74. pygpt_net/tools/text_editor/ui/dialogs.py +1 -1
  75. pygpt_net/ui/base/config_dialog.py +5 -11
  76. pygpt_net/ui/dialog/db.py +177 -59
  77. pygpt_net/ui/dialog/dictionary.py +57 -59
  78. pygpt_net/ui/dialog/editor.py +3 -2
  79. pygpt_net/ui/dialog/image.py +1 -1
  80. pygpt_net/ui/dialog/logger.py +3 -2
  81. pygpt_net/ui/dialog/models.py +16 -16
  82. pygpt_net/ui/dialog/plugins.py +63 -60
  83. pygpt_net/ui/layout/ctx/ctx_list.py +3 -4
  84. pygpt_net/ui/layout/toolbox/__init__.py +2 -2
  85. pygpt_net/ui/layout/toolbox/assistants.py +8 -9
  86. pygpt_net/ui/layout/toolbox/presets.py +2 -2
  87. pygpt_net/ui/main.py +9 -4
  88. pygpt_net/ui/widget/element/labels.py +20 -4
  89. pygpt_net/ui/widget/textarea/editor.py +0 -4
  90. pygpt_net/ui/widget/textarea/web.py +1 -1
  91. {pygpt_net-2.6.36.dist-info → pygpt_net-2.6.38.dist-info}/METADATA +18 -6
  92. {pygpt_net-2.6.36.dist-info → pygpt_net-2.6.38.dist-info}/RECORD +95 -76
  93. pygpt_net/controller/chat/handler/stream_worker.py +0 -1136
  94. {pygpt_net-2.6.36.dist-info → pygpt_net-2.6.38.dist-info}/LICENSE +0 -0
  95. {pygpt_net-2.6.36.dist-info → pygpt_net-2.6.38.dist-info}/WHEEL +0 -0
  96. {pygpt_net-2.6.36.dist-info → pygpt_net-2.6.38.dist-info}/entry_points.txt +0 -0
@@ -46,10 +46,12 @@ class Body:
46
46
  <script type="text/javascript" src="qrc:///js/highlight.min.js"></script>
47
47
  <script type="text/javascript" src="qrc:///js/katex.min.js"></script>
48
48
  <script>
49
- hljs.configure({
50
- ignoreUnescapedHTML: true,
51
- });
52
- const DEBUG_MODE = false;
49
+ if (hljs) {
50
+ hljs.configure({
51
+ ignoreUnescapedHTML: true,
52
+ });
53
+ }
54
+ let DEBUG_MODE = false; // allow dynamic enabling via debug console
53
55
  let bridgeConnected = false;
54
56
  let streamHandler;
55
57
  let nodeHandler;
@@ -1011,11 +1013,7 @@ class Body:
1011
1013
  // - Otherwise hide the FAB to prevent overlap and noise.
1012
1014
  let action = 'none'; // 'up' | 'down' | 'none'
1013
1015
  if (atBottom) {
1014
- if (loaderHidden) {
1015
- action = 'up';
1016
- } else {
1017
- action = 'none';
1018
- }
1016
+ action = 'up';
1019
1017
  } else {
1020
1018
  if (dist >= SHOW_DOWN_THRESHOLD_PX) {
1021
1019
  action = 'down';
@@ -1351,6 +1349,27 @@ class Body:
1351
1349
  }
1352
1350
  """
1353
1351
 
1352
+ _PERFORMANCE_CSS = """
1353
+ #container, #_nodes_, #_append_output_, #_append_output_before_ {
1354
+ contain: layout paint;
1355
+ overscroll-behavior: contain;
1356
+ backface-visibility: hidden;
1357
+ transform: translateZ(0);
1358
+ }
1359
+ .msg-box {
1360
+ contain: layout paint style;
1361
+ contain-intrinsic-size: 1px 600px;
1362
+ box-shadow: none !important;
1363
+ filter: none !important;
1364
+ }
1365
+ .msg-box:not(:last-child) {
1366
+ content-visibility: auto;
1367
+ }
1368
+ .msg {
1369
+ text-rendering: optimizeSpeed;
1370
+ }
1371
+ """
1372
+
1354
1373
  def __init__(self, window=None):
1355
1374
  """
1356
1375
  HTML Body
@@ -1398,42 +1417,14 @@ class Body:
1398
1417
  cfg = self.window.core.config
1399
1418
  fonts_path = os.path.join(cfg.get_app_path(), "data", "fonts").replace("\\", "/")
1400
1419
  syntax_style = self.window.core.config.get("render.code_syntax") or "default"
1401
- perf_css = """
1402
- #container, #_nodes_, #_append_output_, #_append_output_before_ {
1403
- contain: layout paint;
1404
- overscroll-behavior: contain;
1405
- }
1406
- .msg-box {
1407
- contain: layout paint style;
1408
- contain-intrinsic-size: 1px 600px;
1409
- }
1410
- .msg-box:not(:last-child) {
1411
- content-visibility: auto;
1412
- }
1413
- #container,
1414
- #_nodes_,
1415
- #_append_output_,
1416
- #_append_output_before_ {
1417
- backface-visibility: hidden;
1418
- transform: translateZ(0);
1419
- }
1420
- .msg-box {
1421
- box-shadow: none !important;
1422
- filter: none !important;
1423
- }
1424
- .msg {
1425
- text-rendering: optimizeSpeed;
1426
- }
1427
- """
1428
-
1429
1420
  theme_css = self.window.controller.theme.markdown.get_web_css().replace('%fonts%', fonts_path)
1430
1421
  parts = [
1431
1422
  self._SPINNER,
1423
+ self._SCROLL_FAB_CSS,
1432
1424
  theme_css,
1433
1425
  "pre { color: #fff; }" if syntax_style in self._syntax_dark else "pre { color: #000; }",
1434
1426
  self.highlight.get_style_defs(),
1435
- perf_css,
1436
- self._SCROLL_FAB_CSS, # keep FAB styles last to ensure precedence
1427
+ self._PERFORMANCE_CSS # performance improvements
1437
1428
  ]
1438
1429
  return "\n".join(parts)
1439
1430
 
@@ -6,13 +6,15 @@
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.05 18:00:00 #
10
10
  # ================================================== #
11
11
 
12
12
  from datetime import datetime
13
13
  from typing import Dict, Any, Optional
14
+ from dataclasses import dataclass, field
14
15
 
15
16
 
17
+ @dataclass(slots=True)
16
18
  class Tab:
17
19
 
18
20
  # types
@@ -24,6 +26,27 @@ class Tab:
24
26
  TAB_TOOL_CALENDAR = 4
25
27
  TAB_TOOL = 100
26
28
 
29
+ uuid: Optional[str] = None
30
+ pid: Optional[int] = None
31
+ idx: Optional[int] = 0
32
+ type: Optional[int] = TAB_CHAT
33
+ title: Optional[str] = ""
34
+ icon: Optional[str] = None
35
+ tooltip: Optional[str] = None
36
+ data_id: Optional[str] = None
37
+ new_idx: Optional[int] = None
38
+ custom_name: Optional[bool] = False
39
+ child: Optional[Any] = None
40
+ parent: Optional[Any] = None
41
+ column_idx: Optional[int] = 0
42
+ tool_id: Optional[str] = None
43
+ on_delete: Optional[callable] = None
44
+
45
+ loaded: bool = False
46
+ refs: list = field(default_factory=list)
47
+ created_at: datetime = field(default_factory=datetime.now)
48
+ updated_at: datetime = field(default_factory=datetime.now)
49
+
27
50
  def __init__(
28
51
  self,
29
52
  uuid: Optional[str] = None,
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "__meta__": {
3
- "version": "2.6.36",
4
- "app.version": "2.6.36",
5
- "updated_at": "2025-09-04T00:00:00"
3
+ "version": "2.6.38",
4
+ "app.version": "2.6.38",
5
+ "updated_at": "2025-09-05T00:00:00"
6
6
  },
7
7
  "access.audio.event.speech": false,
8
8
  "access.audio.event.speech.disabled": [],
@@ -88,11 +88,13 @@
88
88
  "api_key_perplexity": "",
89
89
  "api_key_voyage": "",
90
90
  "api_key_xai": "",
91
+ "api_native_anthropic": true,
91
92
  "api_native_google": true,
92
93
  "api_native_google.app_credentials": "",
93
94
  "api_native_google.cloud_location": "us-central1",
94
95
  "api_native_google.cloud_project": "",
95
96
  "api_native_google.use_vertex": false,
97
+ "api_native_xai": true,
96
98
  "api_proxy": "",
97
99
  "api_use_responses": true,
98
100
  "api_use_responses_llama": false,
@@ -415,6 +417,7 @@
415
417
  "render.engine": "web",
416
418
  "render.open_gl": false,
417
419
  "render.plain": false,
420
+ "remote_tools.anthropic.web_search": true,
418
421
  "remote_tools.code_interpreter": false,
419
422
  "remote_tools.computer_use.env": "",
420
423
  "remote_tools.file_search": false,
@@ -426,6 +429,10 @@
426
429
  "remote_tools.mcp": false,
427
430
  "remote_tools.mcp.args": "{\n \"type\": \"mcp\",\n \"server_label\": \"deepwiki\",\n \"server_url\": \"https://mcp.deepwiki.com/mcp\",\n \"require_approval\": \"never\",\n \"allowed_tools\": [\"ask_question\"]\n}",
428
431
  "remote_tools.web_search": true,
432
+ "remote_tools.xai.mode": "auto",
433
+ "remote_tools.xai.sources.web": true,
434
+ "remote_tools.xai.sources.x": true,
435
+ "remote_tools.xai.sources.news": false,
429
436
  "send_clear": true,
430
437
  "send_mode": 2,
431
438
  "store_history": true,
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "__meta__": {
3
- "version": "2.6.36",
4
- "app.version": "2.6.36",
5
- "updated_at": "2025-09-04T08:03:34"
3
+ "version": "2.6.38",
4
+ "app.version": "2.6.38",
5
+ "updated_at": "2025-09-05T08:03:34"
6
6
  },
7
7
  "items": {
8
8
  "SpeakLeash/bielik-11b-v2.3-instruct:Q4_K_M": {
@@ -242,6 +242,21 @@
242
242
  "advanced": false,
243
243
  "tab": "Anthropic"
244
244
  },
245
+ "api_native_anthropic": {
246
+ "section": "api_keys",
247
+ "type": "bool",
248
+ "slider": false,
249
+ "label": "settings.api_native_anthropic",
250
+ "description": "settings.api_native_anthropic.desc",
251
+ "value": true,
252
+ "min": null,
253
+ "max": null,
254
+ "multiplier": null,
255
+ "step": null,
256
+ "secret": false,
257
+ "advanced": false,
258
+ "tab": "Anthropic"
259
+ },
245
260
  "api_key_hugging_face": {
246
261
  "section": "api_keys",
247
262
  "type": "text",
@@ -344,6 +359,21 @@
344
359
  "advanced": false,
345
360
  "tab": "xAI"
346
361
  },
362
+ "api_native_xai": {
363
+ "section": "api_keys",
364
+ "type": "bool",
365
+ "slider": false,
366
+ "label": "settings.api_native_xai",
367
+ "description": "settings.api_native_xai.desc",
368
+ "value": true,
369
+ "min": null,
370
+ "max": null,
371
+ "multiplier": null,
372
+ "step": null,
373
+ "secret": false,
374
+ "advanced": false,
375
+ "tab": "xAI"
376
+ },
347
377
  "api_azure_version": {
348
378
  "section": "api_keys",
349
379
  "type": "text",
@@ -1886,6 +1916,81 @@
1886
1916
  "advanced": false,
1887
1917
  "tab": "Google"
1888
1918
  },
1919
+ "remote_tools.anthropic.web_search": {
1920
+ "section": "remote_tools",
1921
+ "type": "bool",
1922
+ "slider": false,
1923
+ "label": "settings.remote_tools.anthropic.web_search",
1924
+ "description": "settings.remote_tools.anthropic.web_search.desc",
1925
+ "value": true,
1926
+ "min": null,
1927
+ "max": null,
1928
+ "multiplier": null,
1929
+ "step": null,
1930
+ "advanced": false,
1931
+ "tab": "Anthropic"
1932
+ },
1933
+ "remote_tools.xai.mode": {
1934
+ "section": "remote_tools",
1935
+ "type": "combo",
1936
+ "slider": false,
1937
+ "label": "settings.remote_tools.xai.mode",
1938
+ "description": "settings.remote_tools.xai.mode.desc",
1939
+ "value": "auto",
1940
+ "keys": [
1941
+ {"auto": "auto"},
1942
+ {"on": "on"},
1943
+ {"off": "off"}
1944
+ ],
1945
+ "min": null,
1946
+ "max": null,
1947
+ "multiplier": null,
1948
+ "step": null,
1949
+ "advanced": false,
1950
+ "tab": "xAI"
1951
+ },
1952
+ "remote_tools.xai.sources.web": {
1953
+ "section": "remote_tools",
1954
+ "type": "bool",
1955
+ "slider": false,
1956
+ "label": "settings.remote_tools.xai.sources.web",
1957
+ "description": "settings.remote_tools.xai.sources.web.desc",
1958
+ "value": true,
1959
+ "min": null,
1960
+ "max": null,
1961
+ "multiplier": null,
1962
+ "step": null,
1963
+ "advanced": false,
1964
+ "tab": "xAI"
1965
+ },
1966
+ "remote_tools.xai.sources.x": {
1967
+ "section": "remote_tools",
1968
+ "type": "bool",
1969
+ "slider": false,
1970
+ "label": "settings.remote_tools.xai.sources.x",
1971
+ "description": "settings.remote_tools.xai.sources.x.desc",
1972
+ "value": true,
1973
+ "min": null,
1974
+ "max": null,
1975
+ "multiplier": null,
1976
+ "step": null,
1977
+ "advanced": false,
1978
+ "tab": "xAI"
1979
+ },
1980
+ "remote_tools.xai.sources.news": {
1981
+ "section": "remote_tools",
1982
+ "type": "bool",
1983
+ "slider": false,
1984
+ "label": "settings.remote_tools.xai.sources.news",
1985
+ "description": "settings.remote_tools.xai.sources.news.desc",
1986
+ "value": true,
1987
+ "min": null,
1988
+ "max": null,
1989
+ "multiplier": null,
1990
+ "step": null,
1991
+ "advanced": false,
1992
+ "tab": "xAI"
1993
+ },
1889
1994
  "llama.idx.list": {
1890
1995
  "section": "llama-index",
1891
1996
  "type": "dict",
@@ -67,9 +67,8 @@ QHeaderView::section {{
67
67
  .label-title {{
68
68
  font-weight: bold;
69
69
  }}
70
- .label-help {{
71
- color: #999;
72
- }}
70
+ .label-help,
71
+ .label-desc,
73
72
  .label-chat-status {{
74
73
  color: #999;
75
74
  }}
@@ -181,9 +181,8 @@ QPushButton {{
181
181
  .label-title {{
182
182
  font-weight: bold;
183
183
  }}
184
- .label-help {{
185
- color: #5d5d5d;
186
- }}
184
+ .label-help,
185
+ .label-desc,
187
186
  .label-chat-status {{
188
187
  color: #5d5d5d;
189
188
  }}
@@ -865,6 +865,7 @@ model.default = Standard im Modus
865
865
  model.extra = Zusätzliche Parameter (JSON)
866
866
  model.extra.desc = Ein JSON-Objekt, das zusätzliche Parameter für das Modell enthält (wie z.B. den intellektuellen Aufwand usw.).
867
867
  model.id = Modell-ID
868
+ model.id.desc = Geben Sie die genaue Modell-ID ein, die vom Anbieter bereitgestellt wird
868
869
  model.input = Eingabe
869
870
  mode.llama_index = Chat mit Dateien
870
871
  mode.llama_index.tooltip = Chat mit zusätzlichem Kontext von LlamaIndex
@@ -888,11 +889,12 @@ model.mode = Modus(e)
888
889
  model.mode.desc = Verfügbare Modi: Chat, Llama_Index, Audio, Research, Completion, Bild, Vision, Assistent, Agent_Llama, Agent, Experte
889
890
  model.multimodal = Multimodal
890
891
  model.name = Name
892
+ model.name.desc = Anzeigename in der Liste, kann beliebig sein
891
893
  model.openai = OpenAI API
892
894
  model.openai.desc = Unterstützt OpenAI API (oder kompatibel)
893
895
  model.output = Ausgabe
894
896
  model.provider = Anbieter
895
- model.provider.desc = LLM-Anbieter
897
+ model.provider.desc = Wählen Sie den Anbieter für das Modell
896
898
  models.importer.all = Alle anzeigen
897
899
  models.importer.available.label = Verfügbare Modelle
898
900
  models.importer.current.default = Bitte wählen Sie einen Anbieter aus der Liste.
@@ -868,6 +868,7 @@ model.default = Default in mode
868
868
  model.extra = Extra parameters (JSON)
869
869
  model.extra.desc = A JSON object containing additional parameters for the model (such as reasoning effort, etc.).
870
870
  model.id = Model ID
871
+ model.id.desc = Enter the exact model ID provided by the provider
871
872
  model.input = Input
872
873
  mode.llama_index = Chat with Files
873
874
  mode.llama_index.tooltip = Chat with additional context provided by LlamaIndex
@@ -891,11 +892,12 @@ model.mode = Mode(s)
891
892
  model.mode.desc = Available modes: chat, llama_index, audio, research, completion, img, vision, assistant, agent_llama, agent, expert
892
893
  model.multimodal = Multimodal
893
894
  model.name = Name
895
+ model.name.desc = Display name on the list, can be anything
894
896
  model.openai = OpenAI API
895
897
  model.openai.desc = Supports OpenAI API (or compatible)
896
898
  model.output = Output
897
899
  model.provider = Provider
898
- model.provider.desc = LLM provider
900
+ model.provider.desc = Choose the provider for the model
899
901
  models.importer.all = Show all
900
902
  models.importer.available.label = Available models
901
903
  models.importer.current.default = Please select a provider from the list.
@@ -1124,6 +1126,8 @@ settings.api_key.voyage = VoyageAI API KEY
1124
1126
  settings.api_key.voyage.desc = Required for the Voyage API - embeddings for Anthropic and DeepSeek API.
1125
1127
  settings.api_key.xai = xAI API KEY
1126
1128
  settings.api_key.xai.desc = Required for the xAI API and Grok models.
1129
+ settings.api_native_anthropic = Use native API SDK
1130
+ settings.api_native_anthropic.desc = Use native Anthropic SDK instead of compatible OpenAI client
1127
1131
  settings.api_native_google = Use native API SDK
1128
1132
  settings.api_native_google.app_credentials = Google Application credentials (path)
1129
1133
  settings.api_native_google.app_credentials.desc = Absolute path to credentials.json, e.g. /home/user/credentials.json
@@ -1134,6 +1138,8 @@ settings.api_native_google.cloud_project.desc = Provide your Google Cloud projec
1134
1138
  settings.api_native_google.desc = Use native GenAI SDK instead of compatible OpenAI client
1135
1139
  settings.api_native_google.use_vertex = Use VertexAI
1136
1140
  settings.api_native_google.use_vertex.desc = Enable to use VertexAI in Google GenAI SDK
1141
+ settings.api_native_xai = Use native API SDK
1142
+ settings.api_native_xai.desc = Use native xAI SDK instead of compatible OpenAI client
1137
1143
  settings.api_proxy = Proxy address
1138
1144
  settings.api_proxy.desc = Optional, proxy for OpenAI API, e.g. http://proxy.example.com or socks5://user:pass@host:port
1139
1145
  settings.api_use_responses = Use Responses API in Chat mode
@@ -1339,6 +1345,8 @@ settings.prompt.img = Image generation
1339
1345
  settings.prompt.img.desc = Prompt for generating prompts for image model (if raw-mode is disabled). Image / Video modes only.
1340
1346
  settings.prompt.video = Video generation
1341
1347
  settings.prompt.video.desc = Prompt for generating prompts for video model (if raw-mode is disabled). Image / Videos mode only.
1348
+ settings.remote_tools.anthropic.web_search = Web Search
1349
+ settings.remote_tools.anthropic.web_search.desc = Enable Web Search remote tool.
1342
1350
  settings.remote_tools.code_interpreter = Code Interpreter
1343
1351
  settings.remote_tools.code_interpreter.desc = Enable `code_interpreter` remote tool - Responses API only.
1344
1352
  settings.remote_tools.file_search = File search
@@ -1359,6 +1367,14 @@ settings.remote_tools.mcp.args.desc = Configuration in JSON format (will be used
1359
1367
  settings.remote_tools.mcp.desc = Enable `mcp` remote tool - Responses API only.
1360
1368
  settings.remote_tools.web_search = Web Search
1361
1369
  settings.remote_tools.web_search.desc = Enable `web_search` remote tool - Responses API only.
1370
+ settings.remote_tools.xai.mode = Live Search mode
1371
+ settings.remote_tools.xai.mode.desc = Select mode: auto|on|off
1372
+ settings.remote_tools.xai.sources.news = Source: News
1373
+ settings.remote_tools.xai.sources.news.desc = Enable News in Live Search
1374
+ settings.remote_tools.xai.sources.web = Source: Web
1375
+ settings.remote_tools.xai.sources.web.desc = Enable Web in Live Search
1376
+ settings.remote_tools.xai.sources.x = Source: X / Twitter
1377
+ settings.remote_tools.xai.sources.x.desc = Enable X / Twitter in Live Search
1362
1378
  settings.render.code_syntax = Code syntax highlight
1363
1379
  settings.render.engine = Rendering engine
1364
1380
  settings.render.open_gl = OpenGL hardware acceleration
@@ -1405,8 +1421,10 @@ settings.section.model = Models
1405
1421
  settings.section.personalize = Personalize
1406
1422
  settings.section.prompts = Prompts
1407
1423
  settings.section.remote_tools = Remote tools
1424
+ settings.section.remote_tools.Anthropic = Anthropic
1408
1425
  settings.section.remote_tools.google = Google
1409
1426
  settings.section.remote_tools.openai = OpenAI
1427
+ settings.section.remote_tools.xAI = xAI
1410
1428
  settings.section.tab.general = General
1411
1429
  settings.section.updates = Updates
1412
1430
  settings.section.vision = Vision and camera
@@ -866,6 +866,7 @@ model.default = Predeterminado en modo
866
866
  model.extra = Parámetros adicionales (JSON)
867
867
  model.extra.desc = Un objeto JSON que contiene parámetros adicionales para el modelo (como el esfuerzo de razonamiento, etc.).
868
868
  model.id = ID del modelo
869
+ model.id.desc = Introduzca el ID del modelo exacto proporcionado por el proveedor
869
870
  model.input = Entrada
870
871
  mode.llama_index = Chat con archivos
871
872
  mode.llama_index.tooltip = Chatear con contexto adicional proporcionado por LlamaIndex
@@ -889,11 +890,12 @@ model.mode = Modo(s)
889
890
  model.mode.desc = Modos disponibles: chat, llama_index, audio, research, completion, img, vision, assistant, agent_llama, agent, expert
890
891
  model.multimodal = Multimodal
891
892
  model.name = Nombre
893
+ model.name.desc = Nombre para mostrar en la lista, puede ser cualquiera
892
894
  model.openai = API de OpenAI
893
895
  model.openai.desc = Soporta OpenAI API (o compatible)
894
896
  model.output = Salida
895
897
  model.provider = Proveedor
896
- model.provider.desc = Proveedor LLM
898
+ model.provider.desc = Elija el proveedor para el modelo
897
899
  models.importer.all = Mostrar todo
898
900
  models.importer.available.label = Modelos disponibles
899
901
  models.importer.current.default = Por favor, seleccione un proveedor de la lista.
@@ -865,6 +865,7 @@ model.default = Par défaut dans le mode
865
865
  model.extra = Paramètres supplémentaires (JSON)
866
866
  model.extra.desc = Un objet JSON contenant des paramètres supplémentaires pour le modèle (tel que l'effort de raisonnement, etc.).
867
867
  model.id = ID du modèle
868
+ model.id.desc = Entrez l'ID de modèle exact fourni par le fournisseur
868
869
  model.input = Entrée
869
870
  mode.llama_index = Chat avec fichiers
870
871
  mode.llama_index.tooltip = Discussion avec un contexte supplémentaire fourni par LlamaIndex
@@ -888,11 +889,12 @@ model.mode = Mode(s)
888
889
  model.mode.desc = Modes disponibles : chat, llama_index, audio, recherche, complétion, img, vision, assistant, agent_llama, agent, expert
889
890
  model.multimodal = Multimodal
890
891
  model.name = Nom
892
+ model.name.desc = Nom d'affichage dans la liste, peut être n'importe quoi
891
893
  model.openai = API OpenAI
892
894
  model.openai.desc = Supporte l'API OpenAI (ou compatible)
893
895
  model.output = Sortie
894
896
  model.provider = Fournisseur
895
- model.provider.desc = Fournisseur LLM
897
+ model.provider.desc = Choisissez le fournisseur pour le modèle
896
898
  models.importer.all = Tout afficher
897
899
  models.importer.available.label = Modèles disponibles
898
900
  models.importer.current.default = Veuillez sélectionner un fournisseur dans la liste.
@@ -865,6 +865,7 @@ model.default = Predefinito in modalità
865
865
  model.extra = Parametri aggiuntivi (JSON)
866
866
  model.extra.desc = Un oggetto JSON contenente parametri aggiuntivi per il modello (come lo sforzo di ragionamento, ecc.).
867
867
  model.id = ID modello
868
+ model.id.desc = Inserisci l'ID del modello esatto fornito dal fornitore
868
869
  model.input = Ingresso
869
870
  mode.llama_index = Chat con file
870
871
  mode.llama_index.tooltip = Chattare con contesto aggiuntivo fornito da LlamaIndex
@@ -888,11 +889,12 @@ model.mode = Modalità disponibili
888
889
  model.mode.desc = Modalità disponibili: chat, llama_index, audio, research, completion, img, vision, assistant, agent_llama, agent, expert
889
890
  model.multimodal = Multimodale
890
891
  model.name = Nome
892
+ model.name.desc = Nome visualizzato nell'elenco, può essere qualsiasi cosa
891
893
  model.openai = OpenAI API
892
894
  model.openai.desc = Supporta l'API OpenAI (o compatibile)
893
895
  model.output = Uscita
894
896
  model.provider = Fornitore
895
- model.provider.desc = Fornitore LLM
897
+ model.provider.desc = Scegli il fornitore per il modello
896
898
  models.importer.all = Mostra tutto
897
899
  models.importer.available.label = Modelli disponibili
898
900
  models.importer.current.default = Seleziona un fornitore dall'elenco.
@@ -869,6 +869,7 @@ model.default = Domyślnie w trybie
869
869
  model.extra = Dodatkowe parametry (JSON)
870
870
  model.extra.desc = Obiekt JSON zawierający dodatkowe parametry dla modelu (takie jak wysiłek intelektualny itp.).
871
871
  model.id = ID modelu
872
+ model.id.desc = Wprowadź dokładny identyfikator modelu podany przez dostawcę
872
873
  model.input = Wejście
873
874
  mode.llama_index = Czat z plikami
874
875
  mode.llama_index.tooltip = Czat z dodatkowym kontekstem dostarczonym przez LlamaIndex
@@ -892,11 +893,12 @@ model.mode = Tryb(y)
892
893
  model.mode.desc = Dostępne tryby: chat, llama_index, audio, research, completion, img, vision, assistant, agent_llama, agent, expert
893
894
  model.multimodal = Multimodalny
894
895
  model.name = Nazwa
896
+ model.name.desc = Nazwa wyświetlana na liście, może być dowolna
895
897
  model.openai = OpenAI API
896
898
  model.openai.desc = Wspiera OpenAI API (lub kompatybilny)
897
899
  model.output = Wyjście
898
900
  model.provider = Dostawca
899
- model.provider.desc = Dostawca LLM
901
+ model.provider.desc = Wybierz dostawcę dla modelu
900
902
  models.importer.all = Pokaż wszystkie
901
903
  models.importer.available.label = Dostępne modele
902
904
  models.importer.current.default = Wybierz dostawcę z listy.
@@ -965,7 +967,7 @@ painter.btn.camera.capture = Z kamery
965
967
  painter.btn.capture = Użyj obrazu
966
968
  painter.btn.clear = Wyczyść
967
969
  painter.btn.crop = Przytnij
968
- painter.btn.fit = Dopasuj
970
+ painter.btn.fit = Dopasuj
969
971
  painter.capture.manual.captured.success = Image captured:
970
972
  painter.capture.name.prefix = Drawing from
971
973
  painter.mode.erase = Gumka
@@ -865,6 +865,7 @@ model.default = За замовчуванням у режимі
865
865
  model.extra = Додаткові параметри (JSON)
866
866
  model.extra.desc = Об'єкт JSON, що містить додаткові параметри для моделі (такі як розумові зусилля тощо).
867
867
  model.id = ID моделі
868
+ model.id.desc = Введіть точний ідентифікатор моделі, наданий постачальником
868
869
  model.input = Вхід
869
870
  mode.llama_index = Чат з файлами
870
871
  mode.llama_index.tooltip = Чат з додатковим контекстом, наданим LlamaIndex
@@ -888,11 +889,12 @@ model.mode = Режим(и)
888
889
  model.mode.desc = Доступні режими: chat, llama_index, audio, research, completion, img, vision, assistant, agent_llama, agent, expert
889
890
  model.multimodal = Мультимодальний
890
891
  model.name = Назва
892
+ model.name.desc = Відображуване ім'я в списку, може бути будь-яким
891
893
  model.openai = OpenAI API
892
894
  model.openai.desc = Підтримує OpenAI API (або сумісний)
893
895
  model.output = Вихід
894
896
  model.provider = Постачальник
895
- model.provider.desc = Постачальник LLM
897
+ model.provider.desc = Виберіть постачальника для моделі
896
898
  models.importer.all = Показати всі
897
899
  models.importer.available.label = Доступні моделі
898
900
  models.importer.current.default = Виберіть постачальника зі списку.
@@ -865,6 +865,7 @@ model.default = 預設模式
865
865
  model.extra = 额外参数 (JSON)
866
866
  model.extra.desc = 包含模型附加参数的JSON对象(例如推理努力等)。
867
867
  model.id = 模型ID
868
+ model.id.desc = 输入提供商提供的精确模型ID
868
869
  model.input = 输入
869
870
  mode.llama_index = 文件聊天模式
870
871
  mode.llama_index.tooltip = 使用LlamaIndex提供的額外上下文進行聊天
@@ -888,11 +889,12 @@ model.mode = 模式
888
889
  model.mode.desc = 可用模式:聊天、完成、圖像、視覺、助手、langchain、llama_index、代理
889
890
  model.multimodal = 多模态
890
891
  model.name = 名稱
892
+ model.name.desc = 列表上显示的名称,可以是任何东西
891
893
  model.openai = OpenAI API
892
894
  model.openai.desc = 支持 OpenAI API (或兼容)
893
895
  model.output = 输出
894
896
  model.provider = 提供者
895
- model.provider.desc = LLM 提供者
897
+ model.provider.desc = 选择模型的提供商
896
898
  models.importer.all = 显示全部
897
899
  models.importer.available.label = 可用模型
898
900
  models.importer.current.default = 请从列表中选择一个提供商。