MeUtils 2025.5.29.18.12.8__py3-none-any.whl → 2025.5.30.17.3.11__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.
@@ -121,7 +121,7 @@ examples/_openaisdk/openai_json.py,sha256=M4tq_IkzYbmtgbFilGQHmRdJhH0OltiwGk7cK7
121
121
  examples/_openaisdk/openai_kindo.py,sha256=8dsetXZexJCLboDp3uyxK7z50iDEiQFkA5-hkJTLO4E,741
122
122
  examples/_openaisdk/openai_lingyi.py,sha256=l2GcNxhwfLv7MfMF-cdRWGGvX-dRaZyb8IRlXLPACMw,1834
123
123
  examples/_openaisdk/openai_luchentech.py,sha256=Jy0JxpL1u3pXcmslViPvrbwSysVBV-Dz8wSKqv6QtxY,1960
124
- examples/_openaisdk/openai_modelscope.py,sha256=C7QG1KCK7-F0Hm-MlvMJ5FQoJg9-LGGagXUJf_Nkhng,1446
124
+ examples/_openaisdk/openai_modelscope.py,sha256=Gt7GE53-dK7v9N8cxcpO3XK324CTx3Vh9_vDxwrfB7I,1472
125
125
  examples/_openaisdk/openai_moderations.py,sha256=WoIyXDEn4dfVPwqFc54HSz0-7wLPu7pd4ZisZcyLOWM,1369
126
126
  examples/_openaisdk/openai_moon.py,sha256=7-gILGwZArZ1VHVb-jtIXEqWJMv65SaMmBSKJ90fx_w,1889
127
127
  examples/_openaisdk/openai_oi.py,sha256=8KJ62QgpAZdGWAoYN6AC9M9TrD8JQf7ZO_NAgXZywTo,1414
@@ -349,7 +349,7 @@ meutils/apis/aitools/baidu/sdk.py,sha256=5uA1bEqwNYpJirFnwoMTI6Jua3r3DlVNr90RffG
349
349
  meutils/apis/audio/__init__.py,sha256=y7Rpn90LocHhA0ywrDP_fT4QAK7sr4JsIX5wLJgkNHA,241
350
350
  meutils/apis/audio/deepinfra.py,sha256=O-IpAnHfx25QCjhB5xaIYVBy5AbyPzmVz-Pr40gpnsM,1773
351
351
  meutils/apis/audio/fish.py,sha256=jPvTveRcDtvGDgRT6EA9WJitAQxftneHxvEJ63yY_cM,8392
352
- meutils/apis/audio/minimax.py,sha256=9piBTSlyG5pXaUbp4DIh1myREihIFeGbGNyiBB3lWAc,5949
352
+ meutils/apis/audio/minimax.py,sha256=dYrdQunl0naUNTa0yZHAKSETfwW0xrQ7d3B3CcN4n4Y,5982
353
353
  meutils/apis/baidu/__init__.py,sha256=XPkz3DHrDdxCneaZct3y7MaX0Aw9IIseOYOn1YuVBII,243
354
354
  meutils/apis/baidu/bdaitpzs.py,sha256=juIuI_1wC7McNDzulps1SR21z3D4GL4sfHQeAHTc4Q0,12717
355
355
  meutils/apis/baidu/test.py,sha256=nb9ivelHIw84-d1V-MNGRpGoTpLFsNXPk-TTKpjwOfQ,2058
@@ -368,7 +368,7 @@ meutils/apis/dreamfaceapp/images.py,sha256=Igzn2BgdPJ0_78vsdZGxLqk-FWRrr_kfOtv0e
368
368
  meutils/apis/dreamfaceapp/videos.py,sha256=xtz4GYRTdVE-D7xxFpSaH5Kl5ewXDx9Ogvtkf9LKXUc,4049
369
369
  meutils/apis/fal/__init__.py,sha256=A7w3ZAS7Tv20N4X4Em6NshDxKSCPAzaPxHJTbM3BbyM,272
370
370
  meutils/apis/fal/files.py,sha256=Gppdo96uw8-TCDr8P691jV7dK9Si-E-kJXFJR5BVt-Q,1373
371
- meutils/apis/fal/images.py,sha256=0diKFpsiO_ZZTL8LnNMN5wV2urfhIEIqIMe_HdrdiLs,8707
371
+ meutils/apis/fal/images.py,sha256=MI-SPBeGPkULpGyJ9p2s2LK7NUIZy_VXnlc7JySI6ls,10923
372
372
  meutils/apis/fal/images_.py,sha256=C-C1TTQtMJ6RRcd-4FeYPn0R5IpPRPUFmBbrTVs_ypA,1446
373
373
  meutils/apis/fal/kling_videos.py,sha256=kL4SRpZafRSCRODtiNqeXauxfamHNdcBTE65BrG1rVA,2554
374
374
  meutils/apis/fal/pd.py,sha256=oPrMK_FJqohl2Kf0U0it8SqgvIlSEYFcSX8sfVkD8bU,311
@@ -386,7 +386,7 @@ meutils/apis/google/google2openai.py,sha256=JaRw4XfGjy1XAbM4UwLqwLHmldOvM1J1tbMT
386
386
  meutils/apis/google/images.py,sha256=s9-X8FQqHr5_Of5ZFudR_phmcVzlRyv65O3IsKtlvXo,663
387
387
  meutils/apis/google/search.py,sha256=js3Vx3u9lNrvQxWHF3Y2nP-8qYOA3sKYhbYvO4jHUCA,1590
388
388
  meutils/apis/google/upload.py,sha256=8stvopyIs03ywY6fyGHAtow1TarpMKjsb1V9x9GMgSI,1326
389
- meutils/apis/hailuoai/__init__.py,sha256=2g9okuB6pxPh1hDiAE9HZo37baqIO9cX-67RpyfBj1k,272
389
+ meutils/apis/hailuoai/__init__.py,sha256=PxMZ7p71VVbSmop0BDF6s0EOauzJ7gxuxAheL4iqIXc,245
390
390
  meutils/apis/hailuoai/demo.py,sha256=WTnDFL2HgVpAjcn5BljLrbf2y2aATkvvNy75zoEIQkc,1483
