MeUtils 2025.6.9.11.35.52__py3-none-any.whl → 2025.6.12.17.34.4__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.
@@ -103,6 +103,7 @@ examples/_openaisdk/openai_baidu.py,sha256=qnrxP66lY7Qf2jEbFEHrt0FrR5_Aji1AgwSI_
103
103
  examples/_openaisdk/openai_cache.py,sha256=89GbJ1QlqQbVxlUeuFgEbwDYHOkum7BK0zB-CqmDAZU,726
104
104
  examples/_openaisdk/openai_chatfire.py,sha256=lnQU_po1eMb-YIrW8rgQMfC5UbcReCMZERiylesmJr0,19092
105
105
  examples/_openaisdk/openai_chatfire_all.py,sha256=DaiI1NfDeK655QvXyczkgXK9Awxp7NBe71LHA7trxGE,4831
106
+ examples/_openaisdk/openai_chatfire_usa.py,sha256=kS7QlZYTUAJ0lfgTnh3wK-NIW9lfC8aSO0xgfUF7lBE,649
106
107
  examples/_openaisdk/openai_dashscope.py,sha256=m9SjQpaNgYwr4Qd3XusWbJBGp5ZTtpuB40QopejxPKQ,1029
107
108
  examples/_openaisdk/openai_deepinfra.py,sha256=innI4BT15dZEqheqDHG4lHDczY1QC7t2Whcavi1pcz0,1195
108
109
  examples/_openaisdk/openai_deepseek.py,sha256=0IbHh2F6eVDs-i8gP8x8wj6s9R6CzOGN7QrCp1EuB5k,2086
@@ -370,7 +371,7 @@ meutils/apis/dreamfaceapp/videos.py,sha256=xtz4GYRTdVE-D7xxFpSaH5Kl5ewXDx9Ogvtkf
370
371
  meutils/apis/fal/__init__.py,sha256=A7w3ZAS7Tv20N4X4Em6NshDxKSCPAzaPxHJTbM3BbyM,272
371
372
  meutils/apis/fal/chat.py,sha256=yReABuCWfXOEt7tZax03XIX5KBlfBo2DlEOp2EpiGOM,2641
372
373
  meutils/apis/fal/files.py,sha256=Gppdo96uw8-TCDr8P691jV7dK9Si-E-kJXFJR5BVt-Q,1373
373
- meutils/apis/fal/images.py,sha256=gpWYIk2fKHr6yhLnUobzGSxyTXfWa4-LwwSRwy99hHc,12314
374
+ meutils/apis/fal/images.py,sha256=TKMlgIHVsMbI6tLvM24JILkyFU5RWzWVIlAk2CiqYfo,12499
374
375
  meutils/apis/fal/images_.py,sha256=C-C1TTQtMJ6RRcd-4FeYPn0R5IpPRPUFmBbrTVs_ypA,1446
375
376
  meutils/apis/fal/kling_videos.py,sha256=kL4SRpZafRSCRODtiNqeXauxfamHNdcBTE65BrG1rVA,2554
376
377
  meutils/apis/fal/pd.py,sha256=oPrMK_FJqohl2Kf0U0it8SqgvIlSEYFcSX8sfVkD8bU,311
@@ -382,7 +383,7 @@ meutils/apis/gitee/images/__init__.py,sha256=zvS8e0ogQLqajZTAype1e0TDLJenlfbRQ16
382
383
  meutils/apis/gitee/images/kolors.py,sha256=IGpDtMiOOPgbE8ZOXFP9-Hh_XNCDkuvNYjKQbXq8Nik,3338
383
384
  meutils/apis/google/__init__.py,sha256=3pcpV81045y42FCTSdN99YGLCabwocR-f1_gjTSeFhE,243
384
385
  meutils/apis/google/audios.py,sha256=Su1V3TAOn8X94KgOrmpLRPnYETgTyDXqjDf4qQMkzAo,3289
385
- meutils/apis/google/chat.py,sha256=tpNTiICiLcVSsUMm5f78k_TvwCfR2o7b52R1gNYNOlI,16972
386
+ meutils/apis/google/chat.py,sha256=aYB67-1tlnCE2yxIk2bKPEUih10jchGgEaQ_HmMKcmg,17022
386
387
  meutils/apis/google/files.py,sha256=1TMYUe7OVAmDlhlu92dSLUQr037hQzXf-RTfZ9Tfp_c,1017
387
388
  meutils/apis/google/gemini_sdk.py,sha256=iHmD_pGPM3qy_IHHA2pwAt01gM3hjRlPmrvsRQmfgEM,8525
388
389
  meutils/apis/google/google2openai.py,sha256=JaRw4XfGjy1XAbM4UwLqwLHmldOvM1J1tbMTagi10os,3075
@@ -413,6 +414,7 @@ meutils/apis/images/deepinfra.py,sha256=lMqfU0LIXEzHiAS31dCcoTnPIE6tpoDJhq61H0TV
413
414
  meutils/apis/images/demo.py,sha256=Cjk-EKMKbp44czykW_44qR0TzElX8nNCALqXBBw5sJA,4405
414
415
  meutils/apis/images/edits.py,sha256=tdtFKVaMti4zOAh9WQ_VWrKyuJyomZ3-Fwh1DK7EJAM,10189
415
416
  meutils/apis/images/eidt.py,sha256=s8IBbCjwwoogIUf-d2O7nkawUmly9n19nvLYPaLEeg4,1217
