lm-deluge 0.0.45__py3-none-any.whl → 0.0.47__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.

Potentially problematic release.


This version of lm-deluge might be problematic. Click here for more details.

lm_deluge/image.py CHANGED
@@ -76,7 +76,15 @@ class Image:
76
76
  header, encoded = self.data.split(",", 1)
77
77
  return base64.b64decode(encoded)
78
78
  else:
79
- raise ValueError(f"unreadable image format. type: {type(self.data)}")
79
+ if isinstance(self.data, str):
80
+ content = self.data[:1_000]
81
+ elif isinstance(self.data, bytes):
82
+ content = "[raw bytes]"
83
+ else:
84
+ content = f"[raw {type(self.data)}]"
85
+ raise ValueError(
86
+ f"unreadable image format. type: {type(self.data)}. content: {content}"
87
+ )
80
88
 
81
89
  def _mime(self) -> str:
82
90
  if self.media_type:
@@ -0,0 +1,17 @@
1
+ from lm_deluge import LLMClient
2
+
3
+ mixture_of_cerebras = LLMClient(
4
+ [
5
+ "gpt-oss-120b-cerebras",
6
+ "llama-4-scout-cerebras",
7
+ "llama-3.3-70b-cerebras",
8
+ "qwen-3-32b-cerebras",
9
+ "llama-4-maverick-cerebras",
10
+ "qwen-3-235b-instruct-cerebras",
11
+ "qwen-3-235b-thinking-cerebras",
12
+ "qwen-3-coder-cerebras",
13
+ ],
14
+ model_weights=[3, 3, 3, 3, 3, 3, 3, 1],
15
+ max_requests_per_minute=250,
16
+ max_tokens_per_minute=1_000_000,
17
+ )
@@ -0,0 +1,13 @@
1
+ from lm_deluge import LLMClient
2
+
3
+ mixture_of_llamas = LLMClient(
4
+ ["llama-4-scout", "llama-4-maverick", "llama-3.3-70b", "llama-3.3-8b"],
5
+ max_requests_per_minute=12_000,
6
+ max_tokens_per_minute=4_000_000,
7
+ )
8
+
9
+ multimodal_llamas = LLMClient(
10
+ ["llama-4-scout", "llama-4-maverick"],
11
+ max_requests_per_minute=6_000,
12
+ max_tokens_per_minute=2_000_000,
13
+ )
lm_deluge/prompt.py CHANGED
@@ -333,6 +333,23 @@ class Message:
333
333
  """
334
334
  Return a JSON-serialisable dict that fully captures the message.
335
335
  """
336
+ def _json_safe(value):
337
+ if isinstance(value, (str, int, float, bool)) or value is None:
338
+ return value
339
+ if isinstance(value, list):
340
+ return [_json_safe(v) for v in value]
341
+ if isinstance(value, dict):
342
+ return {k: _json_safe(v) for k, v in value.items()}
343
+ if isinstance(value, Text):
344
+ return {"type": "text", "text": value.text}
345
+ if isinstance(value, Image):
346
+ w, h = value.size
347
+ return {"type": "image", "tag": f"<Image ({w}×{h})>"}
348
+ if isinstance(value, File):
349
+ size = value.size
350
+ return {"type": "file", "tag": f"<File ({size} bytes)>"}
351
+ return repr(value)
352
+
336
353
  content_blocks: list[dict] = []
337
354
  for p in self.parts:
338
355
  if isinstance(p, Text):
@@ -349,7 +366,7 @@ class Message:
349
366
  "type": "tool_call",
350
367
  "id": p.id,
351
368
  "name": p.name,
352
- "arguments": p.arguments,
369
+ "arguments": _json_safe(p.arguments),
353
370
  }
354
371
  )
355
372
  elif isinstance(p, ToolResult):
@@ -357,7 +374,7 @@ class Message:
357
374
  {
358
375
  "type": "tool_result",
359
376
  "tool_call_id": p.tool_call_id,
360
- "result": p.result,
377
+ "result": _json_safe(p.result),
361
378
  }
362
379
  )
363
380
  elif isinstance(p, Thinking):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lm_deluge
3
- Version: 0.0.45
3
+ Version: 0.0.47
4
4
  Summary: Python utility for using LLM API models.
5
5
  Author-email: Benjamin Anderson <ben@trytaylor.ai>
6
6
  Requires-Python: >=3.10
@@ -9,8 +9,8 @@ lm_deluge/embed.py,sha256=CO-TOlC5kOTAM8lcnicoG4u4K664vCBwHF1vHa-nAGg,13382
9
9
  lm_deluge/errors.py,sha256=oHjt7YnxWbh-eXMScIzov4NvpJMo0-2r5J6Wh5DQ1tk,209
10
10
  lm_deluge/file.py,sha256=FGomcG8s2go_55Z2CChflHgmU-UqgFftgFY8c7f_G70,5631
