MeUtils 2025.4.20.23.17.29__py3-none-any.whl → 2025.4.23.16.0.20__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.
@@ -5,7 +5,7 @@ examples/__init__.py,sha256=qcNIwrjAAGqLJP3F0YcEJftLpBSQoBMfnmDlNXsBSNI,250
5
5
  examples/args_demo.py,sha256=fPI_h8V2fxEpHin9WfJn6cRzitbbP5Pv6fVfFJkfUAg,1331
6
6
  examples/backgroundtasks.py,sha256=N6Z-uGZLa8ULr4FGomxP1tGifSTKIXq6vvtOJ7Ixw7U,632
7
7
  examples/best_table.py,sha256=qgq9VRtb9LQ0FvxV1opyRB9KN-od4PDMIqfT7JN_QXc,423
8
- examples/bserver.py,sha256=FkHQd79v34gDbb_c02lpnXUKbrH0TuFyxFKyRWmLCN8,2041
8
+ examples/bserver.py,sha256=CiyEQHayCZ18lDeHd4T5lTx0Tvny2VMh9Z29x7HJJxE,2811
9
9
  examples/chatgpt.py,sha256=QTQVMcV2X6FbJWgg2_OfcFMELLJIaV9oWu3nbknc6iI,1440
10
10
  examples/crontab_demo.py,sha256=GthbPsFmN6VwP3XLYYgLib56lFxfCp12H_Cu98l1vR0,1525
11
11
  examples/datamodel.py,sha256=8Hpz75mbyMUOo8RA1jJA12tGdoo_M8Owgb8zkqdfvic,1052
@@ -79,7 +79,7 @@ examples/_openaisdk/bpo.py,sha256=7Jw16TiKFEQvYbt4g-h7QimLBw7xY49w1MthT5OwcTM,52
79
79
  examples/_openaisdk/chat_latex.py,sha256=FzVSvmG988GRItUg1Uga-L3dZseZW76LCvngHqRedD8,2939
80
80
  examples/_openaisdk/chattts.py,sha256=MWQXUpXkpf1knGqsxevBOxX__1LXZr4v9FFhH98ADzM,3043
81
81
  examples/_openaisdk/copilot.py,sha256=lVjncr1HHibzwxOvchA9CwqxtGfhwPr1gZw664DdCb8,1208
82
- examples/_openaisdk/dalle3.py,sha256=3W12FOSxBdYz2TTW6GM_ZrY0dVpyaVDKrko2HazQUMI,1046
82
+ examples/_openaisdk/dalle3.py,sha256=dhZuJDfPkKgfIPhQBAGLcahpxJlwdSpEtiJj-_Hol18,1079
83
83
  examples/_openaisdk/deeplx.py,sha256=RIOMGTZ6McHyH7UCCD3nPMq6qFtHd6f-sXnapH1iGBM,772
84
84
  examples/_openaisdk/demo.py,sha256=3R8DmwR7BhY844hGLEuVqECm2N29gJmQzYGVNdvLlDc,1875
85
85
  examples/_openaisdk/embeddings.py,sha256=ZnktOqp2G_mCigN8K8wHrAhmTYql2PN3pKqaYMLbTW8,851
@@ -109,7 +109,7 @@ examples/_openaisdk/openai_ep.py,sha256=cAaeyC8Lstk1MB36c4h7X9n7EnEnY7rr2Tugo_di
109
109
  examples/_openaisdk/openai_files.py,sha256=zcF4k4sQ2FnINhq6x1wCKw1WCu93g1h69Yul_rLdakE,2058
110
110
  examples/_openaisdk/openai_gitee.py,sha256=UQEJMQMQDhgqYzo_aYetYXnBmVtqRwIweJDDK3NlSMw,1205
111
111
  examples/_openaisdk/openai_god.py,sha256=O8fbhyxiIlVR7pTvBTXgQ2QTwfcZ2MkEIyDe_jp797A,1056
112
- examples/_openaisdk/openai_google.py,sha256=UQDgtNbeuYaSbwGc1KTZiP6kTH4bYBCCg9sLhYI_Xwg,5092
112
+ examples/_openaisdk/openai_google.py,sha256=3YcTIZds6xCd1rQX1G0Ukub2bwFRJi2EWArkV6sThU8,5815
113
113
  examples/_openaisdk/openai_groq.py,sha256=_5Ue1yEx0Gp6theFioB_D8kepR0UlqMU96PVGH-LkVY,7363
114
114
  examples/_openaisdk/openai_images.py,sha256=_ceVlEhg8sSpsBqyMpaURqnBNdmQt-L7-UDb1N0IHmk,5980
115
115
  examples/_openaisdk/openai_jina.py,sha256=QeGRXMQmkJyg8Cz4Vfx4pP39a5TcO7pQQfPAPbBA8bs,1628
@@ -142,7 +142,7 @@ examples/_openaisdk/testDeepseek.py,sha256=TH_Lu0-oi2uqlEtXJ-VbPjdm1XkkF3vEFH3TC
142
142
  examples/_openaisdk/x.py,sha256=IdhHsmyd-uZx5UohfWa_g467kZeR1Pkec42z3bW-3Iw,4752
143
143
  examples/_openaisdk/xx.py,sha256=DvU98YbhmFJZ3xWqK4NOAafNqOJLu2ehQycCRLEXVUg,645
144
144
  examples/_openaisdk/zhipu_files.py,sha256=HLvlM9CDcmNER5w-MBMLQPZVPJjR2UHRXYA3ru2cT2Q,1057
145
- examples/_openaisdk/zhipu_智能体.py,sha256=hdC2cq6B37jTLCeefgGs6jQrOnNf56TnIXi18YeWCRQ,3546
145
+ examples/_openaisdk/zhipu_智能体.py,sha256=Nj7cZY-MRuf4TFT4zmr6K4ktNPAI6j28gyfLsrUfqR8,3867
146
146
  examples/_openaisdk/兜底测试.py,sha256=7vIOZDj-iB5dJjfJtHe_A-3D7ZUmOSiryI7ciIp0EzE,2878
147
147
  examples/_openaisdk/多模态测试.py,sha256=XNHvC9Qbw3tUZ_i8shyEx3a6T3FFDsTyIIkm3rO0R38,2559