417
+ meutils/apis/images/generations.py,sha256=e5eFUy_y42fp7TnIaY6R1L8eoK-2LH4hILrWqPtOQiA,998
416
418
  meutils/apis/images/openai_edits.py,sha256=a03L8vY8NXnl8uT9o0SMszMxE7dv6tTCZQyMyI5dS_g,2160
417
419
  meutils/apis/images/recraft.py,sha256=6EqGtoG8RBiStOIazaBvceekP9pF1_ws7fn4BuXFdqk,72705
418
420
  meutils/apis/images/flux/__init__.py,sha256=W_PZabQm6EmtJYmzEiEpL_WCXTAW0AiJ-t_n5UTrE8c,271
@@ -435,7 +437,7 @@ meutils/apis/jimeng/common.py,sha256=LFuhgY-KKE661Kf5oY0xAA1LhNu6ErGJ6SflSJPVHkE
435
437
  meutils/apis/jimeng/doubao_images.py,sha256=Aeq1hve2PiO3baP50Augsu0u2YFlC7r_X5jgnDqv6y4,2082
436
438
  meutils/apis/jimeng/doubao_utils.py,sha256=d9KDNkqKN4oxaJRAeGNMouRvzHEhIRXzN3T_HjtTXdM,6025
437
439
  meutils/apis/jimeng/files.py,sha256=AlsAlQGufGm84TldUBLFZpZQGD6INN5xIwHql9ocPj4,11310
438
- meutils/apis/jimeng/images.py,sha256=AO1Qvm-zpIU5hJegnf_zseIYE1C58wzfyje6Db5TzOk,23001
440
+ meutils/apis/jimeng/images.py,sha256=KUr16G_SyNUJixXHUZUwdSECxtbPGuM21_LSoSWHWPM,23066
439
441
  meutils/apis/jimeng/videos.py,sha256=MRDXz96BYEuS4vVCHeXaoNE6nfpq0B6UCf1_dafCE-8,6127
440
442
  meutils/apis/jimeng/videos_videos.py,sha256=A6oWLKcrb6YMIumqUMQS3KVP9bhOEKLUOIlAUlbREmE,12259
441
443
  meutils/apis/jimeng_global/__init__.py,sha256=ENdwkppOOekt9Qzy_50TyA7lzNEqo0TpZcF7d2rYBhc,245
@@ -541,6 +543,7 @@ meutils/apis/voice_clone/fish_api.py,sha256=pDpE-B8HFiGIOV3NVd1HmFrCC2GQc3wH-81o
541
543
  meutils/apis/volcengine_apis/__init__.py,sha256=gtu5ZNCc3up8bzgrCi10uwhsC04HpuCEEPXR_iVCNJE,244
542
544
  meutils/apis/volcengine_apis/images.py,sha256=F9LXXptesnASB_Al7rkEshb2S5r3PixZd8w0mif5468,5463
543
545
  meutils/apis/volcengine_apis/tasks.py,sha256=da2wYs2bqjYte_P2aFbSdKkLBaghuAj6vVKIlgdMg5A,4495
546
+ meutils/apis/volcengine_apis/videos.py,sha256=T4L4IdOEzMuktDgBESiTPBR1dBUVgWMVvsUdGXbQ5XA,4552
544
547
  meutils/async_task/__init__.py,sha256=45cUr-GWvQ1JFYGOYPOIkHLyTR3JbfP_PEYrmktpMLo,367
545
548
  meutils/async_task/celery_config.py,sha256=BX1h3jY34aO6UmUFakdBUwOdsEiOxCGuUtYDUKFtafc,3461
546
549
  meutils/async_task/common.py,sha256=ZJ4e0CsEJf1ppPmGSwPCwhZBAkUL5xsi_t1ny-bJuko,845
@@ -589,7 +592,7 @@ meutils/config_utils/lark_utils/demo.py,sha256=3g0Fs7oLaeW75T60gYWMLgyNg1OnfOjfH
589
592
  meutils/config_utils/lark_utils/x.py,sha256=MlMQGhehP9xMEgetxVCX68XFaosfKoW1JA5cZ3JqN2w,1857
590
593
  meutils/crawlers/__init__.py,sha256=TBU4xA-IOsHV-0yIkW7YXxn_QT7TT8NncqxO7IykEfs,271
591
594
  meutils/data/SimHei.ttf,sha256=-XEnekS5yHP_URkT4XBI2w22ylV-KxudhkeIYFbrILA,10062565
592
- meutils/data/VERSION,sha256=rwsTLlBoKl4pDy6WJa9SQz3uKxFyRaVolT1FasOEmq8,19
595
+ meutils/data/VERSION,sha256=trtpAA_484ptK6W_nrD0KMw3dsbSBTaOSpa5pyFCCfQ,19
593
596
  meutils/data/_FLAG,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
594
597
  meutils/data/_SUCCESS,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
595
598
  meutils/data/__init__.py,sha256=Hfwkkxs4zHqKhxht0YrhS566a9P5axtmgNvM5wF8ceQ,243
@@ -671,7 +674,7 @@ meutils/jwt_utils/__init__.py,sha256=zs4pIDk4sQ82o7meMwt64_tv2WBMRTaXX9doe0ilvvs
671
674
  meutils/jwt_utils/common.py,sha256=u2PPQJ9S-83y8f3Sb5L2OCRP7o-xV56EAmlzMZ8Je0Q,2352