391
391
  meutils/apis/hailuoai/hasha_new.py,sha256=1sD3fxmxYrEufmPaJZGAkYJoHKO85hfLXemnY-xYIO8,9101
392
392
  meutils/apis/hailuoai/images.py,sha256=2SLRKnzz2jdHHVwDzLdJetXZpvn9Mkzjrr_1gJPTIFI,19848
@@ -410,6 +410,7 @@ meutils/apis/images/deepinfra.py,sha256=lMqfU0LIXEzHiAS31dCcoTnPIE6tpoDJhq61H0TV
410
410
  meutils/apis/images/demo.py,sha256=Cjk-EKMKbp44czykW_44qR0TzElX8nNCALqXBBw5sJA,4405
411
411
  meutils/apis/images/edits.py,sha256=tdtFKVaMti4zOAh9WQ_VWrKyuJyomZ3-Fwh1DK7EJAM,10189
412
412
  meutils/apis/images/eidt.py,sha256=s8IBbCjwwoogIUf-d2O7nkawUmly9n19nvLYPaLEeg4,1217
413
+ meutils/apis/images/openai_edits.py,sha256=62jUIsUqGrT5YJtRa0TSYxIqeK2gC-31UgyNm792-zI,2126
413
414
  meutils/apis/images/recraft.py,sha256=31rlSeeH9UUwCSNzSWizHNRF2JnuBMLRWdB5DylPNnc,72545
414
415
  meutils/apis/images/flux/__init__.py,sha256=W_PZabQm6EmtJYmzEiEpL_WCXTAW0AiJ-t_n5UTrE8c,271
415
416
  meutils/apis/images/flux/fluxpro.py,sha256=NFl9t9C3R3jsNJpez4o9tOz3r-fjRXj-vKMxCSTRDTU,4022
@@ -426,7 +427,7 @@ meutils/apis/jiema/24mail.py,sha256=GUszRtoDe3T9q-X4embwT5YhcjgQ3XnkTJMKX93sCF4,
426
427
  meutils/apis/jiema/__init__.py,sha256=YBybggoDRYCNYcwJOypxR7MzfTjIhqO7BkGlTt7NDo4,271
427
428
  meutils/apis/jiema/yezi.py,sha256=26vhnA3lC5049Rqx-CHO-wyGKbdZAfvjEOG90W38cr0,3675
428
429
  meutils/apis/jimeng/__init__.py,sha256=ENdwkppOOekt9Qzy_50TyA7lzNEqo0TpZcF7d2rYBhc,245
429
- meutils/apis/jimeng/audio.py,sha256=Bp5LHRhBXwwhCrZK0TJQ98LcpTLy2RQWkH2MOxDGcOA,6619
430
+ meutils/apis/jimeng/audio.py,sha256=i-SHYXMl5mRfFksu2dedDjH2CppXclho3jYx-6FqImg,6627
430
431
  meutils/apis/jimeng/common.py,sha256=FJE9qOzu3qrZwLvYTLopndAS1dpj0DCloxlRn37GmJ8,7546
431
432
  meutils/apis/jimeng/doubao_images.py,sha256=Aeq1hve2PiO3baP50Augsu0u2YFlC7r_X5jgnDqv6y4,2082
432
433
  meutils/apis/jimeng/doubao_utils.py,sha256=d9KDNkqKN4oxaJRAeGNMouRvzHEhIRXzN3T_HjtTXdM,6025
@@ -481,7 +482,7 @@ meutils/apis/search/__init__.py,sha256=1lg0ogEBgtwTi3XvkL5hMfSd14A6YNLO7M9itEJma
481
482
  meutils/apis/search/_web_search.py,sha256=h_rj0jKDbP1ZPvMPPHMhAnfVnjmW6I4XqEddrjYeq5U,2842
482
483
  meutils/apis/search/ark_web_search.py,sha256=i6lrw-AinuH22Gds89TTmrvfJKYMFzBAOc-_1uEAPZI,2013
483
484
  meutils/apis/search/baichuan.py,sha256=OUD0TH7KzqSxtuRJgjJPWO8XRQIoUwW5RX7lWMo7BXw,268
484
- meutils/apis/search/metaso.py,sha256=i7mZiEiJxRGEJcVNL8dGlyvo44YIDvM0QtITlhSFamM,8687
485
+ meutils/apis/search/metaso.py,sha256=4Ui-8MEwk6iymXth2xKnzluGm71B7k8EFa6uEet69G8,8713
485
486
  meutils/apis/search/metaso_.py,sha256=PqMX3FLYbbAcc9qpqrPZ58LuSF29h0asZO1XMYmXbes,3144
486
487
  meutils/apis/search/n.py,sha256=o7jzNoR5v_nAjgdUvWgebL3nvvo3ECpq2KCj9YhUNr4,4337
487
488
  meutils/apis/search/searxng.py,sha256=RBPeq-AYj5D42gROrZNg0SxIWwWEW0oqrbQ3wEDH9k8,951
@@ -493,7 +494,7 @@ meutils/apis/siliconflow/images.py,sha256=yifV6RgtVwyMLj7_JeUAtoD8gSXdIMXuQWy-BX
493
494
  meutils/apis/siliconflow/rerankers.py,sha256=GuKT33MmAiVULqNaAO9IIy1Zp570-kYJ6xP03eLCp5Y,1259
494
495
  meutils/apis/siliconflow/text_to_image.py,sha256=rDxk6NIj4TjigcSPVDZknQR9nUpK5CTJBXc3KjI1Z8Y,4457
495
496
  meutils/apis/siliconflow/utils.py,sha256=Awe0V7Mkceop1vWWrw9901cKQ6HHntIn8HbIG0fEo40,2091
496
- meutils/apis/siliconflow/videos.py,sha256=xW9yOFwbgUfaUiunLFVY2mORwwTXvzT_Rlpye2AkdUM,3410
497
+ meutils/apis/siliconflow/videos.py,sha256=AVQgm8wKPFwI0sjHjtjKCrWhv_JOE1rICFl81fb0XE8,3386
497
498
  meutils/apis/sunoai/__init__.py,sha256=O8J8jKTmvZGGovkF_jCRl3vbL68a4_dXVSxiKIYTkFo,244