148
148
  examples/_openaisdk/多模态测试_.py,sha256=7mh9dnpSApqmrriQ9-q4jY8uHfplsrjyGSXb8b-Zt9o,1276
@@ -347,6 +347,7 @@ meutils/apis/baidu/__init__.py,sha256=XPkz3DHrDdxCneaZct3y7MaX0Aw9IIseOYOn1YuVBI
347
347
  meutils/apis/baidu/bdaitpzs.py,sha256=juIuI_1wC7McNDzulps1SR21z3D4GL4sfHQeAHTc4Q0,12717
348
348
  meutils/apis/baidu/test.py,sha256=nb9ivelHIw84-d1V-MNGRpGoTpLFsNXPk-TTKpjwOfQ,2058
349
349
  meutils/apis/chatglm/__init__.py,sha256=uFuc9qY-ZjGqbsfcdGZkcEkhjATojWpzk2WXTTujc70,271
350
+ meutils/apis/chatglm/chat.py,sha256=VARWXh3A2PnoScBgvfgAJC2C8OfVy9vWs3Q-qKg6F8Q,4253
350
351
  meutils/apis/chatglm/glm_video.py,sha256=9LA9pyeIcDDHXGhJbZSJfjxrLeNC3SIuCKJwDIXRKR8,14015
351
352
  meutils/apis/chatglm/glm_video_api.py,sha256=fr4hizU-jEjCdXvd8VpYY0XthEJfLQCcyBYwyd9bQq0,3898
352
353
  meutils/apis/chatglm/images.py,sha256=k2EtOpksgAfJb2MD6kLOKKem713kamTIinRmgr8_3n0,1974
@@ -366,12 +367,13 @@ meutils/apis/gitee/images/__init__.py,sha256=zvS8e0ogQLqajZTAype1e0TDLJenlfbRQ16
366
367
  meutils/apis/gitee/images/kolors.py,sha256=IGpDtMiOOPgbE8ZOXFP9-Hh_XNCDkuvNYjKQbXq8Nik,3338
367
368
  meutils/apis/google/__init__.py,sha256=3pcpV81045y42FCTSdN99YGLCabwocR-f1_gjTSeFhE,243
368
369
  meutils/apis/google/audios.py,sha256=Su1V3TAOn8X94KgOrmpLRPnYETgTyDXqjDf4qQMkzAo,3289
369
- meutils/apis/google/chat.py,sha256=rMgfFFLNs89DgQgWLO6lH5KFqHv3nhRIEKjsuLF69OM,14516
370
+ meutils/apis/google/chat.py,sha256=vAgmgKDkHcclIIlFcHzKmjanfBEbbx5rllEG7Crn5lQ,15706
370
371
  meutils/apis/google/files.py,sha256=0J1sJT1HFmh-V77_eiSzSBcqcF-i7w08M0rzjSyIXO0,1015
371
- meutils/apis/google/gemini_sdk.py,sha256=oCKvsEFkETo2p14UW1QEtfO0vlK5AYBfoPsdjnad2pY,5165
372
+ meutils/apis/google/gemini_sdk.py,sha256=2cBRrNxrqls0qYPXl-ZXovZlinTcIyrXoRPmcQlVL8Q,5619
372
373
  meutils/apis/google/google2openai.py,sha256=JaRw4XfGjy1XAbM4UwLqwLHmldOvM1J1tbMTagi10os,3075
373
374
  meutils/apis/google/images.py,sha256=s9-X8FQqHr5_Of5ZFudR_phmcVzlRyv65O3IsKtlvXo,663
374
375
  meutils/apis/google/search.py,sha256=js3Vx3u9lNrvQxWHF3Y2nP-8qYOA3sKYhbYvO4jHUCA,1590
376
+ meutils/apis/google/upload.py,sha256=8stvopyIs03ywY6fyGHAtow1TarpMKjsb1V9x9GMgSI,1326
375
377
  meutils/apis/hailuoai/__init__.py,sha256=2g9okuB6pxPh1hDiAE9HZo37baqIO9cX-67RpyfBj1k,272
376
378
  meutils/apis/hailuoai/demo.py,sha256=WTnDFL2HgVpAjcn5BljLrbf2y2aATkvvNy75zoEIQkc,1483
377
379
  meutils/apis/hailuoai/hasha_new.py,sha256=1sD3fxmxYrEufmPaJZGAkYJoHKO85hfLXemnY-xYIO8,9101
@@ -415,7 +417,7 @@ meutils/apis/jimeng/common.py,sha256=Dr6BmCT9uRw89jgIwECe7dKNZpJIGUBJXzRzK-1b-hw
415
417
  meutils/apis/jimeng/doubao.py,sha256=5OdnBpmZQOCLIb6lnN8YrL7J7E0XF47q0UF-z6asSuI,4295
416
418
  meutils/apis/jimeng/doubao_utils.py,sha256=XCHnvwfCOtJmPQuzDOCfKDMP_Pcqh-Y4w2h5f7Y2gzM,5999
417
419
  meutils/apis/jimeng/files.py,sha256=E-pPmi6fIP_n6wgfiDbqeWsIfrXVZUe7LpA6Wds1xDI,11047
418
- meutils/apis/jimeng/images.py,sha256=FvPVKwKvRGwESU4gZjjF86xIpZDVWns0byBMNUGnOYA,14071
420
+ meutils/apis/jimeng/images.py,sha256=XSow0hEiGlPZaobVcY9C8rZ2Ap1yTfP37W_YscpSSZk,14071
419
421
  meutils/apis/jimeng/videos.py,sha256=x-PDOYNBN-yTmNvMbyDbwm_E2LXZ6A4hcVzEahV_Hvc,10813
420
422
  meutils/apis/jina/__init__.py,sha256=WnZ4LOv-bzC1brd5FZHOHmgq4c0UaFbnksEj2_LzXxQ,292
421
423
  meutils/apis/jina/common.py,sha256=dwSJboUcZtvBTKRcvAUcgMD933VfYCUBDdtxbw1ioiE,1099
