MeUtils 2025.5.29.18.35.35__py3-none-any.whl → 2025.5.30.18.30.42__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
@@ -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=0cvmybVkDdO-S7GK1A7-ZteM1-tovZ1vHSOY94RxN2k,11244
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
@@ -392,7 +392,7 @@ meutils/apis/hailuoai/hasha_new.py,sha256=1sD3fxmxYrEufmPaJZGAkYJoHKO85hfLXemnY-
392
392
  meutils/apis/hailuoai/images.py,sha256=2SLRKnzz2jdHHVwDzLdJetXZpvn9Mkzjrr_1gJPTIFI,19848
393
393
  meutils/apis/hailuoai/music.py,sha256=S_oi-ZDbocTfbRgREdXtGx50xzUc1PCZGuxmr917E7M,265
394
394
  meutils/apis/hailuoai/upload.py,sha256=22S6W6hGQhUquVKqh7QCkXb6KHDl3iMKKi6Z0AJdFEI,6501
395
- meutils/apis/hailuoai/videos.py,sha256=wRvWqdvAzw6I4HabCAaWcYxpsBnyMlP9WpeSN-yhvT8,22569
395
+ meutils/apis/hailuoai/videos.py,sha256=rtDsSt3ckAfkSMX-N2e_kpM-na7D8Lrt1j5j7r1b-hg,22856
396
396
  meutils/apis/hailuoai/yy.py,sha256=uBwtpMhCE4lQyDqEsua4eupGAU0A2N0UJN20pE1tOUo,8962
397
397
  meutils/apis/hf/__init__.py,sha256=ZZoRl8yNYekoMhE__67XXBKNSYJaLgjtaa0netjJKUU,271
398
398
  meutils/apis/hf/got_ocr.py,sha256=pZURFpryDh_Ak6PNiARztOzYgkjVrfScJ5-0XzMBrzI,1776
@@ -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
@@ -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
@@ -512,7 +513,7 @@ meutils/apis/to_image/url2image.py,sha256=WAgW_vZpynTgoWJ8GusoM_k1whYJKJMY5kvEPK
512
513
  meutils/apis/together/__init__.py,sha256=OCJxyaTTrYFjcaM-ck2ZoQrB30LAWWjnTVT__ijxSJA,272
513
514
  meutils/apis/together/images.py,sha256=rlVb7SyWf4cFQxukgq0Pw6QiF_6DHzCDvyfRzWybfpM,2662
514
515
  meutils/apis/translator/__init__.py,sha256=8JZFyy1SojQiQpON8GC06OyY-i0coNqkCrKQLzgDAR8,243
515
- meutils/apis/translator/deeplx.py,sha256=jBC_-P_eLhWHp6yK4bURf6bxXv00QowddLQlOMFEPw0,1620
516
+ meutils/apis/translator/deeplx.py,sha256=Jtjlxax9-L6Z20k38k9cshSbHutbxWj2SJR_CAmJfVM,1758
516
517
  meutils/apis/tripo3d/__init__.py,sha256=KkEX1hWjdWSfwbw_iNuon2G9U1LbKKlKWsKbnyWYO5I,272
517
518
  meutils/apis/tripo3d/images.py,sha256=xThp3AXVBc6Qb7pcyqCsQWx-4gwTp9YkEA0GzFAv3yE,4943
518
519
  meutils/apis/uptime_kuma/__init__.py,sha256=w_fYxFgQDOXOfCPe0JMsgSl6zrGuYx9w4thySfAsbAE,272