498
499
  meutils/apis/sunoai/haimian.py,sha256=CSISElYbbGFnVCxCgAbHM_YZ9ELUjhuFQ6jdYM0hh7E,5521
499
500
  meutils/apis/sunoai/suno.py,sha256=I7UgqkBd7rd8BvOlZqzkf64n7Z2fjw678OnpP5DOKcM,17156
@@ -527,7 +528,7 @@ meutils/apis/voice_clone/fish.py,sha256=6m8zcS2KEqmalKy2ArnOaNovyxsQp_sw4d_O1kVZ
527
528
  meutils/apis/voice_clone/fish_api.py,sha256=pDpE-B8HFiGIOV3NVd1HmFrCC2GQc3wH-81oNbTS0mY,307
528
529
  meutils/apis/volcengine_apis/__init__.py,sha256=gtu5ZNCc3up8bzgrCi10uwhsC04HpuCEEPXR_iVCNJE,244
529
530
  meutils/apis/volcengine_apis/images.py,sha256=F9LXXptesnASB_Al7rkEshb2S5r3PixZd8w0mif5468,5463
530
- meutils/apis/volcengine_apis/tasks.py,sha256=iL5H_roomph4azdIPnA6h4wNIzblENwvSfOXzBNzjJY,3974
531
+ meutils/apis/volcengine_apis/tasks.py,sha256=da2wYs2bqjYte_P2aFbSdKkLBaghuAj6vVKIlgdMg5A,4495
531
532
  meutils/async_task/__init__.py,sha256=45cUr-GWvQ1JFYGOYPOIkHLyTR3JbfP_PEYrmktpMLo,367
532
533
  meutils/async_task/celery_config.py,sha256=BX1h3jY34aO6UmUFakdBUwOdsEiOxCGuUtYDUKFtafc,3461
533
534
  meutils/async_task/common.py,sha256=ZJ4e0CsEJf1ppPmGSwPCwhZBAkUL5xsi_t1ny-bJuko,845
@@ -576,7 +577,7 @@ meutils/config_utils/lark_utils/demo.py,sha256=3g0Fs7oLaeW75T60gYWMLgyNg1OnfOjfH
576
577
  meutils/config_utils/lark_utils/x.py,sha256=MlMQGhehP9xMEgetxVCX68XFaosfKoW1JA5cZ3JqN2w,1857
577
578
  meutils/crawlers/__init__.py,sha256=TBU4xA-IOsHV-0yIkW7YXxn_QT7TT8NncqxO7IykEfs,271
578
579
  meutils/data/SimHei.ttf,sha256=-XEnekS5yHP_URkT4XBI2w22ylV-KxudhkeIYFbrILA,10062565
579
- meutils/data/VERSION,sha256=1IkQfmY3XLEnPiYzbTnX1_qatD7POpkqqti_YLplo-M,19
580
+ meutils/data/VERSION,sha256=5VkBK-Cfj8B6VJCzMpnrmgzjsEsuQ4Snw0sI6gpSkHo,19
580
581
  meutils/data/_FLAG,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
581
582
  meutils/data/_SUCCESS,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
582
583
  meutils/data/__init__.py,sha256=Hfwkkxs4zHqKhxht0YrhS566a9P5axtmgNvM5wF8ceQ,243
@@ -658,7 +659,7 @@ meutils/jwt_utils/__init__.py,sha256=zs4pIDk4sQ82o7meMwt64_tv2WBMRTaXX9doe0ilvvs
658
659
  meutils/jwt_utils/common.py,sha256=u2PPQJ9S-83y8f3Sb5L2OCRP7o-xV56EAmlzMZ8Je0Q,2352
659
660
  meutils/llm/__init__.py,sha256=mYv0QpACLd-wz4htIduPuTU3mX06_Y8ZprxDohtZGBM,244
660
661
  meutils/llm/check_api.py,sha256=Cu60Rvp7zLmmazuLXxpK4z-FCab4NrO4nH5LzfYjjoM,3591
661
- meutils/llm/check_utils.py,sha256=Mr7BXNK85X4UJwPfFc2__AqyxT3-XhM7BgWFgFH4GeY,7306
662
+ meutils/llm/check_utils.py,sha256=3OkmmGkodvVlhb2qqXTPo5ZBQ2eWGxgGADCqoI71E44,7991
662
663
  meutils/llm/clients.py,sha256=qZa9WC85Ah4tdEd-EI_P_038mnJLq_z-smaJdwJp-EM,2956
663
664
  meutils/llm/demo.py,sha256=gyGjTxuNFMOa1X4CXaChkq0lcjbKiRsnSRhkeMvsoQk,3822
664
665
  meutils/llm/mappers.py,sha256=ZQLl3OuD06kVMP8bwIpVgAB1UVzMJWUJiZ3vgk-ZjeI,303
@@ -699,7 +700,8 @@ meutils/llm/openai_polling/__init__.py,sha256=qmAMITPtrTD-y57RiJXewuOic7iLKBhx8m
699
700
  meutils/llm/openai_polling/chat.py,sha256=w-CmmihV4BRS5CjnwCLCx-XvlxeVcjGR1JoLY3tT47w,8194
700
701
  meutils/llm/openai_polling/images.py,sha256=qKMk3vCvamS_48ceC-_y2LPpP5XsD476FHG9MUu8kks,1042
701
702
  meutils/llm/openai_utils/__init__.py,sha256=MWyNhP2K49oaHGEZlInZc3XlwqlStFultP8k7HDPAwk,290
702
- meutils/llm/openai_utils/common.py,sha256=GGctOMlg8xT2A5H-8hMow0VfOZHCDdIPjd12597Nohs,9754
703
+ meutils/llm/openai_utils/adapters.py,sha256=T_O8LmCkemNGTNp0pfAuXLOX0Vz4EJ8ef1F9vvv4fyI,1522
704
+ meutils/llm/openai_utils/common.py,sha256=nche6MngaxbXpKcmZbUQuAe_NgSCg9Nk7P0BLAJQ4ZI,10024
703
705
  meutils/llm/openai_utils/tool_outputs.py,sha256=6mNkm4btgy0uzF98gdmcah1bYmoflXdLz2Sqm0KC_LQ,1224
