MeUtils 2025.1.4.11.4.46__py3-none-any.whl → 2025.1.10.20.14.42__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {MeUtils-2025.1.4.11.4.46.dist-info → MeUtils-2025.1.10.20.14.42.dist-info}/METADATA +28 -28
- {MeUtils-2025.1.4.11.4.46.dist-info → MeUtils-2025.1.10.20.14.42.dist-info}/RECORD +71 -63
- examples/_openaisdk/openai_chatfire.py +11 -4
- examples/_openaisdk/openai_deepinfra.py +1 -1
- examples/_openaisdk/openai_images.py +6 -1
- examples/_openaisdk/openai_lingyi.py +59 -0
- examples/_openaisdk/openai_ppu.py +47 -0
- examples/_openaisdk/openai_test.py +2 -2
- examples/_openaisdk/openai_together.py +57 -0
- examples/_openaisdk/openai_zhipu.py +4 -3
- meutils/ai_audio/asr/openai_asr.py +2 -2
- meutils/apis/audio/deepinfra.py +2 -2
- meutils/apis/chatglm/glm_video_api.py +1 -1
- meutils/apis/common.py +5 -1
- meutils/apis/hailuoai/videos.py +14 -5
- meutils/apis/images/eidt.py +36 -0
- meutils/apis/images/gitee_kolors.py +49 -0
- meutils/apis/images/recraft.py +24 -6
- meutils/apis/niutrans.py +27 -8
- meutils/apis/oneapi/utils.py +24 -9
- meutils/apis/translator/deeplx.py +4 -3
- meutils/apis/vidu/vidu_video.py +6 -5
- meutils/caches/redis_cache.py +5 -0
- meutils/common.py +1 -0
- meutils/config_utils/lark_utils/common.py +0 -1
- meutils/data/VERSION +1 -1
- meutils/data/oneapi/NOTICE.md +5 -7
- meutils/io/files_utils.py +11 -5
- meutils/io/image.py +28 -2
- meutils/llm/clients.py +38 -0
- meutils/llm/completions/agents/file.py +124 -0
- meutils/llm/openai_utils/common.py +2 -2
- meutils/llm/utils.py +79 -0
- meutils/llm/x.py +75 -0
- meutils/notice/feishu.py +1 -0
- meutils/parsers/__init__.py +10 -0
- meutils/parsers/file_parsers.py +107 -0
- meutils/schemas/db/oneapi_types.py +3 -0
- meutils/schemas/image_types.py +28 -2
- meutils/schemas/kuaishou_types.py +1 -1
- meutils/schemas/oneapi/common.py +26 -16
- meutils/schemas/vidu_types.py +33 -12
- meutils/serving/fastapi/exceptions/http_error.py +2 -6
- meutils/str_utils/regular_expression.py +29 -6
- meutils/llm/completions/agents/files.py +0 -18
- meutils/llm/openai_client.py +0 -15
- {MeUtils-2025.1.4.11.4.46.dist-info → MeUtils-2025.1.10.20.14.42.dist-info}/LICENSE +0 -0
- {MeUtils-2025.1.4.11.4.46.dist-info → MeUtils-2025.1.10.20.14.42.dist-info}/WHEEL +0 -0
- {MeUtils-2025.1.4.11.4.46.dist-info → MeUtils-2025.1.10.20.14.42.dist-info}/entry_points.txt +0 -0
- {MeUtils-2025.1.4.11.4.46.dist-info → MeUtils-2025.1.10.20.14.42.dist-info}/top_level.txt +0 -0
- /meutils/{fileparser → parsers/fileparser}/PDF/346/212/275/345/217/226.py" +0 -0
- /meutils/{fileparser → parsers/fileparser}/__init__.py +0 -0
- /meutils/{fileparser → parsers/fileparser}/common.py +0 -0
- /meutils/{fileparser → parsers/fileparser}/demo.py +0 -0
- /meutils/{fileparser → parsers/fileparser}/filetype/__init__.py +0 -0
- /meutils/{fileparser → parsers/fileparser}/filetype/__main__.py +0 -0
- /meutils/{fileparser → parsers/fileparser}/filetype/filetype.py +0 -0
- /meutils/{fileparser → parsers/fileparser}/filetype/helpers.py +0 -0
- /meutils/{fileparser → parsers/fileparser}/filetype/match.py +0 -0
- /meutils/{fileparser → parsers/fileparser}/filetype/types/__init__.py +0 -0
- /meutils/{fileparser → parsers/fileparser}/filetype/types/application.py +0 -0
- /meutils/{fileparser → parsers/fileparser}/filetype/types/archive.py +0 -0
- /meutils/{fileparser → parsers/fileparser}/filetype/types/audio.py +0 -0
- /meutils/{fileparser → parsers/fileparser}/filetype/types/base.py +0 -0
- /meutils/{fileparser → parsers/fileparser}/filetype/types/document.py +0 -0
- /meutils/{fileparser → parsers/fileparser}/filetype/types/font.py +0 -0
- /meutils/{fileparser → parsers/fileparser}/filetype/types/image.py +0 -0
- /meutils/{fileparser → parsers/fileparser}/filetype/types/isobmff.py +0 -0
- /meutils/{fileparser → parsers/fileparser}/filetype/types/video.py +0 -0
- /meutils/{fileparser → parsers/fileparser}/filetype/utils.py +0 -0
- /meutils/{fileparser → parsers/fileparser}/filetype.py +0 -0
- /meutils/{fileparser → parsers/fileparser}/pdf.py +0 -0
- /meutils/{fileparser → parsers/fileparser}//350/241/250/346/240/274/346/212/275/345/217/226.py" +0 -0
@@ -101,7 +101,10 @@ class OneapiToken(SQLModel, table=True):
|
|
101
101
|
id: Optional[int] = Field(default=None, primary_key=True)
|
102
102
|
user_id: Optional[int] = Field(default=None)
|
103
103
|
key: Optional[str] = Field(default=None)
|
104
|
+
|
104
105
|
used_quota: Optional[int] = Field(default=None)
|
106
|
+
remain_quota: Optional[int] = Field(default=None)
|
107
|
+
unlimited_quota: Optional[bool] = Field(default=False)
|
105
108
|
|
106
109
|
class Config:
|
107
110
|
arbitrary_types_allowed = True
|
meutils/schemas/image_types.py
CHANGED
@@ -10,6 +10,7 @@
|
|
10
10
|
|
11
11
|
from meutils.pipe import *
|
12
12
|
|
13
|
+
from pydantic import constr
|
13
14
|
from openai.types import ImagesResponse as _ImagesResponse, Image
|
14
15
|
|
15
16
|
ASPECT_RATIOS = {
|
@@ -58,7 +59,7 @@ class ImagesResponse(_ImagesResponse):
|
|
58
59
|
|
59
60
|
|
60
61
|
class ImageRequest(BaseModel): # openai
|
61
|
-
prompt:
|
62
|
+
prompt: constr(min_length=1, max_length=1000) = ""
|
62
63
|
negative_prompt: Optional[str] = None
|
63
64
|
|
64
65
|
model: str = ""
|
@@ -215,6 +216,31 @@ class KlingImageRequest(ImageRequest):
|
|
215
216
|
self.size = "1:1" if self.size not in {"1:1", "2:3", "3:2", "3:4", "4:3", "9:16", "16:9"} else self.size
|
216
217
|
|
217
218
|
|
219
|
+
class KolorsRequest(ImageRequest):
|
220
|
+
model: Literal["kolors-1.0", "kolors-1.5"] = "kolors-1.0"
|
221
|
+
n: Optional[int] = 4
|
222
|
+
|
223
|
+
"""
|
224
|
+
1:1(1024*1024)
|
225
|
+
4:3(1152*896)
|
226
|
+
3:4(768*1024)
|
227
|
+
16:9(1024 576)
|
228
|
+
9:16(576 1024)
|
229
|
+
3:2(1024*640)
|
230
|
+
2:3(640*1024)
|
231
|
+
"""
|
232
|
+
size: Literal[
|
233
|
+
"1024x1024", "1152x896", "768x1024", "1024x576", "576x1024", "1024x640", "640x1024"
|
234
|
+
] = "1024x1024"
|
235
|
+
|
236
|
+
# 图生图
|
237
|
+
image: Optional[str] = None
|
238
|
+
image_fidelity: Optional[float] = None
|
239
|
+
|
240
|
+
def __init__(self, /, **data: Any):
|
241
|
+
super().__init__(**data)
|
242
|
+
|
243
|
+
|
218
244
|
class CogviewImageRequest(ImageRequest):
|
219
245
|
model: str = "cogview-3"
|
220
246
|
size: Optional[Literal["1024x1024", "768x1344", "864x1152", "1344x768", "1152x864", "1440x720", "720x1440"]] = None
|
@@ -440,4 +466,4 @@ if __name__ == '__main__':
|
|
440
466
|
|
441
467
|
# print(ImagesResponse(data=[{'url': 1}]))
|
442
468
|
|
443
|
-
print(
|
469
|
+
print(RecraftImageRequest(prompt="").model_dump_json())
|
@@ -113,7 +113,7 @@ class KlingaiImageRequest(BaseModel):
|
|
113
113
|
{'name': 'imageCount', 'value': self.n},
|
114
114
|
{"name": "fidelity", "value": self.image_fidelity or 0.5},
|
115
115
|
{'name': 'biz', 'value': 'klingai'},
|
116
|
-
{"name": "kolors_version", "value": "1.
|
116
|
+
{"name": "kolors_version", "value": "1.0"} ####### 1.5
|
117
117
|
]
|
118
118
|
self.payload = {
|
119
119
|
'arguments': arguments,
|
meutils/schemas/oneapi/common.py
CHANGED
@@ -17,6 +17,14 @@ FREE = 0.001
|
|
17
17
|
MJ = 1.5
|
18
18
|
|
19
19
|
MODEL_PRICE = {
|
20
|
+
# rix
|
21
|
+
"kling_image": 0.02,
|
22
|
+
"kling_virtual_try_on": 1,
|
23
|
+
|
24
|
+
"kling_video": 1,
|
25
|
+
"kling_extend": 1,
|
26
|
+
"kling_lip_sync": 1,
|
27
|
+
|
20
28
|
# chatfire
|
21
29
|
"ppu-0001": 0.0001,
|
22
30
|
"ppu-001": 0.001,
|
@@ -153,6 +161,7 @@ MODEL_PRICE = {
|
|
153
161
|
|
154
162
|
"api-kling": 0.1,
|
155
163
|
"api-kling-vip": 0.5,
|
164
|
+
|
156
165
|
"api-kling-v1.6-std-5s": 1 * 0.8,
|
157
166
|
"api-kling-v1.6-std-10s": 2 * 0.8,
|
158
167
|
"api-kling-v1.6-pro-5s": 1 * 0.8 * 1.75,
|
@@ -275,12 +284,9 @@ MODEL_RATIO = {
|
|
275
284
|
"claude-3-5-haiku-20241022": 4,
|
276
285
|
"anthropic/claude-3-5-haiku-20241022:beta": 4,
|
277
286
|
|
278
|
-
"grok":
|
279
|
-
"grok-
|
280
|
-
|
281
|
-
# "grok-2": 1,
|
282
|
-
"x-ai/grok-beta": 2.5,
|
283
|
-
"grok-vision-beta": 2.5,
|
287
|
+
"grok-2": 1,
|
288
|
+
"grok-2-1212": 1,
|
289
|
+
"grok-2-vision-1212": 1,
|
284
290
|
|
285
291
|
# 定制
|
286
292
|
"lingxi-all": 1,
|
@@ -298,7 +304,7 @@ MODEL_RATIO = {
|
|
298
304
|
"glm-4-0520": 2.5,
|
299
305
|
"glm-4-airx": 10,
|
300
306
|
"glm-4v": 2.5,
|
301
|
-
"glm-4v-plus":
|
307
|
+
"glm-4v-plus": 2,
|
302
308
|
"glm-4v-flash": 0.1,
|
303
309
|
"glm-4-plus": 25,
|
304
310
|
|
@@ -366,12 +372,14 @@ MODEL_RATIO = {
|
|
366
372
|
"yi-1.5-34b-chat-16k": 0.63,
|
367
373
|
|
368
374
|
"yi-lightning": 0.5,
|
375
|
+
"yi-vision-v2": 3,
|
376
|
+
|
377
|
+
"yi-vision": 3,
|
369
378
|
"yi-large": 10,
|
370
379
|
"yi-large-turbo": 6,
|
371
380
|
"yi-large-rag": 12.5,
|
372
381
|
"yi-medium": 1.25,
|
373
382
|
"yi-medium-200k": 6,
|
374
|
-
"yi-vision": 3,
|
375
383
|
|
376
384
|
# minimax https://platform.minimaxi.com/document/price?id=6433f32294878d408fc8293e
|
377
385
|
"abab6.5-chat": 15 / 7.5,
|
@@ -388,6 +396,7 @@ MODEL_RATIO = {
|
|
388
396
|
"deepseek-v3": 0.5,
|
389
397
|
"deepseek/deepseek-chat": 0.5,
|
390
398
|
"deepseek-ai/DeepSeek-V3": 0.5,
|
399
|
+
"accounts/fireworks/models/deepseek-v3": 0.5,
|
391
400
|
|
392
401
|
'deepseek-r1': 0.5,
|
393
402
|
'deepseek-think': 0.5,
|
@@ -483,6 +492,8 @@ MODEL_RATIO = {
|
|
483
492
|
"google/gemini-flash-1.5-8b-exp": 0.1, # openrouter免费
|
484
493
|
"gemini-2.0-flash": 0.5,
|
485
494
|
"gemini-2.0-flash-exp": 0.5,
|
495
|
+
"gemini-2.0-flash-thinking-exp": 1,
|
496
|
+
"gemini-2.0-flash-thinking-exp-1219": 1,
|
486
497
|
|
487
498
|
"gemini-1.5-pro-001": 1,
|
488
499
|
"gemini-1.5-pro-002": 1,
|
@@ -588,10 +599,9 @@ COMPLETION_RATIO = {
|
|
588
599
|
"gpt-4-plus": 5,
|
589
600
|
"gpt-4o-plus": 5,
|
590
601
|
|
591
|
-
"grok":
|
592
|
-
"grok-
|
593
|
-
"
|
594
|
-
"grok-vision-beta": 3,
|
602
|
+
"grok-2": 5,
|
603
|
+
"grok-2-1212": 5,
|
604
|
+
"grok-2-vision-1212": 5,
|
595
605
|
|
596
606
|
"claude-3-5-haiku-20241022": 5,
|
597
607
|
"anthropic/claude-3-5-haiku-20241022:beta": 5,
|
@@ -647,6 +657,8 @@ COMPLETION_RATIO = {
|
|
647
657
|
|
648
658
|
"gemini-2.0-flash": 5,
|
649
659
|
"gemini-2.0-flash-exp": 5,
|
660
|
+
"gemini-2.0-flash-thinking-exp": 5,
|
661
|
+
"gemini-2.0-flash-thinking-exp-1219": 5,
|
650
662
|
|
651
663
|
"hunyuan-a52b-instruct": 5,
|
652
664
|
"qwen2.5-coder-32b-instruct": 3,
|
@@ -672,6 +684,7 @@ COMPLETION_RATIO = {
|
|
672
684
|
"deepseek-search": 1,
|
673
685
|
"deepseek/deepseek-chat": 1,
|
674
686
|
"deepseek-ai/DeepSeek-V3": 1,
|
687
|
+
"accounts/fireworks/models/deepseek-v3": 1,
|
675
688
|
|
676
689
|
"glm-zero": 5,
|
677
690
|
"glm-zero-preview": 5,
|
@@ -853,7 +866,7 @@ GROUP_RATIO = {
|
|
853
866
|
# 定制分组:不公开
|
854
867
|
"35": 1,
|
855
868
|
|
856
|
-
"
|
869
|
+
"images": 0.5
|
857
870
|
|
858
871
|
}
|
859
872
|
USER_USABLE_GROUPS = {
|
@@ -864,9 +877,6 @@ USER_USABLE_GROUPS = {
|
|
864
877
|
"国产": "0.5¥=1$直连🔥国产大模型api,可申请商用独立分组",
|
865
878
|
|
866
879
|
"特价": "0.5¥=1$主打性价比🔥claude系列&gpt/o1系列&国产热门大模型",
|
867
|
-
|
868
|
-
"agent": "2.0¥=1$智能体:联网&文件问答",
|
869
|
-
|
870
880
|
}
|
871
881
|
|
872
882
|
if _ := {k: f"888¥=1$🈲🈲🈲误用不退" for k, v in GROUP_RATIO.items() if k.endswith(("代理",))}:
|
meutils/schemas/vidu_types.py
CHANGED
@@ -91,7 +91,7 @@ class VideoRequest(BaseModel):
|
|
91
91
|
|
92
92
|
class ViduRequest(BaseModel):
|
93
93
|
"""quality 倍率2"""
|
94
|
-
model: Union[str, Literal['vidu-high-performance', 'vidu-high-quality']] = "vidu-high-performance"
|
94
|
+
model: Union[str, Literal['vidu-1.5', 'vidu-high-performance', 'vidu-high-quality']] = "vidu-high-performance"
|
95
95
|
|
96
96
|
prompt: Optional[str] = None
|
97
97
|
url: Optional[str] = None # ssupload:?id=
|
@@ -101,6 +101,10 @@ class ViduRequest(BaseModel):
|
|
101
101
|
|
102
102
|
type: Optional[str] = None # text2video img2video character2video
|
103
103
|
|
104
|
+
"""vidu-1.5"""
|
105
|
+
resolution: Literal['512', '720p', 'vidu-high-quality'] = "512"
|
106
|
+
movement_amplitude: Optional[str] = "auto" # small medium high
|
107
|
+
|
104
108
|
payload: dict = {}
|
105
109
|
|
106
110
|
def __init__(self, **data):
|
@@ -135,22 +139,39 @@ class ViduRequest(BaseModel):
|
|
135
139
|
}
|
136
140
|
)
|
137
141
|
|
138
|
-
self.
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
"
|
143
|
-
|
144
|
-
|
142
|
+
if self.model == "vidu-1.5":
|
143
|
+
self.payload = {
|
144
|
+
"input": input,
|
145
|
+
"type": self.type or type,
|
146
|
+
"settings": {
|
147
|
+
"model_version": "1.5",
|
148
|
+
"style": "general",
|
149
|
+
"duration": self.duration,
|
150
|
+
|
151
|
+
"resolution": self.resolution,
|
152
|
+
"aspect_ratio": self.aspect_ratio,
|
153
|
+
|
154
|
+
"movement_amplitude": self.movement_amplitude,
|
155
|
+
|
156
|
+
}
|
157
|
+
}
|
158
|
+
else:
|
159
|
+
|
160
|
+
self.payload = {
|
161
|
+
"input": input,
|
162
|
+
"type": self.type or type,
|
163
|
+
"settings": {
|
164
|
+
"model": self.model,
|
165
|
+
"model_version": "1.0",
|
145
166
|
|
146
|
-
|
167
|
+
"style": self.style,
|
147
168
|
|
148
|
-
|
169
|
+
"aspect_ratio": self.aspect_ratio,
|
149
170
|
|
150
|
-
|
171
|
+
"duration": self.duration,
|
151
172
|
|
173
|
+
}
|
152
174
|
}
|
153
|
-
}
|
154
175
|
|
155
176
|
class Config:
|
156
177
|
json_schema_extra = {
|
@@ -15,7 +15,7 @@ from meutils.notice.feishu import send_message as _send_message
|
|
15
15
|
send_message = partial(
|
16
16
|
_send_message,
|
17
17
|
title=__name__,
|
18
|
-
url="https://open.feishu.cn/open-apis/bot/v2/hook/
|
18
|
+
url="https://open.feishu.cn/open-apis/bot/v2/hook/d1c7b67d-b0f8-4067-a2f5-109f20eeb696"
|
19
19
|
)
|
20
20
|
|
21
21
|
|
@@ -54,7 +54,7 @@ async def chatfire_api_exception_handler(request: Request, exc: Exception):
|
|
54
54
|
|
55
55
|
# 默认值
|
56
56
|
reps = None
|
57
|
-
request_json = {}
|
57
|
+
request_json = {"body": await request.body()}
|
58
58
|
if isinstance(exc, (HTTPStatusError, APIStatusError)):
|
59
59
|
status_code = exc.response.status_code or 500
|
60
60
|
|
@@ -65,10 +65,6 @@ async def chatfire_api_exception_handler(request: Request, exc: Exception):
|
|
65
65
|
content=content,
|
66
66
|
status_code=status_code,
|
67
67
|
)
|
68
|
-
try:
|
69
|
-
request_json = await request.json()
|
70
|
-
except Exception as e:
|
71
|
-
request_json = {"error": f"json parse error: {e}"}
|
72
68
|
|
73
69
|
# send_message
|
74
70
|
content_detail = f"{traceback.format_exc()}"
|
@@ -9,6 +9,7 @@
|
|
9
9
|
# @Description :
|
10
10
|
|
11
11
|
from meutils.pipe import *
|
12
|
+
from urllib.parse import unquote, unquote_plus
|
12
13
|
|
13
14
|
zh = re.compile('[a-zA-Z\u4e00-\u9fa5]+') # 中文 + 字母
|
14
15
|
nozh = re.compile('[^a-zA-Z\u4e00-\u9fa5]+') # 中文 + 字母
|
@@ -58,11 +59,13 @@ def get_parse_and_index(text, pattern):
|
|
58
59
|
|
59
60
|
@lru_cache()
|
60
61
|
def parse_url(text: str, for_image=False):
|
62
|
+
|
61
63
|
# url_pattern = r'http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\\(\\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+'
|
62
64
|
url_pattern = r'http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+|#]|[!*\\(\\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+'
|
63
65
|
|
64
66
|
# url_pattern = 'https?://(?:[-\w.]|(?:%[\da-fA-F]{2}))+'
|
65
67
|
if for_image:
|
68
|
+
text = unquote_plus(text)
|
66
69
|
# suffix = [
|
67
70
|
# ".jpg",
|
68
71
|
# ".jpeg",
|
@@ -78,15 +81,26 @@ def parse_url(text: str, for_image=False):
|
|
78
81
|
# ".raw",
|
79
82
|
# ".dng"
|
80
83
|
# ]
|
81
|
-
url_pattern = r'https?://[\w\-\.]+/\S+\.(?:png|jpg|jpeg|gif)'
|
82
|
-
url_pattern = r
|
84
|
+
# url_pattern = r'https?://[\w\-\.]+/\S+\.(?:png|jpg|jpeg|gif)'
|
85
|
+
url_pattern = r'http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[#]|[!*\\(\\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+\.(?:jpg|jpeg|png|gif|svg|webp)'
|
86
|
+
|
83
87
|
|
84
|
-
urls = re.findall(url_pattern,
|
88
|
+
urls = re.findall(url_pattern, text)
|
85
89
|
|
86
90
|
return urls
|
87
91
|
|
88
92
|
|
89
93
|
if __name__ == '__main__':
|
94
|
+
# from urllib.parse import urlparse
|
95
|
+
#
|
96
|
+
#
|
97
|
+
# def is_valid_url(url):
|
98
|
+
# try:
|
99
|
+
# result = urlparse(url)
|
100
|
+
# return all([result.scheme, result.netloc])
|
101
|
+
# except:
|
102
|
+
# return False
|
103
|
+
|
90
104
|
text = """7个正规url
|
91
105
|
这是一段包含URL的文本,https://www.google.com 是一个URL,另一个URL是http://www.baidu.com
|
92
106
|
解读这个文本https://www.url1.com
|
@@ -100,13 +114,22 @@ if __name__ == '__main__':
|
|
100
114
|
总结 https://waptianqi.2345.com/wea_history/58238.htm
|
101
115
|
解释下这张照片 https://img-home.csdnimg.cn/images/20201124032511.png
|
102
116
|
解释下这张https://img-home.csdnimg.cn/images/x.png
|
103
|
-
|
117
|
+
|
104
118
|
img-home.csdnimg.cn/images/20201124032511.png
|
119
|
+
|
120
|
+
|
121
|
+
https://oss.ffire.cc/files/百炼系列手机产品介绍.docx
|
122
|
+
|
123
|
+
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 这个文件讲了什么?
|
124
|
+
|
105
125
|
"""
|
126
|
+
# 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 正则匹配会卡死
|
106
127
|
# from urllib3.util import parse_url
|
107
|
-
text = "@firebot /换衣 https://oss.ffire.cc/files/try-on.png"
|
128
|
+
# text = "@firebot /换衣 https://oss.ffire.cc/files/try-on.png"
|
129
|
+
# text = "@firebot /换衣 https://oss.ffire.cc/files/try-on.pn"
|
108
130
|
|
109
|
-
print(parse_url(text))
|
131
|
+
# print(parse_url(text))
|
132
|
+
print(parse_url(text, for_image=True))
|
110
133
|
|
111
134
|
# print(parse_url("http://154.3.0.117:39666/docs#/default/get_content_preview_spider_playwright_get"))
|
112
135
|
|
@@ -1,18 +0,0 @@
|
|
1
|
-
#!/usr/bin/env python
|
2
|
-
# -*- coding: utf-8 -*-
|
3
|
-
# @Project : AI. @by PyCharm
|
4
|
-
# @File : files
|
5
|
-
# @Time : 2025/1/3 15:38
|
6
|
-
# @Author : betterme
|
7
|
-
# @WeChat : meutils
|
8
|
-
# @Software : PyCharm
|
9
|
-
# @Description : 支持文档、图片、音频、视频问答
|
10
|
-
"""单一智能体
|
11
|
-
任意模型支持文档、图片、音频、视频问答
|
12
|
-
api形式
|
13
|
-
- /agents/v1
|
14
|
-
- /v1 前缀区分 agents-{model}【底层调用 /agents/v1】
|
15
|
-
|
16
|
-
"""
|
17
|
-
|
18
|
-
from meutils.pipe import *
|
meutils/llm/openai_client.py
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
#!/usr/bin/env python
|
2
|
-
# -*- coding: utf-8 -*-
|
3
|
-
# @Project : AI. @by PyCharm
|
4
|
-
# @File : chat
|
5
|
-
# @Time : 2024/8/19 14:23
|
6
|
-
# @Author : betterme
|
7
|
-
# @WeChat : meutils
|
8
|
-
# @Software : PyCharm
|
9
|
-
# @Description :
|
10
|
-
|
11
|
-
|
12
|
-
from openai import OpenAI, AsyncOpenAI
|
13
|
-
|
14
|
-
chat = OpenAI().chat.completions.create
|
15
|
-
achat = AsyncOpenAI().chat.completions.create
|
File without changes
|
File without changes
|
{MeUtils-2025.1.4.11.4.46.dist-info → MeUtils-2025.1.10.20.14.42.dist-info}/entry_points.txt
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
/meutils/{fileparser → parsers/fileparser}//350/241/250/346/240/274/346/212/275/345/217/226.py"
RENAMED
File without changes
|