pygpt-net 2.6.20__py3-none-any.whl → 2.6.21__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 (89) hide show
  1. pygpt_net/CHANGELOG.txt +9 -0
  2. pygpt_net/__init__.py +3 -3
  3. pygpt_net/controller/agent/agent.py +130 -2
  4. pygpt_net/controller/agent/experts.py +93 -96
  5. pygpt_net/controller/agent/llama.py +2 -1
  6. pygpt_net/controller/assistant/assistant.py +18 -1
  7. pygpt_net/controller/attachment/attachment.py +17 -1
  8. pygpt_net/controller/camera/camera.py +15 -7
  9. pygpt_net/controller/chat/chat.py +2 -2
  10. pygpt_net/controller/chat/common.py +50 -33
  11. pygpt_net/controller/chat/image.py +67 -77
  12. pygpt_net/controller/chat/input.py +94 -166
  13. pygpt_net/controller/chat/output.py +83 -140
  14. pygpt_net/controller/chat/response.py +83 -102
  15. pygpt_net/controller/chat/text.py +116 -149
  16. pygpt_net/controller/ctx/common.py +2 -1
  17. pygpt_net/controller/ctx/ctx.py +86 -6
  18. pygpt_net/controller/files/files.py +13 -1
  19. pygpt_net/controller/idx/idx.py +26 -2
  20. pygpt_net/controller/kernel/reply.py +53 -66
  21. pygpt_net/controller/kernel/stack.py +16 -16
  22. pygpt_net/controller/model/importer.py +2 -1
  23. pygpt_net/controller/model/model.py +62 -3
  24. pygpt_net/controller/settings/editor.py +4 -4
  25. pygpt_net/controller/ui/ui.py +16 -2
  26. pygpt_net/core/agents/observer/evaluation.py +3 -3
  27. pygpt_net/core/agents/provider.py +25 -3
  28. pygpt_net/core/agents/runner.py +4 -1
  29. pygpt_net/core/agents/runners/llama_workflow.py +19 -7
  30. pygpt_net/core/agents/runners/loop.py +3 -1
  31. pygpt_net/core/agents/runners/openai_workflow.py +17 -3
  32. pygpt_net/core/agents/tools.py +4 -1
  33. pygpt_net/core/bridge/context.py +34 -37
  34. pygpt_net/core/ctx/ctx.py +1 -1
  35. pygpt_net/core/db/database.py +2 -2
  36. pygpt_net/core/debug/debug.py +12 -1
  37. pygpt_net/core/dispatcher/dispatcher.py +24 -1
  38. pygpt_net/core/events/app.py +7 -7
  39. pygpt_net/core/events/control.py +26 -26
  40. pygpt_net/core/events/event.py +6 -3
  41. pygpt_net/core/events/kernel.py +2 -2
  42. pygpt_net/core/events/render.py +13 -13
  43. pygpt_net/core/experts/experts.py +76 -82
  44. pygpt_net/core/experts/worker.py +12 -12
  45. pygpt_net/core/models/models.py +5 -1
  46. pygpt_net/core/models/ollama.py +14 -5
  47. pygpt_net/core/render/web/helpers.py +2 -2
  48. pygpt_net/core/render/web/renderer.py +4 -4
  49. pygpt_net/core/types/__init__.py +2 -1
  50. pygpt_net/core/types/agent.py +4 -4
  51. pygpt_net/core/types/base.py +19 -0
  52. pygpt_net/core/types/console.py +6 -6
  53. pygpt_net/core/types/mode.py +8 -8
  54. pygpt_net/core/types/multimodal.py +3 -3
  55. pygpt_net/core/types/openai.py +2 -1
  56. pygpt_net/data/config/config.json +4 -4
  57. pygpt_net/data/config/models.json +19 -3
  58. pygpt_net/data/config/settings.json +14 -14
  59. pygpt_net/data/locale/locale.en.ini +2 -2
  60. pygpt_net/item/ctx.py +256 -240
  61. pygpt_net/item/model.py +59 -116
  62. pygpt_net/item/preset.py +122 -105
  63. pygpt_net/provider/agents/llama_index/workflow/planner.py +3 -3
  64. pygpt_net/provider/agents/openai/agent.py +4 -12
  65. pygpt_net/provider/agents/openai/agent_b2b.py +10 -15
  66. pygpt_net/provider/agents/openai/agent_planner.py +4 -4
  67. pygpt_net/provider/agents/openai/agent_with_experts.py +3 -7
  68. pygpt_net/provider/agents/openai/agent_with_experts_feedback.py +4 -8
  69. pygpt_net/provider/agents/openai/agent_with_feedback.py +4 -8
  70. pygpt_net/provider/agents/openai/bot_researcher.py +2 -18
  71. pygpt_net/provider/agents/openai/bots/__init__.py +0 -0
  72. pygpt_net/provider/agents/openai/bots/research_bot/__init__.py +0 -0
  73. pygpt_net/provider/agents/openai/bots/research_bot/agents/__init__.py +0 -0
  74. pygpt_net/provider/agents/openai/bots/research_bot/agents/planner_agent.py +1 -1
  75. pygpt_net/provider/agents/openai/bots/research_bot/agents/search_agent.py +1 -0
  76. pygpt_net/provider/agents/openai/bots/research_bot/agents/writer_agent.py +1 -1
  77. pygpt_net/provider/agents/openai/bots/research_bot/manager.py +1 -10
  78. pygpt_net/provider/agents/openai/evolve.py +5 -9
  79. pygpt_net/provider/agents/openai/supervisor.py +4 -8
  80. pygpt_net/provider/core/config/patch.py +10 -3
  81. pygpt_net/provider/core/ctx/db_sqlite/utils.py +43 -43
  82. pygpt_net/provider/core/model/patch.py +11 -1
  83. pygpt_net/provider/core/preset/json_file.py +47 -49
  84. pygpt_net/provider/gpt/agents/experts.py +2 -2
  85. {pygpt_net-2.6.20.dist-info → pygpt_net-2.6.21.dist-info}/METADATA +13 -6
  86. {pygpt_net-2.6.20.dist-info → pygpt_net-2.6.21.dist-info}/RECORD +86 -85
  87. {pygpt_net-2.6.20.dist-info → pygpt_net-2.6.21.dist-info}/LICENSE +0 -0
  88. {pygpt_net-2.6.20.dist-info → pygpt_net-2.6.21.dist-info}/WHEEL +0 -0
  89. {pygpt_net-2.6.20.dist-info → pygpt_net-2.6.21.dist-info}/entry_points.txt +0 -0