704
706
  meutils/llm/output_parsers/__init__.py,sha256=EGKvgUD47ReyV5Z9RXDCrdDLgfKMHdoayzsXVmBuQxw,3474
705
707
  meutils/llm/prompts/__init__.py,sha256=VlEEViFoUSRS0EF1rHJXHh9Ik9FpvAiR1luKjHOsUc4,8580
@@ -712,7 +714,7 @@ meutils/logging/log_utils.py,sha256=Sa5-Y4fWNTKQw2fIb1dbPgOypl6S6m7EOrbciSqEt5A,
712
714
  meutils/logging/logger.py,sha256=-J_tWYfAvPhSTshVWIiN-6zTZnjkFuwDfMtxUtuNkuY,6183
713
715
  meutils/notice/__init__.py,sha256=BVbcBx4ks-BH_63gEcjMxL67oX1_aWdaM8r3TDo8Ogg,248
714
716
  meutils/notice/emails.py,sha256=TvC1xv3MpFC2HU0lTQW5SmNuj7UMlgjpsUImMp9jKOw,2403
715
- meutils/notice/feishu.py,sha256=Qewl3DCv9KXeCGSXAUFEALj6WeDbRYn6lrJPliuT_HU,4398
717
+ meutils/notice/feishu.py,sha256=N3IbftcjV7yHPMtrAbOb6c_X-05mzMhwdFEZjFZZwLY,4478
716
718
  meutils/notice/file_post.py,sha256=KQ8iQUM30vF7T6ZZPahdLps4dLXK2s3nzdFYbty6M5E,953
717
719
  meutils/notice/load_emailfile - 副本.py,sha256=f-Kq3UKZut_P0bmumV1y4PXuPtatjl-5SLUH5LShBUY,7331
718
720
  meutils/notice/wechat.py,sha256=-HU5oSvpZrVnjjU76ky7_j0yg5ivn5mIlJ7JJVtlrnY,4082
@@ -805,7 +807,7 @@ meutils/schemas/fish_types.py,sha256=yC0ZFr3Ebh8F0OhtMsXYaIfNNvzOM2LT9YtKTaRoHGU
805
807
  meutils/schemas/hailuo_types.py,sha256=ubG6qIU506tq51UsURuwlPhtPNa49xHSoBzBtW7jg_0,7431
806
808
  meutils/schemas/haimian_types.py,sha256=jGu484UviAeBgy5OIUyRY4uYCxXfv16zDPqiJQr9wNQ,1364
807
809
  meutils/schemas/idphoto_types.py,sha256=nuHbpppejRSkJCiQ7YKx0Gnke0ShKZhOvdg0e7tk9-0,1074
808
- meutils/schemas/image_types.py,sha256=oZqmKkN22-AWxliCHuYKHT6FEnZm2f-9eChq8Zgf7mU,13873
810
+ meutils/schemas/image_types.py,sha256=ZRXJxWu21BoBxLpusQwGVkZMAWzL_Ju3itYqxbUunZk,14462
809
811
  meutils/schemas/jimeng_types.py,sha256=Uiqbtd4scpDHDTuXQaS8_6em8PrSnuQb_JkCQuBYkOM,1944
810
812
  meutils/schemas/jina_types.py,sha256=SLRRBCap2B1uXnHF7Sgnlz1Work8HvdIltjj4oVlGTk,8826
811
813
  meutils/schemas/kimi_types.py,sha256=PjCgHwCDNzKasn4X6rUzvOENqKYT3xj07cgp71IdsDA,3607
@@ -841,7 +843,7 @@ meutils/schemas/db/__init__.py,sha256=m1maURVoM6dIW0yt6ELZrZTzULtkHybVOSXtHNJRVI
841
843
  meutils/schemas/db/oneapi_types.py,sha256=3t2m0H80saEXmYUZfVFrtEaY117GjZTsSa1GKgkJzqQ,3896
842
844
  meutils/schemas/oneapi/__init__.py,sha256=uevbi3QAvFzN9WPbx9bYKTDyKt7P2ueZO6W0nSiD0sk,289
843
845
  meutils/schemas/oneapi/_types.py,sha256=ClvAaNy3SahEN8lL8KEErHTD6HANelXUeKc_3iLfosQ,1488
844
- meutils/schemas/oneapi/common.py,sha256=XXN_Sd3E23uSwGURLA8J4iPq81qT8kBJ0IULeNyVG1E,39720
846
+ meutils/schemas/oneapi/common.py,sha256=QchC--_L28fwvxRWd2FJJdyWbx-L4d2Jxf0I22ssoek,40030
845
847
  meutils/schemas/oneapi/icons.py,sha256=T7W5gInBJoHe62wzMimbG_UI-wn3_-rmQ1O4O2z-CQY,1089
846
848
  meutils/schemas/oneapi/model_group_info.py,sha256=rGtflYJuFIjk5MsVEvK9JUR4IciX8jfErqeLqf8DIlQ,1586
847
849
  meutils/schemas/oneapi/model_info.py,sha256=_uwKEPIIqm7ZYfhmpxtXB2QNsS83SpJY-OaBzvogC9w,772
@@ -970,9 +972,9 @@ meutils/tools/seize.py,sha256=nOKAS63w-Lbi48I0m2MPhdsokUTwxco0laPxYVmW4Mw,1064
970
972
  meutils/tools/service_monitor.py,sha256=ibsLtBN2g2DL7ZnLJ8vhiZOiOcqTAyx711djDdBK-3M,1255
971
973
  meutils/tools/sys_monitor.py,sha256=6MoyzrItqDUOSjfHcMJmMofQkEPTW36CT_aKui0rg84,429
972
974
  meutils/tools/token_monitor.py,sha256=Np-YK-R4P4IPAXyZvMxwvXI4sFmNJQAQK1lSegNaYpA,997