@@ -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=tnxWZfmlRhIc61deYwJSke_r_xnSsA6jZ-WFd0hcQx0,19
580
+ meutils/data/VERSION,sha256=VGOkH1Aw-QSwCYMdSBODaMdr91ONj9sM4z8liIAipwQ,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=ry7KYatXHYRarpLonTDzetdse0uXeZZqtLMnIDkDNz4,40124
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.35.35.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
974
- MeUtils-2025.5.29.18.35.35.dist-info/METADATA,sha256=KBpoKOWd5aS4xEmg1LqegFvJWKmnIa4NbxKtX0ApUqU,32834
975
- MeUtils-2025.5.29.18.35.35.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
976
- MeUtils-2025.5.29.18.35.35.dist-info/entry_points.txt,sha256=lufZlBHRqqZKdY-ZQJ4CSZb0qhV5hQC37egZna9M7ug,357
977
- MeUtils-2025.5.29.18.35.35.dist-info/top_level.txt,sha256=cInfxMmkgNOskurdjwP5unau4rA7Uw48nu07tYhS7KY,22
978
- MeUtils-2025.5.29.18.35.35.dist-info/RECORD,,
975
+ MeUtils-2025.5.30.18.30.42.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
976
+ MeUtils-2025.5.30.18.30.42.dist-info/METADATA,sha256=7E647s73YvhReVWZscFvT5ueoaXKNJ-CDJacQ0OpkK8,32834
977
+ MeUtils-2025.5.30.18.30.42.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
978
+ MeUtils-2025.5.30.18.30.42.dist-info/entry_points.txt,sha256=lufZlBHRqqZKdY-ZQJ4CSZb0qhV5hQC37egZna9M7ug,357
979
+ MeUtils-2025.5.30.18.30.42.dist-info/top_level.txt,sha256=cInfxMmkgNOskurdjwP5unau4rA7Uw48nu07tYhS7KY,22
980
+ MeUtils-2025.5.30.18.30.42.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(
@@ -15,6 +15,8 @@ from meutils.schemas.image_types import ImageRequest, FluxImageRequest, SDImageR
15
15
  from meutils.schemas.fal_types import FEISHU_URL
16
16
  from meutils.config_utils.lark_utils import get_next_token_for_polling, get_series
17
17
 
18
+ from meutils.apis.translator import deeplx
19
+
18
20
  from fal_client.client import AsyncClient, SyncClient, Status, FalClientError
19
21
 
20
22
  recraft_styles = "any, realistic_image, digital_illustration, vector_illustration, realistic_image/b_and_w, realistic_image/hard_flash, realistic_image/hdr, realistic_image/natural_light, realistic_image/studio_portrait, realistic_image/enterprise, realistic_image/motion_blur, realistic_image/evening_light, realistic_image/faded_nostalgia, realistic_image/forest_life, realistic_image/mystic_naturalism, realistic_image/natural_tones, realistic_image/organic_calm, realistic_image/real_life_glow, realistic_image/retro_realism, realistic_image/retro_snapshot, realistic_image/urban_drama, realistic_image/village_realism, realistic_image/warm_folk, digital_illustration/pixel_art, digital_illustration/hand_drawn, digital_illustration/grain, digital_illustration/infantile_sketch, digital_illustration/2d_art_poster, digital_illustration/handmade_3d, digital_illustration/hand_drawn_outline, digital_illustration/engraving_color, digital_illustration/2d_art_poster_2, digital_illustration/antiquarian, digital_illustration/bold_fantasy, digital_illustration/child_book, digital_illustration/child_books, digital_illustration/cover, digital_illustration/crosshatch, digital_illustration/digital_engraving, digital_illustration/expressionism, digital_illustration/freehand_details, digital_illustration/grain_20, digital_illustration/graphic_intensity, digital_illustration/hard_comics, digital_illustration/long_shadow, digital_illustration/modern_folk, digital_illustration/multicolor, digital_illustration/neon_calm, digital_illustration/noir, digital_illustration/nostalgic_pastel, digital_illustration/outline_details, digital_illustration/pastel_gradient, digital_illustration/pastel_sketch, digital_illustration/pop_art, digital_illustration/pop_renaissance, digital_illustration/street_art, digital_illustration/tablet_sketch, digital_illustration/urban_glow, digital_illustration/urban_sketching, digital_illustration/vanilla_dreams, digital_illustration/young_adult_book, digital_illustration/young_adult_book_2, vector_illustration/bold_stroke, vector_illustration/chemistry, vector_illustration/colored_stencil, vector_illustration/contour_pop_art, vector_illustration/cosmics, vector_illustration/cutout, vector_illustration/depressive, vector_illustration/editorial, vector_illustration/emotional_flat, vector_illustration/infographical, vector_illustration/marker_outline, vector_illustration/mosaic, vector_illustration/naivector, vector_illustration/roundish_flat, vector_illustration/segmented_colors, vector_illustration/sharp_contrast, vector_illustration/thin, vector_illustration/vector_photo, vector_illustration/vivid_shapes, vector_illustration/engraving, vector_illustration/line_art, vector_illustration/line_circuit, vector_illustration/linocut"
@@ -66,8 +68,7 @@ async def generate(request: ImageRequest, token: Optional[str] = None):
66
68
 
67
69
  "output_format": "png",
68
70
  }
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
71
+ elif request.model.startswith("fal-ai/flux/dev/image-to-image"):
71
72
  urls = parse_url(request.prompt)
