MeUtils 2024.12.23.16.35.5__py3-none-any.whl → 2024.12.26.22.14.1__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.
Files changed (32) hide show
  1. {MeUtils-2024.12.23.16.35.5.dist-info → MeUtils-2024.12.26.22.14.1.dist-info}/METADATA +25 -25
  2. {MeUtils-2024.12.23.16.35.5.dist-info → MeUtils-2024.12.26.22.14.1.dist-info}/RECORD +32 -29
  3. examples/_openaisdk/4v.py +5 -3
  4. examples/_openaisdk/openai_chatfire.py +5 -0
  5. examples/_openaisdk/openai_modelscope.py +6 -2
  6. examples/_openaisdk/openai_siliconflow.py +1 -1
  7. examples/_openaisdk/openai_tune.py +7 -4
  8. examples/_openaisdk/openai_zhipu.py +5 -5
  9. meutils/apis/chatglm/glm_video_api.py +34 -2
  10. meutils/apis/hailuoai/videos.py +1 -1
  11. meutils/apis/jimeng/common.py +6 -3
  12. meutils/apis/jimeng/images.py +18 -3
  13. meutils/apis/kling/kolors_virtual_try_on.py +29 -5
  14. meutils/apis/oneapi/user.py +3 -3
  15. meutils/apis/oneapi/utils.py +32 -0
  16. meutils/async_utils/common.py +11 -1
  17. meutils/common.py +2 -0
  18. meutils/config_utils/lark_utils/common.py +2 -2
  19. meutils/data/VERSION +1 -1
  20. meutils/data/oneapi/NOTICE.md +10 -0
  21. meutils/db/orm.py +40 -5
  22. meutils/db/redis_db.py +8 -5
  23. meutils/decorators/polling.py +46 -0
  24. meutils/llm/completions/modelscope.py +11 -0
  25. meutils/schemas/db/oneapi_types.py +30 -0
  26. meutils/schemas/oneapi/common.py +15 -4
  27. meutils/schemas/video_types.py +34 -1
  28. meutils/serving/fastapi/dependencies/auth.py +34 -6
  29. {MeUtils-2024.12.23.16.35.5.dist-info → MeUtils-2024.12.26.22.14.1.dist-info}/LICENSE +0 -0
  30. {MeUtils-2024.12.23.16.35.5.dist-info → MeUtils-2024.12.26.22.14.1.dist-info}/WHEEL +0 -0
  31. {MeUtils-2024.12.23.16.35.5.dist-info → MeUtils-2024.12.26.22.14.1.dist-info}/entry_points.txt +0 -0
  32. {MeUtils-2024.12.23.16.35.5.dist-info → MeUtils-2024.12.26.22.14.1.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: MeUtils
3
- Version: 2024.12.23.16.35.5
3
+ Version: 2024.12.26.22.14.1
4
4
  Summary: description
5
5
  Home-page: https://github.com/yuanjie-ai/MeUtils
6
6
  Author: yuanjie
@@ -63,42 +63,42 @@ Requires-Dist: sse-starlette ; extra == 'ai'
63
63
  Requires-Dist: openai ; extra == 'ai'
64
64
  Requires-Dist: langchain ; extra == 'ai'
65
65
  Provides-Extra: all
66
- Requires-Dist: schedule ; extra == 'all'
67
66
  Requires-Dist: thefuck ; extra == 'all'
67
+ Requires-Dist: sse-starlette ; extra == 'all'
68
+ Requires-Dist: filetype ; extra == 'all'
69
+ Requires-Dist: pymupd ; extra == 'all'
70
+ Requires-Dist: jieba ; extra == 'all'
71
+ Requires-Dist: pandas-summary ; extra == 'all'
68
72
  Requires-Dist: gunicorn ; extra == 'all'
73
+ Requires-Dist: reportlab ; extra == 'all'
74
+ Requires-Dist: faiss-cpu ; extra == 'all'
75
+ Requires-Dist: missingno ; extra == 'all'
76
+ Requires-Dist: schedule ; extra == 'all'
69
77
  Requires-Dist: simplejson ; extra == 'all'
70
- Requires-Dist: pymupd ; extra == 'all'
71
- Requires-Dist: pretty-errors ; extra == 'all'
72
78
  Requires-Dist: openai ; extra == 'all'
73
- Requires-Dist: asyncmy ; extra == 'all'
74
- Requires-Dist: jinja2 ; extra == 'all'
75
- Requires-Dist: fastapi[all] ; extra == 'all'
76
- Requires-Dist: thriftpy2 ; extra == 'all'
77
- Requires-Dist: iteration-utilities ; extra == 'all'
78
79
  Requires-Dist: uvicorn ; extra == 'all'
79
- Requires-Dist: seaborn ; extra == 'all'
80
- Requires-Dist: geopy ; extra == 'all'
80
+ Requires-Dist: fastapi[all] ; extra == 'all'
81
81
  Requires-Dist: langchain ; extra == 'all'
82
+ Requires-Dist: pymongo ; extra == 'all'
83
+ Requires-Dist: seaborn ; extra == 'all'
84
+ Requires-Dist: redis-py-cluster ; extra == 'all'
82
85
  Requires-Dist: sqlalchemy ; extra == 'all'
83
86
  Requires-Dist: pymilvus ; extra == 'all'
84
- Requires-Dist: pyarrow ; extra == 'all'
85
- Requires-Dist: faiss-cpu ; extra == 'all'
86
- Requires-Dist: jieba ; extra == 'all'
87
87
  Requires-Dist: pandas-profiling[notebook] ; extra == 'all'
88
- Requires-Dist: dataframe-image ; extra == 'all'
88
+ Requires-Dist: polars ; extra == 'all'
89
89
  Requires-Dist: jmespath ; extra == 'all'
90
+ Requires-Dist: geopy ; extra == 'all'
91
+ Requires-Dist: iteration-utilities ; extra == 'all'
92
+ Requires-Dist: pretty-errors ; extra == 'all'
93
+ Requires-Dist: thriftpy2 ; extra == 'all'
94
+ Requires-Dist: jinja2 ; extra == 'all'
95
+ Requires-Dist: pymysql ; extra == 'all'
96
+ Requires-Dist: streamlit ; extra == 'all'
90
97
  Requires-Dist: cachetools ; extra == 'all'
91
- Requires-Dist: polars ; extra == 'all'
98
+ Requires-Dist: pyarrow ; extra == 'all'
92
99
  Requires-Dist: fastapi ; extra == 'all'
93
- Requires-Dist: pandas-summary ; extra == 'all'
94
- Requires-Dist: streamlit ; extra == 'all'
95
- Requires-Dist: pymysql ; extra == 'all'
96
- Requires-Dist: reportlab ; extra == 'all'
97
- Requires-Dist: filetype ; extra == 'all'
98
- Requires-Dist: pymongo ; extra == 'all'
99
- Requires-Dist: missingno ; extra == 'all'
100
- Requires-Dist: redis-py-cluster ; extra == 'all'
101
- Requires-Dist: sse-starlette ; extra == 'all'
100
+ Requires-Dist: dataframe-image ; extra == 'all'
101
+ Requires-Dist: asyncmy ; extra == 'all'
102
102
  Provides-Extra: ann
103
103
  Requires-Dist: pymilvus ; extra == 'ann'
104
104
  Requires-Dist: faiss-cpu ; extra == 'ann'
@@ -69,7 +69,7 @@ examples/Time-Extractor/TimeUnit.py,sha256=yx-SS9sxSjSUGiu1H8eTbP4vqAHrNyQcddioM
69
69
  examples/Time-Extractor/__init__.py,sha256=hjNi8tWPOBTke6GHlxpsOrufCRdAHmYs2yBquql9X7c,156
70
70
  examples/Time-Extractor/setup.py,sha256=ENYhj1_uJ7z_F3jrz8FR8w5u2SEXrZpl5GXEELUymLk,811
71
71
  examples/Time-Extractor/resource/__init__.py,sha256=0HHkZVghckIg5LkGMziooZ8TUqfSQFA6j62BN9KyFp0,91
72
- examples/_openaisdk/4v.py,sha256=gqHVIdvh8uYkggLw8ng9PStgOIzC665NOp9Dr3j8Kgo,3422
72
+ examples/_openaisdk/4v.py,sha256=kUE4-HoabPrYvAaoiRAMq5rpmpSGeXsUlaxz6Ze1E18,3531
73
73
  examples/_openaisdk/__init__.py,sha256=5TNibGR-ETncXVWoevqYJ0m2yo1GOxRx3hSu2qWAQNo,271
74
74
  examples/_openaisdk/baichuan.py,sha256=xmNFc64T02r9wE0VSOG0B21wJJmlrecKVVCelhs2Dt4,890
75
75
  examples/_openaisdk/bpo.py,sha256=7Jw16TiKFEQvYbt4g-h7QimLBw7xY49w1MthT5OwcTM,5267
@@ -91,7 +91,7 @@ examples/_openaisdk/open_router.py,sha256=Z4i_FJIc773JnIdYA3Hhuy1Dq5-DIOIrmkWwbp
91
91
  examples/_openaisdk/openai_audio.py,sha256=ZyYslH9RfdJBpNUpjKn_5x0d94_H291Qt31u_6weISc,484
92
92
  examples/_openaisdk/openai_baichuan.py,sha256=4_Gz8FeRrW5Zwnh-KFmaLOXr6sn3AxU47Qd2j8VDiQU,1527
93
93
  examples/_openaisdk/openai_cache.py,sha256=89GbJ1QlqQbVxlUeuFgEbwDYHOkum7BK0zB-CqmDAZU,726
94
- examples/_openaisdk/openai_chatfire.py,sha256=InT65qjrWflYnXW4SaZJ4lnUENta4ftcmqxJso-SnyI,17110
94
+ examples/_openaisdk/openai_chatfire.py,sha256=XYiluw1SF-4-OVREsUuh-DVr-kmPC7aKoFxAdmydBO8,17211
95
95
  examples/_openaisdk/openai_chatfire_all.py,sha256=DaiI1NfDeK655QvXyczkgXK9Awxp7NBe71LHA7trxGE,4831
96
96
  examples/_openaisdk/openai_deepseek.py,sha256=-1WyTX5EfB8bdVhZ-y2yZQ04fVzujp4OPmOQR6i3QxI,660
97
97
  examples/_openaisdk/openai_doubao.py,sha256=dp0SLvDBYpIJPNs_vnV2GBIEFa9FglNtYvfGKtJ9Bqk,1053
@@ -101,16 +101,16 @@ examples/_openaisdk/openai_god.py,sha256=O8fbhyxiIlVR7pTvBTXgQ2QTwfcZ2MkEIyDe_jp
101
101
  examples/_openaisdk/openai_groq.py,sha256=_5Ue1yEx0Gp6theFioB_D8kepR0UlqMU96PVGH-LkVY,7363
102
102
  examples/_openaisdk/openai_images.py,sha256=IZJY6h2Aq0HUWMwOWupwsSKVn11SVeiqSmzaiO0384c,5185
103
103
  examples/_openaisdk/openai_json.py,sha256=M4tq_IkzYbmtgbFilGQHmRdJhH0OltiwGk7cK7uc-sQ,1850
104
- examples/_openaisdk/openai_modelscope.py,sha256=bKBtXpEN3_YxXRwlQEBV1YmjzT396zxByqdB6nxaEGI,1291
104
+ examples/_openaisdk/openai_modelscope.py,sha256=sOtTaoy56nONKRzEFODa1Rg7YZd81ksEGQNuxL0H858,1390
105
105
  examples/_openaisdk/openai_moon.py,sha256=Y7RrB6SUi9taQOlA50nfGTpQa9ON6XmPmrxtL-hSL8M,1753
106
106
  examples/_openaisdk/openai_oi.py,sha256=8KJ62QgpAZdGWAoYN6AC9M9TrD8JQf7ZO_NAgXZywTo,1414
107
107
  examples/_openaisdk/openai_search.py,sha256=HKRTU6y9j_nUfZgrJt2eZ84d7TVT39WN-dcA_BFkVb4,937
108
108
  examples/_openaisdk/openai_sensenova.py,sha256=TnJpHcD1tG5w_x5DsgFgBRWrU8XUkww0uCebgNFfZDM,3216
109
- examples/_openaisdk/openai_siliconflow.py,sha256=UI8MyhXAt2hd4JMjbvVGwc8dA9ARSwf77TePGe08kP0,1402
109
+ examples/_openaisdk/openai_siliconflow.py,sha256=A2CMev2Bw5OwEJQNXGXQKrNs0DzlvrV4hvs7D8AsDKM,1386
110
110
  examples/_openaisdk/openai_step.py,sha256=rwXrGRs5CHhWpNl9oeIHltErp1Or_B3PVKNAoMGY-0c,1054
111
111
  examples/_openaisdk/openai_test.py,sha256=OdtT8qxKbh4S8H2T_zgMShn8VMQ_xSWttfqNSYT2hNw,1905
112
- examples/_openaisdk/openai_tune.py,sha256=rDmX_EMsAhD0gKJPQ8P0-icZQAjV6OMkMLX67uwJtvU,674
113
- examples/_openaisdk/openai_zhipu.py,sha256=Wt_fYOAtlRN24CNGfODwTg3MDVhE8CyyF2aN1Ye4ZjE,1629
112
+ examples/_openaisdk/openai_tune.py,sha256=D8n3mnlvVpDB_P11sErlibSyYtoFT5aKPUDQhtIANWE,1237
113
+ examples/_openaisdk/openai_zhipu.py,sha256=NplKPhtA5A8O7o9YkjL8YULzsBDBl341D8Gji7fCnw4,1628
114
114
  examples/_openaisdk/ppu.py,sha256=jPBufoYt2ZrqNKjgbHr49YZI5vBM-32eBYbhbYduhnY,602
115
115
  examples/_openaisdk/rag.py,sha256=NwNHhfi5FZ2XKCmsScjmM5cxCSfJuqx2jV-69ZXh244,1372
116
116
  examples/_openaisdk/rag_.py,sha256=rNTCO83JK6zqQAiY0vlHZRN5DQNT9_nCYtjeh8lTijU,121217
@@ -226,7 +226,7 @@ examples/文档智能/__init__.py,sha256=JKHlkF5vTvwFJnFLIT7raQxsvBoK12b8lvVz-c0
226
226
  meutils/__init__.py,sha256=X_i77Bvnt4-c4XUwuzGZTvXP2doPtTBqQsHl9DE455E,348
227
227
  meutils/_utils.py,sha256=WGToRl9L6zrvDAW4CLcP8XyQf0YUnVOqBVNdOz9xv84,1768
228
228
  meutils/cache_utils.py,sha256=6vz3G8wZ5iOXH91J-dp7ciU_BuLDzjjQUi4Hl8rrzOY,8425
229
- meutils/common.py,sha256=Fg73v_Uue5QiFVQGtZd1FDjb-eSts75jfcgrgsfnlEA,16513
229
+ meutils/common.py,sha256=4iFOr2iNyijMdtvJa-a32owTJNQjwTZ9cQ2xjX5vVw0,16542
230
230
  meutils/date_utils.py,sha256=--rh58qfa2iagLjgA0eh1myyvaZ0hgxHiy-WCsrNsuk,2497
231
231
  meutils/dist_utils.py,sha256=3U9VXuVf4_iWtXn6C5Dd5yDDDpzdZxZaokuQmuUcUwY,3640
232
232
  meutils/hash_utils.py,sha256=FwM5f1uuOJD6ePlC8nbzKd4J83ZmZ-If7v5Sv91FlQ4,2514
@@ -319,7 +319,7 @@ meutils/apis/baidu/bdaitpzs.py,sha256=50pe09ECSKRJnXhJVMZlwHhGGc4r8yQrVWjq6d6OK0
319
319
  meutils/apis/baidu/test.py,sha256=nb9ivelHIw84-d1V-MNGRpGoTpLFsNXPk-TTKpjwOfQ,2058
320
320
  meutils/apis/chatglm/__init__.py,sha256=uFuc9qY-ZjGqbsfcdGZkcEkhjATojWpzk2WXTTujc70,271
321
321
  meutils/apis/chatglm/glm_video.py,sha256=9LA9pyeIcDDHXGhJbZSJfjxrLeNC3SIuCKJwDIXRKR8,14015
322
- meutils/apis/chatglm/glm_video_api.py,sha256=h1Y7Sg3f98dJV2S9mGiBGGyLHXJHEKzgr8-RJYob8yM,2689
322
+ meutils/apis/chatglm/glm_video_api.py,sha256=itqXI0l9VbbH_f_NMT21_ju0x63Aah9DPWEZyG7XuHE,3865
323
323
  meutils/apis/chatglm/images.py,sha256=k2EtOpksgAfJb2MD6kLOKKem713kamTIinRmgr8_3n0,1974
324
324
  meutils/apis/chatglm/temp.py,sha256=zYe6JGUHVfb77T_TdNsdmpTs2D9OyqDTUEkblDAIoYY,17811
325
325
  meutils/apis/chatglm/x.py,sha256=lI86Cd6SN4noCN5HM9gRugcVmjHDtxDTV4m-7Bj61N0,24312
@@ -328,7 +328,7 @@ meutils/apis/hailuoai/demo.py,sha256=WTnDFL2HgVpAjcn5BljLrbf2y2aATkvvNy75zoEIQkc
328
328
  meutils/apis/hailuoai/hasha_new.py,sha256=1sD3fxmxYrEufmPaJZGAkYJoHKO85hfLXemnY-xYIO8,9101
329
329
  meutils/apis/hailuoai/music.py,sha256=S_oi-ZDbocTfbRgREdXtGx50xzUc1PCZGuxmr917E7M,265
330
330
  meutils/apis/hailuoai/upload.py,sha256=22S6W6hGQhUquVKqh7QCkXb6KHDl3iMKKi6Z0AJdFEI,6501
331
- meutils/apis/hailuoai/videos.py,sha256=rahr8dBCxV9ueY4n1OhEHU60MlpIGg_Omrsv4JBmj24,19334
331
+ meutils/apis/hailuoai/videos.py,sha256=mQHxIaSIejFetqIFQSV4-y9BKbNq9SgwgMRPbrZhRS0,19338
332
332
  meutils/apis/hailuoai/yy.py,sha256=gJvr7VDa0YPEUkZuETdmCFWWheylDPoMUg8gbS_SVw8,8937
333
333
  meutils/apis/hf/__init__.py,sha256=ZZoRl8yNYekoMhE__67XXBKNSYJaLgjtaa0netjJKUU,271
334
334
  meutils/apis/hf/got_ocr.py,sha256=pZURFpryDh_Ak6PNiARztOzYgkjVrfScJ5-0XzMBrzI,1776
@@ -362,15 +362,15 @@ meutils/apis/jiema/24mail.py,sha256=GUszRtoDe3T9q-X4embwT5YhcjgQ3XnkTJMKX93sCF4,
362
362
  meutils/apis/jiema/__init__.py,sha256=YBybggoDRYCNYcwJOypxR7MzfTjIhqO7BkGlTt7NDo4,271
363
363
  meutils/apis/jiema/yezi.py,sha256=26vhnA3lC5049Rqx-CHO-wyGKbdZAfvjEOG90W38cr0,3675
364
364
  meutils/apis/jimeng/__init__.py,sha256=a8CE_cOl9jqal0hycwaLm4Mnga8jmZlz9nCze_9bBqA,272
365
- meutils/apis/jimeng/common.py,sha256=CgBSShvSCYMy9zH3r449Plqu2hTFLzAUyz-ytc1esW4,8672
365
+ meutils/apis/jimeng/common.py,sha256=wIduTWmtJJQWIbxDMVvQ9BlDheiGbeROPNuulfiwiNY,8819
366
366
  meutils/apis/jimeng/doubao.py,sha256=vSEaTQHQdyhpHwCoq6CIikDZkUC9ncyTgKxGUC8cMCI,4345
367
367
  meutils/apis/jimeng/doubao_utils.py,sha256=XCHnvwfCOtJmPQuzDOCfKDMP_Pcqh-Y4w2h5f7Y2gzM,5999
368
368
  meutils/apis/jimeng/files.py,sha256=aFKg5iesJNVbXclaMR0yDpnKzjqW1yZxkyp9qrGTybo,5365
369
- meutils/apis/jimeng/images.py,sha256=6oSsXOTDaZ6qkZpWM2SjzE3mX4_Z_RQEJS4bEaDOWsU,3480
369
+ meutils/apis/jimeng/images.py,sha256=Ey4_9eU7i7VbgY3VSXKTq0REsydIU9MCva6rT7oMszg,4017
370
370
  meutils/apis/kling/__init__.py,sha256=pKz40SEjui1dhHBD-icyNTJOYhzLvxLxJCwszuH4vio,271
371
371
  meutils/apis/kling/api.py,sha256=AuVQ9URmrbTlz7dEv_kIyhA9fMTZPL9rF3Td6KxTIMA,2183
372
372
  meutils/apis/kling/images.py,sha256=FcCkvA4x1Po3SuugfQa8klT0Lrj7fq4N8kbzx6luUxI,5095
373
- meutils/apis/kling/kolors_virtual_try_on.py,sha256=H9qPHNeZII_Ajd3vQkc6zFw3SWfq17AJvLu0vKL-V4M,3093
373
+ meutils/apis/kling/kolors_virtual_try_on.py,sha256=iF_eyiofOQthUedl_u8H_u5mQ1CcisDqWSe2x9aiNQ4,3935
374
374
  meutils/apis/kling/kolors_virtual_try_on_web.py,sha256=UNjr-T9waujh2Gg8SSmnlfP3wXsZeYsDdWMabRQaP1E,3951
375
375
  meutils/apis/kling/videos.py,sha256=6z3w0gQHPe3BQNid4ZO2DfYSqvry44EMehG9U0qSB3E,2115
376
376
  meutils/apis/kling/鉴权.py,sha256=1kR67Mb0PxEo4ZxLVJZys4Iru9BUnS_Qqo2cbpLZNCU,842
@@ -392,7 +392,8 @@ meutils/apis/oneapi/common.py,sha256=dZeuimzuZXVP_bEMYfTdZUKVJePrOVB0fWYl2dwQwcI
392
392
  meutils/apis/oneapi/log.py,sha256=dOmyldX5DyJO7mMw4EzYorTIsdLKqZ3AZiV0z0tEpWE,1377
393
393
  meutils/apis/oneapi/token.py,sha256=32xR3fnsqctZLEj79RKPptQtUvBF8_QtILIbLWM3yx0,1805
394
394
  meutils/apis/oneapi/token_.py,sha256=3NPU1jbjiRbcXIkw8bANcnby3rXq4U2LjU_8W3PaE_4,2560
395
- meutils/apis/oneapi/user.py,sha256=Q4FhUwuUZlOpe9qh8P4ioTnGX3cEtBae39bSMciWDA8,3477
395
+ meutils/apis/oneapi/user.py,sha256=kFUZAs8IO1w2pyWJdjCKcGmHTzLJ8GgGOZEFzmy0TCM,3477
396
+ meutils/apis/oneapi/utils.py,sha256=NWnUSMSXSwYK4izP19zG7d3JLOTXDNvDp5-Meofayfs,736
396
397
  meutils/apis/pixverse/__init__.py,sha256=WiboEUfJ_3Hs2WI3OymEspx8_ZSTgMglxTJd97Qk7qo,271
397
398
  meutils/apis/pixverse/pixverse.py,sha256=dvnyYVUXCEY_cLnmX9lvq9TesvplCMCuJmmP7ShchQk,5534
398
399
  meutils/apis/proxy/__init__.py,sha256=by7_6GT3xeDjAWLLqbw8uvGaZ3RdprEW-zJ2DFLOdwA,271
@@ -461,7 +462,7 @@ meutils/async_task/tasks/vidu.py,sha256=obBG4_bf1oPIlLxeca1s1dGOnlyam2xYRy-8TrH3
461
462
  meutils/async_utils/__init__.py,sha256=IiJLRm258jkM4xAjUKOD7tVwHIemj7_1CuzXCu3TuQU,284
462
463
  meutils/async_utils/asyncer_.py,sha256=S1Sp5WZx_uKM7kJyRVYU8QhmbjOh61JmfN2IN_PJNX4,736
463
464
  meutils/async_utils/background.py,sha256=dl6UaMIFBZDB1uxSZzGFJdSnpt3Xo0flK7gwsokVy78,1464
464
- meutils/async_utils/common.py,sha256=WIQ7CVaZiaUeFA3IInM_4uaehJQiTdr_g3Q_8_yQrgc,4899
465
+ meutils/async_utils/common.py,sha256=bfZkUlQz21WHAh2W7SDxFtrvUYNBnRfVxIUgMmT7o1Q,5212
465
466
  meutils/async_utils/test.py,sha256=lkZdgSzzgVg8hYVcaBNEJ3KBvFTEfjbXZVvtknQZsRQ,1155
466
467
  meutils/caches/__init__.py,sha256=2JSElkhHh0vhUCvpBhTEsglw7WdkYj2HsAQutbqiBUM,242
467
468
  meutils/caches/redis_cache.py,sha256=AgiYUjKO8cfm6uuxQ2nWeaRmf9jkv2AIMvkbMvh_nkU,1139
@@ -485,25 +486,25 @@ meutils/cmds/subprocess_demo.py,sha256=oTeTIx8k6XwtOT6hZpmy9XNcRErzilqWcdoxcrVcH
485
486
  meutils/config_utils/__init__.py,sha256=GhgsStfGJDC8F_YgC6X5Jnj9HkgXJXxeYiJWTAkWKTo,271
486
487
  meutils/config_utils/manager.py,sha256=du-8e9Zdgnrn9e0b4GPR6FGtuQY7DLWNJqgkoU0TZ48,3147
487
488
  meutils/config_utils/lark_utils/__init__.py,sha256=Gf-5Y8uZiqY9jdbfiIboL92MQjOTOo0ZZ245PGxCbaY,297
488
- meutils/config_utils/lark_utils/common.py,sha256=WB1VKB3vdYyzqWosp5T-7uBIupNXl1L7SM3Lf5GRaOU,14274
489
+ meutils/config_utils/lark_utils/common.py,sha256=GsOQ0BbUeken7euMPsycJSxDloEqAqfMDzMeCCRg2AM,14278
489
490
  meutils/config_utils/lark_utils/demo.py,sha256=3g0Fs7oLaeW75T60gYWMLgyNg1OnfOjfHOno5NxNAio,293
490
491
  meutils/config_utils/lark_utils/x.py,sha256=MlMQGhehP9xMEgetxVCX68XFaosfKoW1JA5cZ3JqN2w,1857
491
492
  meutils/crawlers/__init__.py,sha256=TBU4xA-IOsHV-0yIkW7YXxn_QT7TT8NncqxO7IykEfs,271
492
493
  meutils/data/SimHei.ttf,sha256=-XEnekS5yHP_URkT4XBI2w22ylV-KxudhkeIYFbrILA,10062565
493
- meutils/data/VERSION,sha256=G8ZMQCZA5EAwhPGJVQBvtQZWXMSTZOq_97fy0RzlLfw,19
494
+ meutils/data/VERSION,sha256=zqr6yaz0tAmphjpfJAUxC29MpvkVkCUkq8ScIUfBEv4,19
494
495
  meutils/data/_FLAG,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
495
496
  meutils/data/_SUCCESS,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
496
497
  meutils/data/__init__.py,sha256=Hfwkkxs4zHqKhxht0YrhS566a9P5axtmgNvM5wF8ceQ,243
497
498
  meutils/data/coordinate.py,sha256=VbFtcdho0XG4j-rZD0DgqcIf2_LR2LlbLtfhLXbxiDY,600
498
499
  meutils/data/cowboy-hat-face.webp,sha256=AHi2t-WclDVKWgGEe-oZzI4xKACNlgGWUgd622y0K-E,24814
499
500
  meutils/data/oneapi/FOOTER.md,sha256=UHv39ey2ICocxPoCj-UI_PWyyWxZYLS8zG1inqtWNQ4,448
500
- meutils/data/oneapi/NOTICE.md,sha256=kq6qJfbbJkTc00BjgvPGvNHFjO9EDxYuHzDly9annV8,4762
501
+ meutils/data/oneapi/NOTICE.md,sha256=0R7Gnh2yE9p_MRFx-a3Z4-UgRCJ3USCl0b86cOcc82Q,5220
501
502
  meutils/data/oneapi/__init__.py,sha256=cm2Kq2RDXPfdVMWcoBB77bu00zJpTDd21Rgc6bTlhws,398
502
503
  meutils/db/__init__.py,sha256=HR99rqxoFTWXUHDhLVl33tzIn8M86gigHLmEzOKH1Ec,7637
503
504
  meutils/db/mongo.py,sha256=B-B_t939rxtnNGt0PxhivjIUwinmHPzLUpXsjUIaTkQ,2337
504
505
  meutils/db/neo4j.py,sha256=eYd3jP3COWlOFBaF20UXphW67-HwlZ1t0Q34Cp-j6o0,2168
505
- meutils/db/orm.py,sha256=dyV8tlVDUw_8tS6uiz_nyPzpNg8UX-ob7zarLVfvvqE,4060
506
- meutils/db/redis_db.py,sha256=KGUByU-6z4GwVyZMgtHxr6d5b9caToS6wWKxQlSE1uY,2404
506
+ meutils/db/orm.py,sha256=MFT2_Cruao_vvVLKC68Pu2PC6vgEnvH4vJhivNhlGoA,5094
507
+ meutils/db/redis_db.py,sha256=hZ3oicep_EhmwuoY2Eb5l0igeaNzIhvUd_nveodXqNU,2514
507
508
  meutils/decorators/__ai.py,sha256=QAz005-Wa-sp0YUUoelaR1pMbt6hPSBML5j0My6TbEI,1681
508
509
  meutils/decorators/__init__.py,sha256=hgpHo40pfFWYXEnrW74o8W7SIfCD0GHr3gnujBw1hIQ,3284
509
510
  meutils/decorators/cache.py,sha256=-sqhCuiSYZK1UtsRw7bBog19G65O9N27DVTAp_nlBk4,2972
@@ -515,6 +516,7 @@ meutils/decorators/decorator_demo.py,sha256=JLCulTW04uYHzLg6jRxVseaAdU-YeyL8Z2p-
515
516
  meutils/decorators/demo.py,sha256=EZ9uYz5zGdAqUxa9l2C8gTZqdjY5Uw2uZsAUa9tZXq0,710
516
517
  meutils/decorators/fastapi_decorator.py,sha256=TH5XtzALxDOFVJsK9XMx9xwV9_n9u7cGa9pwHUR218Q,3428
517
518
  meutils/decorators/feishu.py,sha256=0mJSJXIQSc2qYafZzeDPb6XhH6fL8u0pUI9bhOljn1M,3634
519
+ meutils/decorators/polling.py,sha256=FLkV-OGTJBfDk8xy608TS_Nx9fc3GHx3SET6zmjdg7o,1153
518
520
  meutils/decorators/retry.py,sha256=PV42YxBzzf5r8MKjzfkSyV3r6JiH9R_OBIo_1W2tPqg,6242
519
521
  meutils/decorators/scheduler.py,sha256=NHeUXABx8YpHbxASqAJWEKa3i1AcyvIGcUW461glYKY,1678
520
522
  meutils/decorators/schedulers.py,sha256=pZrqMVXl7levZdUgUYHfjwA8oJIPJvbVcQw5CwhuiWU,2664
@@ -574,6 +576,7 @@ meutils/llm/completions/cp.py,sha256=tGf3umHKXDH0KuTfN7BLr8yAvN6MYWLYR5UVaJkJs0c
574
576
  meutils/llm/completions/delilegal.py,sha256=mr53ps7I33SC8Fjy4rma-xoNF-mLgwdZfHgdSOyLtQY,5131
575
577
  meutils/llm/completions/dify.py,sha256=dqL_8uxAp2d8M00pkyh2I30tflwi4pUyX-V6pwe3_BA,3048
576
578
  meutils/llm/completions/kimi.py,sha256=TSkLObebIAb_oivOMq3aKx9qoXcMy611_g2yIKex9eo,1541
579
+ meutils/llm/completions/modelscope.py,sha256=umPlJuHSL2RR0oNdTIAqts8iqEmGp_MR6Vh49g-UZuc,271
577
580
  meutils/llm/completions/oi.py,sha256=DmvzxJfdLA_I3MWcULhFtiUdo90j7V2dLvYvmZ-Tm9U,293
578
581
  meutils/llm/completions/rag.py,sha256=cpQ1aZX2QI1QDfFpODTxWHPYglK6_3qrlUM_KHLBNhc,1112
579
582
  meutils/llm/completions/tryblend.py,sha256=NfVRktn1QiE2k60PzEI-LmKuxZCc7mtL_KlsrVcZg4k,8957
@@ -695,15 +698,15 @@ meutils/schemas/task_types.py,sha256=iLIUIfD5fv3_ByQVhSq-p4Wv65yMtVbNwFievRfTsbI
695
698
  meutils/schemas/translator_types.py,sha256=xufNQeyim7RhkzAK_J5_JchZfqaUBDXFwMtrPUu1xzI,627
696
699
  meutils/schemas/tripo3d_types.py,sha256=mQF65HwHYmczRgAIuXK5hGxWDWNYDq-Xu9pja7Dwy4o,1452
697
700
  meutils/schemas/tryblend_types.py,sha256=glZ0diRJvZmfQotcCWYBA832inihy8TvVWxWZ64CzWA,27793
698
- meutils/schemas/video_types.py,sha256=r4_gJPzmnX6ymCMd0RIqL8Hlx8BHpcwRh77-GA59Iu4,512
701
+ meutils/schemas/video_types.py,sha256=UxKg4BT5WGHdzRDqnumWX3dDmZ3M7s6baWqVn_pETtk,1783
699
702
  meutils/schemas/vidu_types.py,sha256=F1ysI-LvO7mlv0uGkqQ_fyUD5g6qs027SV50g-bWdyo,5423
700
703
  meutils/schemas/wechat_types.py,sha256=XtIJpMNBzkqBcU68Qno8bnUfHzDOXwFNCIL-6VYQKOA,9260
701
704
  meutils/schemas/yuanbao_types.py,sha256=ZmB-7_eAuTU3QDonNgy0vcVP4YQNwA5yJ8G4mvfOmUE,11966
702
705
  meutils/schemas/db/__init__.py,sha256=m1maURVoM6dIW0yt6ELZrZTzULtkHybVOSXtHNJRVIU,272
703
- meutils/schemas/db/oneapi_types.py,sha256=Jtt1hXRS5C3DHf_wrkjklVcdPllsAFrzvLq9JLuTdtc,2858
706
+ meutils/schemas/db/oneapi_types.py,sha256=U_foX82tejUT7efCqyMMTLfq-C4LXMXsmwz5pfldwNw,3734
704
707
  meutils/schemas/oneapi/__init__.py,sha256=uevbi3QAvFzN9WPbx9bYKTDyKt7P2ueZO6W0nSiD0sk,289
705
708
  meutils/schemas/oneapi/_types.py,sha256=ClvAaNy3SahEN8lL8KEErHTD6HANelXUeKc_3iLfosQ,1488
706
- meutils/schemas/oneapi/common.py,sha256=AQxO-aL-Ov1EH84EOEzRSgjF5wxMa0K_KK-NkbMre4o,23238
709
+ meutils/schemas/oneapi/common.py,sha256=dvnibDVAtLKHurh2zzHC5E4vJCtkY20FRrVT7KGJUQU,23443
707
710
  meutils/schemas/oneapi/icons.py,sha256=T7W5gInBJoHe62wzMimbG_UI-wn3_-rmQ1O4O2z-CQY,1089
708
711
  meutils/schemas/oneapi/model_group_info.py,sha256=rGtflYJuFIjk5MsVEvK9JUR4IciX8jfErqeLqf8DIlQ,1586
709
712
  meutils/schemas/oneapi/model_info.py,sha256=_uwKEPIIqm7ZYfhmpxtXB2QNsS83SpJY-OaBzvogC9w,772
@@ -728,7 +731,7 @@ meutils/serving/fastapi/utils.py,sha256=H5lQSU7-IfJ2w9FWbaJ34LCbQSaNTFSU7z1pG5wZ
728
731
  meutils/serving/fastapi/__demo/__init__.py,sha256=TxXjqy2ZxAkadPxqN92Xq3ixCUYkQ-4X6UxsReRpHhc,271
729
732
  meutils/serving/fastapi/__demo/异步任务.py,sha256=60_ruA4ljlTLIP5zxcejmm9WJ0SDuqpsO49SZK9vA_s,1444
730
733
  meutils/serving/fastapi/dependencies/__init__.py,sha256=shI1EgfH4gFuajmHGlzt_ArdDrFq8DqnUg7ycpFuYl0,245
731
- meutils/serving/fastapi/dependencies/auth.py,sha256=Q2EnVhoQo8sXnefVAdckKJ72R1SuZnMXIBvVK6ryu20,859
734
+ meutils/serving/fastapi/dependencies/auth.py,sha256=oCqzC44XsBLTkRu36yAvvR2JmluaubdEFd18FYFaLRk,1645
732
735
  meutils/serving/fastapi/exceptions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
733
736
  meutils/serving/fastapi/exceptions/http_error.py,sha256=JtwHe_1OfJ0fs3F-zVIDvvx4PRBYFYe7gjbbwBk2SWc,2255
734
737
  meutils/serving/fastapi/exceptions/validation_error.py,sha256=Q71wYfzGsVjLA-SQ3R5a8iT0kDG01mwriVUXHhvsTv0,1234
@@ -831,9 +834,9 @@ meutils/tools/seize.py,sha256=nOKAS63w-Lbi48I0m2MPhdsokUTwxco0laPxYVmW4Mw,1064
831
834
  meutils/tools/service_monitor.py,sha256=ibsLtBN2g2DL7ZnLJ8vhiZOiOcqTAyx711djDdBK-3M,1255
832
835
  meutils/tools/sys_monitor.py,sha256=6MoyzrItqDUOSjfHcMJmMofQkEPTW36CT_aKui0rg84,429
833
836
  meutils/tools/token_monitor.py,sha256=Np-YK-R4P4IPAXyZvMxwvXI4sFmNJQAQK1lSegNaYpA,997
834
- MeUtils-2024.12.23.16.35.5.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
835
- MeUtils-2024.12.23.16.35.5.dist-info/METADATA,sha256=t10CPxPoSC3aUGunUktYRliwB4QyocJCNcn0GPqangI,6202
836
- MeUtils-2024.12.23.16.35.5.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
837
- MeUtils-2024.12.23.16.35.5.dist-info/entry_points.txt,sha256=lufZlBHRqqZKdY-ZQJ4CSZb0qhV5hQC37egZna9M7ug,357
838
- MeUtils-2024.12.23.16.35.5.dist-info/top_level.txt,sha256=cInfxMmkgNOskurdjwP5unau4rA7Uw48nu07tYhS7KY,22
839
- MeUtils-2024.12.23.16.35.5.dist-info/RECORD,,
837
+ MeUtils-2024.12.26.22.14.1.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
838
+ MeUtils-2024.12.26.22.14.1.dist-info/METADATA,sha256=_P4-wAoIdxW8us12y6oIFwNqjos1ZKHmW7GWGIFbTLE,6202
839
+ MeUtils-2024.12.26.22.14.1.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
840
+ MeUtils-2024.12.26.22.14.1.dist-info/entry_points.txt,sha256=lufZlBHRqqZKdY-ZQJ4CSZb0qhV5hQC37egZna9M7ug,357
841
+ MeUtils-2024.12.26.22.14.1.dist-info/top_level.txt,sha256=cInfxMmkgNOskurdjwP5unau4rA7Uw48nu07tYhS7KY,22
842
+ MeUtils-2024.12.26.22.14.1.dist-info/RECORD,,
examples/_openaisdk/4v.py CHANGED
@@ -54,7 +54,7 @@ messages = [
54
54
  # "text": f"解释 {base64_image}"
55
55
  "text":
56
56
  """
57
- 解释下
57
+ 一步一步思考,这个极限的,结果是多少
58
58
  """
59
59
  },
60
60
  # {"type": "image_url", "image_url": {"url": f"data:image/jpeg;base64,{base64_image}"}},
@@ -76,7 +76,9 @@ response = openai.chat.completions.create(
76
76
  # model='gpt-4o',
77
77
  # model='gpt-4o-2024-08-06',
78
78
  # model="deepseek-ai/deepseek-vl2",
79
- model="doubao-vision-pro-32k",
79
+ # model="doubao-vision-pro-32k",
80
+ # model="qvq-72b-preview",
81
+ model="gemini-2.0-flash",
80
82
 
81
83
  # model="gemini-pro-vision",
82
84
  # model='gemini-1.5-flash-latest',
@@ -98,7 +100,7 @@ response = openai.chat.completions.create(
98
100
  # model='kimi', # ocr
99
101
 
100
102
  messages=messages,
101
- max_tokens=100,
103
+ max_tokens=1000,
102
104
  temperature=0,
103
105
  # response_format={"type": "json_object"}
104
106
  )
@@ -196,6 +196,11 @@ if __name__ == '__main__':
196
196
  "o1"
197
197
  ]
198
198
 
199
+ models = [
200
+ # 'doubao-pro-128k',
201
+ # "ai-search-pro:scholar",
202
+ "ppu-1"
203
+ ]
199
204
  # check_models(models, api_key=os.getenv("OPENAI_API_KEY"))
200
205
  check_models(models, api_key=os.getenv("OPENAI_API_KEY_OPENAI"))
201
206
 
@@ -10,6 +10,7 @@
10
10
  """
11
11
  Qwen/Qwen2.5-Coder-32B-InstructQwen/Qwen2.5-Coder-14B-InstructQwen/Qwen2.5-Coder-7B-InstructQwen/Qwen2.5-72B-InstructQwen/Qwen2.5-32B-InstructQwen/Qwen2.5-14B-InstructQwen/Qwen2.5-7B-Instruct
12
12
 
13
+ Qwen/QVQ-72B-Preview
13
14
  """
14
15
  import os
15
16
 
@@ -29,9 +30,12 @@ print(client.models.list())
29
30
  try:
30
31
  completion = client.chat.completions.create(
31
32
  # model="step-1-8k",
32
- model="Qwen/QwQ-32B-Preview",
33
+ # model="Qwen/QwQ-32B-Preview",
34
+ # model="Qwen/QVQ-72B-Preview",
35
+ model="qwen/qvq-72b-preview",
36
+
33
37
  messages=[
34
- {"role": "user", "content": "讲个故事"}
38
+ {"role": "user", "content": "你是谁"}
35
39
  ],
36
40
  # top_p=0.7,
37
41
  top_p=None,
@@ -30,8 +30,8 @@ model = "01-ai/Yi-1.5-6B-Chat"
30
30
  # model = "meta-llama/Meta-Llama-3.1-8B-Instruct"
31
31
  # model = "meta-llama/Meta-Llama-3.1-70B-Instruct"
32
32
  # model = 'meta-llama/Meta-Llama-3.1-405B-Instruct'
33
+ model = "deepseek-ai/DeepSeek-V2.5"
33
34
 
34
- model = "meta-llama/Llama-3.3-70B-Instruct".lower()
35
35
 
36
36
  # api black-forest-labs/FLUX.1-schnell
37
37
  messages = [
@@ -9,13 +9,12 @@
9
9
  # @Description :
10
10
 
11
11
 
12
-
13
-
14
12
  from meutils.pipe import *
15
13
  from openai import OpenAI
16
14
 
17
15
  client = OpenAI(
18
-
16
+ base_url="https://all.chatfire.cn/kimi/v1",
17
+ api_key="eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ1c2VyLWNlbnRlciIsImV4cCI6MTc0MTQ4ODQyMiwiaWF0IjoxNzMzNzEyNDIyLCJqdGkiOiJjdGI1azloMDUyMmt2YjVnM2Z2ZyIsInR5cCI6InJlZnJlc2giLCJhcHBfaWQiOiJraW1pIiwic3ViIjoiY3RiNWs5aDA1MjJrdmI1ZzNmdWciLCJzcGFjZV9pZCI6ImN0YjVrOWgwNTIya3ZiNWczZnUwIiwiYWJzdHJhY3RfdXNlcl9pZCI6ImN0YjVrOWgwNTIya3ZiNWczZnRnIn0.93kaSswYJR3Bk9QfDKdluh1pzKNBVmISkhK3niV5UpSAM7K5-jGg_thRjMxFEbZDETksMxGL9-UOU7nJCH0GeQ"
19
18
  )
20
19
 
21
20
  completion = client.chat.completions.create(
@@ -27,9 +26,13 @@ completion = client.chat.completions.create(
27
26
  model="gpt-4-turbo",
28
27
 
29
28
  messages=[
30
- {"role": "user", "content": "1+1"},
29
+ {"role": "user", "content": "你是谁"},
31
30
  ],
32
31
  max_tokens=10000
33
32
  )
34
33
 
35
34
  print(completion)
35
+ #
36
+ #
37
+ # a7yu5a3je@vv.beitekeji.run----9z1kdi0k----emgcbo1m76@163.com
38
+ # maginfic
@@ -16,9 +16,9 @@ from openai import OpenAI, APIStatusError
16
16
  os.getenv("ZHIPUAI_API_KEY")
17
17
 
18
18
  client = OpenAI(
19
- base_url="https://free.chatfire.cn/v1"
20
- # api_key="fdadb5b1088115cb5311c3a74b9ea6ae.9CXVP3fr4UIPNYMO",
21
- # base_url="https://open.bigmodel.cn/api/paas/v4/"
19
+ # base_url="https://free.chatfire.cn/v1",
20
+ api_key="e21bd630f681c4d90b390cd609720483.WSFVgA3KkwNCX0mN",
21
+ base_url="https://open.bigmodel.cn/api/paas/v4/"
22
22
 
23
23
  # api_key="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI3YmFmYWQzYTRmZDU0OTk3YjNmYmNmYjExMjY5NThmZiIsImV4cCI6MTczODAyNDg4MiwibmJmIjoxNzIyNDcyODgyLCJpYXQiOjE3MjI0NzI4ODIsImp0aSI6IjY5Y2ZiNzgzNjRjODQxYjA5Mjg1OTgxYmY4ODMzZDllIiwidWlkIjoiNjVmMDc1Y2E4NWM3NDFiOGU2ZmRjYjEyIiwidHlwZSI6InJlZnJlc2gifQ.u9pIfuQZ7Y00DB6x3rbWYomwQGEyYDSE-814k67SH74",
24
24
  # base_url="https://any2chat.chatfire.cn/glm/v1"
@@ -26,8 +26,8 @@ client = OpenAI(
26
26
 
27
27
  try:
28
28
  completion = client.chat.completions.create(
29
- # model="glm-4-flash",
30
- model="xxxxxxxxxxxxx",
29
+ model="glm-4-flash",
30
+ # model="xxxxxxxxxxxxx",
31
31
  messages=[
32
32
  {"role": "user", "content": "讲个故事"}
33
33
  ],
@@ -14,6 +14,8 @@ from meutils.notice.feishu import send_message as _send_message
14
14
  from meutils.config_utils.lark_utils import get_next_token_for_polling
15
15
 
16
16
  from meutils.schemas.video_types import VideoRequest
17
+ from meutils.schemas.image_types import ImageRequest, ImagesResponse
18
+ from meutils.str_utils.regular_expression import parse_url
17
19
 
18
20
  send_message = partial(
19
21
  _send_message,
@@ -60,6 +62,28 @@ async def get_task(task_id, api_key):
60
62
  )
61
63
  return response
62
64
 
65
+
66
+ async def generate(request: ImageRequest, n: int = 30): # 兼容dalle3
67
+ request.model = "cogvideox-flash"
68
+ # request.duration = 10 # 模型后缀
69
+
70
+ url = None
71
+ if urls := parse_url(request.prompt):
72
+ url = urls[-1]
73
+ request.prompt = request.prompt.replace(url, "")
74
+
75
+ request = VideoRequest(image_url=url, **request.model_dump(exclude_none=True))
76
+ task_response = await create_task(request)
77
+
78
+ for i in range(n):
79
+ await asyncio.sleep(max(1., n / (i + 1)))
80
+ response = await get_task(task_response.id, task_response.system_fingerprint)
81
+
82
+ logger.debug(response)
83
+ if response.task_status == "SUCCESS" or response.video_result:
84
+ return ImagesResponse(data=response.model_dump()["video_result"])
85
+
86
+
63
87
  # {
64
88
  # "model": "cogvideox",
65
89
  # "request_id": "8868902201637896192",
@@ -78,7 +102,15 @@ async def get_task(task_id, api_key):
78
102
 
79
103
  # VideoResult
80
104
  if __name__ == '__main__':
81
-
82
105
  api_key = "e21bd630f681c4d90b390cd609720483.WSFVgA3Kk1wNCX0mN"
83
- r = arun(create_task(VideoRequest(), api_key=api_key))
106
+ api_key = "7d10426c06afa81e8d7401d97781249c.DbqlSsicRtaUdKXI" # 新号
107
+
108
+ request = VideoRequest(
109
+ model='cogvideox-flash'
110
+ )
111
+ # r = arun(create_task(request, api_key=api_key))
84
112
  pass
113
+
114
+ request = ImageRequest(prompt="https://oss.ffire.cc/files/kling_watermark.png 让这个女人笑起来")
115
+
116
+ arun(generate(request, n=30))
@@ -335,7 +335,7 @@ async def get_task(task_id: str, token: str):
335
335
  response = VideoResponse(
336
336
  task_id=task_id,
337
337
  base_resp=data.get('statusInfo', {}),
338
- videos=data.get('data', {}).get("videos")
338
+ videos=(data.get('data') or {}).get("videos")
339
339
  )
340
340
  return response
341
341
 
@@ -89,8 +89,8 @@ async def get_credit(token):
89
89
  async def check_token(token, threshold: int = 1):
90
90
  try:
91
91
  response = await get_credit(token)
92
+ logger.debug(bjson(response))
92
93
  credits = sum(response['data']['credit'].values())
93
- # logger.debug(credits)
94
94
  return credits >= threshold
95
95
  except Exception as e:
96
96
  return False
@@ -244,8 +244,11 @@ async def create_draft_content(request: ImageRequest, token: str):
244
244
  if __name__ == '__main__':
245
245
  token = "693701c43e477b7c405cc7e2fef0ddbd"
246
246
  token = "eb4d120829cfd3ee957943f63d6152ed"
247
- arun(get_credit(token))
248
- # arun(check_token(token))
247
+ token = "dcf7bbc31faed9740b0bf748cd4d2c74"
248
+ token = "38d7d300b5e0a803431ef88d8d2acfef"
249
+ token = "916fed81175f5186a2c05375699ea40d"
250
+ # arun(get_credit(token))
251
+ arun(check_token(token))
249
252
 
250
253
  # arun(get_upload_token(token))
251
254
  #
@@ -70,6 +70,7 @@ async def get_task(task_id, token):
70
70
  response = await client.post(url, json=payload)
71
71
  response.raise_for_status()
72
72
  data = response.json()
73
+ logger.debug(bjson(data))
73
74
  # {'ret': '1015', 'errmsg': 'login error', 'systime': '1734524280', 'logid': '20241218201800AC3267447B287E9E6C46', 'data': None}
74
75
  item_list = (data.get("data") or {}).get(task_id, {}).get("item_list")
75
76
  image_data = map(lambda x: x.get("image", {}).get("large_images"), item_list)
@@ -84,13 +85,23 @@ async def get_task(task_id, token):
84
85
  )
85
86
 
86
87
 
88
+ async def generate(request: ImageRequest):
89
+ task_response = await create_task(request)
90
+ for i in range(1, 10):
91
+ await asyncio.sleep(max(10 / i, 1))
92
+ response = await get_task(task_response.task_id, task_response.system_fingerprint)
93
+ logger.debug(response)
94
+ if data := response.data:
95
+ return {"data": data}
96
+
97
+
87
98
  if __name__ == '__main__':
88
- token = "693701c43e477b7c405cc7e2fef0ddbd"
99
+ token = "eb4d120829cfd3ee957943f63d6152ed"
89
100
 
90
- request = ImageRequest(prompt="一个漂亮的姑娘", size="1024x1024")
101
+ # request = ImageRequest(prompt="做一个圣诞节的海报", size="1024x1024")
91
102
  # request = ImageRequest(prompt="https://oss.ffire.cc/files/kling_watermark.png 让她带上墨镜", size="1024x1024")
92
103
 
93
- arun(create_task(request))
104
+ # task = arun(create_task(request))
94
105
 
95
106
  # task_id = "10040025470722"
96
107
 
@@ -103,3 +114,7 @@ if __name__ == '__main__':
103
114
  # task_id = "10082971040514"
104
115
  #
105
116
  # arun(get_task(task_id, token))
117
+
118
+ # arun(get_task(task.task_id, task.system_fingerprint))
119
+
120
+ arun(generate(ImageRequest(prompt="做一个圣诞节的海报")))
@@ -10,10 +10,13 @@
10
10
  import jwt
11
11
 
12
12
  from meutils.pipe import *
13
- from meutils.schemas.task_types import TaskResponse ############# 根据这个重构
13
+ from meutils.schemas.task_types import TaskResponse
14
+ from meutils.schemas.image_types import ImageRequest, ImagesResponse
15
+
14
16
  from meutils.schemas.kling_types import API_BASE_URL, TryOnRequest, TaskResponse
15
17
  from meutils.config_utils.lark_utils import get_next_token_for_polling
16
18
  from meutils.decorators.retry import retrying
19
+ from meutils.str_utils.regular_expression import parse_url
17
20
 
18
21
  FEISHU_URL = "https://xchatllm.feishu.cn/sheets/GYCHsvI4qhnDPNtI4VPcdw2knEd?sheet=cjTepf"
19
22
 
@@ -39,7 +42,7 @@ def encode_jwt_token(token):
39
42
  ######################################################################
40
43
  @alru_cache(ttl=3600)
41
44
  @retrying(title=__name__)
42
- async def create_task(request: TryOnRequest, token: Optional[str] = None): ###### 所有的 TaskResponse标准化
45
+ async def create_task(request: TryOnRequest, token: Optional[str] = None):
43
46
  token = token or await get_next_token_for_polling(FEISHU_URL)
44
47
  token = encode_jwt_token(token)
45
48
 
@@ -68,8 +71,23 @@ async def get_task(task_id, token):
68
71
  return TaskResponse(**data)
69
72
 
70
73
 
74
+ async def generate(request: ImageRequest):
75
+ human_image, cloth_image = parse_url(request.prompt) # 两张图片
76
+
77
+ request = TryOnRequest(human_image=human_image, cloth_image=cloth_image)
78
+ task_response = await create_task(request)
79
+
80
+ for i in range(1, 10):
81
+ await asyncio.sleep(max(10 / i, 1))
82
+
83
+ response = await get_task(task_response.data.task_id, task_response.system_fingerprint)
84
+ if task_result := response.data.task_result:
85
+ images = task_result.get('images', [])
86
+ return ImagesResponse(data=images)
87
+
88
+
71
89
  if __name__ == '__main__':
72
- request = TryOnRequest()
90
+ # request = TryOnRequest()
73
91
  # arun(create_task(request))
74
92
  # {
75
93
  # "code": 0,
@@ -83,5 +101,11 @@ if __name__ == '__main__':
83
101
  # }
84
102
  # }
85
103
 
86
- token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJkMmU1NmZkY2ZiODY0MmZmYWEyMjZlZWIxNzY4MzMyMiIsImV4cCI6MTczMzE4OTI4OSwibmJmIjoxNzMzMTAyODg0fQ.YjB792REbuFaUoyUXvd5bpI76_0PBWawDHDjPHOBA5Q'
87
- arun(get_task("CjiL9mdJhswAAAAAAG2C6g", token))
104
+ # token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJkMmU1NmZkY2ZiODY0MmZmYWEyMjZlZWIxNzY4MzMyMiIsImV4cCI6MTczMzE4OTI4OSwibmJmIjoxNzMzMTAyODg0fQ.YjB792REbuFaUoyUXvd5bpI76_0PBWawDHDjPHOBA5Q'
105
+ # arun(get_task("CjiL9mdJhswAAAAAAG2C6g", token))
106
+
107
+ human_image: str = "https://oss.ffire.cc/files/try-on.png"
108
+ cloth_image: str = "https://oss.ffire.cc/files/x.png"
109
+
110
+ request = ImageRequest(prompt=f"{human_image}\n{cloth_image}")
111
+ arun(generate(request))
@@ -91,10 +91,10 @@ async def put_user(payload, add_money: float = 0):
91
91
 
92
92
  if __name__ == '__main__':
93
93
  # api-key => get_one_log => get_user => put_user
94
- # arun(get_user(814))
94
+ arun(get_user(814))
95
95
  # payload = arun(get_user(924))
96
96
  # print(payload)
97
97
  # arun(put_user(payload, -1))
98
98
 
99
- arun(get_api_key_log('sk-gpoH1z3G6nHovD8MY40i6xx5tsC1vbh7B3Aao2jmejYNoKhv'))
100
- # arun(get_user_money("sk-1UNhOrvuJ4PeBBpsB202577c14114f7fA234F32d3e8dF767"))
99
+ # arun(get_api_key_log('sk-gpoH1z3G6nHovD8MY40i6xx5tsC1vbh7B3Aao2jmejYNoKhv'))
100
+ # arun(get_user_money("sk-gpoH1z3G6nHovD8MY40i6xx5tsC1vbh7B3Aao2jmejYNoKhv"))
@@ -0,0 +1,32 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding: utf-8 -*-
3
+ # @Project : AI. @by PyCharm
4
+ # @File : utils
5
+ # @Time : 2024/12/25 18:13
6
+ # @Author : betterme
7
+ # @WeChat : meutils
8
+ # @Software : PyCharm
9
+ # @Description :
10
+
11
+ from meutils.pipe import *
12
+
13
+ from meutils.caches.redis_cache import cache
14
+ from meutils.db.orm import select_first
15
+ from meutils.schemas.db.oneapi_types import OneapiTask, OneapiUser, OneapiToken
16
+
17
+
18
+ # engine
19
+
20
+
21
+ @cache()
22
+ async def token2user(api_key: str):
23
+ logger.debug(api_key)
24
+ filter_kwargs = {
25
+ "key": api_key[3:],
26
+ }
27
+
28
+ return await select_first(OneapiToken, filter_kwargs)
29
+
30
+
31
+ if __name__ == '__main__':
32
+ arun(token2user('sk-q3uMFm0TFWi5lBQVhGwAWKup28j4omr9vThL4V5ynvdWdeZ8'))
@@ -10,7 +10,7 @@
10
10
 
11
11
  import inspect
12
12
  import asyncio
13
- from typing import Union, Any, Coroutine, AsyncIterator, Iterator, Iterable, AsyncIterable
13
+ from typing import Union, Any, Coroutine, AsyncIterator, Iterator, Iterable, AsyncIterable, Optional, Callable
14
14
 
15
15
  import numpy as np
16
16
  import pandas as pd
@@ -146,6 +146,16 @@ async def arequest(url, method='get', payload=None, **client_params):
146
146
  return resp
147
147
 
148
148
 
149
+ async def poll(fn, n: int = 30, sleep_fn: Optional[Callable] = None):
150
+ if sleep_fn is None:
151
+ sleep_fn = lambda i: max(n / (i + 1), 1) # 预估大概 2~3 *n
152
+
153
+ for i in range(n):
154
+ await asyncio.sleep(sleep_fn(i))
155
+ if _ := await fn(): # 跳出
156
+ return _
157
+
158
+
149
159
  if __name__ == '__main__':
150
160
  from meutils.pipe import *
151
161
 
meutils/common.py CHANGED
@@ -31,6 +31,8 @@ import warnings
31
31
  warnings.filterwarnings("ignore")
32
32
 
33
33
  import functools
34
+ from functools import wraps
35
+
34
36
  import argparse
35
37
  import traceback
36
38
  import threading
@@ -382,5 +382,5 @@ if __name__ == '__main__':
382
382
  # with timer():
383
383
  # token = arun(get_next_token(feishu_url))
384
384
 
385
- FEISHU_URL = "https://xchatllm.feishu.cn/sheets/XfjqszII3hZAEvtTOgecOgv2nye?sheet=c14b34"
386
- print(arun(get_series(FEISHU_URL)))
385
+ # FEISHU_URL = "https://xchatllm.feishu.cn/sheets/XfjqszII3hZAEvtTOgecOgv2nye?sheet=c14b34"
386
+ # print(arun(get_series(FEISHU_URL)))
meutils/data/VERSION CHANGED
@@ -1 +1 @@
1
- 2024.12.23.16.35.05
1
+ 2024.12.26.22.14.01
@@ -31,6 +31,16 @@
31
31
 
32
32
  </details>
33
33
 
34
+ ## 2024-12-24
35
+ - 上线新模型
36
+ - doubao-pro-256k:相比Doubao-pro-128k/240628,长文任务效果显著提升10%以上,要点提取、字数遵循、多轮对话上文记忆等能力大幅提升
37
+ - [qvq-72b-preview](https://mp.weixin.qq.com/s/WzL7tbFUZOgE2IFMeHT-sQ):Qwen开源视觉推理模型QVQ,更睿智地看世界!
38
+
39
+ - 增加gemini-2.0配额,支持多模型,默认分组可用
40
+ - "gemini-2.0-flash"
41
+ - "gemini-2.0-flash-exp"
42
+
43
+
34
44
  ## 2024-12-20
35
45
  - 修复SunoV4无水印版本
36
46
  - [异步任务接口文档](https://api.chatfire.cn/docs/api-246593467)
meutils/db/orm.py CHANGED
@@ -97,6 +97,16 @@ async def update_or_insert(entity, filter_kwargs: Optional[dict] = None, update_
97
97
  return data
98
98
 
99
99
 
100
+ async def select_first(entity, filter_kwargs: Optional[dict] = None):
101
+ async with AsyncSession(engine) as session:
102
+ statement = select(entity).filter_by(**filter_kwargs)
103
+
104
+ if result := await session.exec(statement):
105
+ _ = result.first()
106
+ logger.debug(_)
107
+ return _
108
+
109
+
100
110
  if __name__ == '__main__':
101
111
  pass
102
112
 
@@ -124,21 +134,46 @@ if __name__ == '__main__':
124
134
  #
125
135
  # arun(create_db_and_tables())
126
136
 
127
- from meutils.schemas.db.oneapi_types import OneapiTask
137
+ from meutils.schemas.db.oneapi_types import OneapiTask, OneapiUser, OneapiToken
138
+
139
+ # filter_kwargs = {
140
+ # "task_id": "888",
141
+ # }
142
+ #
143
+ #
144
+ # async def main():
145
+ # async with AsyncSession(engine) as session:
146
+ # statement = select(OneapiTask).filter_by(**filter_kwargs)
147
+ # result = await session.exec(statement)
148
+ # logger.debug(result)
149
+ # if result:
150
+ # logger.debug(result.first())
151
+ # # await session.commit()
152
+ #
153
+ #
154
+ # arun(update_or_insert(OneapiTask, filter_kwargs))
128
155
 
129
156
  filter_kwargs = {
130
- "task_id": "888",
157
+ "id": "1",
131
158
  }
132
159
 
133
160
 
134
161
  async def main():
135
162
  async with AsyncSession(engine) as session:
136
- statement = select(Tasks).filter_by(**filter_kwargs)
163
+ # filter_kwargs = {
164
+ # "id": "1",
165
+ # }
166
+ # statement = select(OneapiUser).filter_by(**filter_kwargs)
167
+
168
+ filter_kwargs = {
169
+ "key": "gpoH1z3G6nHovD8MY40i6xx5tsC1vbh7B3Aao2jmejYNoKhv",
170
+ }
171
+ statement = select(OneapiToken).filter_by(**filter_kwargs)
172
+
137
173
  result = await session.exec(statement)
138
- logger.debug(result)
139
174
  if result:
140
175
  logger.debug(result.first())
141
176
  # await session.commit()
142
177
 
143
178
 
144
- arun(update_or_insert(Tasks, filter_kwargs))
179
+ arun(main())
meutils/db/redis_db.py CHANGED
@@ -28,9 +28,6 @@ if REDIS_URL := os.getenv("REDIS_URL"):
28
28
  # redis_client = Redis.from_url(REDIS_URL, **kwargs)
29
29
  # redis_aclient = AsyncRedis.from_url(REDIS_URL, **kwargs)
30
30
 
31
-
32
-
33
-
34
31
  else:
35
32
  redis_client = Redis(**kwargs) # decode_responses=True
36
33
  redis_aclient = AsyncRedis(**kwargs)
@@ -76,9 +73,15 @@ if __name__ == '__main__':
76
73
  #
77
74
  # arun(redis_aclient.select(1))
78
75
 
76
+ # async def main():
77
+ # r = await redis_aclient.select(1)
78
+ # return await redis_aclient.get(task_id)
79
+ #
80
+ #
81
+ # arun(main())
82
+
79
83
  async def main():
80
- r = await redis_aclient.select(1)
81
- return await redis_aclient.get(task_id)
84
+ return await redis_aclient.lpop("redis_key")
82
85
 
83
86
 
84
87
  arun(main())
@@ -0,0 +1,46 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding: utf-8 -*-
3
+ # @Project : AI. @by PyCharm
4
+ # @File : polling
5
+ # @Time : 2024/12/26 14:08
6
+ # @Author : betterme
7
+ # @WeChat : meutils
8
+ # @Software : PyCharm
9
+ # @Description :
10
+ import time
11
+
12
+ from meutils.pipe import *
13
+
14
+
15
+ def poll(n: int = 30, sleep_fn: Optional[Callable] = None):
16
+ if sleep_fn is None:
17
+ sleep_fn = lambda i: max(n / (i + 1), 1) # 预估大概 2~3 *n
18
+
19
+ def decorator(fn):
20
+ is_coroutine = inspect.iscoroutinefunction(fn)
21
+
22
+ @wraps(fn)
23
+ async def wrapper(*args, **kwargs):
24
+ for i in range(n):
25
+ await asyncio.sleep(sleep_fn(i))
26
+ # 根据函数类型选择调用方式
27
+ result = await fn(*args, **kwargs) if is_coroutine else fn(*args, **kwargs)
28
+ if result: # 跳出
29
+ return result
30
+ return None
31
+
32
+ return wrapper
33
+
34
+ return decorator
35
+
36
+
37
+ if __name__ == '__main__':
38
+ @poll(n=5)
39
+ async def check_something():
40
+ # 你的检查逻辑
41
+
42
+ logger.debug(time.ctime())
43
+ return {"status": "ok"}
44
+
45
+
46
+ arun(check_something())
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding: utf-8 -*-
3
+ # @Project : AI. @by PyCharm
4
+ # @File : modelscope
5
+ # @Time : 2024/12/25 11:01
6
+ # @Author : betterme
7
+ # @WeChat : meutils
8
+ # @Software : PyCharm
9
+ # @Description :
10
+
11
+ from meutils.pipe import *
@@ -77,6 +77,36 @@ class OneapiTask(SQLModel, table=True):
77
77
  arbitrary_types_allowed = True
78
78
 
79
79
 
80
+ class OneapiUser(SQLModel, table=True):
81
+ __tablename__ = "users" # 自定义表名
82
+
83
+ id: Optional[int] = Field(default=None, primary_key=True)
84
+ username: Optional[str] = Field(default=None)
85
+ email: Optional[str] = Field(default=None)
86
+
87
+ quota: Optional[int] = Field(default=None)
88
+ used_quota: Optional[int] = Field(default=None)
89
+
90
+ request_count: Optional[int] = Field(default=None)
91
+
92
+ access_token: Optional[str] = Field(default=None)
93
+
94
+ class Config:
95
+ arbitrary_types_allowed = True
96
+
97
+
98
+ class OneapiToken(SQLModel, table=True):
99
+ __tablename__ = "tokens" # 自定义表名
100
+
101
+ id: Optional[int] = Field(default=None, primary_key=True)
102
+ user_id: Optional[int] = Field(default=None)
103
+ key: Optional[str] = Field(default=None)
104
+ used_quota: Optional[int] = Field(default=None)
105
+
106
+ class Config:
107
+ arbitrary_types_allowed = True
108
+
109
+
80
110
  if __name__ == '__main__':
81
111
  print(Hero())
82
112
  # print(Tasks())
@@ -321,6 +321,7 @@ MODEL_RATIO = {
321
321
  "qwen/qwq-32b-preview": 1,
322
322
  "Qwen/QwQ-32B-Preview": 1,
323
323
  "qwq-32b-preview": 1,
324
+ "qvq-72b-preview": 2,
324
325
 
325
326
  "qwen1.5-7b-chat": 0.05, # 特价
326
327
  "qwen1.5-14b-chat": 0.7,
@@ -382,6 +383,9 @@ MODEL_RATIO = {
382
383
  "doubao-lite-128k": 0.4,
383
384
  "doubao-lite-32k": 0.15,
384
385
  "doubao-lite-4k": 0.15,
386
+
387
+ "doubao-pro-256k": 0.01,
388
+
385
389
  "doubao-pro-128k": 2.5,
386
390
  "doubao-pro-32k": 0.4,
387
391
  "doubao-pro-4k": 0.4,
@@ -463,6 +467,8 @@ MODEL_RATIO = {
463
467
  "gemini-1.5-flash-exp-0827": 0.1,
464
468
  "google/gemini-flash-1.5-exp": 0.1, # openrouter免费
465
469
  "google/gemini-flash-1.5-8b-exp": 0.1, # openrouter免费
470
+ "gemini-2.0-flash": 0.5,
471
+ "gemini-2.0-flash-exp": 0.5,
466
472
 
467
473
  "gemini-1.5-pro-001": 1,
468
474
  "gemini-1.5-pro-002": 1,
@@ -625,13 +631,18 @@ COMPLETION_RATIO = {
625
631
  "gemini-1.5-pro-002": 4,
626
632
  "gemini-1.5-flash-002": 4,
627
633
 
634
+ "gemini-2.0-flash": 5,
635
+ "gemini-2.0-flash-exp": 5,
636
+
628
637
  "hunyuan-a52b-instruct": 5,
629
- "qwen2.5-coder-32b-instruct": 2,
638
+ "qwen2.5-coder-32b-instruct": 3,
630
639
 
631
640
  "qwen-turbo-2024-11-01": 3,
632
- "qwen/qwq-32b-preview": 2,
633
- "Qwen/QwQ-32B-Preview": 2,
634
- "qwq-32b-preview": 2,
641
+ "qwen/qwq-32b-preview": 3,
642
+ "Qwen/QwQ-32B-Preview": 3,
643
+ "qwq-32b-preview": 3,
644
+ "qvq-72b-preview": 3,
645
+
635
646
  "qwen-long": 5,
636
647
  "qwen-max": 5,
637
648
  "glm-4v-flash": 5,
@@ -12,9 +12,42 @@ from meutils.pipe import *
12
12
 
13
13
 
14
14
  class VideoRequest(BaseModel):
15
- model: str = "cogvideox"
15
+ model: Literal["cogvideox-flash", "cogvideox"] = "cogvideox-flash"
16
+
16
17
  prompt: str = "比得兔开小汽车,游走在马路上,脸上的表情充满开心喜悦。"
18
+
19
+ """
20
+ 提供基于其生成内容的图像。如果传入此参数,系统将以该图像为基础进行操作。支持通过URL或Base64编码传入图片。
21
+ 图片要求如下:图片支持.png、jpeg、.jpg 格式、图片大小:不超过5M。image_url和prompt二选一或者同时传入。
22
+ """
17
23
  image_url: Optional[str] = None
18
24
 
25
+ """
26
+ 输出模式,默认为 "quality"。 "quality":质量优先,生成质量高。 "speed":速度优先,生成时间更快,质量相对降低。
27
+ cogvideox-flash模型不支持选择输出模式。
28
+ """
29
+ quality: Literal["quality", "speed"] = "speed"
30
+
31
+ """是否生成 AI 音效。默认值: False(不生成音效)。"""
32
+ with_audio: bool = True
33
+
34
+ """
35
+ 默认值: 若不指定,默认生成视频的短边为 1080,长边根据原图片比例缩放。最高支持 4K 分辨率。
36
+ 分辨率选项:720x480、1024x1024、1280x960、960x1280、1920x1080、1080x1920、2048x1080、3840x2160
37
+ """
38
+ size: Literal[
39
+ '720x480',
40
+ '1024x1024',
41
+ '1280x960',
42
+ '960x1280',
43
+ '1920x1080',
44
+ '1080x1920',
45
+ '2048x1080',
46
+ '3840x2160'] = "1024x1024"
47
+
48
+ duration: Literal[5, 10] = 5
49
+
50
+ fps: Literal[30, 60] = 30
51
+
19
52
  class Config:
20
53
  frozen = True
@@ -8,6 +8,7 @@
8
8
  # @Software : PyCharm
9
9
  # @Description :
10
10
 
11
+ import numpy as np
11
12
  from typing import Optional, Union
12
13
 
13
14
  from fastapi.security import HTTPBearer, HTTPAuthorizationCredentials
@@ -16,10 +17,8 @@ from fastapi import Depends, HTTPException, status
16
17
  http_bearer = HTTPBearer()
17
18
 
18
19
 
19
- # get_bearer_token = http_bearer
20
-
21
-
22
20
  # 定义获取token的函数
21
+
23
22
  async def get_bearer_token(
24
23
  auth: Optional[HTTPAuthorizationCredentials] = Depends(http_bearer)
25
24
  ) -> Optional[str]:
@@ -31,10 +30,39 @@ async def get_bearer_token(
31
30
  if auth is None:
32
31
  return None
33
32
 
34
- return auth.credentials
33
+ token = auth.credentials
34
+ if token.startswith('redis:'): # 初始化吧,太长?
35
+ pass
36
+ if ',' in token: # 初始化redis
37
+ pass
38
+ elif ',' in token: # 分隔符
39
+ token = np.random.choice(token.split(','))
40
+
41
+ return token
42
+
43
+
44
+ # async def get_next_token(redis_key):
45
+ # """轮询"""
46
+ # if api_key := await redis_aclient.lpop(redis_key):
47
+ # await redis_aclient.rpush(redis_key, api_key)
48
+ # return api_key
49
+
50
+
51
+ async def get_bearer_token_for_oneapi(
52
+ auth: Optional[HTTPAuthorizationCredentials] = Depends(http_bearer)
53
+ ) -> Optional[str]:
54
+ """
55
+ # todo: oneapi userinfo apikey info
56
+ """
57
+ if auth is None:
58
+ return None
59
+
60
+ token = auth.credentials
35
61
 
62
+ return token
36
63
 
37
- # todo: oneapi userinfo apikey info
38
64
 
39
65
  if __name__ == '__main__':
40
- pass
66
+ from meutils.pipe import *
67
+
68
+ arun(get_bearer_token(HTTPAuthorizationCredentials(scheme="Bearer", credentials="123")))