MeUtils 2025.3.7.22.46.32__py3-none-any.whl → 2025.3.13.19.7.25__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.
@@ -91,7 +91,7 @@ examples/_openaisdk/kimi_qa.py,sha256=dNBIe01vK7p-8cFnbgVXJ5H3xPSW32-cc0rwZx3K_1
91
91
  examples/_openaisdk/minimax.py,sha256=zOshBkL1bHgRlj4z6k2FQRScNTr7ysZkfh2-OaAynkU,2116
92
92
  examples/_openaisdk/open_router.py,sha256=ky_tdPX9CZkq4rAnjaFrOY_bygZuy6V8jIQfh6bq9U0,1497
93
93
  examples/_openaisdk/openai_aiplus.py,sha256=7sT2t4jjZBABFiwKQwUjgdilO8s006NuPAPx7neHER8,1182
94
- examples/_openaisdk/openai_audio.py,sha256=ZyYslH9RfdJBpNUpjKn_5x0d94_H291Qt31u_6weISc,484
94
+ examples/_openaisdk/openai_audio.py,sha256=Fcp-k4CzU0oB7vDKldRLwUCIRIwwVn_w9CmbEWacbOk,1002
95
95
  examples/_openaisdk/openai_baichuan.py,sha256=-xhHovkFmWOTX25CJjIon0my-ocmwfAZJu1C0eS80Xs,1614
96
96
  examples/_openaisdk/openai_baidu.py,sha256=qnrxP66lY7Qf2jEbFEHrt0FrR5_Aji1AgwSI_46IabY,1969
97
97
  examples/_openaisdk/openai_cache.py,sha256=89GbJ1QlqQbVxlUeuFgEbwDYHOkum7BK0zB-CqmDAZU,726
@@ -107,7 +107,7 @@ examples/_openaisdk/openai_files.py,sha256=zcF4k4sQ2FnINhq6x1wCKw1WCu93g1h69Yul_
107
107
  examples/_openaisdk/openai_gitee.py,sha256=UQEJMQMQDhgqYzo_aYetYXnBmVtqRwIweJDDK3NlSMw,1205
108
108
  examples/_openaisdk/openai_god.py,sha256=O8fbhyxiIlVR7pTvBTXgQ2QTwfcZ2MkEIyDe_jp797A,1056
109
109
  examples/_openaisdk/openai_groq.py,sha256=_5Ue1yEx0Gp6theFioB_D8kepR0UlqMU96PVGH-LkVY,7363
110
- examples/_openaisdk/openai_images.py,sha256=dPsJniqSfE_pUzgB_3VwKCC1q_T0sG0bvi6ZmJZ2udg,6003
110
+ examples/_openaisdk/openai_images.py,sha256=RAnLVKGAXXrStRSfZQ2k584vfEpACf94s1_g57IV2Xc,6005
111
111
  examples/_openaisdk/openai_jina.py,sha256=QeGRXMQmkJyg8Cz4Vfx4pP39a5TcO7pQQfPAPbBA8bs,1628
112
112
  examples/_openaisdk/openai_json.py,sha256=M4tq_IkzYbmtgbFilGQHmRdJhH0OltiwGk7cK7uc-sQ,1850
113
113
  examples/_openaisdk/openai_kindo.py,sha256=dRQd8BOUDlWo4xp2l1s3BeP7qv19i7CUjx14NRv1fxM,741
@@ -348,7 +348,7 @@ meutils/apis/chatglm/temp.py,sha256=zYe6JGUHVfb77T_TdNsdmpTs2D9OyqDTUEkblDAIoYY,
348
348
  meutils/apis/chatglm/x.py,sha256=lI86Cd6SN4noCN5HM9gRugcVmjHDtxDTV4m-7Bj61N0,24312
349
349
  meutils/apis/fal/__init__.py,sha256=A7w3ZAS7Tv20N4X4Em6NshDxKSCPAzaPxHJTbM3BbyM,272
350
350
  meutils/apis/fal/files.py,sha256=Gppdo96uw8-TCDr8P691jV7dK9Si-E-kJXFJR5BVt-Q,1373
351
- meutils/apis/fal/images.py,sha256=GGYQMKf9aNXLQ_x0VtSmn6chRti_YWzuDDy2qha7qN4,8546
351
+ meutils/apis/fal/images.py,sha256=YacJb4sdyv2J-R_OPc_P6d6EB2HhndRt862wEHsjRSU,8546
352
352
  meutils/apis/fal/images_.py,sha256=C-C1TTQtMJ6RRcd-4FeYPn0R5IpPRPUFmBbrTVs_ypA,1446
353
353
  meutils/apis/fal/pd.py,sha256=oPrMK_FJqohl2Kf0U0it8SqgvIlSEYFcSX8sfVkD8bU,311
354
354
  meutils/apis/fal/videos.py,sha256=GzMyS-nBMGAXHaCLKxgCdzowB3jpJDXLb6-y1v0zKNo,3387
@@ -361,7 +361,7 @@ meutils/apis/hailuoai/demo.py,sha256=WTnDFL2HgVpAjcn5BljLrbf2y2aATkvvNy75zoEIQkc
361
361
  meutils/apis/hailuoai/hasha_new.py,sha256=1sD3fxmxYrEufmPaJZGAkYJoHKO85hfLXemnY-xYIO8,9101
362
362
  meutils/apis/hailuoai/music.py,sha256=S_oi-ZDbocTfbRgREdXtGx50xzUc1PCZGuxmr917E7M,265