72
73
  image_url = urls[-1]
73
74
  prompt = request.prompt.replace(image_url, "")
@@ -92,6 +93,57 @@ async def generate(request: ImageRequest, token: Optional[str] = None):
92
93
 
93
94
  **request.controls
94
95
  }
96
+ elif "kontext" in request.model: # https://fal.ai/models/fal-ai/flux-pro/kontext/max
97
+
98
+ if image_urls := parse_url(request.prompt):
99
+ for image_url in image_urls:
100
+ request.prompt = request.prompt.replace(image_url, "")
101
+
102
+ if len(image_urls) == 1:
103
+ arguments['image_url'] = image_urls[0]
104
+ else:
105
+ request.model += "/multi"
106
+ arguments['image_urls'] = image_urls
107
+ else:
108
+ request.model += "/text-to-image"
109
+
110
+ # fal-ai/flux-pro/kontext/max/text-to-image
111
+
112
+ # fal-ai/flux-pro/kontext/max
113
+ # fal-ai/flux-pro/kontext/max/multi
114
+
115
+ # fal-ai/flux-pro/kontext/text-to-image
116
+
117
+ # fal-ai/flux-pro/kontext
118
+ # fal-ai/flux-pro/kontext/multi
119
+
120
+ """
121
+ {
122
+ "prompt": "Put a donut next to the flour.",
123
+ "guidance_scale": 3.5,
124
+ "num_images": 1,
125
+ "safety_tolerance": "2",
126
+ "output_format": "jpeg",
127
+ "image_url": "https://v3.fal.media/files/rabbit/rmgBxhwGYb2d3pl3x9sKf_output.png"
128
+ }
129
+ """
130
+ arguments = {
131
+ **arguments,
132
+ "num_images": request.n,
133
+
134
+ "enable_safety_checker": False,
135
+ "safety_tolerance": "5",
136
+ "output_format": "png",
137
+ "seed": request.seed,
138
+
139
+ "guidance_scale": request.guidance or 3.5,
140
+
141
+ "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
142
+
143
+ "prompt": await deeplx.translate_prompt(request.prompt),
144
+
145
+ }
146
+
95
147
  elif request.model.startswith("fal-ai/flux"): # https://fal.ai/models/fal-ai/flux-pro/v1.1-ultra/api
96
148
 
97
149
  arguments = {
@@ -118,6 +170,17 @@ async def generate(request: ImageRequest, token: Optional[str] = None):
118
170
  "seed": request.seed,
119
171
 
120
172
  }
173
+
174
+ elif request.model.startswith("fal-ai/imagen4"):
175
+ arguments = {
176
+ **arguments,
177
+ # 10:16, 16:10, 9:16, 16:9, 4:3, 3:4, 1:1, 1:3, 3:1, 3:2, 2:3
178
+ "aspect_ratio": request.aspect_ratio or "1:1",
179
+
180
+ "seed": request.seed,
181
+
182
+ }
183
+
121
184
  try:
122
185
 
123
186
  data = await AsyncClient(key=token).run(
@@ -144,6 +207,11 @@ if __name__ == '__main__':
144
207
  "ideogram-ai/ideogram-v2-turbo": "fal-ai/ideogram/v2/turbo",
145
208
  "ideogram-ai/ideogram-v2": "fal-ai/ideogram/v2",
146
209
  "recraftv3": "fal-ai/recraft-v3",
210
+
211
+ "imagen4": "fal-ai/imagen4/preview",
212
+ "flux-kontext-pro": "fal-ai/flux-pro/kontext",
213
+ "flux-kontext-max": "fal-ai/flux-pro/kontext/max"
214
+
147
215
  }
148
216
 
149
217
  # model = "fal-ai/flux-pro/v1.1" # 0.04
@@ -153,21 +221,29 @@ if __name__ == '__main__':
153
221
  # model = "fal-ai/ideogram/v2" # 0.08