973
- MeUtils-2025.5.29.18.12.8.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
974
- MeUtils-2025.5.29.18.12.8.dist-info/METADATA,sha256=kJSRH-g-2US1eYhknNyeJGrrZMljCEhnDWMt7prIg2M,32833
975
- MeUtils-2025.5.29.18.12.8.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
976
- MeUtils-2025.5.29.18.12.8.dist-info/entry_points.txt,sha256=lufZlBHRqqZKdY-ZQJ4CSZb0qhV5hQC37egZna9M7ug,357
977
- MeUtils-2025.5.29.18.12.8.dist-info/top_level.txt,sha256=cInfxMmkgNOskurdjwP5unau4rA7Uw48nu07tYhS7KY,22
978
- MeUtils-2025.5.29.18.12.8.dist-info/RECORD,,
975
+ MeUtils-2025.5.30.17.3.11.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
976
+ MeUtils-2025.5.30.17.3.11.dist-info/METADATA,sha256=jQfkMvgd2v3eKgwkfB6oi67Yum94dg0le8_g-L7_WgY,32833
977
+ MeUtils-2025.5.30.17.3.11.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
978
+ MeUtils-2025.5.30.17.3.11.dist-info/entry_points.txt,sha256=lufZlBHRqqZKdY-ZQJ4CSZb0qhV5hQC37egZna9M7ug,357
979
+ MeUtils-2025.5.30.17.3.11.dist-info/top_level.txt,sha256=cInfxMmkgNOskurdjwP5unau4rA7Uw48nu07tYhS7KY,22
980
+ MeUtils-2025.5.30.17.3.11.dist-info/RECORD,,
@@ -26,7 +26,7 @@ client = OpenAI(
26
26
  api_key="411524c8-1507-440c-8a67-874fc29e700e"
27
27
  )
28
28
 
29
- print(client.models.list())
29
+ print(client.models.list().model_dump_json(indent=4))
30
30
 
31
31
  try:
32
32
  completion = client.chat.completions.create(
@@ -25,7 +25,7 @@ from meutils.decorators.retry import retrying
25
25
  from meutils.io.files_utils import to_bytes, to_url
26
26
  from meutils.schemas.openai_types import TTSRequest
27
27
 
28
- BASE_URL = os.getenv("MINIMAX_BASE_URL")
28
+ BASE_URL = os.getenv("MINIMAX_BASE_URL") or "https://api.minimax.chat/v1"
29
29
 
30
30
 
31
31
  @retrying()
@@ -66,8 +66,7 @@ async def generate(request: ImageRequest, token: Optional[str] = None):
66
66
 
67
67
  "output_format": "png",
68
68
  }
69
- elif request.model.startswith(
70
- "fal-ai/flux/dev/image-to-image"): # https://fal.ai/models/fal-ai/flux-pro/v1.1-ultra/api
69
+ elif request.model.startswith("fal-ai/flux/dev/image-to-image"):
71
70
  urls = parse_url(request.prompt)
72
71
  image_url = urls[-1]
73
72
  prompt = request.prompt.replace(image_url, "")
@@ -92,6 +91,57 @@ async def generate(request: ImageRequest, token: Optional[str] = None):
92
91
 
93
92
  **request.controls
94
93
  }
94
+ elif "kontext" in request.model: # https://fal.ai/models/fal-ai/flux-pro/kontext/max
95
+
96
+ if image_urls := parse_url(request.prompt):
97
+ for image_url in image_urls:
98
+ request.prompt = request.prompt.replace(image_url, "")
99
+
100
+ if len(image_urls) == 1:
101
+ arguments['image_url'] = image_urls[0]
102
+ else:
103
+ request.model += "/multi"
104
+ arguments['image_urls'] = image_urls
105
+ else:
106
+ request.model += "/text-to-image"
107
+
108
+ # fal-ai/flux-pro/kontext/max/text-to-image
109
+
110
+ # fal-ai/flux-pro/kontext/max
111
+ # fal-ai/flux-pro/kontext/max/multi
112
+
113
+ # fal-ai/flux-pro/kontext/text-to-image
114
+
115
+ # fal-ai/flux-pro/kontext
116
+ # fal-ai/flux-pro/kontext/multi
117
+
118
+ """
119
+ {
120
+ "prompt": "Put a donut next to the flour.",
121
+ "guidance_scale": 3.5,
122
+ "num_images": 1,
123
+ "safety_tolerance": "2",
124
+ "output_format": "jpeg",
125
+ "image_url": "https://v3.fal.media/files/rabbit/rmgBxhwGYb2d3pl3x9sKf_output.png"
126
+ }
127
+ """
128
+ arguments = {
129
+ **arguments,
130
+ "num_images": request.n,
131
+
132
+ "enable_safety_checker": False,
133
+ "safety_tolerance": "5",
134
+ "output_format": "png",
135
+ "seed": request.seed,
136
+
137
+ "guidance_scale": request.guidance or 3.5,
138
+
139
+ "aspect_ratio": request.aspect_ratio or "1:1", # 21:9, 16:9, 4:3, 3:2, 1:1, 2:3, 3:4, 9:16, 9:21
140
+
141
+ "prompt": request.prompt,
142
+
143
+ }
144
+
95
145
  elif request.model.startswith("fal-ai/flux"): # https://fal.ai/models/fal-ai/flux-pro/v1.1-ultra/api
96
146
 
97
147
  arguments = {
@@ -118,6 +168,17 @@ async def generate(request: ImageRequest, token: Optional[str] = None):
118
168
  "seed": request.seed,
119
169
 
120
170
  }
171
+
172
+ elif request.model.startswith("fal-ai/imagen4"):
173
+ arguments = {
174
+ **arguments,
175
+ # 10:16, 16:10, 9:16, 16:9, 4:3, 3:4, 1:1, 1:3, 3:1, 3:2, 2:3
176
+ "aspect_ratio": request.aspect_ratio or "1:1",
177
+
178
+ "seed": request.seed,
179
+
180
+ }
181
+
121
182
  try:
122
183
 
