bizyengine 1.2.6__py3-none-any.whl → 1.2.8__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.
- bizyengine/bizy_server/api_client.py +125 -57
- bizyengine/bizy_server/errno.py +9 -0
- bizyengine/bizy_server/server.py +353 -239
- bizyengine/bizyair_extras/__init__.py +1 -0
- bizyengine/bizyair_extras/nodes_flux.py +1 -1
- bizyengine/bizyair_extras/nodes_image_utils.py +2 -2
- bizyengine/bizyair_extras/nodes_nunchaku.py +1 -5
- bizyengine/bizyair_extras/nodes_segment_anything.py +1 -0
- bizyengine/bizyair_extras/nodes_trellis.py +1 -1
- bizyengine/bizyair_extras/nodes_ultimatesdupscale.py +1 -1
- bizyengine/bizyair_extras/nodes_wan_i2v.py +222 -0
- bizyengine/core/__init__.py +2 -0
- bizyengine/core/commands/processors/prompt_processor.py +21 -18
- bizyengine/core/commands/servers/prompt_server.py +28 -13
- bizyengine/core/common/client.py +14 -2
- bizyengine/core/common/env_var.py +2 -0
- bizyengine/core/nodes_base.py +85 -7
- bizyengine/core/nodes_io.py +2 -2
- bizyengine/misc/llm.py +48 -85
- bizyengine/misc/mzkolors.py +27 -19
- bizyengine/misc/nodes.py +41 -21
- bizyengine/misc/nodes_controlnet_aux.py +18 -18
- bizyengine/misc/nodes_controlnet_union_sdxl.py +5 -12
- bizyengine/misc/segment_anything.py +29 -25
- bizyengine/misc/supernode.py +36 -30
- bizyengine/misc/utils.py +33 -21
- bizyengine/version.txt +1 -1
- bizyengine-1.2.8.dist-info/METADATA +211 -0
- {bizyengine-1.2.6.dist-info → bizyengine-1.2.8.dist-info}/RECORD +31 -30
- {bizyengine-1.2.6.dist-info → bizyengine-1.2.8.dist-info}/WHEEL +1 -1
- bizyengine-1.2.6.dist-info/METADATA +0 -19
- {bizyengine-1.2.6.dist-info → bizyengine-1.2.8.dist-info}/top_level.txt +0 -0
|
@@ -8,6 +8,7 @@ import bizyengine.core as core
|
|
|
8
8
|
from bizyengine.core.common import get_api_key
|
|
9
9
|
from bizyengine.core.common.env_var import (
|
|
10
10
|
BIZYAIR_PRODUCTION_TEST,
|
|
11
|
+
BIZYAIR_SERVER_MODE,
|
|
11
12
|
BIZYAIR_X_SERVER,
|
|
12
13
|
BIZYAIR_Y_SERVER,
|
|
13
14
|
)
|
|
@@ -35,9 +36,12 @@ class APIClient:
|
|
|
35
36
|
timeout = aiohttp.ClientTimeout(total=30)
|
|
36
37
|
return aiohttp.ClientSession(timeout=timeout)
|
|
37
38
|
|
|
38
|
-
def auth_header(self):
|
|
39
|
+
def auth_header(self, api_key: str = None):
|
|
39
40
|
try:
|
|
40
|
-
|
|
41
|
+
if not BIZYAIR_SERVER_MODE:
|
|
42
|
+
api_key = get_api_key()
|
|
43
|
+
if not api_key:
|
|
44
|
+
return None, errnos.INVALID_API_KEY
|
|
41
45
|
auth = f"Bearer {api_key}"
|
|
42
46
|
headers = {
|
|
43
47
|
"accept": "application/json",
|
|
@@ -157,14 +161,14 @@ class APIClient:
|
|
|
157
161
|
return None, errnos.GET_USER_INFO
|
|
158
162
|
|
|
159
163
|
async def sign(
|
|
160
|
-
self, signature: str, type: str
|
|
164
|
+
self, signature: str, type: str, request_api_key: str = None
|
|
161
165
|
) -> tuple[dict | None, ErrorNo | None]:
|
|
162
166
|
server_url = f"{BIZYAIR_X_SERVER}/files/{signature}"
|
|
163
167
|
params = None
|
|
164
168
|
if is_string_valid(type):
|
|
165
169
|
params = {"type": type}
|
|
166
170
|
|
|
167
|
-
headers, err = self.auth_header()
|
|
171
|
+
headers, err = self.auth_header(api_key=request_api_key)
|
|
168
172
|
if err is not None:
|
|
169
173
|
return None, err
|
|
170
174
|
|
|
@@ -180,7 +184,12 @@ class APIClient:
|
|
|
180
184
|
return None, errnos.SIGN_FILE
|
|
181
185
|
|
|
182
186
|
async def commit_file(
|
|
183
|
-
self,
|
|
187
|
+
self,
|
|
188
|
+
signature: str,
|
|
189
|
+
object_key: str,
|
|
190
|
+
md5_hash: str,
|
|
191
|
+
type: str,
|
|
192
|
+
request_api_key: str = None,
|
|
184
193
|
) -> tuple[dict | None, ErrorNo | None]:
|
|
185
194
|
server_url = f"{BIZYAIR_X_SERVER}/files"
|
|
186
195
|
|
|
@@ -190,7 +199,7 @@ class APIClient:
|
|
|
190
199
|
"md5_hash": md5_hash,
|
|
191
200
|
"type": type,
|
|
192
201
|
}
|
|
193
|
-
headers, err = self.auth_header()
|
|
202
|
+
headers, err = self.auth_header(api_key=request_api_key)
|
|
194
203
|
if err is not None:
|
|
195
204
|
return None, err
|
|
196
205
|
|
|
@@ -222,11 +231,11 @@ class APIClient:
|
|
|
222
231
|
return None, errnos.COMMIT_BIZY_MODEL
|
|
223
232
|
|
|
224
233
|
async def delete_bizy_model(
|
|
225
|
-
self, model_id: int
|
|
234
|
+
self, model_id: int, request_api_key: str = None
|
|
226
235
|
) -> tuple[dict | None, ErrorNo | None]:
|
|
227
236
|
server_url = f"{BIZYAIR_X_SERVER}/bizy_models/{model_id}"
|
|
228
237
|
|
|
229
|
-
headers, err = self.auth_header()
|
|
238
|
+
headers, err = self.auth_header(api_key=request_api_key)
|
|
230
239
|
if err is not None:
|
|
231
240
|
return None, err
|
|
232
241
|
|
|
@@ -248,6 +257,7 @@ class APIClient:
|
|
|
248
257
|
model_types: list[str] = None,
|
|
249
258
|
base_models: list[str] = None,
|
|
250
259
|
sort: str = None,
|
|
260
|
+
request_api_key: str = None,
|
|
251
261
|
) -> tuple[dict | None, ErrorNo | None]:
|
|
252
262
|
server_url = f"{BIZYAIR_X_SERVER}/bizy_models/community"
|
|
253
263
|
params = {"current": current, "page_size": page_size}
|
|
@@ -260,7 +270,7 @@ class APIClient:
|
|
|
260
270
|
if sort:
|
|
261
271
|
params["sort"] = sort
|
|
262
272
|
|
|
263
|
-
headers, err = self.auth_header()
|
|
273
|
+
headers, err = self.auth_header(api_key=request_api_key)
|
|
264
274
|
if err is not None:
|
|
265
275
|
return None, err
|
|
266
276
|
|
|
@@ -282,6 +292,7 @@ class APIClient:
|
|
|
282
292
|
model_types: list[str] = None,
|
|
283
293
|
base_models: list[str] = None,
|
|
284
294
|
sort: str = None,
|
|
295
|
+
request_api_key: str = None,
|
|
285
296
|
) -> tuple[dict | None, ErrorNo | None]:
|
|
286
297
|
server_url = f"{BIZYAIR_X_SERVER}/bizy_models/official"
|
|
287
298
|
params = {"current": current, "page_size": page_size}
|
|
@@ -294,7 +305,7 @@ class APIClient:
|
|
|
294
305
|
if sort:
|
|
295
306
|
params["sort"] = sort
|
|
296
307
|
|
|
297
|
-
headers, err = self.auth_header()
|
|
308
|
+
headers, err = self.auth_header(api_key=request_api_key)
|
|
298
309
|
if err is not None:
|
|
299
310
|
return None, err
|
|
300
311
|
|
|
@@ -317,6 +328,7 @@ class APIClient:
|
|
|
317
328
|
model_types: list[str] = None,
|
|
318
329
|
base_models: list[str] = None,
|
|
319
330
|
sort: str = None,
|
|
331
|
+
request_api_key: str = None,
|
|
320
332
|
) -> tuple[dict | None, ErrorNo | None]:
|
|
321
333
|
server_url = f"{BIZYAIR_X_SERVER}/bizy_models/{mode}"
|
|
322
334
|
params = {"current": current, "page_size": page_size}
|
|
@@ -329,7 +341,7 @@ class APIClient:
|
|
|
329
341
|
if sort:
|
|
330
342
|
params["sort"] = sort
|
|
331
343
|
|
|
332
|
-
headers, err = self.auth_header()
|
|
344
|
+
headers, err = self.auth_header(api_key=request_api_key)
|
|
333
345
|
if err is not None:
|
|
334
346
|
return None, err
|
|
335
347
|
|
|
@@ -344,11 +356,11 @@ class APIClient:
|
|
|
344
356
|
return None, errnos.QUERY_MODELS
|
|
345
357
|
|
|
346
358
|
async def get_model_detail(
|
|
347
|
-
self, model_id: int, source: str
|
|
359
|
+
self, model_id: int, source: str, request_api_key: str = None
|
|
348
360
|
) -> tuple[dict | None, ErrorNo | None]:
|
|
349
361
|
server_url = f"{BIZYAIR_X_SERVER}/bizy_models/{model_id}/detail?source={source}"
|
|
350
362
|
|
|
351
|
-
headers, err = self.auth_header()
|
|
363
|
+
headers, err = self.auth_header(api_key=request_api_key)
|
|
352
364
|
if err is not None:
|
|
353
365
|
return None, err
|
|
354
366
|
|
|
@@ -363,11 +375,11 @@ class APIClient:
|
|
|
363
375
|
return None, errnos.GET_MODEL_DETAIL
|
|
364
376
|
|
|
365
377
|
async def get_model_version_detail(
|
|
366
|
-
self, version_id: int
|
|
378
|
+
self, version_id: int, request_api_key: str = None
|
|
367
379
|
) -> tuple[dict | None, ErrorNo | None]:
|
|
368
380
|
server_url = f"{BIZYAIR_X_SERVER}/bizy_models/versions/{version_id}"
|
|
369
381
|
|
|
370
|
-
headers, err = self.auth_header()
|
|
382
|
+
headers, err = self.auth_header(api_key=request_api_key)
|
|
371
383
|
if err is not None:
|
|
372
384
|
return None, err
|
|
373
385
|
|
|
@@ -383,10 +395,12 @@ class APIClient:
|
|
|
383
395
|
)
|
|
384
396
|
return None, errnos.GET_MODEL_VERSION_DETAIL
|
|
385
397
|
|
|
386
|
-
async def fork_model_version(
|
|
398
|
+
async def fork_model_version(
|
|
399
|
+
self, version_id: int, request_api_key: str = None
|
|
400
|
+
) -> tuple[None, ErrorNo | None]:
|
|
387
401
|
server_url = f"{BIZYAIR_X_SERVER}/bizy_models/versions/{version_id}/fork"
|
|
388
402
|
|
|
389
|
-
headers, err = self.auth_header()
|
|
403
|
+
headers, err = self.auth_header(api_key=request_api_key)
|
|
390
404
|
if err is not None:
|
|
391
405
|
return None, err
|
|
392
406
|
|
|
@@ -401,11 +415,11 @@ class APIClient:
|
|
|
401
415
|
return None, errnos.FORK_MODEL_VERSION
|
|
402
416
|
|
|
403
417
|
async def unfork_model_version(
|
|
404
|
-
self, version_id: int
|
|
418
|
+
self, version_id: int, request_api_key: str = None
|
|
405
419
|
) -> tuple[None, ErrorNo | None]:
|
|
406
420
|
server_url = f"{BIZYAIR_X_SERVER}/bizy_models/versions/{version_id}/fork"
|
|
407
421
|
|
|
408
|
-
headers, err = self.auth_header()
|
|
422
|
+
headers, err = self.auth_header(api_key=request_api_key)
|
|
409
423
|
if err is not None:
|
|
410
424
|
return None, err
|
|
411
425
|
|
|
@@ -420,11 +434,16 @@ class APIClient:
|
|
|
420
434
|
return None, errnos.UNFORK_MODEL_VERSION
|
|
421
435
|
|
|
422
436
|
async def update_model(
|
|
423
|
-
self,
|
|
437
|
+
self,
|
|
438
|
+
model_id: int,
|
|
439
|
+
name: str,
|
|
440
|
+
type_: str,
|
|
441
|
+
versions: list[dict],
|
|
442
|
+
request_api_key: str = None,
|
|
424
443
|
) -> tuple[dict | None, ErrorNo | None]:
|
|
425
444
|
server_url = f"{BIZYAIR_X_SERVER}/bizy_models/{model_id}"
|
|
426
445
|
|
|
427
|
-
headers, err = self.auth_header()
|
|
446
|
+
headers, err = self.auth_header(api_key=request_api_key)
|
|
428
447
|
if err is not None:
|
|
429
448
|
return None, err
|
|
430
449
|
|
|
@@ -441,11 +460,11 @@ class APIClient:
|
|
|
441
460
|
return None, errnos.UPDATE_MODEL
|
|
442
461
|
|
|
443
462
|
async def get_upload_token(
|
|
444
|
-
self, filename: str
|
|
463
|
+
self, filename: str, request_api_key: str = None
|
|
445
464
|
) -> tuple[dict | None, ErrorNo | None]:
|
|
446
465
|
server_url = f"{BIZYAIR_X_SERVER}/upload/token?file_name={filename}"
|
|
447
466
|
|
|
448
|
-
headers, err = self.auth_header()
|
|
467
|
+
headers, err = self.auth_header(api_key=request_api_key)
|
|
449
468
|
if err is not None:
|
|
450
469
|
return None, err
|
|
451
470
|
|
|
@@ -460,14 +479,14 @@ class APIClient:
|
|
|
460
479
|
return None, errnos.GET_UPLOAD_TOKEN
|
|
461
480
|
|
|
462
481
|
async def toggle_user_like(
|
|
463
|
-
self, like_type: str, object_id: str
|
|
482
|
+
self, like_type: str, object_id: str, request_api_key: str = None
|
|
464
483
|
) -> tuple[dict | None, ErrorNo | None]:
|
|
465
484
|
if like_type == "model_version":
|
|
466
485
|
server_url = f"{BIZYAIR_X_SERVER}/bizy_models/versions/{object_id}/like"
|
|
467
486
|
else:
|
|
468
487
|
return None, errnos.UNSUPPORT_LIKE_TYPE
|
|
469
488
|
|
|
470
|
-
headers, err = self.auth_header()
|
|
489
|
+
headers, err = self.auth_header(api_key=request_api_key)
|
|
471
490
|
if err is not None:
|
|
472
491
|
return None, err
|
|
473
492
|
|
|
@@ -482,11 +501,11 @@ class APIClient:
|
|
|
482
501
|
return None, errnos.TOGGLE_USER_LIKE
|
|
483
502
|
|
|
484
503
|
async def get_download_url(
|
|
485
|
-
self, sign: str, model_version_id: int
|
|
504
|
+
self, sign: str, model_version_id: int, request_api_key: str = None
|
|
486
505
|
) -> tuple[str | None, ErrorNo | None]:
|
|
487
506
|
server_url = f"{BIZYAIR_X_SERVER}/files/temp-download/{sign}?version_id={model_version_id}"
|
|
488
507
|
|
|
489
|
-
headers, err = self.auth_header()
|
|
508
|
+
headers, err = self.auth_header(api_key=request_api_key)
|
|
490
509
|
if err is not None:
|
|
491
510
|
return None, err
|
|
492
511
|
|
|
@@ -531,10 +550,12 @@ class APIClient:
|
|
|
531
550
|
)
|
|
532
551
|
return [], errnos.LIST_SHARE_MODEL_FILE_ERR
|
|
533
552
|
|
|
534
|
-
async def commit_dataset(
|
|
553
|
+
async def commit_dataset(
|
|
554
|
+
self, payload, request_api_key: str = None
|
|
555
|
+
) -> tuple[dict | None, ErrorNo | None]:
|
|
535
556
|
server_url = f"{BIZYAIR_X_SERVER}/datasets"
|
|
536
557
|
|
|
537
|
-
headers, err = self.auth_header()
|
|
558
|
+
headers, err = self.auth_header(api_key=request_api_key)
|
|
538
559
|
if err is not None:
|
|
539
560
|
return None, err
|
|
540
561
|
|
|
@@ -549,11 +570,15 @@ class APIClient:
|
|
|
549
570
|
return None, errnos.COMMIT_DATASET
|
|
550
571
|
|
|
551
572
|
async def update_dataset(
|
|
552
|
-
self,
|
|
573
|
+
self,
|
|
574
|
+
dataset_id: int,
|
|
575
|
+
name: str,
|
|
576
|
+
versions: list[dict],
|
|
577
|
+
request_api_key: str = None,
|
|
553
578
|
) -> tuple[dict | None, ErrorNo | None]:
|
|
554
579
|
server_url = f"{BIZYAIR_X_SERVER}/datasets/{dataset_id}"
|
|
555
580
|
|
|
556
|
-
headers, err = self.auth_header()
|
|
581
|
+
headers, err = self.auth_header(api_key=request_api_key)
|
|
557
582
|
if err is not None:
|
|
558
583
|
return None, err
|
|
559
584
|
|
|
@@ -570,11 +595,11 @@ class APIClient:
|
|
|
570
595
|
return None, errnos.UPDATE_DATASET
|
|
571
596
|
|
|
572
597
|
async def get_dataset_version_detail(
|
|
573
|
-
self, version_id: int
|
|
598
|
+
self, version_id: int, request_api_key: str = None
|
|
574
599
|
) -> tuple[dict | None, ErrorNo | None]:
|
|
575
600
|
server_url = f"{BIZYAIR_X_SERVER}/datasets/versions/{version_id}"
|
|
576
601
|
|
|
577
|
-
headers, err = self.auth_header()
|
|
602
|
+
headers, err = self.auth_header(api_key=request_api_key)
|
|
578
603
|
if err is not None:
|
|
579
604
|
return None, err
|
|
580
605
|
|
|
@@ -591,11 +616,11 @@ class APIClient:
|
|
|
591
616
|
return None, errnos.GET_MODEL_VERSION_DETAIL
|
|
592
617
|
|
|
593
618
|
async def delete_dataset(
|
|
594
|
-
self, dataset_id: int
|
|
619
|
+
self, dataset_id: int, request_api_key: str = None
|
|
595
620
|
) -> tuple[dict | None, ErrorNo | None]:
|
|
596
621
|
server_url = f"{BIZYAIR_X_SERVER}/datasets/{dataset_id}"
|
|
597
622
|
|
|
598
|
-
headers, err = self.auth_header()
|
|
623
|
+
headers, err = self.auth_header(api_key=request_api_key)
|
|
599
624
|
if err is not None:
|
|
600
625
|
return None, err
|
|
601
626
|
|
|
@@ -615,6 +640,7 @@ class APIClient:
|
|
|
615
640
|
page_size: int,
|
|
616
641
|
keyword: str = None,
|
|
617
642
|
annotated: str = None,
|
|
643
|
+
request_api_key: str = None,
|
|
618
644
|
) -> tuple[dict | None, ErrorNo | None]:
|
|
619
645
|
server_url = f"{BIZYAIR_X_SERVER}/datasets"
|
|
620
646
|
params = {"current": current, "page_size": page_size}
|
|
@@ -623,7 +649,7 @@ class APIClient:
|
|
|
623
649
|
if annotated:
|
|
624
650
|
params["annotated"] = annotated
|
|
625
651
|
|
|
626
|
-
headers, err = self.auth_header()
|
|
652
|
+
headers, err = self.auth_header(api_key=request_api_key)
|
|
627
653
|
if err is not None:
|
|
628
654
|
return None, err
|
|
629
655
|
|
|
@@ -638,11 +664,11 @@ class APIClient:
|
|
|
638
664
|
return None, errnos.QUERY_DATASETS
|
|
639
665
|
|
|
640
666
|
async def get_dataset_detail(
|
|
641
|
-
self, dataset_id: int
|
|
667
|
+
self, dataset_id: int, request_api_key: str = None
|
|
642
668
|
) -> tuple[dict | None, ErrorNo | None]:
|
|
643
669
|
server_url = f"{BIZYAIR_X_SERVER}/datasets/{dataset_id}/detail"
|
|
644
670
|
|
|
645
|
-
headers, err = self.auth_header()
|
|
671
|
+
headers, err = self.auth_header(api_key=request_api_key)
|
|
646
672
|
if err is not None:
|
|
647
673
|
return None, err
|
|
648
674
|
|
|
@@ -656,10 +682,12 @@ class APIClient:
|
|
|
656
682
|
print(f"\033[31m[BizyAir]\033[0m Fail to get dataset detail: {str(e)}")
|
|
657
683
|
return None, errnos.GET_DATASET_DETAIL
|
|
658
684
|
|
|
659
|
-
async def create_share(
|
|
685
|
+
async def create_share(
|
|
686
|
+
self, payload, request_api_key: str = None
|
|
687
|
+
) -> tuple[dict | None, ErrorNo | None]:
|
|
660
688
|
server_url = f"{BIZYAIR_X_SERVER}/share"
|
|
661
689
|
|
|
662
|
-
headers, err = self.auth_header()
|
|
690
|
+
headers, err = self.auth_header(api_key=request_api_key)
|
|
663
691
|
if err is not None:
|
|
664
692
|
return None, err
|
|
665
693
|
|
|
@@ -689,9 +717,11 @@ class APIClient:
|
|
|
689
717
|
print(f"\033[31m[BizyAir]\033[0m Fail to get share detail: {str(e)}")
|
|
690
718
|
return None, errnos.GET_SHARE_DETAIL
|
|
691
719
|
|
|
692
|
-
async def get_data_dict(
|
|
720
|
+
async def get_data_dict(
|
|
721
|
+
self, request_api_key: str = None
|
|
722
|
+
) -> tuple[dict | None, ErrorNo | None]:
|
|
693
723
|
server_url = f"{BIZYAIR_X_SERVER}/dict"
|
|
694
|
-
headers, err = self.auth_header()
|
|
724
|
+
headers, err = self.auth_header(api_key=request_api_key)
|
|
695
725
|
if err is not None:
|
|
696
726
|
return None, err
|
|
697
727
|
|
|
@@ -998,14 +1028,14 @@ class APIClient:
|
|
|
998
1028
|
return None, errnos.LIST_PRODUCTS
|
|
999
1029
|
|
|
1000
1030
|
async def get_year_cost(
|
|
1001
|
-
self, year: str = None,
|
|
1031
|
+
self, year: str = None, query_api_key: str = None
|
|
1002
1032
|
) -> tuple[dict | None, ErrorNo | None]:
|
|
1003
1033
|
server_url = f"{BIZYAIR_Y_SERVER}/invoices/year_cost"
|
|
1004
1034
|
params = {}
|
|
1005
1035
|
if year:
|
|
1006
1036
|
params["year"] = year
|
|
1007
|
-
if
|
|
1008
|
-
params["api_key"] =
|
|
1037
|
+
if query_api_key:
|
|
1038
|
+
params["api_key"] = query_api_key
|
|
1009
1039
|
|
|
1010
1040
|
headers, err = self.auth_header()
|
|
1011
1041
|
if err is not None:
|
|
@@ -1022,14 +1052,14 @@ class APIClient:
|
|
|
1022
1052
|
return None, errnos.GET_YEAR_COST
|
|
1023
1053
|
|
|
1024
1054
|
async def get_month_cost(
|
|
1025
|
-
self, month: str = None,
|
|
1055
|
+
self, month: str = None, query_api_key: str = None
|
|
1026
1056
|
) -> tuple[dict | None, ErrorNo | None]:
|
|
1027
1057
|
server_url = f"{BIZYAIR_Y_SERVER}/invoices/month_cost"
|
|
1028
1058
|
params = {}
|
|
1029
1059
|
if month:
|
|
1030
1060
|
params["month"] = month
|
|
1031
|
-
if
|
|
1032
|
-
params["api_key"] =
|
|
1061
|
+
if query_api_key:
|
|
1062
|
+
params["api_key"] = query_api_key
|
|
1033
1063
|
|
|
1034
1064
|
headers, err = self.auth_header()
|
|
1035
1065
|
if err is not None:
|
|
@@ -1046,14 +1076,14 @@ class APIClient:
|
|
|
1046
1076
|
return None, errnos.GET_MONTH_COST
|
|
1047
1077
|
|
|
1048
1078
|
async def get_day_cost(
|
|
1049
|
-
self, day: str = None,
|
|
1079
|
+
self, day: str = None, query_api_key: str = None
|
|
1050
1080
|
) -> tuple[dict | None, ErrorNo | None]:
|
|
1051
1081
|
server_url = f"{BIZYAIR_Y_SERVER}/invoices/day_cost"
|
|
1052
1082
|
params = {}
|
|
1053
1083
|
if day:
|
|
1054
1084
|
params["date"] = day
|
|
1055
|
-
if
|
|
1056
|
-
params["api_key"] =
|
|
1085
|
+
if query_api_key:
|
|
1086
|
+
params["api_key"] = query_api_key
|
|
1057
1087
|
|
|
1058
1088
|
headers, err = self.auth_header()
|
|
1059
1089
|
if err is not None:
|
|
@@ -1070,12 +1100,12 @@ class APIClient:
|
|
|
1070
1100
|
return None, errnos.GET_DAY_COST
|
|
1071
1101
|
|
|
1072
1102
|
async def get_recent_cost(
|
|
1073
|
-
self,
|
|
1103
|
+
self, query_api_key: str = None
|
|
1074
1104
|
) -> tuple[dict | None, ErrorNo | None]:
|
|
1075
1105
|
server_url = f"{BIZYAIR_Y_SERVER}/invoices/recent_cost"
|
|
1076
1106
|
params = {}
|
|
1077
|
-
if
|
|
1078
|
-
params["api_key"] =
|
|
1107
|
+
if query_api_key:
|
|
1108
|
+
params["api_key"] = query_api_key
|
|
1079
1109
|
|
|
1080
1110
|
headers, err = self.auth_header()
|
|
1081
1111
|
if err is not None:
|
|
@@ -1093,6 +1123,10 @@ class APIClient:
|
|
|
1093
1123
|
|
|
1094
1124
|
def forward_model_request(self, request_data):
|
|
1095
1125
|
try:
|
|
1126
|
+
api_key = get_api_key()
|
|
1127
|
+
if not api_key:
|
|
1128
|
+
return None, errnos.INVALID_API_KEY
|
|
1129
|
+
|
|
1096
1130
|
request_data["stream"] = True
|
|
1097
1131
|
# 硅基云API接受top_k但是openai库不支持
|
|
1098
1132
|
request_data.pop("top_k")
|
|
@@ -1109,17 +1143,26 @@ class APIClient:
|
|
|
1109
1143
|
if "model" not in request_data:
|
|
1110
1144
|
return None, errnos.MODEL_API_ERROR
|
|
1111
1145
|
|
|
1112
|
-
# TODO: 前端能选择provider、model
|
|
1146
|
+
# TODO: 前端能选择provider、model之后删除下句,但目前无此规划是写死的模型
|
|
1113
1147
|
request_data["model"] = f"SiliconFlow:{request_data['model']}"
|
|
1114
1148
|
|
|
1149
|
+
# 获取前端生成的request_id和prompt_id
|
|
1150
|
+
request_id = request_data.pop("request_id", None)
|
|
1151
|
+
prompt_id = request_data.pop("prompt_id", None)
|
|
1152
|
+
extra_body = {}
|
|
1153
|
+
if request_id:
|
|
1154
|
+
extra_body["request_id"] = request_id
|
|
1155
|
+
if prompt_id:
|
|
1156
|
+
extra_body["prompt_id"] = prompt_id
|
|
1157
|
+
|
|
1115
1158
|
client = OpenAI(
|
|
1116
1159
|
base_url=BIZYAIR_X_SERVER,
|
|
1117
|
-
api_key=
|
|
1160
|
+
api_key=api_key,
|
|
1118
1161
|
timeout=60.0,
|
|
1119
1162
|
max_retries=0,
|
|
1120
1163
|
)
|
|
1121
1164
|
return client.chat.completions.with_streaming_response.create(
|
|
1122
|
-
**request_data
|
|
1165
|
+
extra_body=extra_body, **request_data
|
|
1123
1166
|
)
|
|
1124
1167
|
|
|
1125
1168
|
except Exception as e:
|
|
@@ -1129,6 +1172,8 @@ class APIClient:
|
|
|
1129
1172
|
async def forward_image_request(self, request_data):
|
|
1130
1173
|
try:
|
|
1131
1174
|
api_key = get_api_key()
|
|
1175
|
+
if not api_key:
|
|
1176
|
+
return None, errnos.INVALID_API_KEY
|
|
1132
1177
|
headers = {
|
|
1133
1178
|
"Content-Type": "application/json",
|
|
1134
1179
|
"Authorization": f"Bearer {api_key}",
|
|
@@ -1151,3 +1196,26 @@ class APIClient:
|
|
|
1151
1196
|
except Exception as e:
|
|
1152
1197
|
print(f"\033[31m[BizyAir]\033[0m Image generation request failed: {str(e)}")
|
|
1153
1198
|
return None, errnos.MODEL_API_ERROR
|
|
1199
|
+
|
|
1200
|
+
async def fetch_all_llm_models(self, request_api_key: str = None):
|
|
1201
|
+
url = f"{BIZYAIR_X_SERVER}/llm/models"
|
|
1202
|
+
headers, err = self.auth_header(api_key=request_api_key)
|
|
1203
|
+
if err is not None:
|
|
1204
|
+
print(f"fetch_all_models: error getting headers: {err}")
|
|
1205
|
+
return []
|
|
1206
|
+
params = {"type": "text", "sub_type": "chat"}
|
|
1207
|
+
|
|
1208
|
+
try:
|
|
1209
|
+
data, err = await self.do_get(url, params=params, headers=headers)
|
|
1210
|
+
if err is not None:
|
|
1211
|
+
print(f"fetch_all_models: error fetching models: {err}")
|
|
1212
|
+
return []
|
|
1213
|
+
|
|
1214
|
+
all_models = [model["id"] for model in data["data"]]
|
|
1215
|
+
return all_models
|
|
1216
|
+
except aiohttp.ClientError as e:
|
|
1217
|
+
print(f"Error fetching models: {e}")
|
|
1218
|
+
return []
|
|
1219
|
+
except asyncio.exceptions.TimeoutError:
|
|
1220
|
+
print("Request to fetch models timed out")
|
|
1221
|
+
return []
|
bizyengine/bizy_server/errno.py
CHANGED
|
@@ -179,6 +179,15 @@ class errnos:
|
|
|
179
179
|
400, 400148, None, {"en": "Day parameter is required", "zh": "缺少日期参数"}
|
|
180
180
|
)
|
|
181
181
|
|
|
182
|
+
MISSING_PROMPT = ErrorNo(
|
|
183
|
+
400, 400149, None, {"en": "Missing parameter prompt", "zh": "缺少参数prompt"}
|
|
184
|
+
)
|
|
185
|
+
|
|
186
|
+
# 具体错误动态填
|
|
187
|
+
INVALID_PROMPT = ErrorNo(
|
|
188
|
+
400, 400150, None, {"en": "Invalid prompt", "zh": "工作流错误"}
|
|
189
|
+
)
|
|
190
|
+
|
|
182
191
|
INVALID_API_KEY = ErrorNo(
|
|
183
192
|
401, 401000, None, {"en": "Invalid API key", "zh": "无效的API密钥"}
|
|
184
193
|
)
|