11
11
  lm_deluge/gemini_limits.py,sha256=V9mpS9JtXYz7AY6OuKyQp5TuIMRH1BVv9YrSNmGmHNA,1569
12
- lm_deluge/image.py,sha256=Qpa0k5yXfrpSaHzVUwW_TEn7yEgmwzYGL17Sa7-KhSA,7729
13
- lm_deluge/prompt.py,sha256=quG4dzK2yMiRqPiF67USY5Gl2TqT3rwYkZDJTfwZFHw,37183
12
+ lm_deluge/image.py,sha256=efaiFrR2Ov0N10ZySB8RmE1TKGh80q3IUqIFbLmSwsc,8024
13
+ lm_deluge/prompt.py,sha256=Hg_i-zJU1zDvxKPslFkNpwZGS9kcCMOjk_jIyjx4yNQ,37970
14
14
  lm_deluge/request_context.py,sha256=o33LSEwnK6YPhZeulUoSE_VrdKCXiCQa0tjjixK2K6M,2540
15
15
  lm_deluge/rerank.py,sha256=-NBAJdHz9OB-SWWJnHzkFmeVO4wR6lFV7Vw-SxG7aVo,11457
16
16
  lm_deluge/tool.py,sha256=_coOKB9nPNVZoseMRumRyQ8BMR7_d0IlstzMHNT69JY,15732
@@ -58,14 +58,16 @@ lm_deluge/models/mistral.py,sha256=x67o5gckBGmPcIGdVbS26XZAYFKBYM4tsxEAahGp8bk,4
58
58
  lm_deluge/models/openai.py,sha256=q3IqHldFJjRz-jxT2NoQW9t1_c_BGLd72d1HZlxXiLA,11100
59
59
  lm_deluge/models/openrouter.py,sha256=aAgBT5_TZQtUPQyNn-Bob6NGyrlFOclnxIb0F53pgvA,23
60
60
  lm_deluge/models/together.py,sha256=RCZoYAb8OVxdH9uwXnv47TDTGzC30P-FZoDbiBE23_g,4957
61
+ lm_deluge/presets/cerebras.py,sha256=MDkqj15qQRrj8wxSCDNNe_Cs7h1WN1UjV6lTmSY1olQ,479
62
+ lm_deluge/presets/meta.py,sha256=QrreLAVgYS6VIC_NQth1vgGAYuxY38jFQQZSe6ot7C8,364
61
63
  lm_deluge/util/harmony.py,sha256=XBfJck6q-5HbOqMhEjdfy1i17i0QtpHG8ruXV4EsHl0,2731
62
64
  lm_deluge/util/json.py,sha256=_4Oar2Cmz2L1DK3EtPLPDxD6rsYHxjROmV8ZpmMjQ-4,5822
63
65
  lm_deluge/util/logprobs.py,sha256=UkBZakOxWluaLqHrjARu7xnJ0uCHVfLGHJdnYlEcutk,11768
64
66
  lm_deluge/util/spatial.py,sha256=BsF_UKhE-x0xBirc-bV1xSKZRTUhsOBdGqsMKme20C8,4099
65
67
  lm_deluge/util/validation.py,sha256=hz5dDb3ebvZrZhnaWxOxbNSVMI6nmaOODBkk0htAUhs,1575
66
68
  lm_deluge/util/xml.py,sha256=Ft4zajoYBJR3HHCt2oHwGfymGLdvp_gegVmJ-Wqk4Ck,10547
67
- lm_deluge-0.0.45.dist-info/licenses/LICENSE,sha256=uNNXGXPCw2TC7CUs7SEBkA-Mz6QBQFWUUEWDMgEs1dU,1058
68
- lm_deluge-0.0.45.dist-info/METADATA,sha256=REqWf83ltWQnBLfTxjfebN3Bloe6BiPFsV9tdYcDtAs,13443
69
- lm_deluge-0.0.45.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
70
- lm_deluge-0.0.45.dist-info/top_level.txt,sha256=hqU-TJX93yBwpgkDtYcXyLr3t7TLSCCZ_reytJjwBaE,10
71
- lm_deluge-0.0.45.dist-info/RECORD,,
69
+ lm_deluge-0.0.47.dist-info/licenses/LICENSE,sha256=uNNXGXPCw2TC7CUs7SEBkA-Mz6QBQFWUUEWDMgEs1dU,1058
70
+ lm_deluge-0.0.47.dist-info/METADATA,sha256=K1qROYXuOweKiuMGg4faTUfd-pNOJ4b7BqQa3W_smQk,13443
71
+ lm_deluge-0.0.47.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
72
+ lm_deluge-0.0.47.dist-info/top_level.txt,sha256=hqU-TJX93yBwpgkDtYcXyLr3t7TLSCCZ_reytJjwBaE,10
73
+ lm_deluge-0.0.47.dist-info/RECORD,,