123
184
  data = await AsyncClient(key=token).run(
@@ -144,6 +205,7 @@ if __name__ == '__main__':
144
205
  "ideogram-ai/ideogram-v2-turbo": "fal-ai/ideogram/v2/turbo",
145
206
  "ideogram-ai/ideogram-v2": "fal-ai/ideogram/v2",
146
207
  "recraftv3": "fal-ai/recraft-v3",
208
+ "imagen4": "fal-ai/imagen4/preview",
147
209
  }
148
210
 
149
211
  # model = "fal-ai/flux-pro/v1.1" # 0.04
@@ -153,21 +215,27 @@ if __name__ == '__main__':
153
215
  # model = "fal-ai/ideogram/v2" # 0.08
154
216
  # model = "fal-ai/ideogram/v2/turbo" # 0.05
155
217
  # model = "fal-ai/flux/schnell"
218
+ model = "fal-ai/imagen4/preview"
219
+ # model = "fal-ai/flux-pro/kontext"
220
+ model = "fal-ai/flux-pro/kontext/max"
221
+ #
222
+ prompt = "https://v3.fal.media/files/penguin/XoW0qavfF-ahg-jX4BMyL_image.webp https://v3.fal.media/files/tiger/bml6YA7DWJXOigadvxk75_image.webp Put the little duckling on top of the woman's t-shirt."
223
+ request = ImageRequest(prompt=prompt, model=model)
156
224
 
157
- # request = ImageRequest(prompt='https://oss.ffire.cc/files/kling_watermark.png The woman smiled', model=model)
158
- request = ImageRequest(prompt='a cat', model=model)
225
+ request = ImageRequest(prompt='https://oss.ffire.cc/files/kling_watermark.png The woman smiled', model=model)
226
+ # request = ImageRequest(prompt='a cat', model=model)
159
227
 
160
228
  # token = "77fcfad2-aadc-4158-8e11-b30a5668dfad:ea5f38d864bde6707561d348436d2cea"
161
229
  # token = "5116af3f-1aa5-4c1b-b505-fd49f701dccc:7f4278d69d069cec4794fe658a09bd9d"
162
230
 
163
- # arun(generate(request))
231
+ arun(generate(request))
164
232
 
165
233
  # arun(AsyncClient(key=token).key)
166
234
 
167
- tokens = arun(get_series(FEISHU_URL))
168
- # tokens = [token]
169
-
170
- r = []
171
- for t in tokens:
172
- if arun(check(t)):
173
- r.append(t)
235
+ # tokens = arun(get_series(FEISHU_URL))
236
+ # # tokens = [token]
237
+ #
238
+ # r = []
239
+ # for t in tokens:
240
+ # if arun(check(t)):
241
+ # r.append(t)
@@ -8,4 +8,3 @@
8
8
  # @Software : PyCharm
9
9
  # @Description :
10
10
 
