MeUtils 2025.3.7.22.46.32__py3-none-any.whl → 2025.3.13.19.7.25__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -137,10 +137,11 @@ class CompletionRequest(BaseModel):
137
137
  for content in user_contents:
138
138
  return content.get('text', "")
139
139
  else:
140
- return user_contents
140
+ return str(user_contents)
141
141
 
142
142
  @cached_property
143
143
  def last_urls(self): # file_url 多轮对话需要 sum(request.last_urls.values(), [])
144
+ """最新一轮的 user url 列表"""
144
145
  content_types = {"image_url", "file", "file_url", "video_url", "audio_url"}
145
146
  for i, message in enumerate(self.messages[::-1], 1):
146
147
  data = {}
@@ -449,6 +450,67 @@ if __name__ == '__main__':
449
450
  {"type": "image_url", "image_url": "这是个图片链接"}
450
451
  ]},
451
452
  ]
453
+
454
+ messages = [{'role': 'system',
455
+ 'content': 'undefined\n Current date: 2025-03-13'},
456
+ {'role': 'user',
457
+ 'content': [{'type': 'text', 'text': '解读'},
458
+ {'type': 'image_url',
459
+ 'image_url': 'https://ai.chatfire.cn/files/images/xx-1741850404348-339a12ba3.png'}]},
460
+ {},
461
+ {'role': 'user', 'content': '总结一下'}]
462
+
463
+ messages = [{'role': 'system',
464
+ 'content': 'undefined\n Current date: 2025-03-13'},
465
+ {'role': 'user',
466
+ 'content': [{'type': 'text', 'text': '解读'},
467
+ {'type': 'image_url',
468
+ 'image_url': 'https://ai.chatfire.cn/files/images/xx-1741850404348-339a12ba3.png'}]},
469
+ {},
470
+ {'role': 'user', 'content': '总结一下'}]
471
+
472
+ messages = [{'role': 'system',
473
+ 'content': 'undefined\n Current date: 2025-03-13'},
474
+ {'role': 'user',
475
+ 'content': [{'type': 'text', 'text': '一句话总结'},
476
+ {'type': 'image_url',
477
+ 'image_url': 'https://ai.chatfire.cn/files/images/uniacess删除-1741849647273-c3f3be340.txt'}]},
478
+ {},
479
+ {'role': 'user', 'content': '总结'}]
480
+
481
+ mesages = [{'role': 'system',
482
+ 'content': 'undefined\n Current date: 2025-03-13'},
483
+ {'role': 'user',
484
+ 'content': [{'type': 'text', 'text': '一句话总结'},
485
+ {'type': 'image_url',
486
+ 'image_url': 'https://ai.chatfire.cn/files/images/uniacess删除-1741853464016-b176842ad.txt'}]},
487
+ {},
488
+ {'role': 'user',
489
+ 'content': [{'type': 'text', 'text': '一句话总结'},
490
+ {'type': 'image_url',
491
+ 'image_url': 'https://ai.chatfire.cn/files/images/uniacess删除-1741853464016-b176842ad.txt'}]},
492
+ {},
493
+ {'role': 'user',
494
+ 'content': [{'type': 'text', 'text': '一句话总结'},
495
+ {'type': 'image_url',
496
+ 'image_url': 'https://ai.chatfire.cn/files/images/uniacess删除-1741853464016-b176842ad.txt'}]},
497
+ {},
498
+ {'role': 'user',
499
+ 'content': [{'type': 'text', 'text': '一句话总结'},
500
+ {'type': 'image_url',
501
+ 'image_url': 'https://ai.chatfire.cn/files/images/uniacess删除-1741853464016-b176842ad.txt'}]},
502
+ {},
503
+ {'role': 'user',
504
+ 'content': [{'type': 'text', 'text': '一句话总结'},
505
+ {'type': 'image_url',
506
+ 'image_url': 'https://ai.chatfire.cn/files/images/uniacess删除-1741853464016-b176842ad.txt'}]},
507
+ {},
508
+ {'role': 'user',
509
+ 'content': [{'type': 'text', 'text': '一句话总结'},
510
+ {'type': 'image_url',
511
+ 'image_url': 'https://ai.chatfire.cn/files/images/uniacess删除-1741853464016-b176842ad.txt'}]},
512
+ {},
513
+ {'role': 'user', 'content': '总结'}]
452
514
  #
