pygpt-net 2.5.18__py3-none-any.whl → 2.5.19__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.
- pygpt_net/CHANGELOG.txt +5 -0
- pygpt_net/__init__.py +3 -3
- pygpt_net/controller/chat/input.py +1 -1
- pygpt_net/core/bridge/__init__.py +3 -1
- pygpt_net/data/config/config.json +6 -3
- pygpt_net/data/config/models.json +235 -3
- pygpt_net/data/config/modes.json +3 -3
- pygpt_net/data/config/settings.json +34 -0
- pygpt_net/data/locale/locale.en.ini +8 -1
- pygpt_net/item/model.py +9 -1
- pygpt_net/provider/core/config/patch.py +12 -1
- pygpt_net/provider/core/model/patch.py +5 -1
- pygpt_net/provider/gpt/__init__.py +17 -6
- pygpt_net/provider/gpt/chat.py +2 -2
- {pygpt_net-2.5.18.dist-info → pygpt_net-2.5.19.dist-info}/METADATA +15 -4
- {pygpt_net-2.5.18.dist-info → pygpt_net-2.5.19.dist-info}/RECORD +19 -19
- {pygpt_net-2.5.18.dist-info → pygpt_net-2.5.19.dist-info}/LICENSE +0 -0
- {pygpt_net-2.5.18.dist-info → pygpt_net-2.5.19.dist-info}/WHEEL +0 -0
- {pygpt_net-2.5.18.dist-info → pygpt_net-2.5.19.dist-info}/entry_points.txt +0 -0
pygpt_net/CHANGELOG.txt
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
2.5.19 (2025-06-27)
|
2
|
+
|
3
|
+
- Added option to enable/disable `Responses API` in `Config -> Settings -> API Keys -> OpenAI`.
|
4
|
+
- Added support for xAI / Grok models, added grok-3 models.
|
5
|
+
|
1
6
|
2.5.18 (2025-06-26)
|
2
7
|
|
3
8
|
- Non-GPT models are now available in standard Chat mode.
|
pygpt_net/__init__.py
CHANGED
@@ -6,15 +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-06-
|
9
|
+
# Updated Date: 2025-06-27 18:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
|
12
12
|
__author__ = "Marcin Szczygliński"
|
13
13
|
__copyright__ = "Copyright 2025, Marcin Szczygliński"
|
14
14
|
__credits__ = ["Marcin Szczygliński"]
|
15
15
|
__license__ = "MIT"
|
16
|
-
__version__ = "2.5.
|
17
|
-
__build__ = "2025-06-
|
16
|
+
__version__ = "2.5.19"
|
17
|
+
__build__ = "2025-06-27"
|
18
18
|
__maintainer__ = "Marcin Szczygliński"
|
19
19
|
__github__ = "https://github.com/szczyglis-dev/py-gpt"
|
20
20
|
__report__ = "https://github.com/szczyglis-dev/py-gpt/issues"
|
@@ -257,7 +257,7 @@ class Input:
|
|
257
257
|
model = self.window.core.config.get('model')
|
258
258
|
if model:
|
259
259
|
model_data = self.window.core.models.get(model)
|
260
|
-
if model_data is not None and model_data.
|
260
|
+
if model_data is not None and model_data.is_gpt():
|
261
261
|
self.window.controller.chat.common.check_api_key(monit=True)
|
262
262
|
self.generating = False
|
263
263
|
self.window.dispatch(KernelEvent(KernelEvent.STATE_ERROR, {
|
@@ -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.06.
|
9
|
+
# Updated Date: 2025.06.27 16:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
|
12
12
|
import time
|
@@ -96,6 +96,8 @@ class Bridge:
|
|
96
96
|
if base_mode == MODE_CHAT and mode == MODE_LLAMA_INDEX:
|
97
97
|
context.idx = None # disable index if in Chat mode and switch to Llama Index
|
98
98
|
|
99
|
+
# print("Using mode: ", mode)
|
100
|
+
|
99
101
|
if mode == MODE_LLAMA_INDEX and base_mode != MODE_LLAMA_INDEX:
|
100
102
|
context.idx_mode = MODE_CHAT # default in sub-mode
|
101
103
|
|
@@ -1,8 +1,8 @@
|
|
1
1
|
{
|
2
2
|
"__meta__": {
|
3
|
-
"version": "2.5.
|
4
|
-
"app.version": "2.5.
|
5
|
-
"updated_at": "2025-06-
|
3
|
+
"version": "2.5.19",
|
4
|
+
"app.version": "2.5.19",
|
5
|
+
"updated_at": "2025-06-27T00:00:00"
|
6
6
|
},
|
7
7
|
"access.audio.event.speech": false,
|
8
8
|
"access.audio.event.speech.disabled": [],
|
@@ -62,13 +62,16 @@
|
|
62
62
|
"api_azure_endpoint": "https://<your-resource-name>.openai.azure.com/",
|
63
63
|
"api_endpoint": "https://api.openai.com/v1",
|
64
64
|
"api_endpoint_perplexity": "https://api.perplexity.ai",
|
65
|
+
"api_endpoint_xai": "https://api.x.ai/v1",
|
65
66
|
"api_key": "",
|
66
67
|
"api_key_google": "",
|
67
68
|
"api_key_anthropic": "",
|
68
69
|
"api_key_hugging_face": "",
|
69
70
|
"api_key_deepseek": "",
|
70
71
|
"api_key_perplexity": "",
|
72
|
+
"api_key_xai": "",
|
71
73
|
"api_proxy": "",
|
74
|
+
"api_use_responses": true,
|
72
75
|
"app.env": [
|
73
76
|
{
|
74
77
|
"name": "OLLAMA_API_BASE",
|
@@ -1,8 +1,8 @@
|
|
1
1
|
{
|
2
2
|
"__meta__": {
|
3
|
-
"version": "2.5.
|
4
|
-
"app.version": "2.5.
|
5
|
-
"updated_at": "2025-06-
|
3
|
+
"version": "2.5.19",
|
4
|
+
"app.version": "2.5.19",
|
5
|
+
"updated_at": "2025-06-27T00:00:00"
|
6
6
|
},
|
7
7
|
"items": {
|
8
8
|
"claude-3-5-sonnet-20240620": {
|
@@ -4288,6 +4288,238 @@
|
|
4288
4288
|
"tokens": 16384,
|
4289
4289
|
"default": false,
|
4290
4290
|
"multimodal": []
|
4291
|
+
},
|
4292
|
+
"grok-3": {
|
4293
|
+
"id": "grok-3",
|
4294
|
+
"name": "grok-3",
|
4295
|
+
"mode": [
|
4296
|
+
"chat"
|
4297
|
+
],
|
4298
|
+
"langchain": {
|
4299
|
+
"provider": "openai",
|
4300
|
+
"mode": [
|
4301
|
+
"chat"
|
4302
|
+
],
|
4303
|
+
"args": [
|
4304
|
+
{
|
4305
|
+
"name": "model_name",
|
4306
|
+
"value": "grok-3",
|
4307
|
+
"type": "str"
|
4308
|
+
}
|
4309
|
+
],
|
4310
|
+
"env": [
|
4311
|
+
{
|
4312
|
+
"name": "OPENAI_API_KEY",
|
4313
|
+
"value": "{api_key_xai}"
|
4314
|
+
},
|
4315
|
+
{
|
4316
|
+
"name": "OPENAI_API_BASE",
|
4317
|
+
"value": "{api_endpoint_xai}"
|
4318
|
+
}
|
4319
|
+
]
|
4320
|
+
},
|
4321
|
+
"llama_index": {
|
4322
|
+
"provider": "openai",
|
4323
|
+
"mode": [
|
4324
|
+
"chat"
|
4325
|
+
],
|
4326
|
+
"args": [
|
4327
|
+
{
|
4328
|
+
"name": "model",
|
4329
|
+
"value": "grok-3",
|
4330
|
+
"type": "str"
|
4331
|
+
}
|
4332
|
+
],
|
4333
|
+
"env": [
|
4334
|
+
{
|
4335
|
+
"name": "OPENAI_API_KEY",
|
4336
|
+
"value": "{api_key_xai}"
|
4337
|
+
},
|
4338
|
+
{
|
4339
|
+
"name": "OPENAI_API_BASE",
|
4340
|
+
"value": "{api_endpoint_xai}"
|
4341
|
+
}
|
4342
|
+
]
|
4343
|
+
},
|
4344
|
+
"ctx": 131072,
|
4345
|
+
"tokens": 16384,
|
4346
|
+
"default": false,
|
4347
|
+
"openai": true,
|
4348
|
+
"multimodal": []
|
4349
|
+
},
|
4350
|
+
"grok-3-fast": {
|
4351
|
+
"id": "grok-3-fast",
|
4352
|
+
"name": "grok-3-fast",
|
4353
|
+
"mode": [
|
4354
|
+
"chat"
|
4355
|
+
],
|
4356
|
+
"langchain": {
|
4357
|
+
"provider": "openai",
|
4358
|
+
"mode": [
|
4359
|
+
"chat"
|
4360
|
+
],
|
4361
|
+
"args": [
|
4362
|
+
{
|
4363
|
+
"name": "model_name",
|
4364
|
+
"value": "grok-3-fast",
|
4365
|
+
"type": "str"
|
4366
|
+
}
|
4367
|
+
],
|
4368
|
+
"env": [
|
4369
|
+
{
|
4370
|
+
"name": "OPENAI_API_KEY",
|
4371
|
+
"value": "{api_key_xai}"
|
4372
|
+
},
|
4373
|
+
{
|
4374
|
+
"name": "OPENAI_API_BASE",
|
4375
|
+
"value": "{api_endpoint_xai}"
|
4376
|
+
}
|
4377
|
+
]
|
4378
|
+
},
|
4379
|
+
"llama_index": {
|
4380
|
+
"provider": "openai",
|
4381
|
+
"mode": [
|
4382
|
+
"chat"
|
4383
|
+
],
|
4384
|
+
"args": [
|
4385
|
+
{
|
4386
|
+
"name": "model",
|
4387
|
+
"value": "grok-3-fast",
|
4388
|
+
"type": "str"
|
4389
|
+
}
|
4390
|
+
],
|
4391
|
+
"env": [
|
4392
|
+
{
|
4393
|
+
"name": "OPENAI_API_KEY",
|
4394
|
+
"value": "{api_key_xai}"
|
4395
|
+
},
|
4396
|
+
{
|
4397
|
+
"name": "OPENAI_API_BASE",
|
4398
|
+
"value": "{api_endpoint_xai}"
|
4399
|
+
}
|
4400
|
+
]
|
4401
|
+
},
|
4402
|
+
"ctx": 131072,
|
4403
|
+
"tokens": 16384,
|
4404
|
+
"default": false,
|
4405
|
+
"openai": true,
|
4406
|
+
"multimodal": []
|
4407
|
+
},
|
4408
|
+
"grok-3-mini": {
|
4409
|
+
"id": "grok-3-mini",
|
4410
|
+
"name": "grok-3-mini",
|
4411
|
+
"mode": [
|
4412
|
+
"chat"
|
4413
|
+
],
|
4414
|
+
"langchain": {
|
4415
|
+
"provider": "openai",
|
4416
|
+
"mode": [
|
4417
|
+
"chat"
|
4418
|
+
],
|
4419
|
+
"args": [
|
4420
|
+
{
|
4421
|
+
"name": "model_name",
|
4422
|
+
"value": "grok-3-mini",
|
4423
|
+
"type": "str"
|
4424
|
+
}
|
4425
|
+
],
|
4426
|
+
"env": [
|
4427
|
+
{
|
4428
|
+
"name": "OPENAI_API_KEY",
|
4429
|
+
"value": "{api_key_xai}"
|
4430
|
+
},
|
4431
|
+
{
|
4432
|
+
"name": "OPENAI_API_BASE",
|
4433
|
+
"value": "{api_endpoint_xai}"
|
4434
|
+
}
|
4435
|
+
]
|
4436
|
+
},
|
4437
|
+
"llama_index": {
|
4438
|
+
"provider": "openai",
|
4439
|
+
"mode": [
|
4440
|
+
"chat"
|
4441
|
+
],
|
4442
|
+
"args": [
|
4443
|
+
{
|
4444
|
+
"name": "model",
|
4445
|
+
"value": "grok-3-mini",
|
4446
|
+
"type": "str"
|
4447
|
+
}
|
4448
|
+
],
|
4449
|
+
"env": [
|
4450
|
+
{
|
4451
|
+
"name": "OPENAI_API_KEY",
|
4452
|
+
"value": "{api_key_xai}"
|
4453
|
+
},
|
4454
|
+
{
|
4455
|
+
"name": "OPENAI_API_BASE",
|
4456
|
+
"value": "{api_endpoint_xai}"
|
4457
|
+
}
|
4458
|
+
]
|
4459
|
+
},
|
4460
|
+
"ctx": 131072,
|
4461
|
+
"tokens": 16384,
|
4462
|
+
"default": false,
|
4463
|
+
"openai": true,
|
4464
|
+
"multimodal": []
|
4465
|
+
},
|
4466
|
+
"grok-3-mini-fast": {
|
4467
|
+
"id": "grok-3-mini-fast",
|
4468
|
+
"name": "grok-3-mini-fast",
|
4469
|
+
"mode": [
|
4470
|
+
"chat"
|
4471
|
+
],
|
4472
|
+
"langchain": {
|
4473
|
+
"provider": "openai",
|
4474
|
+
"mode": [
|
4475
|
+
"chat"
|
4476
|
+
],
|
4477
|
+
"args": [
|
4478
|
+
{
|
4479
|
+
"name": "model_name",
|
4480
|
+
"value": "grok-3-mini-fast",
|
4481
|
+
"type": "str"
|
4482
|
+
}
|
4483
|
+
],
|
4484
|
+
"env": [
|
4485
|
+
{
|
4486
|
+
"name": "OPENAI_API_KEY",
|
4487
|
+
"value": "{api_key_xai}"
|
4488
|
+
},
|
4489
|
+
{
|
4490
|
+
"name": "OPENAI_API_BASE",
|
4491
|
+
"value": "{api_endpoint_xai}"
|
4492
|
+
}
|
4493
|
+
]
|
4494
|
+
},
|
4495
|
+
"llama_index": {
|
4496
|
+
"provider": "openai",
|
4497
|
+
"mode": [
|
4498
|
+
"chat"
|
4499
|
+
],
|
4500
|
+
"args": [
|
4501
|
+
{
|
4502
|
+
"name": "model",
|
4503
|
+
"value": "grok-3-mini-fast",
|
4504
|
+
"type": "str"
|
4505
|
+
}
|
4506
|
+
],
|
4507
|
+
"env": [
|
4508
|
+
{
|
4509
|
+
"name": "OPENAI_API_KEY",
|
4510
|
+
"value": "{api_key_xai}"
|
4511
|
+
},
|
4512
|
+
{
|
4513
|
+
"name": "OPENAI_API_BASE",
|
4514
|
+
"value": "{api_endpoint_xai}"
|
4515
|
+
}
|
4516
|
+
]
|
4517
|
+
},
|
4518
|
+
"ctx": 131072,
|
4519
|
+
"tokens": 16384,
|
4520
|
+
"default": false,
|
4521
|
+
"openai": true,
|
4522
|
+
"multimodal": []
|
4291
4523
|
}
|
4292
4524
|
}
|
4293
4525
|
}
|
pygpt_net/data/config/modes.json
CHANGED
@@ -69,6 +69,21 @@
|
|
69
69
|
"advanced": false,
|
70
70
|
"tab": "OpenAI"
|
71
71
|
},
|
72
|
+
"api_use_responses": {
|
73
|
+
"section": "api_keys",
|
74
|
+
"type": "bool",
|
75
|
+
"slider": false,
|
76
|
+
"label": "settings.api_use_responses",
|
77
|
+
"description": "settings.api_use_responses.desc",
|
78
|
+
"value": true,
|
79
|
+
"min": null,
|
80
|
+
"max": null,
|
81
|
+
"multiplier": null,
|
82
|
+
"step": null,
|
83
|
+
"secret": false,
|
84
|
+
"advanced": false,
|
85
|
+
"tab": "OpenAI"
|
86
|
+
},
|
72
87
|
"api_key_google": {
|
73
88
|
"section": "api_keys",
|
74
89
|
"type": "text",
|
@@ -145,6 +160,25 @@
|
|
145
160
|
"advanced": false,
|
146
161
|
"tab": "DeepSeek"
|
147
162
|
},
|
163
|
+
"api_key_xai": {
|
164
|
+
"section": "api_keys",
|
165
|
+
"type": "text",
|
166
|
+
"slider": false,
|
167
|
+
"label": "settings.api_key.xai",
|
168
|
+
"description": "settings.api_key.xai.desc",
|
169
|
+
"value": "",
|
170
|
+
"min": null,
|
171
|
+
"max": null,
|
172
|
+
"multiplier": null,
|
173
|
+
"step": null,
|
174
|
+
"extra": {
|
175
|
+
"bold": true
|
176
|
+
},
|
177
|
+
"secret": true,
|
178
|
+
"persist": true,
|
179
|
+
"advanced": false,
|
180
|
+
"tab": "xAI"
|
181
|
+
},
|
148
182
|
"api_azure_version": {
|
149
183
|
"section": "api_keys",
|
150
184
|
"type": "text",
|
@@ -830,7 +830,7 @@ models.importer.error.remove.not_exists = Model already exists in current list
|
|
830
830
|
models.importer.loaded = Ollama models loaded successfully.
|
831
831
|
models.importer.status.imported = Models imported successfully.
|
832
832
|
model.openai = OpenAI API
|
833
|
-
model.openai.desc = Supports
|
833
|
+
model.openai.desc = Supports OpenAI API (or compatible)
|
834
834
|
model.tokens = Output tokens
|
835
835
|
model.tokens.desc = Max model output tokens
|
836
836
|
mode.research = Research (Perplexity)
|
@@ -953,6 +953,8 @@ settings.api_azure_version = OpenAI API version
|
|
953
953
|
settings.api_azure_version.desc = Azure OpenAI API version, e.g. 2023-07-01-preview
|
954
954
|
settings.api_endpoint = API Endpoint
|
955
955
|
settings.api_endpoint.desc = OpenAI API (or compatible) endpoint URL, default: https://api.openai.com/v1
|
956
|
+
settings.api_endpoint_xai = API Endpoint
|
957
|
+
settings.api_endpoint_xai.desc = xAPI API endpoint URL, default: https://api.x.ai
|
956
958
|
settings.api_key = OpenAI API KEY
|
957
959
|
settings.api_key.anthropic = Anthropic API KEY
|
958
960
|
settings.api_key.anthropic.desc = Required for the Anthropic API and Claude models.
|
@@ -965,8 +967,12 @@ settings.api_key.hugging_face = HuggingFace API KEY
|
|
965
967
|
settings.api_key.hugging_face.desc = Required for the HuggingFace API.
|
966
968
|
settings.api_key.perplexity = Perplexity API KEY
|
967
969
|
settings.api_key.perplexity.desc = Required for the Perplexity API.
|
970
|
+
settings.api_key.xai = xAI API KEY
|
971
|
+
settings.api_key.xai.desc = Required for the xAI API and Grok models.
|
968
972
|
settings.api_proxy = Proxy address
|
969
973
|
settings.api_proxy.desc = Optional, proxy for OpenAI API, e.g. http://proxy.example.com or socks5://user:pass@host:port
|
974
|
+
settings.api_use_responses = Use Responses API
|
975
|
+
settings.api_use_responses.desc = Use Responses API instead of ChatCompletions API
|
970
976
|
settings.app.env = Application environment (os.environ)
|
971
977
|
settings.app.env.desc = Additional environment vars to set on application start
|
972
978
|
settings.audio.input.channels = Channels
|
@@ -1152,6 +1158,7 @@ settings.section.api_keys.google = Google
|
|
1152
1158
|
settings.section.api_keys.huggingface = HuggingFace
|
1153
1159
|
settings.section.api_keys.openai = OpenAI
|
1154
1160
|
settings.section.api_keys.perplexity = Perplexity
|
1161
|
+
settings.section.api_keys.xai = xAI
|
1155
1162
|
settings.section.audio = Audio
|
1156
1163
|
settings.section.ctx = Context
|
1157
1164
|
settings.section.developer = Developer
|
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.06.
|
9
|
+
# Updated Date: 2025.06.27 16:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
|
12
12
|
import json
|
@@ -203,6 +203,14 @@ class ModelItem:
|
|
203
203
|
|
204
204
|
:return: True if OpenAI
|
205
205
|
"""
|
206
|
+
return self.openai
|
207
|
+
|
208
|
+
def is_gpt(self) -> bool:
|
209
|
+
"""
|
210
|
+
Check if model is supported by OpenAI Responses API
|
211
|
+
|
212
|
+
:return: True if OpenAI Responses API compatible
|
213
|
+
"""
|
206
214
|
if (self.id.startswith("gpt-")
|
207
215
|
or self.id.startswith("chatgpt")
|
208
216
|
or self.id.startswith("o1")
|
@@ -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.
|
9
|
+
# Updated Date: 2025.06.27 16:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
|
12
12
|
import copy
|
@@ -1869,6 +1869,17 @@ class Patch:
|
|
1869
1869
|
data["remote_tools.image"] = False
|
1870
1870
|
updated = True
|
1871
1871
|
|
1872
|
+
# < 2.5.19
|
1873
|
+
if old < parse_version("2.5.19"):
|
1874
|
+
print("Migrating config from < 2.5.19...")
|
1875
|
+
if 'api_use_responses' not in data:
|
1876
|
+
data["api_use_responses"] = True
|
1877
|
+
if 'api_key_xai' not in data:
|
1878
|
+
data["api_key_xai"] = ""
|
1879
|
+
if 'api_endpoint_xai' not in data:
|
1880
|
+
data["api_endpoint_xai"] = "https://api.x.ai/v1"
|
1881
|
+
updated = True
|
1882
|
+
|
1872
1883
|
# update file
|
1873
1884
|
migrated = False
|
1874
1885
|
if updated:
|
@@ -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.06.
|
9
|
+
# Updated Date: 2025.06.27 16:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
|
12
12
|
from packaging.version import parse as parse_version, Version
|
@@ -566,6 +566,10 @@ class Patch:
|
|
566
566
|
model.mode.append("chat")
|
567
567
|
updated = True
|
568
568
|
|
569
|
+
# < 2.5.19 <--- add Grok models
|
570
|
+
if old < parse_version("2.5.19"):
|
571
|
+
updated = True
|
572
|
+
|
569
573
|
# update file
|
570
574
|
if updated:
|
571
575
|
data = dict(sorted(data.items()))
|
@@ -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.06.
|
9
|
+
# Updated Date: 2025.06.27 16:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
import base64
|
12
12
|
|
@@ -34,6 +34,7 @@ from .responses import Responses
|
|
34
34
|
from .store import Store
|
35
35
|
from .summarizer import Summarizer
|
36
36
|
from .vision import Vision
|
37
|
+
from pygpt_net.item.model import ModelItem
|
37
38
|
|
38
39
|
|
39
40
|
class Gpt:
|
@@ -54,11 +55,12 @@ class Gpt:
|
|
54
55
|
self.summarizer = Summarizer(window)
|
55
56
|
self.vision = Vision(window)
|
56
57
|
|
57
|
-
def get_client(self, mode: str = MODE_CHAT) -> OpenAI:
|
58
|
+
def get_client(self, mode: str = MODE_CHAT, model: ModelItem = None) -> OpenAI:
|
58
59
|
"""
|
59
60
|
Return OpenAI client
|
60
61
|
|
61
62
|
:param mode: Mode
|
63
|
+
:param model: Model
|
62
64
|
:return: OpenAI client
|
63
65
|
"""
|
64
66
|
args = {
|
@@ -87,6 +89,12 @@ class Gpt:
|
|
87
89
|
endpoint = self.window.core.config.get('api_endpoint_perplexity')
|
88
90
|
if endpoint:
|
89
91
|
args["base_url"] = endpoint
|
92
|
+
elif mode == MODE_CHAT:
|
93
|
+
if model is not None:
|
94
|
+
# xAI / grok
|
95
|
+
if model.id.startswith("grok"):
|
96
|
+
args["api_key"] = self.window.core.config.get('api_key_xai')
|
97
|
+
args["base_url"] = self.window.core.config.get('api_endpoint_xai')
|
90
98
|
|
91
99
|
return OpenAI(**args)
|
92
100
|
|
@@ -113,9 +121,6 @@ class Gpt:
|
|
113
121
|
|
114
122
|
# --- Responses API ---- /beta/
|
115
123
|
use_responses_api = False
|
116
|
-
if mode == MODE_CHAT:
|
117
|
-
use_responses_api = True # use responses API for chat, audio, research modes
|
118
|
-
ctx.use_responses_api = use_responses_api # set in context
|
119
124
|
|
120
125
|
# get model id
|
121
126
|
model_id = None
|
@@ -124,6 +129,12 @@ class Gpt:
|
|
124
129
|
if max_tokens > model.tokens: # check max output tokens
|
125
130
|
max_tokens = model.tokens
|
126
131
|
|
132
|
+
if model.is_gpt():
|
133
|
+
if mode == MODE_CHAT and self.window.core.config.get('api_use_responses', False):
|
134
|
+
use_responses_api = True # use responses API for chat mode, only OpenAI models
|
135
|
+
|
136
|
+
ctx.use_responses_api = use_responses_api # set in context
|
137
|
+
|
127
138
|
response = None
|
128
139
|
used_tokens = 0
|
129
140
|
context.max_tokens = max_tokens # update max output tokens
|
@@ -304,7 +315,7 @@ class Gpt:
|
|
304
315
|
if model is None:
|
305
316
|
model = self.window.core.models.from_defaults()
|
306
317
|
|
307
|
-
client = self.get_client(mode)
|
318
|
+
client = self.get_client(mode, model)
|
308
319
|
messages = []
|
309
320
|
messages.append({"role": "system", "content": system_prompt})
|
310
321
|
messages.append({"role": "user", "content": prompt})
|
pygpt_net/provider/gpt/chat.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.
|
9
|
+
# Updated Date: 2025.06.27 16:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
|
12
12
|
import json
|
@@ -67,7 +67,7 @@ class Chat:
|
|
67
67
|
user_name = ctx.input_name # from ctx
|
68
68
|
ai_name = ctx.output_name # from ctx
|
69
69
|
|
70
|
-
client = self.window.core.gpt.get_client(mode)
|
70
|
+
client = self.window.core.gpt.get_client(mode, context.model)
|
71
71
|
|
72
72
|
# build chat messages
|
73
73
|
messages = self.build(
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: pygpt-net
|
3
|
-
Version: 2.5.
|
3
|
+
Version: 2.5.19
|
4
4
|
Summary: Desktop AI Assistant powered by models: OpenAI o1, GPT-4o, GPT-4, GPT-4 Vision, GPT-3.5, DALL-E 3, Llama 3, Mistral, Gemini, Claude, DeepSeek, Bielik, and other models supported by Langchain, Llama Index, and Ollama. Features include chatbot, text completion, image generation, vision analysis, speech-to-text, internet access, file handling, command execution and more.
|
5
5
|
License: MIT
|
6
6
|
Keywords: py_gpt,py-gpt,pygpt,desktop,app,o1,gpt,gpt4,gpt-4o,gpt-4v,gpt3.5,gpt-4,gpt-4-vision,gpt-3.5,llama3,mistral,gemini,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
|
@@ -100,7 +100,7 @@ Description-Content-Type: text/markdown
|
|
100
100
|
|
101
101
|
[](https://snapcraft.io/pygpt)
|
102
102
|
|
103
|
-
Release: **2.5.
|
103
|
+
Release: **2.5.19** | build: **2025-06-27** | Python: **>=3.10, <3.13**
|
104
104
|
|
105
105
|
> Official website: https://pygpt.net | Documentation: https://pygpt.readthedocs.io
|
106
106
|
>
|
@@ -462,7 +462,7 @@ Your API keys will be available here:
|
|
462
462
|
|
463
463
|
**+ Inline Vision and Image generation**
|
464
464
|
|
465
|
-
This mode in **PyGPT** mirrors `ChatGPT`, allowing you to chat with models such as `o1`, `o3`, `GPT-4`, `GPT-4o` and `GPT-3.5`. It works by using the `Responses` OpenAI API.
|
465
|
+
This mode in **PyGPT** mirrors `ChatGPT`, allowing you to chat with models such as `o1`, `o3`, `GPT-4`, `GPT-4o` and `GPT-3.5`. It works by using the `Responses` and `ChatCompletions` OpenAI API. You can select the API to use in: `Config -> Settings -> API Keys -> OpenAI`.
|
466
466
|
|
467
467
|
**Tip: This mode directly uses the OpenAI API. Other models, such as Gemini, Claude, or Llama3, are supported in Chat mode via LlamaIndex, which the application switches to in the background when working with models other than OpenAI.**
|
468
468
|
|
@@ -1003,7 +1003,7 @@ The name of the currently active profile is shown as (Profile Name) in the windo
|
|
1003
1003
|
|
1004
1004
|
## Built-in models
|
1005
1005
|
|
1006
|
-
PyGPT has built-in support for models (as of 2025-06-
|
1006
|
+
PyGPT has built-in support for models (as of 2025-06-27):
|
1007
1007
|
|
1008
1008
|
- `bielik-11b-v2.3-instruct:Q4_K_M`
|
1009
1009
|
- `chatgpt-4o-latest`
|
@@ -1049,6 +1049,10 @@ PyGPT has built-in support for models (as of 2025-06-24):
|
|
1049
1049
|
- `gpt-4o-2024-11-20`
|
1050
1050
|
- `gpt-4o-audio-preview`
|
1051
1051
|
- `gpt-4o-mini`
|
1052
|
+
- `grok-3`
|
1053
|
+
- `grok-3-fast`
|
1054
|
+
- `grok-3-mini`
|
1055
|
+
- `grok-3-mini-fast`
|
1052
1056
|
- `llama2-uncensored`
|
1053
1057
|
- `llama3.1`
|
1054
1058
|
- `llama3.1:405b`
|
@@ -1064,6 +1068,8 @@ PyGPT has built-in support for models (as of 2025-06-24):
|
|
1064
1068
|
- `qwen:7b`
|
1065
1069
|
- `qwen2:7b`
|
1066
1070
|
- `qwen2.5-coder:7b`
|
1071
|
+
- `qwen3:8b`
|
1072
|
+
- `qwen3:30b-a3b`
|
1067
1073
|
- `r1` (Perplexity)
|
1068
1074
|
- `sonar` (Perplexity)
|
1069
1075
|
- `sonar-deep-research` (Perplexity)
|
@@ -4124,6 +4130,11 @@ may consume additional tokens that are not displayed in the main window.
|
|
4124
4130
|
|
4125
4131
|
## Recent changes:
|
4126
4132
|
|
4133
|
+
**2.5.19 (2025-06-27)**
|
4134
|
+
|
4135
|
+
- Added option to enable/disable `Responses API` in `Config -> Settings -> API Keys -> OpenAI`.
|
4136
|
+
- Added support for xAI / Grok models, added grok-3 models.
|
4137
|
+
|
4127
4138
|
**2.5.18 (2025-06-26)**
|
4128
4139
|
|
4129
4140
|
- Non-GPT models are now available in standard Chat mode.
|
@@ -1,6 +1,6 @@
|
|
1
|
-
pygpt_net/CHANGELOG.txt,sha256=
|
1
|
+
pygpt_net/CHANGELOG.txt,sha256=s52Jz40Jda50SOFtFXE2Vc0GOrcu2bYLjUBDKpDwtP0,84589
|
2
2
|
pygpt_net/LICENSE,sha256=dz9sfFgYahvu2NZbx4C1xCsVn9GVer2wXcMkFRBvqzY,1146
|
3
|
-
pygpt_net/__init__.py,sha256=
|
3
|
+
pygpt_net/__init__.py,sha256=HxrIG5WnUAsMEgT7ers_FbpAF8aSEkNXm4n8FDUoA5c,1373
|
4
4
|
pygpt_net/app.py,sha256=XXjn9XaKHGRcsHN8mMuqbRHAg8_Da0GLmACUU9ddjBc,16217
|
5
5
|
pygpt_net/config.py,sha256=Qc1FOBtTf3O6A6-6KoqUGtoJ0u8hXQeowvCVbZFwtik,16405
|
6
6
|
pygpt_net/container.py,sha256=BemiVZPpPNIzfB-ZvnZeeBPFu-AcX2c30OqYFylEjJc,4023
|
@@ -31,7 +31,7 @@ pygpt_net/controller/chat/command.py,sha256=3fNYvgt9NmCZPNrlqfLXivmN63ZRsuFseNjj
|
|
31
31
|
pygpt_net/controller/chat/common.py,sha256=KuyPrRSlwo7VWukCCjdnMIcwNX5LocW5RrNmNaHcdA8,14782
|
32
32
|
pygpt_net/controller/chat/files.py,sha256=VFiiTeWTYR15Nwf1CTLEmeXqlmRHzNQVkNaU6hY2Gz4,2846
|
33
33
|
pygpt_net/controller/chat/image.py,sha256=XghPvTP8n3DxFgRrZ3bCfeLNTvOKSxbl-ewTwUTd4HM,8308
|
34
|
-
pygpt_net/controller/chat/input.py,sha256=
|
34
|
+
pygpt_net/controller/chat/input.py,sha256=oosE9TbSzJuoqpSI6TN6P1r_pGGzz73gSTsB2ahxOcc,11953
|
35
35
|
pygpt_net/controller/chat/output.py,sha256=VuziVuI9Lj_4kZmTWvXg8t2tq4w9uD7J1g2MqlMCV6s,9272
|
36
36
|
pygpt_net/controller/chat/render.py,sha256=h23QCvMDIAaCpInqwwADa4G43sSpSn-CE5celnk1LSc,17206
|
37
37
|
pygpt_net/controller/chat/response.py,sha256=UnTnnn2on-Qg2_T_QcQcklTCcuq6XhyLLxs1fn-D9Tg,9450
|
@@ -126,7 +126,7 @@ pygpt_net/core/audio/__init__.py,sha256=uszH6pqMToDzL0WpPeUvVlyJ8RN4gFmQbsL4GFYM
|
|
126
126
|
pygpt_net/core/audio/capture.py,sha256=cR3PsnbxJ8yPE5oirHFAieAIaDGXynUxA4aitocXkgY,11223
|
127
127
|
pygpt_net/core/audio/context.py,sha256=2XpXWhDC09iUvc0FRMq9BF2_rnQ60ZG4Js6LbO5MohY,1115
|
128
128
|
pygpt_net/core/audio/whisper.py,sha256=WZ_fNQ06s1NBxyoYB-lTFqDO6ARcnq9MZFekRaTNxTo,993
|
129
|
-
pygpt_net/core/bridge/__init__.py,sha256=
|
129
|
+
pygpt_net/core/bridge/__init__.py,sha256=pQNHIh3EDRq0G4qqiM8SI1Byt2U4cTcMORV7Pys7Nys,10326
|
130
130
|
pygpt_net/core/bridge/context.py,sha256=zIqbbFyZYsU5JEJGvwBg07u9QeeMUKsdTnURyp8tR4Y,4351
|
131
131
|
pygpt_net/core/bridge/worker.py,sha256=8o8HmnjtoImHFFPOfzymePPgmVUPZoFNHFd0BYUHV3c,5885
|
132
132
|
pygpt_net/core/calendar/__init__.py,sha256=ao9kQk6Xjse95m1TbL1Mlbo1k1Q8D9eGc10L-71G9TY,7227
|
@@ -248,9 +248,9 @@ pygpt_net/css_rc.py,sha256=i13kX7irhbYCWZ5yJbcMmnkFp_UfS4PYnvRFSPF7XXo,11349
|
|
248
248
|
pygpt_net/data/audio/click_off.mp3,sha256=aNiRDP1pt-Jy7ija4YKCNFBwvGWbzU460F4pZWZDS90,65201
|
249
249
|
pygpt_net/data/audio/click_on.mp3,sha256=qfdsSnthAEHVXzeyN4LlC0OvXuyW8p7stb7VXtlvZ1k,65201
|
250
250
|
pygpt_net/data/audio/ok.mp3,sha256=LTiV32pEBkpUGBkKkcOdOFB7Eyt_QoP2Nv6c5AaXftk,32256
|
251
|
-
pygpt_net/data/config/config.json,sha256=
|
252
|
-
pygpt_net/data/config/models.json,sha256=
|
253
|
-
pygpt_net/data/config/modes.json,sha256=
|
251
|
+
pygpt_net/data/config/config.json,sha256=ExjPPGRgwo2KP6HZ9w62b8uPvC1dv7matesdnrLD0YI,20242
|
252
|
+
pygpt_net/data/config/models.json,sha256=OR7trPoWKZEPg5fvQlvin923UqktC8QpFa8-39hTzBw,136164
|
253
|
+
pygpt_net/data/config/modes.json,sha256=lh4k2vVOZOjh2-HF8q-x4kbBrFZ2nKFfzUHBib3F4Sc,2093
|
254
254
|
pygpt_net/data/config/presets/agent_openai.json,sha256=vMTR-soRBiEZrpJJHuFLWyx8a3Ez_BqtqjyXgxCAM_Q,733
|
255
255
|
pygpt_net/data/config/presets/agent_openai_assistant.json,sha256=awJw9lNTGpKML6SJUShVn7lv8AXh0oic7wBeyoN7AYs,798
|
256
256
|
pygpt_net/data/config/presets/agent_planner.json,sha256=a6Rv58Bnm2STNWB0Rw_dGhnsz6Lb3J8_GwsUVZaTIXc,742
|
@@ -271,7 +271,7 @@ pygpt_net/data/config/presets/current.vision.json,sha256=x1ll5B3ROSKYQA6l27PRGXU
|
|
271
271
|
pygpt_net/data/config/presets/dalle_white_cat.json,sha256=esqUb43cqY8dAo7B5u99tRC0MBV5lmlrVLnJhTSkL8w,552
|
272
272
|
pygpt_net/data/config/presets/joke_agent.json,sha256=R6n9P7KRb0s-vZWZE7kHdlOfXAx1yYrPmUw8uLyw8OE,474
|
273
273
|
pygpt_net/data/config/presets/joke_expert.json,sha256=aFBFCY97Uba71rRq0MSeakXaOj8yuaUqekQ842YHv64,683
|
274
|
-
pygpt_net/data/config/settings.json,sha256=
|
274
|
+
pygpt_net/data/config/settings.json,sha256=yAyMRYx1xyrD1Y-G1oApJ1-KkHzhEtMV9KshbLLUx70,52876
|
275
275
|
pygpt_net/data/config/settings_section.json,sha256=Ng6kgmgxVmvt-KYFIqZvIDAEK4DfISNjNVF55DFWNjs,1082
|
276
276
|
pygpt_net/data/css/fix_windows.css,sha256=Mks14Vg25ncbMqZJfAMStrhvZmgHF6kU75ohTWRZeI8,664
|
277
277
|
pygpt_net/data/css/markdown.css,sha256=yaoJPogZZ_ghbqP8vTXTycwVyD61Ik5_033NpzuUzC0,1122
|
@@ -1488,7 +1488,7 @@ pygpt_net/data/js/katex/fonts/KaTeX_Typewriter-Regular.woff2,sha256=cdUX1ngneHz6
|
|
1488
1488
|
pygpt_net/data/js/katex/katex.min.css,sha256=lVaKnUaQNG4pI71WHffQZVALLQF4LMZEk4nOia8U9ow,23532
|
1489
1489
|
pygpt_net/data/js/katex/katex.min.js,sha256=KLASOtKS2x8pUxWVzCDmlWJ4jhuLb0vtrgakbD6gDDo,276757
|
1490
1490
|
pygpt_net/data/locale/locale.de.ini,sha256=rqWfqXip_kNrIr6o07PI6yMmdTiBWJIT__zWlAsgNPY,66016
|
1491
|
-
pygpt_net/data/locale/locale.en.ini,sha256=
|
1491
|
+
pygpt_net/data/locale/locale.en.ini,sha256=kvpKSLbzJXIT8xeWZ5i5Ul3C4jG7FMuxby_i3Uhfcis,79505
|
1492
1492
|
pygpt_net/data/locale/locale.es.ini,sha256=ALVNLou4HbMfmJL-mNUa9NkXccStUgSqInIx7qnCV6s,66183
|
1493
1493
|
pygpt_net/data/locale/locale.fr.ini,sha256=b6LaF_MnW4j-nU7PuMgY5R7LvjZ7juKd0OwoJGXhNkY,68231
|
1494
1494
|
pygpt_net/data/locale/locale.it.ini,sha256=PILGaGTCumfULasxW-2eJ0d3-06QJJJWC8_KEvjuuAs,64951
|
@@ -1675,7 +1675,7 @@ pygpt_net/item/calendar_note.py,sha256=Y9rfMmTbWwcFrHNra62aUww-NGPIE6O03wHRrF5Ty
|
|
1675
1675
|
pygpt_net/item/ctx.py,sha256=XZ4aRlpISA9_f63VNAG8BmmqFxx01m33TPa1CCFX_xA,18971
|
1676
1676
|
pygpt_net/item/index.py,sha256=gDQYPlhwHF0QVGwX4TFGxHyO7pt5tqHcuyc3DPgPCA0,1681
|
1677
1677
|
pygpt_net/item/mode.py,sha256=bhX6ZOvTKsiLI6-N-7cuJ_9izlAqq6bsXF1FjufJvfw,600
|
1678
|
-
pygpt_net/item/model.py,sha256
|
1678
|
+
pygpt_net/item/model.py,sha256=-m3ZoaK0ybDMvRr1wbulYxdF5xmBEe8_SzepOTW96Ig,9576
|
1679
1679
|
pygpt_net/item/notepad.py,sha256=l5e0JAnwz5a3fPSaSq1ih3XfgrLX5365xAg5HYIqIyQ,1513
|
1680
1680
|
pygpt_net/item/preset.py,sha256=m03LtRjODd64xoZ92EJaOPp82VXOZ3zBUDtJEFyxvc4,5575
|
1681
1681
|
pygpt_net/item/prompt.py,sha256=aDzXxQ4kLQ0Ve1EvCmO8p9CzYVm2BYuR9ubYf6HFr4g,1563
|
@@ -1822,7 +1822,7 @@ pygpt_net/provider/core/calendar/db_sqlite/storage.py,sha256=QDclQCQdr4QyRIqjgGX
|
|
1822
1822
|
pygpt_net/provider/core/config/__init__.py,sha256=jQQgG9u_ZLsZWXustoc1uvC-abUvj4RBKPAM30-f2Kc,488
|
1823
1823
|
pygpt_net/provider/core/config/base.py,sha256=cbvzbMNqL2XgC-36gGubnU37t94AX7LEw0lecb2Nm80,1365
|
1824
1824
|
pygpt_net/provider/core/config/json_file.py,sha256=P78SRQpNr_nF7TYftYLnHl_DVo7GLPNs4_lvw97sqq8,5122
|
1825
|
-
pygpt_net/provider/core/config/patch.py,sha256=
|
1825
|
+
pygpt_net/provider/core/config/patch.py,sha256=fuNJ04XbZ6zA321z7eiJaRG15PHOZoMtFvjotDyaFa8,98442
|
1826
1826
|
pygpt_net/provider/core/ctx/__init__.py,sha256=jQQgG9u_ZLsZWXustoc1uvC-abUvj4RBKPAM30-f2Kc,488
|
1827
1827
|
pygpt_net/provider/core/ctx/base.py,sha256=Tfb4MDNe9BXXPU3lbzpdYwJF9S1oa2-mzgu5XT4It9g,3003
|
1828
1828
|
pygpt_net/provider/core/ctx/db_sqlite/__init__.py,sha256=G2pB7kZfREJRLJZmfv3DKTslXC-K7EhNN2sn56q6BFA,11753
|
@@ -1849,7 +1849,7 @@ pygpt_net/provider/core/mode/patch.py,sha256=VS2KCYW05jxLd-lcStNY1k4fHKUUrVVLTdR
|
|
1849
1849
|
pygpt_net/provider/core/model/__init__.py,sha256=jQQgG9u_ZLsZWXustoc1uvC-abUvj4RBKPAM30-f2Kc,488
|
1850
1850
|
pygpt_net/provider/core/model/base.py,sha256=L1x2rHha8a8hnCUYxZr88utay1EWEx5qBXW_2acpAN0,1319
|
1851
1851
|
pygpt_net/provider/core/model/json_file.py,sha256=DsGVNYIi5Pg57SJghHWBULq9Uu0sNTWEks3ZyRRTd4o,6786
|
1852
|
-
pygpt_net/provider/core/model/patch.py,sha256=
|
1852
|
+
pygpt_net/provider/core/model/patch.py,sha256=tU4SHRAE6_ubJ89xI9qtQdxdTzpCd3VGY0oyHlGZ6b4,26790
|
1853
1853
|
pygpt_net/provider/core/notepad/__init__.py,sha256=jQQgG9u_ZLsZWXustoc1uvC-abUvj4RBKPAM30-f2Kc,488
|
1854
1854
|
pygpt_net/provider/core/notepad/base.py,sha256=7aPhild8cALTaN3JEbI0YrkIW1DRIycGQWTfsdH6WcQ,1323
|
1855
1855
|
pygpt_net/provider/core/notepad/db_sqlite/__init__.py,sha256=DQnVKJxvLq-6zlRlLk3MXSQZEObFtcQ5p5mEnuRzwYE,3104
|
@@ -1867,10 +1867,10 @@ pygpt_net/provider/core/preset/patch.py,sha256=uGeOqz-JnFVXHAjnlto5I79O-HNXMLRSJ
|
|
1867
1867
|
pygpt_net/provider/core/prompt/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1868
1868
|
pygpt_net/provider/core/prompt/base.py,sha256=EYUA30T1QwJ9RSD0uW5x6VEstgIXNwgutmaXI64BWhw,1304
|
1869
1869
|
pygpt_net/provider/core/prompt/json_file.py,sha256=5yfW1RgEa36tX4-ntze4PavWLry0YG43D2LO23_MrzE,4838
|
1870
|
-
pygpt_net/provider/gpt/__init__.py,sha256=
|
1870
|
+
pygpt_net/provider/gpt/__init__.py,sha256=oGvQkJsjCa5sw6BPaSIS-_sI9zo-1no1PVUcqn3DI0A,12539
|
1871
1871
|
pygpt_net/provider/gpt/assistants.py,sha256=DSw1YB_J9n2rFD5CPDWZy59I38VSG6uLpYydGLTUPMQ,14083
|
1872
1872
|
pygpt_net/provider/gpt/audio.py,sha256=frHElxYVaHYkNDCMJ9tQMoGqxSaZ-s5oPlAEHUAckkc,2032
|
1873
|
-
pygpt_net/provider/gpt/chat.py,sha256=
|
1873
|
+
pygpt_net/provider/gpt/chat.py,sha256=OGME7rK3I_gE-PkjiI74PoOn5QPPmRWyI_OlHc0isRY,10421
|
1874
1874
|
pygpt_net/provider/gpt/completion.py,sha256=OusKOb4G11aYRJUjRWcMsf80cRQQvee9DzRe99ubLmc,6164
|
1875
1875
|
pygpt_net/provider/gpt/image.py,sha256=lUHZrVCR2Fbxz5uXqPH9I-_xn0FkDyfzOGrpi-9RZbI,10134
|
1876
1876
|
pygpt_net/provider/gpt/responses.py,sha256=fkFNfXN25EWLiqa8XCTVxAEyRR5bAsWWXkyvrdKk888,9976
|
@@ -2184,8 +2184,8 @@ pygpt_net/ui/widget/textarea/web.py,sha256=2LebPHa_e5lvBqnIVzjwsLcFMoc11BonXgAUs
|
|
2184
2184
|
pygpt_net/ui/widget/vision/__init__.py,sha256=8HT4tQFqQogEEpGYTv2RplKBthlsFKcl5egnv4lzzEw,488
|
2185
2185
|
pygpt_net/ui/widget/vision/camera.py,sha256=T8b5cmK6uhf_WSSxzPt_Qod8JgMnst6q8sQqRvgQiSA,2584
|
2186
2186
|
pygpt_net/utils.py,sha256=WtrdagJ-BlCjxGEEVq2rhsyAZMcU6JqltCXzOs823po,6707
|
2187
|
-
pygpt_net-2.5.
|
2188
|
-
pygpt_net-2.5.
|
2189
|
-
pygpt_net-2.5.
|
2190
|
-
pygpt_net-2.5.
|
2191
|
-
pygpt_net-2.5.
|
2187
|
+
pygpt_net-2.5.19.dist-info/LICENSE,sha256=rbPqNB_xxANH8hKayJyIcTwD4bj4Y2G-Mcm85r1OImM,1126
|
2188
|
+
pygpt_net-2.5.19.dist-info/METADATA,sha256=8J0EzTUq-UJNv-3-5GklPeK5AZLWjE-0d3b_ROltsZY,172757
|
2189
|
+
pygpt_net-2.5.19.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
2190
|
+
pygpt_net-2.5.19.dist-info/entry_points.txt,sha256=qvpII6UHIt8XfokmQWnCYQrTgty8FeJ9hJvOuUFCN-8,43
|
2191
|
+
pygpt_net-2.5.19.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|