672
675
  meutils/llm/__init__.py,sha256=mYv0QpACLd-wz4htIduPuTU3mX06_Y8ZprxDohtZGBM,244
673
676
  meutils/llm/check_api.py,sha256=Cu60Rvp7zLmmazuLXxpK4z-FCab4NrO4nH5LzfYjjoM,3591
674
- meutils/llm/check_utils.py,sha256=PqZXMlM__U3m7HmZf0k3tlDDPLj05IAndbtzBRdhQek,8096
677
+ meutils/llm/check_utils.py,sha256=-6cOZDci4WMwwnp5YloSGSXcaI9SU45X-BXgExI9Ltc,8109
675
678
  meutils/llm/clients.py,sha256=qZa9WC85Ah4tdEd-EI_P_038mnJLq_z-smaJdwJp-EM,2956
676
679
  meutils/llm/demo.py,sha256=gyGjTxuNFMOa1X4CXaChkq0lcjbKiRsnSRhkeMvsoQk,3822
677
680
  meutils/llm/mappers.py,sha256=ZQLl3OuD06kVMP8bwIpVgAB1UVzMJWUJiZ3vgk-ZjeI,303
@@ -713,8 +716,8 @@ meutils/llm/openai_polling/__init__.py,sha256=qmAMITPtrTD-y57RiJXewuOic7iLKBhx8m
713
716
  meutils/llm/openai_polling/chat.py,sha256=WSQnKEJlZkJjS8CVq6RWouu7FCGgjw5Z5Aj2n1XkYsY,8049
714
717
  meutils/llm/openai_polling/images.py,sha256=qKMk3vCvamS_48ceC-_y2LPpP5XsD476FHG9MUu8kks,1042
715
718
  meutils/llm/openai_utils/__init__.py,sha256=MWyNhP2K49oaHGEZlInZc3XlwqlStFultP8k7HDPAwk,290
716
- meutils/llm/openai_utils/adapters.py,sha256=lGKuxTgvC_W5LvlNKXB5dL5ycqV6yRGVtzK_2mKOm6I,2217
717
- meutils/llm/openai_utils/common.py,sha256=UMZPB4__Xs1iCyccMFrEwTYn1lJJuNIGL-TfblUBM1g,10451
719
+ meutils/llm/openai_utils/adapters.py,sha256=qZ0mzjHB9o6m6PwytCy1Ukr3GQZ7qqAjzbsAzryXp6k,2307
720
+ meutils/llm/openai_utils/common.py,sha256=67HF4OHNRHfquerdgaHASdLFnHipwVpwUFnAhQQcaX0,10465
718
721
  meutils/llm/openai_utils/tool_outputs.py,sha256=6mNkm4btgy0uzF98gdmcah1bYmoflXdLz2Sqm0KC_LQ,1224
719
722
  meutils/llm/output_parsers/__init__.py,sha256=EGKvgUD47ReyV5Z9RXDCrdDLgfKMHdoayzsXVmBuQxw,3474
720
723
  meutils/llm/prompts/__init__.py,sha256=VlEEViFoUSRS0EF1rHJXHh9Ik9FpvAiR1luKjHOsUc4,8580
@@ -725,9 +728,11 @@ meutils/logging/__init__.py,sha256=dKFrn05P8EAvvzxwiZnzPTT5r54yInwoO5cRyp2jFmQ,2
725
728
  meutils/logging/handlers.py,sha256=ngnVVN7wcFQZsSTnc-1nP5ZRCp-jbO1Qt7mjNfum_-8,701
726
729
  meutils/logging/log_utils.py,sha256=Sa5-Y4fWNTKQw2fIb1dbPgOypl6S6m7EOrbciSqEt5A,2937
727
730
  meutils/logging/logger.py,sha256=-J_tWYfAvPhSTshVWIiN-6zTZnjkFuwDfMtxUtuNkuY,6183
731
+ meutils/math_utils/__init__.py,sha256=vg71MyiPyDCeFDwi42MLSfAFQl43a3uNLIgerY0eDRA,284
732
+ meutils/math_utils/common.py,sha256=8MpWwgYLdvrpouTd9YJzcAwH-KNq58J4mY87dvd7e3Q,1086
728
733
  meutils/notice/__init__.py,sha256=BVbcBx4ks-BH_63gEcjMxL67oX1_aWdaM8r3TDo8Ogg,248
729
734
  meutils/notice/emails.py,sha256=TvC1xv3MpFC2HU0lTQW5SmNuj7UMlgjpsUImMp9jKOw,2403
730
- meutils/notice/feishu.py,sha256=i2YkuzFGRtaIeu7CRtkf2hHXzLr1-SJX-qRk-b_mO2E,4482
735
+ meutils/notice/feishu.py,sha256=ydQuZgzmL3j5u0ySkLKShRemM4UYYOKa-vIsnezKWEU,4626
731
736
  meutils/notice/file_post.py,sha256=KQ8iQUM30vF7T6ZZPahdLps4dLXK2s3nzdFYbty6M5E,953
732
737
  meutils/notice/load_emailfile - 副本.py,sha256=f-Kq3UKZut_P0bmumV1y4PXuPtatjl-5SLUH5LShBUY,7331
733
738
  meutils/notice/wechat.py,sha256=-HU5oSvpZrVnjjU76ky7_j0yg5ivn5mIlJ7JJVtlrnY,4082