11
- from meutils.pipe import *
@@ -0,0 +1,66 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding: utf-8 -*-
3
+ # @Project : AI. @by PyCharm
4
+ # @File : openai_edits
5
+ # @Time : 2025/5/30 13:23
6
+ # @Author : betterme
7
+ # @WeChat : meutils
8
+ # @Software : PyCharm
9
+ # @Description : formdata
10
+ """
11
+ 图片编辑
12
+
13
+ 即梦编辑图像 垫图
14
+
15
+ flux
16
+
17
+
18
+
19
+ """
20
+
21
+ from meutils.pipe import *
22
+ from openai import OpenAI
23
+ from meutils.schemas.image_types import ImageEditRequest
24
+
25
+ # from meutils.llm.openai_utils import to_openai_params
26
+
27
+ openai = OpenAI(
28
+ base_url="http://0.0.0.0:8000/v1",
29
+ api_key="sk-1234567890",
30
+ )
31
+
32
+ # image = "/Users/betterme/PycharmProjects/AI/test.png"
33
+ #
34
+ # openai.images.edit(
35
+ # model="dall-e-3",
36
+ # image=open(image, "rb"),
37
+ # mask=open(image, "rb"),
38
+ # prompt="A cute baby sea otter wearing a beret",
39
+ # n=1,
40
+ # size="1024x1024"
41
+ # )
42
+
43
+ r = openai.images.generate(
44
+ model = "fal-ai/imagen4/preview",
45
+ prompt='a cat',
46
+ )
47
+ # def edit(
48
+ # self,
49
+ # *,
50
+ # image: Union[FileTypes, List[FileTypes]],
51
+ # prompt: str,
52
+ # background: Optional[Literal["transparent", "opaque", "auto"]] | NotGiven = NOT_GIVEN,
53
+ # mask: FileTypes | NotGiven = NOT_GIVEN,
54
+ # model: Union[str, ImageModel, None] | NotGiven = NOT_GIVEN,
55
+ # n: Optional[int] | NotGiven = NOT_GIVEN,
56
+ # quality: Optional[Literal["standard", "low", "medium", "high", "auto"]] | NotGiven = NOT_GIVEN,
57
+ # response_format: Optional[Literal["url", "b64_json"]] | NotGiven = NOT_GIVEN,
58
+ # size: Optional[Literal["256x256", "512x512", "1024x1024", "1536x1024", "1024x1536", "auto"]]
59
+ # | NotGiven = NOT_GIVEN,
60
+ # user: str | NotGiven = NOT_GIVEN,
61
+ # # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
62
+ # # The extra values given here take precedence over values defined on the client or passed to this method.
63
+ # extra_headers: Headers | None = None,
64
+ # extra_query: Query | None = None,
65
+ # extra_body: Body | None = None,
66
+ # timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
@@ -108,7 +108,7 @@ VOICE_MAPPING = {
108
108
  @retrying()
109
109
  async def create_tts(request: TTSRequest): # audio.speech.create
110
110
 
111
- effect_id = VOICE_MAPPING.get(request.voice, request.voice)
111
+ effect_id = VOICE_MAPPING.get(request.voice, "7382552865023201819")
112
112
 
113
113
  loki_info = {"effect_id": effect_id, "model_names": "", "effect_type": 0}
114
114
 
@@ -131,7 +131,7 @@ async def create(request: Union[ChatCompletionRequest, CompletionRequest]):
131
131
  logger.debug(request.model_dump_json(indent=4))
132
132
 
133
133
  headers = {}
134
- if "research" in request.mode: # 登录
134
+ if "research" in request.mode or model=="fast_thinking": # 登录
135
135
  cookie = await get_next_token_for_polling(FEISHU_URL)
136
136
  headers["cookie"] = cookie
137
137
  logger.debug(cookie)
@@ -206,9 +206,9 @@ if __name__ == '__main__':
206
206
 
207
207
  # model="meta-search",
208
208
  # model="meta-deepsearch",
209
- # model="meta-deepresearch",
209
+ model="meta-deepresearch",
210
210
 
211
- model="meta-search:video",
211
+ # model="meta-search:video",
212
212
 
213
213
  # model="deepseek-r1-metasearch",
214
214
 
@@ -88,7 +88,7 @@ async def get_task(task_id, token: str):
88
88
 
89
89
  if __name__ == '__main__':
90
90
  token = None
91
- token = "sk-raapiguffsnsxgkfiwfusjmbpcyqoxhcohhxaybflrnvpqjw"
91
+ token = "sk-rfuayacpsnrcikpgwrotzfcnpzhsrgqnfjdgnihckbhhscgw"
92
92
 
93
93
  request = VideoRequest(
94
94
  model="x",
@@ -96,13 +96,13 @@ if __name__ == '__main__':
96
96
  image='https://oss.ffire.cc/files/kling_watermark.png' # 1148f2e4-0a62-4208-84de-0bf2c88f740d
97
97
  )
98
98
 
99
- r = arun(create_task(request))
99
+ # r = arun(create_task(request))
100
100
 
101
101
  # tokens_ = arun(check_token_for_siliconflow(tokens, threshold=0.01))
102
102
 
103
103
  # arun(create_task(request, token=token))
104
104
 
105
- # arun(get_task("fa248aac-00ec-4b00-a2f8-3d6bf1cea6d3", token))
105
+ arun(get_task("gkx1e8fejgod", token))
106
106
  # arun(get_task("c716a328-438e-4612-aff2-a669034499cb", token))
107
107
  # arun(get_task("1148f2e4-0a62-4208-84de-0bf2c88f740d", token))
108
108
 
@@ -118,4 +118,16 @@ if __name__ == '__main__':
118
118
  # #
119
119
  # arun(get_task(request))
120
120
 
121
- print(bjson(request))
121
+ print(bjson(request))
122
+
123
+ # {
124
+ # "req_key": "high_aes_general_v30l_zt2i",
125
+ # "prompt": "\n 3D魔童哪吒 c4d 搬砖 很开心, 很快乐, 精神抖擞, 背景是数不清的敖丙虚化 视觉冲击力强 大师构图 色彩鲜艳丰富 吸引人 背景用黄金色艺术字写着“搬砖挣钱” 冷暖色对比\n ",
126
+ # "seed": -1,
127
+ # "width": 512,
128
+ # "height": 512,
129
+ # "use_pre_llm": true,
130
+ # "use_sr": false,
131
+ # "return_url": true,
132
+ # "logo_info": null
133
+ # }
meutils/data/VERSION CHANGED
@@ -1 +1 @@
1
- 2025.05.29.18.12.08
1
+ 2025.05.30.17.03.11
@@ -189,6 +189,29 @@ async def check_token_for_sophnet(api_key, threshold: float = 1):
189
189
  return False
190
190
 
191
191
 
192
+ #
193
+ @retrying()
194
+ async def check_token_for_volc(api_key, threshold: float = 1):
195
+ if not isinstance(api_key, str):
196
+ return await check_tokens(api_key, check_token_for_volc)
197
+
198
+ try:
199
+ client = AsyncOpenAI(base_url=os.getenv("VOLC_BASE_URL"), api_key=api_key)
200
+
201
+ data = await client.chat.completions.create(
202
+ model="deepseek-v3-250324",
203
+ messages=[{"role": "user", "content": "hi"}],
204
+ max_tokens=1
205
+ )
206
+ return True
207
+ except TimeoutException as e:
208
+ raise
209
+
210
+ except Exception as e:
211
+ logger.error(f"Error: {e}\n{api_key}")
212
+ return False
213
+
214
+
192
215
  if __name__ == '__main__':
193
216
  from meutils.config_utils.lark_utils import get_next_token_for_polling, get_series
194
217
 
@@ -220,5 +243,6 @@ if __name__ == '__main__':
220
243
 
221
244
  # arun(check_token_for_sophnet(["gzHpp_zRtGaw1IjpepCiWu_ySyke3Hu5wR5VNNYMLyXwAESqZoZWUZ4T3tiWUxtac6n9Hk-kRRo4_jPQmndo-g"]))
222
245
 
246
+ # arun(check_token_for_ppinfra("sk_F0kgPyCMTzmOH_-VCEJucOK8HIrbnLGYm_IWxBToHZQ"))
223
247
 
224
- arun(check_token_for_ppinfra("sk_F0kgPyCMTzmOH_-VCEJucOK8HIrbnLGYm_IWxBToHZQ"))
248
+ arun(check_token_for_volc(os.getenv("VOLC_API_KEY")))
@@ -0,0 +1,48 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding: utf-8 -*-
3
+ # @Project : AI. @by PyCharm
4
+ # @File : adapters
5
+ # @Time : 2025/5/30 16:38
6
+ # @Author : betterme
7
+ # @WeChat : meutils
8
+ # @Software : PyCharm
9
+ # @Description :
10
+
11
+ from meutils.pipe import *
12
+ from meutils.schemas.openai_types import CompletionRequest
13
+ from meutils.schemas.image_types import ImageRequest
14
+ from meutils.llm.openai_utils import chat_completion, chat_completion_chunk, create_chat_completion_chunk
15
+
16
+
17
+ async def chat_for_image(
18
+ generate: Callable,
19
+ request: CompletionRequest,
20
+ ):
21
+ if request.last_user_content.startswith( # 跳过nextchat
22
+ (
23
+ "hi",
24
+ "使用四到五个字直接返回这句话的简要主题",
25
+ "简要总结一下对话内容,用作后续的上下文提示 prompt,控制在 200 字以内"
26
+ )):
27
+ return
28
+
29
+ request = ImageRequest(
30
+ model=request.model,
31
+ prompt=request.last_user_content,
32
+ )
33
+
34
+
35
+ future_task = asyncio.create_task(generate(request)) # 异步执行
36
+
37
+ async def gen():
38
+ for i in f"> 🖌️正在绘画\n\n```json\n{request.model_dump_json(exclude_none=True)}\n```\n\n":
39
+ await asyncio.sleep(0.05)
40
+ yield i
41
+
42
+ response = await future_task
43
+
44
+ for image in response.data:
45
+ yield f"![{image.revised_prompt}]({image.url})\n\n"
46
+
47
+ chunks = create_chat_completion_chunk(gen(), redirect_model=request.model)
48
+ return chunks
@@ -25,13 +25,15 @@ from meutils.schemas.openai_types import CompletionRequest, ChatCompletionReques
25
25
  from meutils.schemas.openai_types import ChatCompletion, ChatCompletionChunk, CompletionUsage
26
26
  from meutils.schemas.openai_types import chat_completion, chat_completion_chunk, chat_completion_chunk_stop # todo
27
27
 
28
- from meutils.schemas.image_types import ImageRequest
28
+ from meutils.schemas.image_types import ImageRequest, ImageEditRequest
29
29
 
30
30
  token_encoder = tiktoken.get_encoding('cl100k_base')
31
31
  token_encoder_with_cache = lru_cache(maxsize=1024)(token_encoder.encode)
32
32
 
33
33
  CHAT_COMPLETION_PARAMS = get_function_params()
34
34
  IMAGES_GENERATE_PARAMS = get_function_params(fn=OpenAI(api_key='').images.generate)
35
+ IMAGES_EDIT_PARAMS = get_function_params(fn=OpenAI(api_key='').images.edit)
36
+
35
37
  AUDIO_SPEECH_PARAMS = get_function_params(fn=OpenAI(api_key='').audio.speech.create)
36
38
  AUDIO_TRANSCRIPTIONS_PARAMS = get_function_params(fn=OpenAI(api_key='').audio.transcriptions.create)
37
39
 
@@ -49,6 +51,8 @@ def to_openai_params(
49
51
  PARAMS = CHAT_COMPLETION_PARAMS
50
52
  elif isinstance(request, ImageRequest):
51
53
  PARAMS = IMAGES_GENERATE_PARAMS
54
+ elif isinstance(request, ImageEditRequest):
55
+ PARAMS = IMAGES_EDIT_PARAMS
52
56
  elif isinstance(request, TTSRequest):
53
57
  PARAMS = AUDIO_SPEECH_PARAMS
54
58
  elif isinstance(request, STTRequest):
@@ -271,22 +275,24 @@ if __name__ == '__main__':
271
275
  #
272
276
  # ChatCompletionToolParam(**{'function': '', 'type': ''})
273
277
 
274
- async def main():
275
- with timer():
276
- try:
277
- async with ppu_flow(api_key="sk-OYK4YxtTlWauT2TdGR5FTAJpkRmSnDwPly4cve0cAvMcrBkZ", post="api-oss",
278
- n=1):
279
- logger.debug("消费了哦")
280
-
281
- except Exception as e:
282
- pass
283
- logger.error(e)
284
- # logger.debug(e.response.status_code)
285
- # logger.debug(e.response.text)
286
-
287
-
288
- arun(main())
289
-
290
- # to_openai_params(ChatCompletionRequest())
278
+ # async def main():
279
+ # with timer():
280
+ # try:
281
+ # async with ppu_flow(api_key="sk-OYK4YxtTlWauT2TdGR5FTAJpkRmSnDwPly4cve0cAvMcrBkZ", post="api-oss",
282
+ # n=1):
283
+ # logger.debug("消费了哦")
284
+ #
285
+ # except Exception as e:
286
+ # pass
287
+ # logger.error(e)
288
+ # # logger.debug(e.response.status_code)
289
+ # # logger.debug(e.response.text)
290
+ #
291
+ #
292
+ # arun(main())
293
+ #
294
+ # # to_openai_params(ChatCompletionRequest())
295
+ #
296
+ # print(token_encoder.encode('hi'))
291
297
 
292
- print(token_encoder.encode('hi'))
298
+ logger.debug(IMAGES_EDIT_PARAMS)
meutils/notice/feishu.py CHANGED
@@ -14,7 +14,7 @@ DEFAULT = "https://open.feishu.cn/open-apis/bot/v2/hook/f7cf6f2a-30da-4e7a-ae6f-
14
14
  IMAGES = "https://open.feishu.cn/open-apis/bot/v2/hook/c903e9a7-ece0-4b98-b395-0e1f6a1fb31e"
15
15
  VIDEOS = "https://open.feishu.cn/open-apis/bot/v2/hook/0f926e89-90de-4211-90c5-fd99e8db8ea3"
16
16
  LLM = "https://open.feishu.cn/open-apis/bot/v2/hook/3c4f3756-c824-4942-9f8f-561a74e7c6e9"
17
- LLM_REVERSE = "https://open.feishu.cn/open-apis/bot/v2/hook/cd5c9126-a882-4a24-9f1b-145cd1dcc769"
17
+ DYNAMIC_ROUTER = "https://open.feishu.cn/open-apis/bot/v2/hook/cd5c9126-a882-4a24-9f1b-145cd1dcc769"
18
18
 
19
19
  Vison = ""
20
20
  # AUDIOS_TTS = "https://open.feishu.cn/open-apis/bot/v2/hook/ff7d4b86-d238-436c-9447-f88cf603454d"
@@ -111,6 +111,8 @@ def catch(
111
111
  send_message_for_images = partial(send_message, url=IMAGES)
112
112
  send_message_for_kling = partial(send_message, url=KLING)
113
113
 
114
+ send_message_for_dynamic_router = partial(send_message, url=DYNAMIC_ROUTER)
115
+
114
116
  http_feishu_url = "https://open.feishu.cn/open-apis/bot/v2/hook/d1c7b67d-b0f8-4067-a2f5-109f20eeb696"
115
117
  send_message_for_http = partial(send_message, url=http_feishu_url)
116
118