@@ -450,7 +452,7 @@ meutils/apis/pixverse/pixverse.py,sha256=dvnyYVUXCEY_cLnmX9lvq9TesvplCMCuJmmP7Sh
450
452
  meutils/apis/proxy/__init__.py,sha256=by7_6GT3xeDjAWLLqbw8uvGaZ3RdprEW-zJ2DFLOdwA,271
451
453
  meutils/apis/proxy/demo.py,sha256=-huvtmltbKXa6cS77k61ts-Kjd5ccSAgXzNrotIvIKA,1642
452
454
  meutils/apis/proxy/ips.py,sha256=3McLniROteSBqAtcMH8xKbUBfhVc4ZyGuRwMvgEryKg,5023
453
- meutils/apis/proxy/kdlapi.py,sha256=Gn0EmADYma7wDex62B6wd7s8O8f-zo4YunRf8fGezRo,1557
455
+ meutils/apis/proxy/kdlapi.py,sha256=Z0aSzn3fjBgrtCU8JOU_-pQL_JmV8TXQhp9VDO4M4E4,1916
454
456
  meutils/apis/remini/__init__.py,sha256=8TbAnbI_bDfH8g0Y9EHXHBum7C0rZt9MzgAAz_MbAeI,271
455
457
  meutils/apis/remini/remini.py,sha256=bJjvtqrCNlAu7No4gYGjoWAM0ch6dCsofYSy2jPZrXg,4239
456
458
  meutils/apis/replicateai/__init__.py,sha256=PK7e7-xhn5aj5WOyGHLzpsHQvpeM5uTOiMylvj40ZmU,272
@@ -466,7 +468,7 @@ meutils/apis/search/metaso.py,sha256=hNvtY2jqZrYGXoZwe3JIooFxUgdJGQ2d0p8_Ecfrb44
466
468
  meutils/apis/search/metaso_.py,sha256=PqMX3FLYbbAcc9qpqrPZ58LuSF29h0asZO1XMYmXbes,3144
467
469
  meutils/apis/search/n.py,sha256=o7jzNoR5v_nAjgdUvWgebL3nvvo3ECpq2KCj9YhUNr4,4337
468
470
  meutils/apis/search/searxng.py,sha256=RBPeq-AYj5D42gROrZNg0SxIWwWEW0oqrbQ3wEDH9k8,951
469
- meutils/apis/search/zhipu_web_search.py,sha256=L0eV9pINynX7PgAw0fR419DYvak9jbbGfwf-8zTpeM8,3755
471
+ meutils/apis/search/zhipu_web_search.py,sha256=cHt83mzk5Qx_DyoHpHaAHGtyi_saW6hCFy0iuk6nIYk,3791
470
472
  meutils/apis/siliconflow/__init__.py,sha256=DQ-A6wAWGna49pmyGhcIWgc2zx6TN9DfQmSUdAW7qjk,241
471
473
  meutils/apis/siliconflow/audio.py,sha256=pk1OROATtAURPQ6VkswmR5gJFOFYJJPnjp-boDAf8X0,2017
472
474
  meutils/apis/siliconflow/image_to_image.py,sha256=Clk-2hACzoUP0yTHnxhlV5MA_HsVdcPuhrX41YARWPM,89439
@@ -507,7 +509,7 @@ meutils/apis/voice_clone/__init__.py,sha256=y7Rpn90LocHhA0ywrDP_fT4QAK7sr4JsIX5w
507
509
  meutils/apis/voice_clone/fish.py,sha256=6m8zcS2KEqmalKy2ArnOaNovyxsQp_sw4d_O1kVZR2s,7146
508
510
  meutils/apis/voice_clone/fish_api.py,sha256=pDpE-B8HFiGIOV3NVd1HmFrCC2GQc3wH-81oNbTS0mY,307
509
511
  meutils/apis/volcengine_apis/__init__.py,sha256=PnngoI3Qk6n_axdOLgENCFYlKsmohgzYVW1HUg7L8gI,271
510
- meutils/apis/volcengine_apis/images.py,sha256=lFuwFjHKYnoYnC-9PKWgox3LOZGCZMivWUJ8I5rTfPM,5117
512
+ meutils/apis/volcengine_apis/images.py,sha256=w8hwpwKwUw6YBr-ye4Iiu2WxDbHu70RQ4gw0GNj6LoM,5149
511
513
  meutils/async_task/__init__.py,sha256=45cUr-GWvQ1JFYGOYPOIkHLyTR3JbfP_PEYrmktpMLo,367
512
514
  meutils/async_task/celery_config.py,sha256=BX1h3jY34aO6UmUFakdBUwOdsEiOxCGuUtYDUKFtafc,3461
513
515
  meutils/async_task/common.py,sha256=ZJ4e0CsEJf1ppPmGSwPCwhZBAkUL5xsi_t1ny-bJuko,845
@@ -556,7 +558,7 @@ meutils/config_utils/lark_utils/demo.py,sha256=3g0Fs7oLaeW75T60gYWMLgyNg1OnfOjfH
556
558
  meutils/config_utils/lark_utils/x.py,sha256=MlMQGhehP9xMEgetxVCX68XFaosfKoW1JA5cZ3JqN2w,1857
557
559
  meutils/crawlers/__init__.py,sha256=TBU4xA-IOsHV-0yIkW7YXxn_QT7TT8NncqxO7IykEfs,271
558
560
  meutils/data/SimHei.ttf,sha256=-XEnekS5yHP_URkT4XBI2w22ylV-KxudhkeIYFbrILA,10062565
559
- meutils/data/VERSION,sha256=WIEAT9mYLqsxG4rpIrJRDFn7XiNX5MyqzbBX0E4wQCk,19
561
+ meutils/data/VERSION,sha256=N7F8gUMk4GNQrU8QIz3ZqgKoIc19aDSrezEC-BishjE,19
560
562
  meutils/data/_FLAG,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
561
563
  meutils/data/_SUCCESS,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
562
564
  meutils/data/__init__.py,sha256=Hfwkkxs4zHqKhxht0YrhS566a9P5axtmgNvM5wF8ceQ,243
@@ -570,7 +572,7 @@ meutils/db/__init__.py,sha256=HR99rqxoFTWXUHDhLVl33tzIn8M86gigHLmEzOKH1Ec,7637
570
572
  meutils/db/mongo.py,sha256=B-B_t939rxtnNGt0PxhivjIUwinmHPzLUpXsjUIaTkQ,2337