@@ -820,7 +825,7 @@ meutils/schemas/fish_types.py,sha256=yC0ZFr3Ebh8F0OhtMsXYaIfNNvzOM2LT9YtKTaRoHGU
820
825
  meutils/schemas/hailuo_types.py,sha256=ubG6qIU506tq51UsURuwlPhtPNa49xHSoBzBtW7jg_0,7431
821
826
  meutils/schemas/haimian_types.py,sha256=jGu484UviAeBgy5OIUyRY4uYCxXfv16zDPqiJQr9wNQ,1364
822
827
  meutils/schemas/idphoto_types.py,sha256=nuHbpppejRSkJCiQ7YKx0Gnke0ShKZhOvdg0e7tk9-0,1074
823
- meutils/schemas/image_types.py,sha256=yqWcs3vLT5rX_hiJoCpMdKTfNdgCr-95g5s-Vcd8aow,15869
828
+ meutils/schemas/image_types.py,sha256=NgHdKpZLLE4RLoEeDZnCwpFuMUVDJqUr0Q9ZNHW3oj0,16224
824
829
  meutils/schemas/jimeng_types.py,sha256=z0mAICgNE0Yaq09_puzgMfHOP-QKWiZqqMlFbLVHtmY,1995
825
830
  meutils/schemas/jina_types.py,sha256=SLRRBCap2B1uXnHF7Sgnlz1Work8HvdIltjj4oVlGTk,8826
826
831
  meutils/schemas/kimi_types.py,sha256=PjCgHwCDNzKasn4X6rUzvOENqKYT3xj07cgp71IdsDA,3607
@@ -856,7 +861,7 @@ meutils/schemas/db/__init__.py,sha256=m1maURVoM6dIW0yt6ELZrZTzULtkHybVOSXtHNJRVI
856
861
  meutils/schemas/db/oneapi_types.py,sha256=3t2m0H80saEXmYUZfVFrtEaY117GjZTsSa1GKgkJzqQ,3896
857
862
  meutils/schemas/oneapi/__init__.py,sha256=uevbi3QAvFzN9WPbx9bYKTDyKt7P2ueZO6W0nSiD0sk,289
858
863
  meutils/schemas/oneapi/_types.py,sha256=IdXSLPQl73AKtCC5jFI2w5O7WFuQcQJlN_pr8xiMKz0,2648
859
- meutils/schemas/oneapi/common.py,sha256=CPx0TZZTOHs0zk25VPZw6ELIqb7qG2S2WMAGVP7M7Wo,40544
864
+ meutils/schemas/oneapi/common.py,sha256=0RFlX0yKc1uQ1pRa1vZwzLx2ywWXDYReKpo6waxN3kw,41461
860
865
  meutils/schemas/oneapi/icons.py,sha256=T7W5gInBJoHe62wzMimbG_UI-wn3_-rmQ1O4O2z-CQY,1089
861
866
  meutils/schemas/oneapi/model_group_info.py,sha256=rGtflYJuFIjk5MsVEvK9JUR4IciX8jfErqeLqf8DIlQ,1586
862
867
  meutils/schemas/oneapi/model_info.py,sha256=_uwKEPIIqm7ZYfhmpxtXB2QNsS83SpJY-OaBzvogC9w,772
@@ -909,9 +914,9 @@ meutils/settings/__init__.py,sha256=jZc0NXPA9zIMcTAYypSQDxJqvXakyJ0ztK9ZMND2Q7U,
909
914
  meutils/settings/base.py,sha256=kb3QVS2eUFWyGgvegtSK4cqJFF76J1JctTSzCVqc1Mo,264
910
915
  meutils/settings/demo.py,sha256=Ht3t6LREQsKa5W2owNrOZNAoZfS-zItIFNwGhhPj-4k,484
911
916
  meutils/str_utils/Translator.py,sha256=tfvNQIeVCqmX9yW6jobeibDHG6X-XecSSAx9kJIFFyw,1258
912
- meutils/str_utils/__init__.py,sha256=oZh9gMfiOHvIf7ViDGhpYxxPoXyIbxCJaTWrNvuv-V0,9620
917
+ meutils/str_utils/__init__.py,sha256=7rVAWR0bbxVvuWFwyC0ZedpY1QVSmrrLwLIfPAfjWqM,10238
913
918
  meutils/str_utils/json_utils.py,sha256=H65v9vZtXVuYyRCQAfyQ4KZzAecwjvjBH6qTy0hCDE4,4033
914
- meutils/str_utils/regular_expression.py,sha256=Cm9Hy5GoIcWejs2oElgw_prNCRnb_y8xUCW_Mt7rdIc,6128
919
+ meutils/str_utils/regular_expression.py,sha256=HqEcPNyUHBBo7oJlwOFNpiFiO5NCXB8hD41nI1826fU,6161
915
920
  meutils/str_utils/__translater/__init__.py,sha256=mtDbKL_Qdkeq5VPVO1M4ejf9H8PzKM5h7iepqkBG8N0,277
916
921
  meutils/str_utils/__translater/tencent.py,sha256=1E_56l6-A49Yuz2ZrMKxt-QJfcf0xDYN2X0dg58Dytk,1408
917
922
  meutils/str_utils/__translater/translater.py,sha256=A_9NLVvkjzPd9omIcJGhux21D-gcCxemyrZ7o6uGx_Q,1238