363
363
  meutils/apis/hailuoai/upload.py,sha256=22S6W6hGQhUquVKqh7QCkXb6KHDl3iMKKi6Z0AJdFEI,6501
364
- meutils/apis/hailuoai/videos.py,sha256=hoVSbEjHfp2PIFxKL2n5Yy56DIhNkCrE3iKay8Yk3_E,20915
364
+ meutils/apis/hailuoai/videos.py,sha256=98JGBHSh1eL3tTzOIKdCRC4_oHQW74By2S8kGn3QPdY,21195
365
365
  meutils/apis/hailuoai/yy.py,sha256=du4CmLx5ebAI5FXe8NzQsmwpdA1_Kdxm7hgo5k9Zf-A,9016
366
366
  meutils/apis/hf/__init__.py,sha256=ZZoRl8yNYekoMhE__67XXBKNSYJaLgjtaa0netjJKUU,271
367
367
  meutils/apis/hf/got_ocr.py,sha256=pZURFpryDh_Ak6PNiARztOzYgkjVrfScJ5-0XzMBrzI,1776
@@ -393,11 +393,11 @@ meutils/apis/jiema/24mail.py,sha256=GUszRtoDe3T9q-X4embwT5YhcjgQ3XnkTJMKX93sCF4,
393
393
  meutils/apis/jiema/__init__.py,sha256=YBybggoDRYCNYcwJOypxR7MzfTjIhqO7BkGlTt7NDo4,271
394
394
  meutils/apis/jiema/yezi.py,sha256=26vhnA3lC5049Rqx-CHO-wyGKbdZAfvjEOG90W38cr0,3675
395
395
  meutils/apis/jimeng/__init__.py,sha256=a8CE_cOl9jqal0hycwaLm4Mnga8jmZlz9nCze_9bBqA,272
396
- meutils/apis/jimeng/common.py,sha256=dJcex3hh1eyLwSJwlfeHlaTal9_h5ERvOTb2PSrF96I,6763
396
+ meutils/apis/jimeng/common.py,sha256=vlNbB5YAylMrL-Lq_04JNy-XQxwU2m3vC-R4B3pDX4U,6810
397
397
  meutils/apis/jimeng/doubao.py,sha256=5OdnBpmZQOCLIb6lnN8YrL7J7E0XF47q0UF-z6asSuI,4295
398
398
  meutils/apis/jimeng/doubao_utils.py,sha256=XCHnvwfCOtJmPQuzDOCfKDMP_Pcqh-Y4w2h5f7Y2gzM,5999
399
399
  meutils/apis/jimeng/files.py,sha256=E-pPmi6fIP_n6wgfiDbqeWsIfrXVZUe7LpA6Wds1xDI,11047
400
- meutils/apis/jimeng/images.py,sha256=ntGcXQvgdh9KuhYtcVGvlPY36wRUh7TR3fpU45j1VRc,13034
400
+ meutils/apis/jimeng/images.py,sha256=84Dte9cf-QBduMUgdXC82F91slAZVIlOkNFtaTJ83ac,13211
401
401
  meutils/apis/jimeng/videos.py,sha256=x-PDOYNBN-yTmNvMbyDbwm_E2LXZ6A4hcVzEahV_Hvc,10813
402
402
  meutils/apis/kling/__init__.py,sha256=pKz40SEjui1dhHBD-icyNTJOYhzLvxLxJCwszuH4vio,271
403
403
  meutils/apis/kling/api.py,sha256=8NEWunWX3pVWhZzDnzw6rd07nPfOuY2T-XkgL86ZWYg,2328
@@ -498,11 +498,8 @@ meutils/async_utils/background.py,sha256=dl6UaMIFBZDB1uxSZzGFJdSnpt3Xo0flK7gwsok
498
498
  meutils/async_utils/common.py,sha256=bfZkUlQz21WHAh2W7SDxFtrvUYNBnRfVxIUgMmT7o1Q,5212
499
499
  meutils/async_utils/test.py,sha256=lkZdgSzzgVg8hYVcaBNEJ3KBvFTEfjbXZVvtknQZsRQ,1155
500
500
  meutils/caches/__init__.py,sha256=hIUEqNnmhukkbKK2F39bXe-MGDwzeUoTOf_sYly53xo,291
501
- meutils/caches/acache.py,sha256=sNpnX89oDjrB14CVusddJWxo2Jp5GB4h2lVSkJvXBv8,2791
502
- meutils/caches/c.py,sha256=9hm9x_xMRGtqG51SirOS3Pzi2L9zxU_nov4muE5iJ48,699
501
+ meutils/caches/acache.py,sha256=ajuQkQUt4ojGEMUNO0IGpJTZKL3tWK0F4pBZU2uxl6g,3198
503
502
  meutils/caches/common.py,sha256=_shMi_U99g5vzfg9SAmUQHVE2IgWyiNATiSBBsDKGHI,1743
504
- meutils/caches/demo.py,sha256=tY3mJUe4D2gbBVMd8gny40nK2BwqBGsaWDjDJsL7ObE,758
505
- meutils/caches/redis_.py,sha256=5Oxq_XT5BJ7C9emzsXWDkiY4p8dVG7XFn0WxB14-z5E,600
506
503
  meutils/caches/redis_cache.py,sha256=oXGk_CZhjp9P_z1TG_zhmma4iGepK-iIWY_ZYQWSkFg,1395
507
504
  meutils/caches/redis_mulit.py,sha256=WQrNmH98S0D9mG5eixqPtrYvOPi62T4w2ZvNETB4eU4,597