154
222
  # model = "fal-ai/ideogram/v2/turbo" # 0.05
155
223
  # model = "fal-ai/flux/schnell"
224
+ model = "fal-ai/imagen4/preview"
225
+ model = "fal-ai/flux-pro/kontext"
226
+ # model = "fal-ai/flux-pro/kontext/max"
227
+ #
228
+ 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."
229
+ request = ImageRequest(prompt=prompt, model=model)
156
230
 
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)
231
+ request = ImageRequest(prompt='https://oss.ffire.cc/files/kling_watermark.png The woman smiled', model=model)
232
+
233
+ request = ImageRequest(prompt="https://oss.ffire.cc/files/kling_watermark.png 让这个女人哭起来", model=model)
234
+ # request = ImageRequest(prompt='a cat', model=model)
159
235
 
160
236
  # token = "77fcfad2-aadc-4158-8e11-b30a5668dfad:ea5f38d864bde6707561d348436d2cea"
161
237
  # token = "5116af3f-1aa5-4c1b-b505-fd49f701dccc:7f4278d69d069cec4794fe658a09bd9d"
162
238
 
163
- # arun(generate(request))
239
+ arun(generate(request))
164
240
 
165
241
  # arun(AsyncClient(key=token).key)
166
242
 
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)
243
+ # tokens = arun(get_series(FEISHU_URL))
244
+ # # tokens = [token]
245
+ #
246
+ # r = []
247
+ # for t in tokens:
248
+ # if arun(check(t)):
249
+ # r.append(t)
@@ -392,7 +392,7 @@ async def get_task(task_id: str, token: str):
392
392
 
393
393
 
394
394
  # https://hailuoai.video/v1/api/user/equity?device_platform=web&app_id=3001&version_code=22201&uuid=3de88ad0-8a38-48a9-8ed3-0d63f9c71296&lang=en&device_id=302833759512764417&os_name=Mac&browser_name=chrome&device_memory=8&cpu_core_num=10&browser_language=zh-CN&browser_platform=MacIntel&screen_width=1920&screen_height=1080&unix=1731571578000
395
- @alru_cache(ttl=3600)
395
+ # @alru_cache(ttl=3600)
396
396
  async def check_token(token, threshold: int = 30, **kwargs):
397
397
  BASE_URL = get_base_url(token)
398
398
 
@@ -453,7 +453,7 @@ if __name__ == '__main__': # 304752356930580482
453
453
  token = None
454
454
  # token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NDQ3MDMwNzIsInVzZXIiOnsiaWQiOiIzMDI4MzM4Njc3NzE5NDkwNTgiLCJuYW1lIjoibWUgYmV0dGVyIiwiYXZhdGFyIjoiIiwiZGV2aWNlSUQiOiIzMDI4MzM3NTk1MTI3NjQ0MTciLCJpc0Fub255bW91cyI6ZmFsc2V9fQ.Mjb64ZjkKyV9pj-_bXyLczU6kU729VLaKbYj9NmrK-4"
455
455
  # token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NDg3Mzg4MTQsInVzZXIiOnsiaWQiOiIyMjkwODQ3NTA2MDEzODgwMzciLCJuYW1lIjoi5bCP6J665bi9ODAzNyIsImF2YXRhciI6Imh0dHBzOi8vY2RuLmhhaWx1b2FpLmNvbS9wcm9kL3VzZXJfYXZhdGFyLzE3MDYyNjc3MTEyODI3NzA4NzItMTczMTk0NTcwNjY4OTY1ODk2b3ZlcnNpemUucG5nIiwiZGV2aWNlSUQiOiIyNDM3MTMyNTI1NDU5ODY1NjIiLCJpc0Fub255bW91cyI6ZmFsc2V9fQ.o0SoZMSTWkXNHxJjt3Ggby5MJWSfd-rnK_I95T_WMP8"