@@ -985,9 +990,9 @@ meutils/tools/seize.py,sha256=nOKAS63w-Lbi48I0m2MPhdsokUTwxco0laPxYVmW4Mw,1064
985
990
  meutils/tools/service_monitor.py,sha256=ibsLtBN2g2DL7ZnLJ8vhiZOiOcqTAyx711djDdBK-3M,1255
986
991
  meutils/tools/sys_monitor.py,sha256=6MoyzrItqDUOSjfHcMJmMofQkEPTW36CT_aKui0rg84,429
987
992
  meutils/tools/token_monitor.py,sha256=Np-YK-R4P4IPAXyZvMxwvXI4sFmNJQAQK1lSegNaYpA,997
988
- MeUtils-2025.6.9.11.35.52.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
989
- MeUtils-2025.6.9.11.35.52.dist-info/METADATA,sha256=gwzkoKJxWIY71bIWQed_5mCQ-1o-gaMV5Qn1Gm8oS4g,32833
990
- MeUtils-2025.6.9.11.35.52.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
991
- MeUtils-2025.6.9.11.35.52.dist-info/entry_points.txt,sha256=lufZlBHRqqZKdY-ZQJ4CSZb0qhV5hQC37egZna9M7ug,357
992
- MeUtils-2025.6.9.11.35.52.dist-info/top_level.txt,sha256=cInfxMmkgNOskurdjwP5unau4rA7Uw48nu07tYhS7KY,22
993
- MeUtils-2025.6.9.11.35.52.dist-info/RECORD,,
993
+ MeUtils-2025.6.12.17.34.4.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
994
+ MeUtils-2025.6.12.17.34.4.dist-info/METADATA,sha256=0owD_l02jJ_WKeYpjPm60ER0d3dFUFISBwwTpxcCoxI,32833
995
+ MeUtils-2025.6.12.17.34.4.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
996
+ MeUtils-2025.6.12.17.34.4.dist-info/entry_points.txt,sha256=lufZlBHRqqZKdY-ZQJ4CSZb0qhV5hQC37egZna9M7ug,357
997
+ MeUtils-2025.6.12.17.34.4.dist-info/top_level.txt,sha256=cInfxMmkgNOskurdjwP5unau4rA7Uw48nu07tYhS7KY,22
998
+ MeUtils-2025.6.12.17.34.4.dist-info/RECORD,,
@@ -0,0 +1,32 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding: utf-8 -*-
3
+ # @Project : AI. @by PyCharm
4
+ # @File : openai_siliconflow
5
+ # @Time : 2024/6/26 10:42
6
+ # @Author : betterme
7
+ # @WeChat : meutils
8
+ # @Software : PyCharm
9
+ # @Description :
10
+ import os
11
+
12
+ from meutils.pipe import *
13
+ from openai import OpenAI
14
+ from openai import OpenAI, APIStatusError
15
+
16
+
17
+ client = OpenAI(
18
+ api_key="sk-5pMaS37pVZXH9s2dMwRK984QiwIRh9qQbQGnkv5fAFNaxMK6-16207",
19
+ base_url="https://usa.chatfire.cn"
20
+ )
21
+
22
+
23
+
24
+ r = client.images.generate(
25
+ model="cogview-3-plus",
26
+ prompt="a white siamese cat",
27
+ size="1024x1024",
28
+ extra_body={
29
+ ""
30
+ },
31
+ n=1,
32
+ )
@@ -48,13 +48,13 @@ async def check(token, threshold: float = 0):
48
48
  return False
49
49
 
50
50
 
51
- async def generate(request: ImageRequest, token: Optional[str] = None):
51
+ async def generate(request: ImageRequest, api_key: Optional[str] = None):
52
52
  """https://fal.ai/models/fal-ai/flux-pro/v1.1-ultra/api#api-call-submit-request
53
53
  """
54
54
  logger.debug(request)
55
55
 
56
56
  s = time.time()
57
- token = token or await get_next_token_for_polling(feishu_url=FEISHU_URL, from_redis=True, check_token=check)
57
+ token = api_key or await get_next_token_for_polling(feishu_url=FEISHU_URL, from_redis=True, check_token=check)
58
58
 
59
59
  arguments = request.model_dump(exclude_none=True)
60
60
  width, height = request.size.split("x")
@@ -156,10 +156,12 @@ async def generate(request: ImageRequest, token: Optional[str] = None):
156
156
  arguments.pop("aspect_ratio", None)
157
157
 
158
158
  aspect_ratios = {'21:9', '16:9', '4:3', '3:2', '1:1', '2:3', '3:4', '9:16', '9:21'}
159
- if request.aspect_ratio in aspect_ratios:
160
- arguments["aspect_ratio"] = request.aspect_ratio
161
159
 
160
+ if aspect_ratio := request.prompt2aspect_ratio(aspect_ratios): # 提示词优先级最高
161
+ arguments["aspect_ratio"] = aspect_ratio
162
162
 
163
+ elif request.aspect_ratio in aspect_ratios:
164
+ arguments["aspect_ratio"] = request.aspect_ratio
163
165
 
164
166
  logger.debug(bjson(arguments))
165
167
 
@@ -266,14 +268,14 @@ if __name__ == '__main__':
266
268
 
267
269
  tokens = arun(get_series(FEISHU_URL))
268
270
  # tokens = ["578e143c-702d-46a1-8c02-d451bc3e155b:bb531a95f79c6026e7bc7ab676163c71"]