508
505
  meutils/clis/__init__.py,sha256=2Fhn43X8kFP6FpAnnAMiPcdnjUwQaukiIr2uGB6mGAY,279
@@ -530,7 +527,7 @@ meutils/config_utils/lark_utils/demo.py,sha256=3g0Fs7oLaeW75T60gYWMLgyNg1OnfOjfH
530
527
  meutils/config_utils/lark_utils/x.py,sha256=MlMQGhehP9xMEgetxVCX68XFaosfKoW1JA5cZ3JqN2w,1857
531
528
  meutils/crawlers/__init__.py,sha256=TBU4xA-IOsHV-0yIkW7YXxn_QT7TT8NncqxO7IykEfs,271
532
529
  meutils/data/SimHei.ttf,sha256=-XEnekS5yHP_URkT4XBI2w22ylV-KxudhkeIYFbrILA,10062565
533
- meutils/data/VERSION,sha256=Y3w-YpvEyc9Uj2fdHdypgmnZIVaD56sRSluqFvoNrGA,19
530
+ meutils/data/VERSION,sha256=gvMaT5MaUqFzPLIuAj4fFtRKp8q9SVrRZa7KdzFCTP0,19
534
531
  meutils/data/_FLAG,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
535
532
  meutils/data/_SUCCESS,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
536
533
  meutils/data/__init__.py,sha256=Hfwkkxs4zHqKhxht0YrhS566a9P5axtmgNvM5wF8ceQ,243
@@ -618,10 +615,10 @@ meutils/llm/demo.py,sha256=gyGjTxuNFMOa1X4CXaChkq0lcjbKiRsnSRhkeMvsoQk,3822
618
615
  meutils/llm/mappers.py,sha256=ZQLl3OuD06kVMP8bwIpVgAB1UVzMJWUJiZ3vgk-ZjeI,303
619
616
  meutils/llm/utils.py,sha256=4u3b8VO3wX3xKny1AdV4579qXux1YA4k5gI-CYPtx0o,4279
620
617
  meutils/llm/x.py,sha256=ETvKKDTmDNrik0K2-_a_SEQxyV4X4-fy0JPrAOLNPv4,1732
621
- meutils/llm/completions/__init__.py,sha256=Z9b0uVj0DuprlPVvLqb-jYf5hk7C1rD-c3fMIQHxVEY,271
618
+ meutils/llm/completions/__init__.py,sha256=q5FEYPpo2f_P44Ghdh9fkrmqZLX2Asso8p-nf-ZTqks,244
622
619
  meutils/llm/completions/chat_gemini.py,sha256=tAbWcNmcZUqvpS9ZCLuljTKYE0nNRSIMxo4VqssVAIA,1784
623
620
  meutils/llm/completions/chat_plus.py,sha256=g5I8WRX7NC4hIyAUqHExs8a9pwDOUdejanf1F2PUAxc,2207
624
- meutils/llm/completions/chat_spark.py,sha256=HwVAIzpfTLwxPgO0U6WfhmpKEAKV_nofyG7A1003JMo,5680
621
+ meutils/llm/completions/chat_spark.py,sha256=MBo4IlkEA9NhIyXYG6F0vbJkpQbO-awM1lHTWwM6M7E,9768
625
622
  meutils/llm/completions/cp.py,sha256=tGf3umHKXDH0KuTfN7BLr8yAvN6MYWLYR5UVaJkJs0c,4172
626
623
  meutils/llm/completions/delilegal.py,sha256=mr53ps7I33SC8Fjy4rma-xoNF-mLgwdZfHgdSOyLtQY,5131
627
624
  meutils/llm/completions/dify.py,sha256=dqL_8uxAp2d8M00pkyh2I30tflwi4pUyX-V6pwe3_BA,3048
@@ -768,7 +765,7 @@ meutils/schemas/metaso_types.py,sha256=r_X0Exs_2S3rNS71RneemMpz7EvBIOLBfAMmWMQRn
768
765
  meutils/schemas/napkin_types.py,sha256=Kp0MbpRxzMBz4HWW4DrfcgOvHZVEF3N7P5yNeC1XGI4,2664
769
766
  meutils/schemas/ocr_types.py,sha256=fZWYQAKii7HaTlSU9DS0wHyiEoOHuLnhvgoiH4Cn498,1381
770
767
  meutils/schemas/openai_api_protocol.py,sha256=0GhmhUTEr54N_XCVuZI1MSxJldvwMNJjUAAAdWznw58,12716
771
- meutils/schemas/openai_types.py,sha256=5E3Bst59AAdZKveHHMcAjwUqKAmwEZw4-oauwYnJFzs,16616
768
+ meutils/schemas/openai_types.py,sha256=TIUF1fYu3oMOeilPN7uQRcLdNsCIHhbfKAh1T2CHN4E,19996
772
769
  meutils/schemas/pixverse_types.py,sha256=3mHg2KxvszV1U8K3GdzsODZz4uocLVRjEeJgYhX0Xmw,2347
773
770
  meutils/schemas/playwright_types.py,sha256=zhZd53m1Wg4zlGtq2JM4z7Aon-u_eF6rzs-_TFYWvkU,1177
774
771
  meutils/schemas/prodia_types.py,sha256=knh_lzAxMfWMoqAPmvyMweay9PmQmsoQ1X6Mj17ohWg,476