571
573
  meutils/db/neo4j.py,sha256=eYd3jP3COWlOFBaF20UXphW67-HwlZ1t0Q34Cp-j6o0,2168
572
574
  meutils/db/orm.py,sha256=NEOO6p6D98EARszGXKuc9iTFQburllQS_vlgjp15lls,5094
573
- meutils/db/redis_db.py,sha256=U-7CakaokgT_1iYMomU-ObiH_xaeavhtrt8wPMgdPiU,2756
575
+ meutils/db/redis_db.py,sha256=nQHVTOxE0Apoaj9mjjAYzTTd2QpU6Ry41kPxdJiPb2w,2990
574
576
  meutils/decorators/__ai.py,sha256=QAz005-Wa-sp0YUUoelaR1pMbt6hPSBML5j0My6TbEI,1681
575
577
  meutils/decorators/__init__.py,sha256=hgpHo40pfFWYXEnrW74o8W7SIfCD0GHr3gnujBw1hIQ,3284
576
578
  meutils/decorators/cache.py,sha256=-sqhCuiSYZK1UtsRw7bBog19G65O9N27DVTAp_nlBk4,2972
@@ -603,7 +605,7 @@ meutils/init/evn.py,sha256=GPw9Un8YbgYJmjwd-uYWQ8JeVr6pRxwyYbDv3W8fb1s,1588
603
605
  meutils/init/oo.py,sha256=jXWaCWWFYVPGgTIas47Z3J7sIq-CD7DyK6fKDBsq8GA,12884
604
606
  meutils/io/__init__.py,sha256=uW43ZfdWu7adRvwvcTzUGtn4CseRmbzEJdlZV-oqHEA,2107
605
607
  meutils/io/_openai_files.py,sha256=UIiu6Zg7iSFIn1xIcpLznFlnfCxAJFGuvuPtxvTNHfI,1005
606
- meutils/io/files_utils.py,sha256=WGQm_bZ0osFVNWt7leCEHW2kgtG26amV3gXh_Q83-sg,8680
608
+ meutils/io/files_utils.py,sha256=L8ABFfZcoNX0QyJc-0K_untAv9S3t3SWQnOJ29Nkmuk,8680
607
609
  meutils/io/image.py,sha256=BJmYzx7o66X7C32gOfVmfr5tBRXOi0IYQY7BpGLsGrg,6926
608
610
  meutils/io/minio_utils.py,sha256=i1YuxwDJzLse0smMXuPqnD1wirBBb8psmB_kd1oPoVU,1274
609
611
  meutils/io/openai_files.py,sha256=wi4qp-olva8aF6AfBiUBfb_QlHzHolJJbH4UbHpRrB0,6032
@@ -648,7 +650,7 @@ meutils/llm/x.py,sha256=ETvKKDTmDNrik0K2-_a_SEQxyV4X4-fy0JPrAOLNPv4,1732
648
650
  meutils/llm/completions/__init__.py,sha256=q5FEYPpo2f_P44Ghdh9fkrmqZLX2Asso8p-nf-ZTqks,244
649
651
  meutils/llm/completions/chat_gemini.py,sha256=0x9HQxuDAHoWJ79JoaEKKWVNy4PRyd-Et-j8V93NqkY,4395
650
652
  meutils/llm/completions/chat_plus.py,sha256=RPYQqx4vc57gevcz0gUS7QPvGm0M12ktAspMKJtoeuk,7727
651
- meutils/llm/completions/chat_spark.py,sha256=FoI8wvWBp2ckM1DFayKbUg7jkzF6HCbkJTrEYY6wlgc,9570
653
+ meutils/llm/completions/chat_spark.py,sha256=WkDnRASED-Cq261MyR4_XM8Lh7iLrFw6EwlRVVeOU1g,9847
652
654
  meutils/llm/completions/chat_videos.py,sha256=P3Yz34dkNlxCxzOuKHJ9pHIA4UXK3Y5RXPzVnQjb9rc,2915
653
655
  meutils/llm/completions/cp.py,sha256=tGf3umHKXDH0KuTfN7BLr8yAvN6MYWLYR5UVaJkJs0c,4172
654
656
  meutils/llm/completions/deep2x.py,sha256=Fo5cC1jXOFFXOZeRGk9IpCZVCQc8vgOizuYFuPaWujA,3746
@@ -668,13 +670,14 @@ meutils/llm/completions/agents/__init__.py,sha256=Wklnf7FTHm43hyVwfT8FXX44nqdOTy
668
670
  meutils/llm/completions/agents/search.py,sha256=GKsk0NRy6jsbSu8E9mdBWObJzroGE-L7Iuo5W2MK_u0,5057
669
671
  meutils/llm/completions/assistants/__init__.py,sha256=1QWMIG5dA2wH7550ZdNpW00NPU9q8C-eXybjTsm1aSU,271
670
672
  meutils/llm/completions/assistants/ppt.py,sha256=j3Wh6yBOMhjnh1WVF6tfs4WR9h25i8WVh75vVDfNpdk,3006
673
+ meutils/llm/completions/assistants/zhipu.py,sha256=XlLrh2d-x-74BeBchyeIPtQGgR4K38AMFZdzaZ9U9jY,8314
671
674
  meutils/llm/completions/rag/__init__.py,sha256=VH4g9H0pqMM1Rkjc1xefQb4Uh8f9vlTt6tjdD6G6Wc0,272
672
675
  meutils/llm/completions/rag/fire.py,sha256=0a_POkY9mEy1YwZHXOGnqf9EVyjiJwx3fWhmv_bQ54U,5743
673
676
  meutils/llm/completions/rag/qwen.py,sha256=1dBNLLbQDRsM-7EGaStcWFU8HRa-rp3RxJ9cpxu6TBg,265
674
677
  meutils/llm/completions/rag/rag.py,sha256=mnC4bZUMuNYuPFXMBqXMofj_ms8uP5MMw1leJ5jXA_k,1209
675
678
  meutils/llm/functions/__init__.py,sha256=It6pcNwRBSh3Em45ooi61lc5tFg8eOYv0BvEFuRjSGQ,271