453
515
  # r = ChatCompletionRequest(model="gpt-3.5-turbo", messages=messages)
454
516
  # r.messages[-1]['content'] = [{"type": "image_url", "image_url": {"url": r.urls[-1]}}]
@@ -458,5 +520,5 @@ if __name__ == '__main__':
458
520
  # print(chat_completion)
459
521
  # print(chat_completion_chunk_stop)
460
522
 
461
- # print(CompletionRequest(messages=messages).last_urls)
523
+ print(CompletionRequest(messages=messages).last_urls)
462
524
  print(CompletionRequest(messages=messages).last_user_content)
meutils/caches/c.py DELETED
@@ -1,29 +0,0 @@
1
- import asyncio
2
-
3
- from collections import namedtuple
4
- import redis.asyncio as redis
5
-
6
- from aiocache import cached
7
- from aiocache import RedisCache
8
- from aiocache.serializers import PickleSerializer
9
-
10
- Result = namedtuple('Result', "content, status")
11
-
12
- cache = RedisCache(namespace="main", client=redis.Redis(), serializer=PickleSerializer())
13
-
14
-
15
- @cached(cache, ttl=10, key_builder=lambda *args, **kw: "key")
16
- async def cached_call():
17
- return Result("content", 200)
18
-
19
-
20
- async def test_cached():
21
- async with cache:
22
- await cached_call()
23
- exists = await cache.exists("key")
24
- assert exists is True
25
- await cache.delete("key")
26
-
27
-
28
- if __name__ == "__main__":
29
- asyncio.run(test_cached())
meutils/caches/demo.py DELETED
@@ -1,28 +0,0 @@
1
- import asyncio
2
-
3
- from collections import namedtuple
4
-
5
- from aiocache import cached, Cache, RedisCache
6
- from aiocache.serializers import PickleSerializer
7
- # With this we can store python objects in backends like Redis!
8
-
9
- Result = namedtuple('Result', "content, status")
10
-
11
-
12
- @cached(
13
- cache=RedisCache(), key="key", serializer=PickleSerializer(), port=6379, namespace="main")
14
- async def cached_call():
15
- print("Sleeping for three seconds zzzz.....")
16
- await asyncio.sleep(3)
17
- return Result("content", 200)
18
-
19
-
20
- async def run():
21
- await cached_call()
22
- await cached_call()
23
- await cached_call()
24
- cache = Cache(Cache.REDIS, endpoint="127.0.0.1", port=6379, namespace="main")
25
- await cache.delete("key")
26
-
27
- if __name__ == "__main__":
28
- asyncio.run(run())
meutils/caches/redis_.py DELETED
@@ -1,26 +0,0 @@
1
- import asyncio
2
-
3
- from aiocache import Cache
4
-
5
-
6
- cache = Cache(Cache.REDIS, endpoint="127.0.0.1", port=6379, namespace="main")
7
-
8
-
9
- async def redis():
10
- await cache.set("key", "value")
11
- await cache.set("expire_me", "value", ttl=10)
12
-
13
- assert await cache.get("key") == "value"
14
- assert await cache.get("expire_me") == "value"
15
- assert await cache.raw("ttl", "main:expire_me") > 0
16
-
17
-
18
- async def test_redis():
19
- await redis()
20
- await cache.delete("key")
21
- await cache.delete("expire_me")
22
- await cache.close()
23
-
24
-
25
- if __name__ == "__main__":
26
- asyncio.run(test_redis())