@@ -790,7 +787,7 @@ meutils/schemas/db/__init__.py,sha256=m1maURVoM6dIW0yt6ELZrZTzULtkHybVOSXtHNJRVI
790
787
  meutils/schemas/db/oneapi_types.py,sha256=YanT0q9pU7dva2ZBPWjCpwGNUuifnJh0zUJJCQ9070c,3848
791
788
  meutils/schemas/oneapi/__init__.py,sha256=uevbi3QAvFzN9WPbx9bYKTDyKt7P2ueZO6W0nSiD0sk,289
792
789
  meutils/schemas/oneapi/_types.py,sha256=ClvAaNy3SahEN8lL8KEErHTD6HANelXUeKc_3iLfosQ,1488
793
- meutils/schemas/oneapi/common.py,sha256=ryEhnFjHUlnGJnjHPbp2P66R7jhDwmDuLa_JOPo5BDg,31140
790
+ meutils/schemas/oneapi/common.py,sha256=BDuvwo1uJjntTknxCvvwYgRRART2tQLDT6Ll_u0Mzgk,31188
794
791
  meutils/schemas/oneapi/icons.py,sha256=T7W5gInBJoHe62wzMimbG_UI-wn3_-rmQ1O4O2z-CQY,1089
795
792
  meutils/schemas/oneapi/model_group_info.py,sha256=rGtflYJuFIjk5MsVEvK9JUR4IciX8jfErqeLqf8DIlQ,1586
796
793
  meutils/schemas/oneapi/model_info.py,sha256=_uwKEPIIqm7ZYfhmpxtXB2QNsS83SpJY-OaBzvogC9w,772
@@ -919,9 +916,9 @@ meutils/tools/seize.py,sha256=nOKAS63w-Lbi48I0m2MPhdsokUTwxco0laPxYVmW4Mw,1064
919
916
  meutils/tools/service_monitor.py,sha256=ibsLtBN2g2DL7ZnLJ8vhiZOiOcqTAyx711djDdBK-3M,1255
920
917
  meutils/tools/sys_monitor.py,sha256=6MoyzrItqDUOSjfHcMJmMofQkEPTW36CT_aKui0rg84,429
921
918
  meutils/tools/token_monitor.py,sha256=Np-YK-R4P4IPAXyZvMxwvXI4sFmNJQAQK1lSegNaYpA,997
922
- MeUtils-2025.3.7.22.46.32.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
923
- MeUtils-2025.3.7.22.46.32.dist-info/METADATA,sha256=8WSzySIQFHqgcETMsJwYXblzuyRVqsh3DvnyV3ZlkkA,32833
924
- MeUtils-2025.3.7.22.46.32.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
925
- MeUtils-2025.3.7.22.46.32.dist-info/entry_points.txt,sha256=lufZlBHRqqZKdY-ZQJ4CSZb0qhV5hQC37egZna9M7ug,357
926
- MeUtils-2025.3.7.22.46.32.dist-info/top_level.txt,sha256=cInfxMmkgNOskurdjwP5unau4rA7Uw48nu07tYhS7KY,22
927
- MeUtils-2025.3.7.22.46.32.dist-info/RECORD,,
919
+ MeUtils-2025.3.13.19.7.25.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
920
+ MeUtils-2025.3.13.19.7.25.dist-info/METADATA,sha256=TWL4tG_hKS1nKv2xQRh_VxmD9RAgk-hpG5C-H2jhygY,32833
921
+ MeUtils-2025.3.13.19.7.25.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
922
+ MeUtils-2025.3.13.19.7.25.dist-info/entry_points.txt,sha256=lufZlBHRqqZKdY-ZQJ4CSZb0qhV5hQC37egZna9M7ug,357
923
+ MeUtils-2025.3.13.19.7.25.dist-info/top_level.txt,sha256=cInfxMmkgNOskurdjwP5unau4rA7Uw48nu07tYhS7KY,22
924
+ MeUtils-2025.3.13.19.7.25.dist-info/RECORD,,
@@ -12,9 +12,28 @@ from meutils.pipe import *
12
12
 
13
13
  # base_url = "https://openai-dev.chatfire.cn/audio/v1"
14
14
 
15
+ # model = "FunAudioLLM/CosyVoice2-0.5B"
16
+ # voice = "FunAudioLLM/CosyVoice2-0.5B:alex"
15
17
 
18
+ text = """
19
+ 东北证券公司的精神
20
+ 融合 创新 专注 至简
21
+
22
+ “融合”:融入市场、融通资源、融合发展
23
+
24
+ “创新”:勇于突破、追求卓越、超越自我
25
+
26
+ “专注”:专一专业、忠诚敬业、重德守律、做到极致
27
+
28
+ “至简”:简约简朴、脚踏实地、知行合一
29
+ """
16
30
  r = OpenAI(
17
31
  # base_url=base_url
18
- ).audio.speech.create(input="你好呀", model='tts-1', voice="alloy")
32
+ ).audio.speech.create(input=text,
33
+ model='tts-1',
34
+ # model=model,
35
+ # voice="1"
36
+ voice="alloy"
37
+ )
19
38
 
20
- r.stream_to_file('xx.mp3')
39
+ r.stream_to_file('nesc.mp3')
@@ -196,7 +196,7 @@ with timer('image'):
196
196
  response = client.images.generate(
197
197
  model=model,
198
198
  prompt=prompt,
199
- response_format="b64_json",
199
+ # response_format="b64_json",
200
200
  # extra_body={
201
201
  # "Style": "True",
202
202
  # "controls": {}, ######### 这个看起来更通用些
@@ -143,9 +143,9 @@ if __name__ == '__main__':
143
143
  }