676
679
  meutils/llm/openai_polling/__init__.py,sha256=qmAMITPtrTD-y57RiJXewuOic7iLKBhx8mz5uvcxsy8,270
677
- meutils/llm/openai_polling/chat.py,sha256=LJrK1g2pa9ksRvo7jqE0U7zaIA21QSOFlRVdVLEdJnQ,6575
680
+ meutils/llm/openai_polling/chat.py,sha256=oxO6psoAAu2czWMAoT6hkgEEf8Rn3g6Avxx6OkD_O9Y,7508
678
681
  meutils/llm/openai_polling/images.py,sha256=qKMk3vCvamS_48ceC-_y2LPpP5XsD476FHG9MUu8kks,1042
679
682
  meutils/llm/openai_utils/__init__.py,sha256=MWyNhP2K49oaHGEZlInZc3XlwqlStFultP8k7HDPAwk,290
680
683
  meutils/llm/openai_utils/common.py,sha256=GGctOMlg8xT2A5H-8hMow0VfOZHCDdIPjd12597Nohs,9754
@@ -795,7 +798,7 @@ meutils/schemas/metaso_types.py,sha256=r_X0Exs_2S3rNS71RneemMpz7EvBIOLBfAMmWMQRn
795
798
  meutils/schemas/napkin_types.py,sha256=Kp0MbpRxzMBz4HWW4DrfcgOvHZVEF3N7P5yNeC1XGI4,2664
796
799
  meutils/schemas/ocr_types.py,sha256=fZWYQAKii7HaTlSU9DS0wHyiEoOHuLnhvgoiH4Cn498,1381
797
800
  meutils/schemas/openai_api_protocol.py,sha256=0GhmhUTEr54N_XCVuZI1MSxJldvwMNJjUAAAdWznw58,12716
798
- meutils/schemas/openai_types.py,sha256=Q6-ZpaYfpr65ujreRh8EVYxnfSk_JZLPlZKDbLbnQoo,22485
801
+ meutils/schemas/openai_types.py,sha256=umvmG0hn4JGqHXMPJ6GwSNOYYCqb76fJTkfvYs5dCOI,22558
799
802
  meutils/schemas/pixverse_types.py,sha256=3mHg2KxvszV1U8K3GdzsODZz4uocLVRjEeJgYhX0Xmw,2347
800
803
  meutils/schemas/playwright_types.py,sha256=zhZd53m1Wg4zlGtq2JM4z7Aon-u_eF6rzs-_TFYWvkU,1177
801
804
  meutils/schemas/prodia_types.py,sha256=knh_lzAxMfWMoqAPmvyMweay9PmQmsoQ1X6Mj17ohWg,476
@@ -818,7 +821,7 @@ meutils/schemas/db/__init__.py,sha256=m1maURVoM6dIW0yt6ELZrZTzULtkHybVOSXtHNJRVI
818
821
  meutils/schemas/db/oneapi_types.py,sha256=3t2m0H80saEXmYUZfVFrtEaY117GjZTsSa1GKgkJzqQ,3896
819
822
  meutils/schemas/oneapi/__init__.py,sha256=uevbi3QAvFzN9WPbx9bYKTDyKt7P2ueZO6W0nSiD0sk,289
820
823
  meutils/schemas/oneapi/_types.py,sha256=ClvAaNy3SahEN8lL8KEErHTD6HANelXUeKc_3iLfosQ,1488
821
- meutils/schemas/oneapi/common.py,sha256=TNeEbpEwY2MRoENCA31u1xzWCBOipQttfXp92PhQHVI,35550
824
+ meutils/schemas/oneapi/common.py,sha256=Bf4Cqj8KvHyDCN9hs4XJuVCRj9NcQFjwH7UbzxhDbrk,35808
822
825
  meutils/schemas/oneapi/icons.py,sha256=T7W5gInBJoHe62wzMimbG_UI-wn3_-rmQ1O4O2z-CQY,1089
823
826
  meutils/schemas/oneapi/model_group_info.py,sha256=rGtflYJuFIjk5MsVEvK9JUR4IciX8jfErqeLqf8DIlQ,1586
824
827
  meutils/schemas/oneapi/model_info.py,sha256=_uwKEPIIqm7ZYfhmpxtXB2QNsS83SpJY-OaBzvogC9w,772
@@ -947,9 +950,9 @@ meutils/tools/seize.py,sha256=nOKAS63w-Lbi48I0m2MPhdsokUTwxco0laPxYVmW4Mw,1064
947
950
  meutils/tools/service_monitor.py,sha256=ibsLtBN2g2DL7ZnLJ8vhiZOiOcqTAyx711djDdBK-3M,1255
948
951
  meutils/tools/sys_monitor.py,sha256=6MoyzrItqDUOSjfHcMJmMofQkEPTW36CT_aKui0rg84,429
949
952
  meutils/tools/token_monitor.py,sha256=Np-YK-R4P4IPAXyZvMxwvXI4sFmNJQAQK1lSegNaYpA,997
950
- MeUtils-2025.4.20.23.17.29.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
951
- MeUtils-2025.4.20.23.17.29.dist-info/METADATA,sha256=zabcsSmsQgwQDAvy6OH4XkX0rLIvyLq22bCAm-gdjd4,32834
952
- MeUtils-2025.4.20.23.17.29.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
953
- MeUtils-2025.4.20.23.17.29.dist-info/entry_points.txt,sha256=lufZlBHRqqZKdY-ZQJ4CSZb0qhV5hQC37egZna9M7ug,357
954
- MeUtils-2025.4.20.23.17.29.dist-info/top_level.txt,sha256=cInfxMmkgNOskurdjwP5unau4rA7Uw48nu07tYhS7KY,22
955
- MeUtils-2025.4.20.23.17.29.dist-info/RECORD,,
953
+ MeUtils-2025.4.23.16.0.20.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
954
+ MeUtils-2025.4.23.16.0.20.dist-info/METADATA,sha256=qTNSxF_a4IgMBPUlTRN4pKhUWhr0XZkhEpD30Q7ma6I,32833
955
+ MeUtils-2025.4.23.16.0.20.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
956
+ MeUtils-2025.4.23.16.0.20.dist-info/entry_points.txt,sha256=lufZlBHRqqZKdY-ZQJ4CSZb0qhV5hQC37egZna9M7ug,357
957
+ MeUtils-2025.4.23.16.0.20.dist-info/top_level.txt,sha256=cInfxMmkgNOskurdjwP5unau4rA7Uw48nu07tYhS7KY,22
958
+ MeUtils-2025.4.23.16.0.20.dist-info/RECORD,,
@@ -46,3 +46,5 @@ print(response.data[0])
46
46
  image_url = response.data[0].url