269
- tokens = """
270
- 30e9fe5c-75d0-4bdd-b11d-ff17dbe4bba5:3de8535e2fa4d9347e599a845cf3e7b8
271
- 05c0b4f6-1443-4b28-aeff-771b65ebaebc:28df6b9b71430b05aca6b8bc7e873a4a
272
- """.split()
273
-
274
- r = []
275
- for t in tokens:
276
- if arun(check(t)):
277
- r.append(t)
278
-
279
- print('\n'.join(r))
271
+ # tokens = """
272
+ # 30e9fe5c-75d0-4bdd-b11d-ff17dbe4bba5:3de8535e2fa4d9347e599a845cf3e7b8
273
+ # 05c0b4f6-1443-4b28-aeff-771b65ebaebc:28df6b9b71430b05aca6b8bc7e873a4a
274
+ # """.split()
275
+ #
276
+ # r = []
277
+ # for t in tokens:
278
+ # if arun(check(t)):
279
+ # r.append(t)
280
+ #
281
+ # print('\n'.join(r))
@@ -62,9 +62,9 @@ tools = [
62
62
  # )
63
63
 
64
64
  class Completions(object):
65
- def __init__(self, api_key: Optional[str] = None):
65
+ def __init__(self, api_key: Optional[str] = None, base_url: Optional[str] = None):
66
66
  self.api_key = api_key
67
- self.base_url = "https://g.chatfire.cn"
67
+ self.base_url = base_url or "https://g.chatfire.cn"
68
68
  self.client = None ####
69
69
 
70
70
  async def create_for_search(self, request: CompletionRequest):
@@ -278,7 +278,7 @@ class Completions(object):
278
278
  # 两轮即可连续编辑图片
279
279
 
280
280
  messages = []
281
- for m in request.messages:
281
+ for m in request.messages or []:
282
282
  contents = m.get("content")
283
283
  if m.get("role") == "assistant":
284
284
  assistant_content = str(contents)
@@ -0,0 +1,34 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding: utf-8 -*-
3
+ # @Project : AI. @by PyCharm
4
+ # @File : generations
5
+ # @Time : 2025/6/11 17:06
6
+ # @Author : betterme
7
+ # @WeChat : meutils
8
+ # @Software : PyCharm
9
+ # @Description : 统一收口
10
+
11
+ from meutils.pipe import *
12
+ from meutils.llm.clients import AsyncClient
13
+ from meutils.llm.openai_utils import to_openai_params
14
+
15
+ from meutils.schemas.image_types import ImageRequest
16
+
17
+ from meutils.apis.fal.images import generate as fal_generate
18
+
19
+
20
+ async def generate(
21
+ request: ImageRequest,
22
+ api_key: Optional[str] = None,
23
+ base_url: Optional[str] = None,
24
+ ):
25
+ if base_url: # 优先级最高
26
+ client = AsyncClient(api_key=api_key, base_url=base_url)
27
+ return await client.images.generate(**to_openai_params(request))
28
+
29
+ if request.model.startswith("fal-ai"):
30
+ return await fal_generate(request, api_key)
31
+
32
+
33
+ if __name__ == '__main__':
34
+ arun(generate(ImageRequest(model="flux", prompt="笑起来")))
@@ -54,6 +54,7 @@ async def create_draft_content(request: ImageRequest, token: str):
54
54
  main_component_id = str(uuid.uuid4())
55
55
  if (urls := parse_url(request.prompt)) or image_uri: # 图生 # todo: image base64
56
56
  request.model = "high_aes_general_v20_L:general_v2.0_L" # 2.1不支持图片编辑 某些不支持
57
+ request.model = "high_aes_general_v30l:general_v3.0_18b"
57
58
 
58
59
  if image_uri:
59
60
  pass
@@ -667,7 +668,7 @@ if __name__ == '__main__':
667
668
 
668
669
  # request = ImageRequest(prompt=prompt, size="2048*2048")
669
670
 
670
- task = arun(create_task(request))
671
+ # task = arun(create_task(request))
671
672
  # task = arun(create_task(request, "d2d142fc877e696484cc2fc521127b36"))
672
673
  # task = arun(create_task(request, "d2d142fc877e696484cc2fc521127b36"))
673
674
 
@@ -683,4 +684,4 @@ if __name__ == '__main__':
683
684
 
684
685
  # arun(get_task("16132262728706", "d2d142fc877e696484cc2fc521127b36"))
685
686
 
686
- # arun(generate(request))
687
+ arun(generate(request))
@@ -0,0 +1,129 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding: utf-8 -*-
3
+ # @Project : AI. @by PyCharm
4
+ # @File : videos
5
+ # @Time : 2025/6/11 15:13
6
+ # @Author : betterme
7
+ # @WeChat : meutils
8
+ # @Software : PyCharm
9
+ # @Description :
10
+
11
+ from meutils.pipe import *
12
+ from meutils.decorators.retry import retrying
13
+ from meutils.llm.clients import AsyncClient
14
+ from meutils.schemas.openai_types import CompletionRequest
15
+
16
+ from meutils.db.redis_db import redis_aclient
17
+ from meutils.llm.check_utils import check_token_for_volc
18
+ from meutils.config_utils.lark_utils import get_next_token_for_polling, get_series
19
+
20
+ from fastapi import APIRouter, File, UploadFile, Query, Form, Depends, Request, HTTPException, status, BackgroundTasks
21
+
22
+ # Please activate
23
+ FEISHU_URL = "https://xchatllm.feishu.cn/sheets/GYCHsvI4qhnDPNtI4VPcdw2knEd?sheet=8W6kk8"
24
+
25
+
26
+ @retrying(max_retries=5)
27
+ async def create_task(request: CompletionRequest, api_key: Optional[str] = None):
28
+ api_key = api_key or await get_next_token_for_polling(feishu_url=FEISHU_URL, from_redis=True, check_token=check)
29
+
30
+ payload = {
31
+ "model": "doubao-seedance-1-0-pro-250528",
32
+ "content": [
33
+ {
34
+ "type": "text",
35
+ "text": "无人机以极快速度穿越复杂障碍或自然奇观,带来沉浸式飞行体验 --resolution 1080p --duration 5 --camerafixed false"
36
+ },
37
+ {
38
+ "type": "image_url",
39
+ "image_url": {
40
+ "url": "https://ark-project.tos-cn-beijing.volces.com/doc_image/seepro_i2v.png"
41
+ }
42
+ }
43
+ ]
44
+ }
45
+ payload = request.model_dump(exclude_none=True)
46
+ client = AsyncClient(base_url="https://ark.cn-beijing.volces.com/api/v3", api_key=api_key)
47
+
48
+ response = await client.post(
49
+ path="/contents/generations/tasks",
50
+ cast_to=object,
51
+ body=payload
52
+ )
53
+
54
+ if task_id := response.get('id'):
55
+ await redis_aclient.set(task_id, api_key, ex=7 * 24 * 3600)
56
+
57
+ return response # {'id': 'cgt-20250611152553-r46ql'}
58
+
59
+
60
+ async def get_task(task_id: str):
61
+ token = await redis_aclient.get(task_id) # 绑定对应的 token
62
+ token = token and token.decode()
63
+ if not token:
64
+ raise HTTPException(status_code=404, detail="TaskID not found")
65
+
66
+ client = AsyncClient(base_url="https://ark.cn-beijing.volces.com/api/v3", api_key=api_key)
67
+
68
+ response = await client.get(
69
+ path=f"/contents/generations/tasks/{task_id}",
70
+ cast_to=object,
71
+ )
72
+
73
+ return response
74
+
75
+
76
+ # 执行异步函数
77
+ if __name__ == "__main__":
78
+ # api_key = "07139a08-e360-44e2-ba31-07f379bf99ed" # {'id': 'cgt-20250611164343-w2bzq'} todo 过期调用get
79
+
80
+ api_key = "68948c3a-94cd-48b2-aebb-1dcd26cee5d8" # 欠费
81
+
82
+ request = CompletionRequest(
83
+ model="doubao-seedance-1-0-pro-250528",
84
+ content=[
85
+ {
86
+ "type": "text",
87
+ "text": "无人机以极快速度穿越复杂障碍或自然奇观,带来沉浸式飞行体验 --resolution 1080p --duration 5 --camerafixed false"
88
+ },
89
+
90
+ {
91
+ "type": "image_url",
92
+ "image_url": {
93
+ "url": "https://ark-project.tos-cn-beijing.volces.com/doc_image/seepro_i2v.png"
94
+ }
95
+ }
96
+ ]
97
+ )
98
+ # r = arun(create_task(request, api_key))
99
+ r = {'id': 'cgt-20250612172542-6nbt2'}
100
+
101
+ arun(get_task(r.get('id')))
102
+
103
+ # arun(get_task("cgt-20250611164343-w2bzq"))
104
+
105
+ # arun(get_task("cgt-20250611193213-tcqth"))
106
+
107
+ """
108
+ openai.NotFoundError: Error code: 404 - {'error': {'code': 'ModelNotOpen', 'message': 'Your account 2107813928 has not activated the model doubao-seedance-1-0-pro. Please activate the model service in the Ark Console. Request id: 021749718307793fc1441381f8ed755824bb9d58a45ee6cb04068', 'param': '', 'type': 'NotFound'}}
109
+
110
+
111
+ curl -X POST https://ark.cn-beijing.volces.com/api/v3/contents/generations/tasks \
112
+ -H "Content-Type: application/json" \
113
+ -H "Authorization: Bearer 29ce2c44-981d-4b7b-b0f5-f8a39586fd06" \
114
+ -d '{
115
+ "model": "doubao-seaweed-241128",
116
+ "content": [
117
+ {
118
+ "type": "text",
119
+ "text": "女孩抱着狐狸,女孩睁开眼,温柔地看向镜头,狐狸友善地抱着,镜头缓缓拉出,女孩的头发被风吹动 --resolution 720p --duration 5"
120
+ },
121
+ {
122
+ "type": "image_url",
123
+ "image_url": {
124
+ "url": "https://ark-project.tos-cn-beijing.volces.com/doc_image/i2v_foxrgirl.png"
125
+ }
126
+ }
127
+ ]
128
+ }'
129
+ """
meutils/data/VERSION CHANGED
@@ -1 +1 @@
1
- 2025.06.09.11.35.52
1
+ 2025.06.12.17.34.04
@@ -218,7 +218,7 @@ if __name__ == '__main__':
218
218
 
219
219
  check_valid_token = partial(check_token_for_siliconflow, threshold=-1)
220
220
 
221
- arun(check_valid_token("sk-tythaoctwemlhkytdlmjcegtnufvhqgmwlncgmoxixdyqoxx"))
221
+ # arun(check_valid_token("sk-tythaoctwemlhkytdlmjcegtnufvhqgmwlncgmoxixdyqoxx"))
222
222
 
223
223
  pass
224
224
  # arun(check_valid_token("sk-LlB4W38z9kv5Wy1c3ceeu4PHeIWs6bbWsjr8Om31jYvsucRv", threshold=0.1))
@@ -248,4 +248,4 @@ if __name__ == '__main__':
248
248
 
249
249
  # arun(check_token_for_ppinfra("sk_F0kgPyCMTzmOH_-VCEJucOK8HIrbnLGYm_IWxBToHZQ"))
250
250
 
251
- # arun(check_token_for_volc(os.getenv("VOLC_API_KEY")))
251
+ arun(check_token_for_volc("07139a08-e360-44e2-ba31-07f379bf99ed"))
@@ -22,7 +22,10 @@ async def stream_to_nostream(
22
22
  async def chat_for_image(
23
23
  generate: Callable,
24
24
  request: CompletionRequest,
25
+ api_key: Optional[str] = None,
25
26
  ):
27
+ generate = partial(generate, api_key=api_key)
28
+
26
29
  if not request.stream or request.last_user_content.startswith( # 跳过nextchat
27
30
  (
28
31
  "hi",
@@ -178,7 +178,7 @@ async def ppu_flow(
178
178
  else: # 不计费
179
179
  yield
180
180
 
181
-
181
+ # 按量计费
182
182
  def create_chat_completion(
183
183
  completion: Union[str, Iterable[str]],
184
184
  redirect_model: str = '',
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding: utf-8 -*-
3
+ # @Project : AI. @by PyCharm
4
+ # @File : __init__.py
5
+ # @Time : 2025/6/10 09:11
6
+ # @Author : betterme
7
+ # @WeChat : meutils
8
+ # @Software : PyCharm
9
+ # @Description :
10
+
11
+ from meutils.math_utils.common import *
@@ -0,0 +1,50 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding: utf-8 -*-
3
+ # @Project : AI. @by PyCharm
4
+ # @File : common
5
+ # @Time : 2025/6/10 09:11
6
+ # @Author : betterme
7
+ # @WeChat : meutils
8
+ # @Software : PyCharm
9
+ # @Description :
10
+
11
+
12
+ import math
13
+
14
+
15
+ def calculate_min_resolution(w, h):
16
+ """
17
+ 计算给定宽高比的最小像素公约数分辨率(宽高互质)
18
+
19
+ 参数:
20
+ aspect_ratio (str): 宽高比字符串,例如"16:9"
21
+
22
+ 返回:
23
+ tuple: (宽, 高) 的元组,整数类型
24
+ """
25
+ # 分割字符串并转换为整数
26
+ w, h = map(int, (w, h))
27
+
28
+ # 计算最大公约数
29
+ gcd_val = math.gcd(w, h)
30
+
31
+ # 化简为互质的整数比
32
+ width = w // gcd_val
33
+ height = h // gcd_val
34
+
35
+ return width, height
36
+
37
+
38
+ def size2aspect_ratio(size):
39
+ if 'x' in size:
40
+ w, h = size.split('x')
41
+ w, h = calculate_min_resolution(w, h)
42
+ return f"{w}:{h}" # aspect_ratio
43
+
44
+ elif ':' in size:
45
+ return size
46
+
47
+
48
+ if __name__ == '__main__':
49
+ print(size2aspect_ratio("1920x1080"))
50
+ print(size2aspect_ratio("1920:1080"))
meutils/notice/feishu.py CHANGED
@@ -22,6 +22,8 @@ AUDIO = "https://open.feishu.cn/open-apis/bot/v2/hook/80c2a700-adfa-4b9b-8e3f-00
22
22
  FILES = "https://open.feishu.cn/open-apis/bot/v2/hook/075fb2fa-a559-4a7e-89ac-3ab9934ff15c"
23
23
  KLING = "https://open.feishu.cn/open-apis/bot/v2/hook/e9a850c2-d171-4637-b976-ee93f7654c40"
24
24
 
25
+ VOLC = "https://open.feishu.cn/open-apis/bot/v2/hook/d487ce4f-3c2b-44db-a5b4-7ee4c5e03b4f"
26
+
25
27
 
26
28
  @background_task
27
29
  def send_message(
@@ -119,13 +121,15 @@ send_message_for_http = partial(send_message, url=http_feishu_url)
119
121
  try_catch_feishu_url = "https://open.feishu.cn/open-apis/bot/v2/hook/887fe4d3-8bcd-4cfb-bac9-62f776091ca2"
120
122
  send_message_for_try_catch = partial(send_message, url=try_catch_feishu_url)
121
123
 
124
+ send_message_for_volc = partial(send_message, url=VOLC)
125
+
122
126
  if __name__ == '__main__':
123
127
  # send_message("xxx", title=None)
124
128
  send_message(None, title=None)
125
129
 
126
130
  # send_message_for_images("xxxxxxxx", title=None)
127
131
 
128
- send_message_for_try_catch("xxxxxxxx")
132
+ send_message_for_volc("xxxxxxxx")
129
133
  # @catch(task_name='这是一个任务名')
130
134
  # def f():
131
135
  # time.sleep(3)