144
144
 
145
145
  # model = "fal-ai/flux-pro/v1.1" # 0.04
146
- # model = "fal-ai/flux-pro/v1.1-ultra"# 0.06
146
+ model = "fal-ai/flux-pro/v1.1-ultra"# 0.06
147
147
  # model = "fal-ai/flux/dev/image-to-image" # 0.03 图生图
148
- model = "fal-ai/recraft-v3" # 0.04 变清晰
148
+ # model = "fal-ai/recraft-v3" # 0.04 变清晰
149
149
  # model = "fal-ai/ideogram/v2" # 0.08
150
150
  # model = "fal-ai/ideogram/v2/turbo" # 0.05
151
151
  # model = "fal-ai/flux/schnell"
@@ -38,7 +38,7 @@ send_message = partial(
38
38
  MODEL_MAPPING = {
39
39
  # video-01 video-01 video-01-live2d S2V-01
40
40
 
41
- "t2v-01": "23000", # 23010
41
+ "t2v-01": "23000", # 23010
42
42
  "t2v-01-director": "23010",
43
43
 
44
44
  "i2v-01": "23001",
@@ -318,7 +318,6 @@ async def create_task(request: VideoRequest, token: Optional[str] = None):
318
318
 
319
319
  # 307134660730421250
320
320
  async def get_task(task_id: str, token: str):
321
-
322
321
  task_id = task_id.rsplit('-', 1)[-1]
323
322
 
324
323
  params = {
@@ -421,6 +420,7 @@ if __name__ == '__main__': # 304752356930580482
421
420
  # arun(get_task(task_id="307177115102699528", token=token))
422
421
 
423
422
  token = None
423
+ token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NDQ3MDMwNzIsInVzZXIiOnsiaWQiOiIzMDI4MzM4Njc3NzE5NDkwNTgiLCJuYW1lIjoibWUgYmV0dGVyIiwiYXZhdGFyIjoiIiwiZGV2aWNlSUQiOiIzMDI4MzM3NTk1MTI3NjQ0MTciLCJpc0Fub255bW91cyI6ZmFsc2V9fQ.Mjb64ZjkKyV9pj-_bXyLczU6kU729VLaKbYj9NmrK-4"
424
424
  # token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MzUxMTcwNzcsInVzZXIiOnsiaWQiOiIzMTEyOTUzMTkzMjc1NzYwNjQiLCJuYW1lIjoiVUdIUiBKVkJYIiwiYXZhdGFyIjoiaHR0cHM6Ly9saDMuZ29vZ2xldXNlcmNvbnRlbnQuY29tL2EvQUNnOG9jS3RuR2NjdGZsWV9fR2tiQ1MzdnhzSXdWSEFUX0ZmMFdyb3RvMnN4bFdWZW1KMm53PXM5Ni1jIiwiZGV2aWNlSUQiOiIzMTMzMTU5NTMxMDA0MTA4ODciLCJpc0Fub255bW91cyI6ZmFsc2V9fQ.KsRcfnAoPAR08ygzq-GIiujkFbZ2CgLeww7EP9qcb9Q"
425
425
  request = VideoRequest(
426
426
  model="I2V-01-live",
@@ -432,7 +432,7 @@ if __name__ == '__main__': # 304752356930580482
432
432
  )
433
433
 
434
434
  r = arun(create_task(request, token=token))
435
- arun(get_task(task_id=r.task_id, token=r.system_fingerprint))
435
+ # arun(get_task(task_id=r.task_id, token=r.system_fingerprint))
436
436
  #
437
437
  #
438
438
  # data = {
@@ -179,6 +179,7 @@ if __name__ == '__main__':
179
179
  token = "1c21a9fe6a4230609d7ff13e5cec41ec"
180
180
  token = "34438eb03d165737122180caf62a8058"
181
181
  token = "ffeee346fbd19eceebb79a7bfbca4bfe"
182
+ token = "b8bb4cb67dba6c0d1048bdc0596bc461"
182
183
  arun(check_token(token))
183
184
 
184
185
  # print(arun(aget_spreadsheet_values(feishu_url=FEISHU_URL, to_dataframe=True))[0].tolist())
@@ -191,9 +191,9 @@ async def create_draft_content(request: ImageRequest, token: str):
191
191
  return draft_content
192
192
 
193
193
 
194
- @retrying(max_retries=3)
195
- @rcache(ttl=24 * 3600, serializer="pickle")
196
- async def create_task(request: ImageRequest, token: Optional[str] = None):
194
+ @retrying()
195
+ @rcache(ttl=30 * 24 * 3600, serializer="pickle", key_builder=lambda *args, **kwargs: args[1].prompt)
196
+ async def create_task(request: ImageRequest, token: Optional[str] = None): # todo: 图片
197
197
  token = token or await get_next_token_for_polling(FEISHU_URL, check_token)
198
198
 
199
199
  url = "/mweb/v1/aigc_draft/generate"
@@ -228,7 +228,6 @@ async def create_task(request: ImageRequest, token: Optional[str] = None):
228
228
  logger.debug(bjson(data))
229
229
 
230
230
  if task_id := (data.get("data") or {}).get("aigc_data", {}).get("history_record_id"): # bug
231
-
232
231
  return TaskResponse(task_id=task_id, system_fingerprint=token)
233
232
  else:
234
233
 
@@ -355,29 +354,29 @@ if __name__ == '__main__':
355
354
 
356
355
  from meutils.apis.jimeng.files import face_recognize
357
356
 
358
- face_recognize = arun(face_recognize(image_url, token))
359
-
360
- face_recognize_data = face_recognize.get("data", {})
361
-
357
+ # face_recognize = arun(face_recognize(image_url, token))
358
+ #
359
+ # face_recognize_data = face_recognize.get("data", {})
362
360
 
363
361
  data = {
364
362
  "model": "seededit",
365
- # "prompt": "https://oss.ffire.cc/files/kling_watermark.png 让这个女人带上墨镜,衣服换个颜色",
363
+ "prompt": "https://oss.ffire.cc/files/kling_watermark.png 让这个女人带上墨镜,衣服换个颜色把",
366
364
  # "prompt": "草拟吗 艹",
367
- "prompt": "让这个女人带上墨镜,衣服换个颜色",
365
+ # "prompt": "让这个女人带上墨镜,衣服换个颜色",
366
+ # "prompt": "Add a background for this photo, sort of sizzle it.",
368
367
 
369
368
  "size": "1024x1024",
370
369
 
371
- "controls": {
372
- "face_recognize_data": face_recognize_data
373
- }
370
+ # "controls": {
371
+ # "face_recognize_data": face_recognize_data
372
+ # }
374
373
  }
375
- arun(generate(ImageRequest(**data)))
374
+ # arun(generate(ImageRequest(**data)))
376
375
 
377
376
  # arun(generate(ImageRequest(prompt="fuck you")))
378
377
  # prompt = "A plump Chinese beauty wearing a wedding dress revealing her skirt and underwear is swinging on the swing,Happy smile,cleavage,Exposed thighs,Spread your legs open,Extend your leg,panties,upskirt,Barefoot,sole"
379
378
  # request = ImageRequest(prompt=prompt)
380
- # task = arun(create_task(request))
379
+ task = arun(create_task(ImageRequest(**data), token=token))
381
380
 
382
381
  # arun(get_task(task.task_id, task.system_fingerprint))
383
382
 
meutils/caches/acache.py CHANGED
@@ -12,12 +12,11 @@ import os
12
12
  from meutils.pipe import *
13
13
  from meutils.db.redis_db import async_pool
14
14
 
15
- from aiocache import cached
16
-
17
15
  from aiocache import cached, Cache, RedisCache, caches
18
16
  from aiocache import multi_cached
17
+ from meutils.schemas.image_types import ImageRequest
19
18
 
20
- logger.debug(async_pool.connection_kwargs)
19
+ # logger.debug(async_pool.connection_kwargs)
21
20
 
22
21
  REDIS_URL = "redis://:chatfirechatfire@110.42.51.143:6379"
23
22
 
@@ -54,9 +53,21 @@ async def cached_fc(user_id, **kwargs):
54
53
  return False
55
54
 
56
55
 
57
- @rcache(ttl=3)
58
- async def redis_fc(user_id, **kwargs):
56
+ # global x
57
+ #
58
+ # key_builder = lambda *args, **kwargs: "key"
59
+ # key_builder = lambda *args, **kwargs: args[0].prompt
60
+ key_builder = lambda *args, **kwargs: args[1].prompt
61
+
62
+ def key_builder(*args, **kwargs):
63
+ # print(args)
64
+ return args[1].prompt
65
+
66
+
67
+ @rcache(ttl=11, key_builder=key_builder)
68
+ async def redis_fcc(user_id, **kwargs):
59
69
  logger.debug(user_id)
70
+ # 1 / 0
60
71
  return False
61
72
 
62
73
 
@@ -107,11 +118,14 @@ async def expensive_operation():
107
118
 
108
119
  if __name__ == '__main__':
109
120
 
121
+ from aiocache import cached, Cache, RedisCache, caches
122
+
123
+
110
124
  async def main():
111
125
  for i in range(10):
112
- logger.debug(i)
126
+ # logger.debug(i)
113
127
 
114
- await redis_fc(A())
128
+ await redis_fcc(ImageRequest(prompt=f'a cat {i}'))
115
129
  await asyncio.sleep(1)
116
130
 
117
131
 
meutils/data/VERSION CHANGED
@@ -1 +1 @@
1
- 2025.03.07.22.46.32
1
+ 2025.03.13.19.07.25
@@ -8,4 +8,3 @@
8
8
  # @Software : PyCharm
9
9
  # @Description :
10
10
 
11
- from meutils.pipe import *
@@ -18,6 +18,7 @@ todo: 记录上下文日志
18
18
 
19
19
  from meutils.pipe import *
20
20
  from meutils.io.openai_files import file_extract
21
+ from meutils.str_utils.json_utils import json_path
21
22
 
22
23
  from meutils.llm.clients import AsyncOpenAI
23
24
  from meutils.llm.openai_utils import to_openai_params
@@ -31,37 +32,52 @@ class Completions(object):
31
32
  self.api_key = api_key
32
33
 
33
34
  async def create(self, request: CompletionRequest):
34
-
35
- if image_urls := request.last_urls.get("image_url"):
36
- request.model = "doubao-1.5-vision-pro-32k" # 6月过期
35
+ if request.last_user_content.startswith("http"): # 文件问答-单轮
36
+ file_url, content = request.last_user_content.split(maxsplit=1)
37
+ file_content = await file_extract(file_url)
37
38
 
38
39
  request.messages = [
39
40
  {
40
41
  'role': 'user',
41
- "content": [
42
- {"type": "text", "text": request.last_user_content},
43
- {"type": "image_url", "image_url": {"url": image_urls[-1]}}
44
- ]
42
+ 'content': f"""{json.dumps(file_content, ensure_ascii=False)}\n\n{content}"""
45
43
  }
46
44
  ]
47
- else:
48
- for i, message in enumerate(request.messages[::-1], 1):
49
- if message.get("role") == "user": # 每一轮还要处理
50
- content = message.get("content")
45
+ elif image_urls := request.last_urls.get("image_url"): # 长度为1
46
+ url = image_urls[0]
47
+
48
+ if url.endswith(('.jpg', '.jpeg', '.png', '.gif', '.bmp')): # 图片问答
49
+
50
+ request.model = "doubao-1.5-vision-pro-32k" # 6月过期
51
+ for i, message in enumerate(request.messages):
52
+ if message.get("role") == "user":
53
+ user_contents = message.get("content")
54
+ if isinstance(user_contents, list):
55
+ for i, content in enumerate(user_contents):
56
+ content_type = content.get("type")
57
+
58
+ if content_type == "image_url":
59
+ image_url = content.get("image_url", "")
60
+
61
+ user_contents[i] = {"type": "image_url", "image_url": {"url": image_url}}
62
+
63
+ else: # 文件问答-多轮
64
+ for i, message in enumerate(request.messages[::-1], 1):
65
+ if message.get("role") == "user":
66
+ texts = json_path(message, expr='$..text') or [""]
67
+ file_urls = json_path(message, expr='$..image_url') or [""]
51
68
 
52
- if content.startswith("http"):
53
- file_url, content = content.split(maxsplit=1)
54
- file_content = await file_extract(file_url)
69
+ # logger.debug(f"""{texts} \n\n {file_urls}""")
55
70
 
56
- request.messages[-i] = {
57
- 'role': 'user',
58
- 'content': f"""{json.dumps(file_content, ensure_ascii=False)}\n\n
59
- {content}
60
- """
61
- }
62
- break
71
+ text, file_url = texts[-1], file_urls[-1]
72
+ if file_url in image_urls:
73
+ file_content = await file_extract(file_url)
63
74
 
64
- logger.debug(request)
75
+ message["content"] = f"""{json.dumps(file_content, ensure_ascii=False)}\n\n{text}"""
76
+
77
+ request.messages = request.messages[-i:]
78
+ break # 截断:从最新的文件开始
79
+
80
+ logger.debug(request.model_dump_json(indent=4))
65
81
 
66
82
  data = to_openai_params(request)
67
83
  return await AsyncOpenAI(api_key=self.api_key).chat.completions.create(**data)
@@ -100,36 +116,125 @@ if __name__ == '__main__':
100
116
  # ]
101
117
  # },
102
118
 
119
+ # {
120
+ # 'role': 'user',
121
+ # # "content": '你好',
122
+ # "content": [
123
+ # {"type": "text", "text": "描述第一张图片"},
124
+ #
125
+ # {"type": "image_url", "image_url": "https://oss.ffire.cc/files/kling_watermark.png"},
126
+ # # {"type": "image_url", "image_url": "https://oss.ffire.cc/files/nsfw.jpg"}
127
+ #
128
+ # ],
129
+ #
130
+ # # 'content': {
131
+ # # "type": "file_url",
132
+ # # "file_url": {"url": "https://mj101-1317487292.cos.ap-shanghai.myqcloud.com/ai/test.pdf", "detai": "auto"}
133
+ # # },
134
+ # # 'content': "https://oss.ffire.cc/files/%E6%8B%9B%E6%A0%87%E6%96%87%E4%BB%B6%E5%A4%87%E6%A1%88%E8%A1%A8%EF%BC%88%E7%AC%AC%E4%BA%8C%E6%AC%A1%EF%BC%89.pdf 这个文件讲了什么?",
135
+ # # 'content': "https://translate.google.com/?sl=zh-CN&tl=en&text=%E6%8F%90%E4%BE%9B%E6%96%B9&op=tr1anslate 这个文件讲了什么?",
136
+ #
137
+ # # "content": "https://oss.ffire.cc/files/百炼系列手机产品介绍.docx 总结下"
138
+ # # "content": "https://mj101-1317487292.cos.ap-shanghai.myqcloud.com/ai/test.pdf\n\n总结下"
139
+ #
140
+ # # "content": "https://admin.ilovechatgpt.top/file/lunIMYAIzhinengzhushouduishenghuodocx_14905733.docx 总结"
141
+ #
142
+ # },
143
+ #
144
+ # {'role': 'assistant', 'content': "好的"},
145
+ #
146
+ # {
147
+ # 'role': 'user',
148
+ # # "content": '描述第一张图片',
149
+ # "content": [
150
+ # {"type": "text", "text": "描述第一张图片"},
151
+ #
152
+ # {"type": "image_url", "image_url": "https://oss.ffire.cc/files/nsfw.jpg"}
153
+ #
154
+ # ],
155
+ #
156
+ # },
103
157
  {
104
158
  'role': 'user',
105
- # "content": '你好',
106
- # "content": [
107
- # {"type": "text", "text": "描述"},
108
- #
109
- # {"type": "image_url", "image_url": "https://oss.ffire.cc/files/kling_watermark.png"}
110
- # ],
159
+ 'content': [
160
+ {
161
+ "type": "text",
162
+ "text": "总结下"
163
+ },
111
164
 
112
- # 'content': {
113
- # "type": "file_url",
114
- # "file_url": {"url": "https://mj101-1317487292.cos.ap-shanghai.myqcloud.com/ai/test.pdf", "detai": "auto"}
115
- # },
116
- # 'content': "https://oss.ffire.cc/files/%E6%8B%9B%E6%A0%87%E6%96%87%E4%BB%B6%E5%A4%87%E6%A1%88%E8%A1%A8%EF%BC%88%E7%AC%AC%E4%BA%8C%E6%AC%A1%EF%BC%89.pdf 这个文件讲了什么?",
117
- # 'content': "https://translate.google.com/?sl=zh-CN&tl=en&text=%E6%8F%90%E4%BE%9B%E6%96%B9&op=tr1anslate 这个文件讲了什么?",
118
-
119
- "content": "https://oss.ffire.cc/files/百炼系列手机产品介绍.docx 总结下"
120
- # "content": "https://mj101-1317487292.cos.ap-shanghai.myqcloud.com/ai/test.pdf\n\n总结下"
165
+ {
166
+ "type": "image_url",
167
+ "image_url": "xx"
168
+ }
169
+ ]
170
+ },
171
+ {
172
+ 'role': 'user',
173
+ 'content': [
174
+ {
175
+ "type": "text",
176
+ "text": "总结下"
177
+ },
121
178
 
122
- # "content": "https://admin.ilovechatgpt.top/file/lunIMYAIzhinengzhushouduishenghuodocx_14905733.docx 总结"
179
+ {
180
+ "type": "image_url",
181
+ "image_url": "https://oss.ffire.cc/files/招标文件备案表(第二次).pdf"
182
+ }
183
+ ]
184
+ },
185
+ {
186
+ 'role': 'user',
187
+ 'content': [
188
+ {
189
+ "type": "text",
190
+ "text": "总结下"
191
+ },
123
192
 
193
+ {
194
+ "type": "image_url",
195
+ "image_url": "https://oss.ffire.cc/files/招标文件备案表(第二次).pdf"
196
+ }
197
+ ]
198
+ },
199
+ {
200
+ 'role': 'assistant',
201
+ 'content': "你好"
124
202
  },
203
+ {
204
+ 'role': 'user',
205
+ 'content': [
206
+ {
207
+ "type": "text",
208
+ "text": "总结下"
209
+ },
125
210
 
126
- # {'role': 'assistant', 'content': "好的"},
127
- # {
128
- # 'role': 'user',
129
- # # 'content': {
130
- # # "type": "file_url",
131
- # # "file_url": {"url": "https://oss.ffire.cc/files/招标文件备案表(第二次).pdf", "detai": "auto"}
132
- # # },
211
+ {
212
+ "type": "image_url",
213
+ "image_url": "https://oss.ffire.cc/files/招标文件备案表(第二次).pdf"
214
+ }
215
+ ]
216
+ },
217
+ {
218
+ 'role': 'assistant',
219
+ 'content': "1"
220
+ },
221
+ {
222
+ 'role': 'user',
223
+ 'content': [
224
+ {
225
+ "type": "text",
226
+ "text": "总结1"
227
+ }
228
+ ]
229
+ },
230
+ {
231
+ 'role': 'assistant',
232
+ 'content': "2"
233
+ },
234
+ {
235
+ 'role': 'user',
236
+ 'content': "总结2"
237
+ },
133
238
  # 'content': [
134
239
  # {
135
240
  # "type": "text",
@@ -145,4 +250,13 @@ if __name__ == '__main__':
145
250
 
146
251
  )
147
252
 
253
+ # [{'role': 'system',
254
+ # 'content': 'undefined\n Current date: 2025-03-13'},
255
+ # {'role': 'user',
256
+ # 'content': [{'type': 'text', 'text': '解读'},
257
+ # {'type': 'image_url',
258
+ # 'image_url': 'https://ai.chatfire.cn/files/images/xx-1741850404348-339a12ba3.png'}]},
259
+ # {},
260
+ # {'role': 'user', 'content': '总结一下'}]
261
+
148
262
  arun(c.create(request))
@@ -405,13 +405,13 @@ MODEL_RATIO = {
405
405
  # 阿里千问 https://dashscope.console.aliyun.com/billing
406
406
  "qwen-long": 0.25,
407
407
  "qwen-turbo": 0.05,
408
- "qwen-plus": 0.4 * 2,
409
- "qwen-max": 1.2 * 2,
408
+ "qwen-plus": 0.4 * 1,
409
+ "qwen-max": 1.2 * 1,
410
410
  "qwen-max-longcontext": 20,
411
411
  "qwen-turbo-2024-11-01": 0.15,
412
- "qwen-max-latest": 1.2 * 2,
413
- "qwen2.5-max": 1.2 * 2,
414
- "qwen-max-2025-01-25": 1.2 * 2,
412
+ "qwen-max-latest": 1.2 * 1,
413
+ "qwen2.5-max": 1.2 * 1,
414
+ "qwen-max-2025-01-25": 1.2 * 1,
415
415
 
416
416
  "qwen-vl-max-latest": 1.5,
417
417
  "qwen-vl-plus-latest": 0.75,
@@ -690,6 +690,7 @@ MODEL_RATIO = {
690
690
  "gpt-4o-realtime-preview-2024-10-01": 2.5,
691
691
  "gpt-4o-audio-preview": 2.5 / 2,
692
692
  "gpt-4o-mini-audio-preview": 0.15 / 2,
693
+ "gpt-4o-audio-preview-2024-12-17": 2.5 / 2,
693
694
 
694
695
  "gpt-4o": 1.25,
695
696
  "gpt-4o-all": 2.5, # 逆向