47
47
 
48
48
  print(image_url)
49
+
50
+ from urllib.parse import unquote
@@ -29,11 +29,15 @@ client = OpenAI(
29
29
  base_url=os.getenv("GOOGLE_BASE_URL"),
30
30
  )
31
31
 
32
- print(client.models.list().model_dump_json(indent=4))
32
+ model = "gemini-2.5-flash-preview-04-17"
33
+ # model = "gemini-2.5-pro-exp-03-25"
33
34
 
35
+ # model = "gemini-2.0-flash" # openai.BadRequestError: Error code: 400 - [{'error': {'code': 400, 'message': 'Unable to submit request because thinking_budget is only supported when enable_thinking is true. Learn more: https://cloud.google.com/vertex-ai/generative-ai/docs/model-reference/gemini', 'status': 'INVALID_ARGUMENT'}}]
34
36
 
35
- print([model.id.removeprefix("models/") for model in client.models.list().data if 'flash' in model.id or 'gemma' in model.id ] | xjoin(','))
37
+ print(client.models.list().model_dump_json(indent=4))
36
38
 
39
+ print([model.id.removeprefix("models/") for model in client.models.list().data if
40
+ 'flash' in model.id or 'gemma' in model.id] | xjoin(','))
37
41
 
38
42
  # {
39
43
  # "gemini-2.0-pro-exp": "models/gemini-2.0-pro-exp",
@@ -50,47 +54,60 @@ from openai import OpenAI
50
54
 
51
55
  uri = 'https://generativelanguage.googleapis.com/v1beta/files/88n7hk8tau7g'
52
56
 