456
- token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NTAxMjg4NTIsInVzZXIiOnsiaWQiOiIzNzQwMTM3NzUyNzg4ODY5MTciLCJuYW1lIjoiTmFodWVsIE1vbGluYSIsImF2YXRhciI6IiIsImRldmljZUlEIjoiMzEzMzc0MTIyMjEyMjc4MjczIiwiaXNBbm9ueW1vdXMiOmZhbHNlfX0.uxTtDTcPT07piVA-x3N2ms2VrRN3JwcU99g_HJLwqLE"
456
+ # token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NTAxMjg4NTIsInVzZXIiOnsiaWQiOiIzNzQwMTM3NzUyNzg4ODY5MTciLCJuYW1lIjoiTmFodWVsIE1vbGluYSIsImF2YXRhciI6IiIsImRldmljZUlEIjoiMzEzMzc0MTIyMjEyMjc4MjczIiwiaXNBbm9ueW1vdXMiOmZhbHNlfX0.uxTtDTcPT07piVA-x3N2ms2VrRN3JwcU99g_HJLwqLE"
457
457
  request = VideoRequest(
458
458
  model="t2v-01",
459
459
  # model="S2V-01-live",
@@ -487,4 +487,5 @@ if __name__ == '__main__': # 304752356930580482
487
487
  # token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MzUwMTc3ODAsInVzZXIiOnsiaWQiOiIzMTEyOTUzMTkzMjc1NzYwNjQiLCJuYW1lIjoiVUdIUiBKVkJYIiwiYXZhdGFyIjoiaHR0cHM6Ly9saDMuZ29vZ2xldXNlcmNvbnRlbnQuY29tL2EvQUNnOG9jS3RuR2NjdGZsWV9fR2tiQ1MzdnhzSXdWSEFUX0ZmMFdyb3RvMnN4bFdWZW1KMm53PXM5Ni1jIiwiZGV2aWNlSUQiOiIzMTMzMTU5NTMxMDA0MTA4ODciLCJpc0Fub255bW91cyI6ZmFsc2V9fQ.cyZifq4FQl46P5_acTNT04qu2GVDDeSBbwjw3J1vWPo"
488
488
  # token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MzUwMzQ1MjcsInVzZXIiOnsiaWQiOiIzMTMzODk5MjA0NjA5MzkyNjgiLCJuYW1lIjoiY2l4ZiB4YmNnIiwiYXZhdGFyIjoiIiwiZGV2aWNlSUQiOiIzMTM0MDgyMjg0NTEwOTg2MjYiLCJpc0Fub255bW91cyI6ZmFsc2V9fQ.eOtAUe3MmarOGNk64j0bfaLNBZ4yxkqwIi1tUhOFD5c"
489
489
  # token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NTAxMjg4NTIsInVzZXIiOnsiaWQiOiIzNzQwMTM3NzUyNzg4ODY5MTciLCJuYW1lIjoiTmFodWVsIE1vbGluYSIsImF2YXRhciI6IiIsImRldmljZUlEIjoiMzEzMzc0MTIyMjEyMjc4MjczIiwiaXNBbm9ueW1vdXMiOmZhbHNlfX0.uxTtDTcPT07piVA-x3N2ms2VrRN3JwcU99g_HJLwqLE"
490
+ # token="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NTAxMjg4NTIsInVzZXIiOnsiaWQiOiIzNzQwMTM3NzUyNzg4ODY5MTciLCJuYW1lIjoiTmFodWVsIE1vbGluYSIsImF2YXRhciI6IiIsImRldmljZUlEIjoiMzEzMzc0MTIyMjEyMjc4MjczIiwiaXNBbm9ueW1vdXMiOmZhbHNlfX0.uxTtDTcPT07piVA-x3N2ms2VrRN3JwcU99g_HJLwqLE"
490
491
  # arun(check_token(token))
@@ -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,
@@ -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
 
@@ -17,7 +17,7 @@ from meutils.apis import niutrans
17
17
 
18
18
  # niutrans.translate("你好", 'auto', 'en')
19
19
 
20
- @alru_cache(ttl=3600)
20
+ @alru_cache()
21
21
  @retrying()
22
22
  async def translate(
23
23
  request: DeeplxRequest,
@@ -50,6 +50,11 @@ async def translate(
50
50
  return {'data': _}
51
51
 
52
52
 
53
+ async def translate_prompt(prompt):
54
+ return (
55
+ await translate(DeeplxRequest(text=prompt, target_lang="EN"))
56
+ ).get("data", prompt)
57
+
53
58
  if __name__ == '__main__':
54
59
  request = DeeplxRequest(text='讲个故事', source_lang='ZH', target_lang='EN')
55
60
  with timer():
@@ -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.35.35
1
+ 2025.05.30.18.30.42
@@ -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