@@ -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.01 03:00:00 #
9
+ # Updated Date: 2025.08.23 15:00:00 #
10
10
  # ================================================== #
11
11
 
12
12
  import json
@@ -226,75 +226,73 @@ class JsonFileProvider(BaseProvider):
226
226
  :param data: serialized item
227
227
  :param item: item to deserialize
228
228
  """
229
- if MODE_CHAT in data:
230
- item.chat = data[MODE_CHAT]
231
- if MODE_COMPLETION in data:
232
- item.completion = data[MODE_COMPLETION]
233
- if MODE_IMAGE in data:
234
- item.img = data[MODE_IMAGE]
235
- if MODE_VISION in data:
236
- item.vision = data[MODE_VISION]
237
- # if MODE_LANGCHAIN in data:
238
- # item.langchain = data[MODE_LANGCHAIN]
239
- if MODE_ASSISTANT in data:
240
- item.assistant = data[MODE_ASSISTANT]
241
- if MODE_LLAMA_INDEX in data:
242
- item.llama_index = data[MODE_LLAMA_INDEX]
243
229
  if MODE_AGENT in data:
244
230
  item.agent = data[MODE_AGENT]
245
231
  if MODE_AGENT_LLAMA in data:
246
232
  item.agent_llama = data[MODE_AGENT_LLAMA]
247
233
  if MODE_AGENT_OPENAI in data:
248
234
  item.agent_openai = data[MODE_AGENT_OPENAI]
249
- if MODE_EXPERT in data:
250
- item.expert = data[MODE_EXPERT]
235
+ if MODE_ASSISTANT in data:
236
+ item.assistant = data[MODE_ASSISTANT]
251
237
  if MODE_AUDIO in data:
252
238
  item.audio = data[MODE_AUDIO]
253
- if MODE_RESEARCH in data:
254
- item.research = data[MODE_RESEARCH]
239
+ if MODE_CHAT in data:
240
+ item.chat = data[MODE_CHAT]
241
+ if MODE_COMPLETION in data:
242
+ item.completion = data[MODE_COMPLETION]
255
243
  if MODE_COMPUTER in data:
256
244
  item.computer = data[MODE_COMPUTER]
245
+ if MODE_EXPERT in data:
246
+ item.expert = data[MODE_EXPERT]
247
+ if MODE_IMAGE in data:
248
+ item.img = data[MODE_IMAGE]
249
+ if MODE_LLAMA_INDEX in data:
250
+ item.llama_index = data[MODE_LLAMA_INDEX]
251
+ if MODE_RESEARCH in data:
252
+ item.research = data[MODE_RESEARCH]
253
+ if MODE_VISION in data:
254
+ item.vision = data[MODE_VISION]
257
255
 
258
- if 'uuid' in data:
259
- item.uuid = data['uuid']
260
- if 'name' in data:
261
- item.name = data['name']
262
- if 'ai_name' in data:
263
- item.ai_name = data['ai_name']
264
- if 'ai_avatar' in data:
265
- item.ai_avatar = data['ai_avatar']
266
- if 'ai_personalize' in data:
267
- item.ai_personalize = data['ai_personalize']
268
- if 'user_name' in data:
269
- item.user_name = data['user_name']
270
- if 'prompt' in data:
271
- item.prompt = data['prompt']
272
- if 'temperature' in data:
273
- item.temperature = data['temperature']
274
- if 'filename' in data:
275
- item.filename = data['filename']
276
- if 'model' in data:
277
- item.model = data['model']
278
- if 'tools' in data:
279
- item.tools = data['tools']
280
- if 'experts' in data:
281
- item.experts = data['experts']
282
- if 'idx' in data:
283
- item.idx = data['idx']
284
256
  if 'agent_provider' in data:
285
257
  item.agent_provider = data['agent_provider']
286
258
  if 'agent_provider_openai' in data:
287
259
  item.agent_provider_openai = data['agent_provider_openai']
260
+ if 'ai_avatar' in data:
261
+ item.ai_avatar = data['ai_avatar']
262
+ if 'ai_name' in data:
263
+ item.ai_name = data['ai_name']
264
+ if 'ai_personalize' in data:
265
+ item.ai_personalize = data['ai_personalize']
288
266
  if 'assistant_id' in data:
289
267
  item.assistant_id = data['assistant_id']
290
- if 'enabled' in data:
291
- item.enabled = data['enabled']
292
268
  if 'description' in data:
293
269
  item.description = data['description']
294
- if 'remote_tools' in data:
295
- item.remote_tools = data['remote_tools']
270
+ if 'enabled' in data:
271
+ item.enabled = data['enabled']
272
+ if 'experts' in data:
273
+ item.experts = data['experts']
296
274
  if 'extra' in data:
297
275
  item.extra = data['extra']
276
+ if 'filename' in data:
277
+ item.filename = data['filename']
278
+ if 'idx' in data:
279
+ item.idx = data['idx']
280
+ if 'model' in data:
281
+ item.model = data['model']
282
+ if 'name' in data:
283
+ item.name = data['name']
284
+ if 'prompt' in data:
285
+ item.prompt = data['prompt']
286
+ if 'remote_tools' in data:
287
+ item.remote_tools = data['remote_tools']
288
+ if 'temperature' in data:
289
+ item.temperature = data['temperature']
290
+ if 'tools' in data:
291
+ item.tools = data['tools']
292
+ if 'user_name' in data:
293
+ item.user_name = data['user_name']
294
+ if 'uuid' in data:
295
+ item.uuid = data['uuid']
298
296
 
299
297
  # get version
300
298
  if '__meta__' in data and 'version' in data['__meta__']:
@@ -3,7 +3,7 @@
3
3
  # GitHub: https://github.com/szczyglis-dev/py-gpt #
4
4
  # MIT License #
5
5
  # Created By : Marcin Szczygliński #
6
- # Updated Date: 2025.08.11 19:00:00 #
6
+ # Updated Date: 2025.08.24 03:00:00 #
7
7
  # ================================================== #
8
8
 
9
9
  from agents import (
@@ -74,7 +74,7 @@ def get_expert(
74
74
  kwargs = {
75
75
  "name": agent_name,
76
76
  "instructions": prompt,
77
- "model": model.id,
77
+ "model": window.core.agents.provider.get_openai_model(model),
78
78
  }
79
79
  tool_kwargs = append_tools(
80
80
  tools=tools,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: pygpt-net
3
- Version: 2.6.20
3
+ Version: 2.6.21
4
4
  Summary: Desktop AI Assistant powered by: OpenAI GPT-5, o1, o3, GPT-4, Gemini, Claude, Grok, DeepSeek, and other models supported by Llama Index, and Ollama. Chatbot, agents, completion, image generation, vision analysis, speech-to-text, plugins, internet access, file handling, command execution and more.
5
5
  License: MIT
6
6
  Keywords: py_gpt,py-gpt,pygpt,desktop,app,o1,o3,gpt-5,gpt,gpt4,gpt-4o,gpt-4v,gpt3.5,gpt-4,gpt-4-vision,gpt-3.5,llama3,mistral,gemini,grok,deepseek,bielik,claude,tts,whisper,vision,chatgpt,dall-e,chat,chatbot,assistant,text completion,image generation,ai,api,openai,api key,langchain,llama-index,ollama,presets,ui,qt,pyside
@@ -111,7 +111,7 @@ Description-Content-Type: text/markdown
111
111
 
112
112
  [![pygpt](https://snapcraft.io/pygpt/badge.svg)](https://snapcraft.io/pygpt)
113
113
 
114
- Release: **2.6.20** | build: **2025-08-22** | Python: **>=3.10, <3.14**
114
+ Release: **2.6.21** | build: **2025-08-24** | Python: **>=3.10, <3.14**
115
115
 
116
116
  > Official website: https://pygpt.net | Documentation: https://pygpt.readthedocs.io
117
117
  >
@@ -930,8 +930,6 @@ Below is a pattern for how different types of agents work. You can use these pat
930
930
 
931
931
  - When the `Computer use` tool is selected for an expert or when the `computer-use` model is chosen, all other tools will not be available for that model.
932
932
 
933
- - Ollama models are not supported in this mode.
934
-
935
933
  ## Agent (Autonomous)
936
934
 
937
935
  This is an older version of the Agent mode, still available as legacy. However, it is recommended to use the newer mode: `Agent (LlamaIndex)`.
@@ -2489,8 +2487,6 @@ Enable/disable remote tools, like Web Search or Image generation to use in OpenA
2489
2487
 
2490
2488
  - `Use ReAct agent for Tool calls in Chat with Files mode`: Enable ReAct agent for tool calls in Chat with Files mode.
2491
2489
 
2492
- - `Display full agent output in chat window`: If enabled, a real-time output from agent reasoning will be displayed with the response.
2493
-
2494
2490
  - `Auto-retrieve additional context`: Enable automatic retrieve of additional context from vector store in every query.
2495
2491
 
2496
2492
  **Embeddings**
@@ -2545,6 +2541,8 @@ Enable/disable remote tools, like Web Search or Image generation to use in OpenA
2545
2541
 
2546
2542
  - `Display a tray notification when the goal is achieved.`: If enabled, a notification will be displayed after goal achieved / finished run.
2547
2543
 
2544
+ - `Display full agent output in chat window`: If enabled, a real-time output from agent reasoning will be displayed with the response.
2545
+
2548
2546
  **Agents (LlamaIndex / OpenAI)**
2549
2547
 
2550
2548
  - `Max steps (per iteration)` - Max steps is one iteration before goal achieved
@@ -3538,6 +3536,15 @@ may consume additional tokens that are not displayed in the main window.
3538
3536
 
3539
3537
  ## Recent changes:
3540
3538
 
3539
+ **2.6.21 (2025-08-24)**
3540
+
3541
+ - Ollama models are now available in OpenAI Agents mode.
3542
+ - Improved parsing of responses from Agents.
3543
+ - Fix: do not initialize index in Agents mode if not provided.
3544
+ - Fix: agent response evaluation steps limit.
3545
+ - Fix: do not execute code in agents if Tools are disabled.
3546
+ - Refactoring.
3547
+
3541
3548
  **2.6.20 (2025-08-22)**
3542
3549
 
3543
3550
  - Added a new plugin: Server (FTP/SSH) - connect to remote servers using FTP, SFTP, and SSH. Execute remote commands, upload, download, and more (beta).