53
- # completion = client.chat.completions.create(
54
- # model="gemini-2.0-flash",
55
- # messages=[
56
- # {
57
- # "role": "user",
58
- # "content": [
59
- # {
60
- # "type": "text",
61
- # "text": "解释下这张图片"
62
- # },
63
- # # {
64
- # # "type": "image_url",
65
- # # "image_url": {
66
- # # "url": uri,
67
- # # }
68
- # # }
69
- # ]
70
- # },
71
- # ]
72
- # )
73
-
57
+ completion = client.chat.completions.create(
58
+ model=model,
59
+ messages=[
60
+ {
61
+ "role": "user",
62
+ "content": [
63
+ {
64
+ "type": "text",
65
+ "text": "9个8如何加减乘除运直得到1000",
66
+ # "text": "如何比较9.8 9.11哪个大"
67
+ },
68
+ # {
69
+ # "type": "image_url",
70
+ # "image_url": {
71
+ # "url": uri,
72
+ # }
73
+ # }
74
+ ]
75
+ },
76
+ ],
77
+ reasoning_effort="high",
78
+ # reasoning_effort="low",
79
+ # reasoning_effort=None,
74
80
 
75
- tools = [
76
- {
77
- "type": "function",
78
- "function": {
79
- "name": "google_search",
80
-
81
- }
82
- }
83
- ]
84
- #
85
- messages = [{"role": "user", "content": "今天南京天气"}]
86
- response = client.chat.completions.create(
87
- model="gemini-2.0-flash-thinking-exp",
88
- messages=messages,
89
- # tools=tools,
90
- # tool_choice="auto"
91
81
  )
82
+ print(completion)
92
83
 
93
- print(response)
84
+ #
85
+ # tools = [
86
+ # {
87
+ # "type": "function",
88
+ # "function": {
89
+ # "name": "google_search",
90
+ #
91
+ # }
92
+ # }
93
+ # ]
94
+ # #
95
+ # messages = [{"role": "user", "content": "今天南京天气"}]
96
+ # response = client.chat.completions.create(
97
+ # model="gemini-2.0-flash-thinking-exp",
98
+ # messages=messages,
99
+ # # tools=tools,
100
+ # # tool_choice="auto"
101
+ # )
102
+ #
103
+ # "generationConfig": {
104
+ # "thinkingConfig": {
105
+ # "includeThoughts": true,
106
+ # "thinkingBudget": 1024
107
+ # }
108
+ # }
109
+
110
+ # print(response)
94
111
 
95
112
  # gemini-2.0-flash-audio
96
113
  # completion = client.chat.completions.create(
@@ -10,6 +10,7 @@
10
10
 
11
11
  from meutils.pipe import *
12
12
  from meutils.llm.clients import zhipuai_sdk_client
13
+ from meutils.schemas.openai_types import chat_completion_chunk
13
14
 
14
15
  from zhipuai import ZhipuAI
15
16
 
@@ -25,9 +26,10 @@ from zhipuai import ZhipuAI
25
26
  #
26
27
  # # print(bjson(client.assistant.query_support()))
27
28
  generate = zhipuai_sdk_client.assistant.conversation(
29
+ assistant_id="65940acff94777010aa6b796",
28
30
  # assistant_id="65a265419d72d299a9230616",
29
31
  # assistant_id="659d051a5f14eb8ce1235b96",
30
- assistant_id="65d2f07bb2c10188f885bd89",
32
+ # assistant_id="65d2f07bb2c10188f885bd89",
31
33
 
32
34
  # assistant_id="659e54b1b8006379b4b2abd6",
33
35
  # conversation_id=None, # 多轮:从messages获取
@@ -39,8 +41,8 @@ generate = zhipuai_sdk_client.assistant.conversation(
39
41
  "content": [{
40
42
  "type": "text",
41
43
  # "text": "北京未来七天气温,做个折线图",
42
- # "text": "南京天气",
43
- "text": "周杰伦 【最新动态、相关信息或新闻】",
44
+ "text": "南京天气",
45
+ # "text": "周杰伦 【最新动态、相关信息或新闻】",
44
46
 
45
47
  # "text": "画条狗"
46
48
  # "text": "周杰伦",
@@ -60,9 +62,15 @@ for resp in generate:
60
62
  if hasattr(delta, "tool_calls") and delta.tool_calls:
61
63
  # print(delta)
62
64
 
65
+ # print(delta.model_dump_json(indent=4, exclude_none=True))
66
+ # logger.debug(delta)
63
67
  print(delta.model_dump_json(indent=4, exclude_none=True))
68
+ elif hasattr(delta, "content"):
69
+ print(delta.content, end="")
64
70
 
65
- print(resp.model_dump_json(indent=4, exclude_none=True))
71
+ else:
72
+ logger.debug(delta)
73
+ # print(resp.model_dump_json(indent=4, exclude_none=True))
66
74
  # for tc in delta.tool_calls:
67
75
  # tc.web_browser
68
76
 
examples/bserver.py CHANGED
@@ -1,65 +1,87 @@
1
- MJ_RELAX = 0
2
- d1 = {"mj_fast_blend": 0.08,
3
- "mj_fast_custom_oom": 0,
4
- "mj_fast_describe": 0.04,
5
- "mj_fast_high_variation": 0.08,
6
- "mj_fast_imagine": 0.08,
7
- "mj_fast_inpaint": 0,
8
- "mj_fast_low_variation": 0.08,
9
- "mj_fast_modal": 0.08,
10
- "mj_fast_pan": 0.08,
11
- "mj_fast_pic_reader": 0,
12
- "mj_fast_prompt_analyzer": 0,
13
- "mj_fast_prompt_analyzer_extended": 0,
14
- "mj_fast_reroll": 0.08,
15
- "mj_fast_shorten": 0.08,
16
- "mj_fast_upload": 0.01,
17
- "mj_fast_upscale": 0.04,
18
- "mj_fast_upscale_creative": 0.08,
19
- "mj_fast_upscale_subtle": 0.08,
20
- "mj_fast_variation": 0.08,
21
- "mj_fast_zoom": 0.08,}
22
-
23
- d2 = {
24
- "mj_relax_blend": 0.08 * MJ_RELAX,
25
- "mj_relax_custom_oom": 0,
26
- "mj_relax_describe": 0.04 * MJ_RELAX,
27
- "mj_relax_high_variation": 0.08 * MJ_RELAX,
28
- "mj_relax_imagine": 0.08 * MJ_RELAX,
29
- "mj_relax_inpaint": 0,
30
- "mj_relax_low_variation": 0.08 * MJ_RELAX,
31
- "mj_relax_modal": 0.08 * MJ_RELAX,
32
- "mj_relax_pan": 0.08 * MJ_RELAX,
33
- "mj_relax_pic_reader": 0,
34
- "mj_relax_prompt_analyzer": 0,
35
- "mj_relax_prompt_analyzer_extended": 0,
36
- "mj_relax_reroll": 0.08 * MJ_RELAX,
37
- "mj_relax_shorten": 0.08 * MJ_RELAX,
38
- "mj_relax_upload": 0.01 * MJ_RELAX,
39
- "mj_relax_upscale": 0.04 * 1,
40
- "mj_relax_upscale_creative": 0.08 * 1,
41
- "mj_relax_upscale_subtle": 0.08 * 1,
42
- "mj_relax_variation": 0.08 * 1,
43
- "mj_relax_zoom": 0.08 * MJ_RELAX,
44
- }
45
-
46
- d = dict(zip(d1, d2))
47
-
48
-
49
- def fetch_video_result(file_id: str):
50
- print("---------------视频生成成功,下载中---------------")
51
- url = "https://api.minimax.chat/v1/files/retrieve?file_id="+file_id
52
- headers = {
53
- 'authorization': 'Bearer '+api_key,
54
- }
55
-
56
- response = requests.request("GET", url, headers=headers)
57
- print(response.text)
58
-
59
- download_url = response.json()['file']['download_url']
60
- print("视频下载链接:" + download_url)
61
- with open(output_file_name, 'wb') as f:
62
- f.write(requests.get(download_url).content)
63
- print("已下载在:"+os.getcwd()+'/'+output_file_name)
1
+ from PIL import Image
2
+ import os
3
+ import math
64
4
 
65
5
 
6
+ def stitch_images_grid(image_paths, output_path, cols, background_color=(255, 255, 255)):
7
+ """
8
+ 使用 Pillow 将图片拼接成网格。
9
+ 假设所有图片大小相似,或以最大图片的尺寸为单元格大小。
10
+
11
+ Args:
12
+ image_paths (list): 包含图片文件路径的列表。
13
+ output_path (str): 输出拼接后图片的路径。
14
+ cols (int): 网格的列数。
15
+ background_color (tuple): 画布背景色 (R, G, B)。
16
+ """
17
+ images = []
18
+ max_w = 0
19
+ max_h = 0
20
+
21
+ # 加载图片并找到最大尺寸
22
+ for path in image_paths:
23
+ try:
24
+ img = Image.open(path).convert('RGB')
25
+ images.append(img)
26
+ max_w = max(max_w, img.width)
27
+ max_h = max(max_h, img.height)
28
+ except FileNotFoundError:
29
+ print(f"警告: 文件未找到 {path}, 跳过此图片。")
30
+ except Exception as e:
31
+ print(f"警告: 加载图片 {path} 时出错: {e}, 跳过此图片。")
32
+
33
+ if not images:
34
+ print("错误: 没有可拼接的有效图片。")
35
+ return
36
+
37
+ num_images = len(images)
38
+ rows = math.ceil(num_images / cols)
39
+
40
+ # 计算画布总尺寸
41
+ grid_width = cols * max_w
42
+ grid_height = rows * max_h
43
+
44
+ # 创建画布
45
+ grid_image = Image.new('RGB', (grid_width, grid_height), background_color)
46
+
47
+ # 拼接图片到网格
48
+ for index, img in enumerate(images):
49
+ row = index // cols
50
+ col = index % cols
51
+ # 计算粘贴位置 (左上角)
52
+ paste_x = col * max_w
53
+ paste_y = row * max_h
54
+
55
+ # 可选:如果图片尺寸小于单元格,可以居中
56
+ offset_x = (max_w - img.width) // 2
57
+ offset_y = (max_h - img.height) // 2
58
+
59
+ grid_image.paste(img, (paste_x + offset_x, paste_y + offset_y))
60
+
61
+ # 保存结果
62
+ try:
63
+ grid_image.save(output_path)
64
+ print(f"图片已成功按 {rows}x{cols} 网格拼接并保存至: {output_path}")
65
+ except Exception as e:
66
+ print(f"错误: 保存网格图片时出错: {e}")
67
+
68
+
69
+ if __name__ == '__main__':
70
+
71
+ # --- 示例用法 ---
72
+ image_files = ["cover.jpeg", "image2.png", "image3.jpg", "image4.gif"] # 替换路径
73
+ image_files = ['cover.jpeg', 'img.png']
74
+ output_file = "xxxxxxxxxxxxxxxxxxxxxxxxxxx.jpg"
75
+ columns = 2 # 设置网格列数
76
+
77
+ # (确保示例图片存在或创建它们)
78
+ # if not os.path.exists("image4.gif"):
79
+ # try:
80
+ # img = Image.new('RGB', (110, 130), color = (50, 150, 50))
81
+ # img.save("image4.gif")
82
+ # print("创建了示例图片: image4.gif")
83
+ # except Exception as e:
84
+ # print(f"无法创建示例图片 image4.gif: {e}")
85
+
86
+
87
+ stitch_images_grid(image_files, output_file, cols=columns)
@@ -0,0 +1,127 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding: utf-8 -*-
3
+ # @Project : AI. @by PyCharm
4
+ # @File : chat
5
+ # @Time : 2025/4/23 10:23
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.llm.clients import AsyncOpenAI
14
+ from meutils.caches import rcache
15
+ from meutils.schemas.chatglm_types import VideoRequest, Parameter, VIDEO_BASE_URL, EXAMPLES
16
+
17
+ from meutils.decorators.retry import retrying
18
+ from meutils.notice.feishu import send_message as _send_message
19
+ from meutils.config_utils.lark_utils import get_next_token_for_polling
20
+ from meutils.db.redis_db import redis_aclient
21
+
22
+ from fake_useragent import UserAgent
23
+
24
+ ua = UserAgent()
25
+
26
+ FEISHU_URL = "https://xchatllm.feishu.cn/sheets/Bmjtst2f6hfMqFttbhLcdfRJnNf?sheet=EOZuBW"
27
+ BASE_URL = "https://chatglm.cn/chatglm/backend-api"
28
+ "https://chatglm.cn/chatglm/backend-api/assistant/stream"
29
+
30
+
31
+ # {
32
+ # "assistant_id": "65940acff94777010aa6b796",
33
+ # "conversation_id": "",
34
+ # "meta_data": {
35
+ # "is_test": false,
36
+ # "input_question_type": "xxxx",
37
+ # "channel": "",
38
+ # "draft_id": "",
39
+ # "is_networking": false,
40
+ # "chat_mode": "",
41
+ # "quote_log_id": "",
42
+ # "platform": "pc"
43
+ # },
44
+ # "messages": [
45
+ # {
46
+ # "role": "user",
47
+ # "content": [
48
+ # {
49
+ # "type": "text",
50
+ # "text": "你是谁"
51
+ # }
52
+ # ]
53
+ # }
54
+ # ]
55
+ # }
56
+
57
+ # {"id":"68084f7bef14104a4663f6a8","conversation_id":"68084f7bef14104a4663f6a7","assistant_id":"65940acff94777010aa6b796","parts":[],"created_at":"2025-04-23 10:24:59","status":"init","last_error":{},"meta_data":{"input_question_type":"xxxx","if_plus_model":false,"plus_model_available":true,"if_increase_push":false}}
58
+
59
+ class Completions(object):
60
+ def __init__(self, api_key: Optional[str] = None):
61
+ self.api_key = api_key
62
+
63
+ async def create(self, request: CompletionRequest):
64
+ payload = {
65
+ "assistant_id": request.model,
66
+ "conversation_id": "",
67
+ "meta_data": {
68
+ "is_test": False,
69
+ "input_question_type": "xxxx",
70
+ "channel": "",
71
+ "draft_id": "",
72
+ "is_networking": False,
73
+ "chat_mode": "",
74
+ "quote_log_id": "",
75
+ "platform": "pc"
76
+ },
77
+ "messages": request.messages
78
+ }
79
+ # client = AsyncOpenAI(base_url=BASE_URL, api_key=self.get_access_token())
80
+ # response = await client.post(
81
+ # "/assistant/stream",
82
+ # cast_to=object,
83
+ # body=payload,
84
+ # stream=True,
85
+ # )
86
+ # for i in response:
87
+ # logger.debug(i)
88
+
89
+ url = "https://chatglm.cn/chatglm/backend-api/assistant/stream"
90
+ # response = self.httpx_client.post(url=url, json=payload)
91
+ headers = {
92
+ 'Authorization': f"Bearer {self.get_access_token()}",
93
+ 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36'
94
+ }
95
+ async with httpx.AsyncClient(headers=headers).stream("POST", url=url, json=payload, timeout=200) as response:
96
+ async for chunk in response.aiter_lines():
97
+ logger.debug(chunk)
98
+
99
+ @rcache(ttl=1 * 3600)
100
+ async def get_access_token(self, token: Optional[str] = None):
101
+ token = self.api_key or token or await get_next_token_for_polling(FEISHU_URL)
102
+
103
+ response = await AsyncOpenAI(base_url=BASE_URL, api_key=token).post(
104
+ "/v1/user/refresh",
105
+ cast_to=object,
106
+ )
107
+
108
+ # logger.debug(response)
109
+
110
+ return response.get("result", {}).get("accessToken")
111
+
112
+
113
+ if __name__ == '__main__':
114
+ # arun(Completions().get_access_token())
115
+
116
+ request = CompletionRequest(
117
+ model="65940acff94777010aa6b796",
118
+ messages=[
119
+ {
120
+ "role": "user",
121
+ "content": [{"type": "text", "text": "你是谁"}],
122
+ }
123
+ ],
124
+ stream=True,
125
+ )
126
+
127
+ arun(Completions().create(request))