lm-deluge 0.0.76__py3-none-any.whl → 0.0.79__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.
- lm_deluge/api_requests/gemini.py +78 -11
- lm_deluge/client.py +1 -0
- lm_deluge/config.py +7 -0
- lm_deluge/llm_tools/filesystem.py +821 -0
- lm_deluge/llm_tools/sandbox.py +523 -0
- lm_deluge/models/google.py +15 -0
- lm_deluge/models/openrouter.py +10 -0
- lm_deluge/prompt.py +62 -24
- lm_deluge/warnings.py +2 -0
- {lm_deluge-0.0.76.dist-info → lm_deluge-0.0.79.dist-info}/METADATA +9 -8
- {lm_deluge-0.0.76.dist-info → lm_deluge-0.0.79.dist-info}/RECORD +14 -13
- {lm_deluge-0.0.76.dist-info → lm_deluge-0.0.79.dist-info}/WHEEL +0 -0
- {lm_deluge-0.0.76.dist-info → lm_deluge-0.0.79.dist-info}/licenses/LICENSE +0 -0
- {lm_deluge-0.0.76.dist-info → lm_deluge-0.0.79.dist-info}/top_level.txt +0 -0
lm_deluge/prompt.py
CHANGED
|
@@ -61,6 +61,8 @@ class ToolCall:
|
|
|
61
61
|
built_in: bool = False
|
|
62
62
|
built_in_type: str | None = None
|
|
63
63
|
extra_body: dict | None = None
|
|
64
|
+
# for gemini 3 - thought signatures to maintain reasoning context
|
|
65
|
+
thought_signature: str | None = None
|
|
64
66
|
|
|
65
67
|
@property
|
|
66
68
|
def fingerprint(self) -> str:
|
|
@@ -93,7 +95,10 @@ class ToolCall:
|
|
|
93
95
|
}
|
|
94
96
|
|
|
95
97
|
def gemini(self) -> dict:
|
|
96
|
-
|
|
98
|
+
result = {"functionCall": {"name": self.name, "args": self.arguments}}
|
|
99
|
+
if self.thought_signature is not None:
|
|
100
|
+
result["thoughtSignature"] = self.thought_signature # type: ignore
|
|
101
|
+
return result
|
|
97
102
|
|
|
98
103
|
def mistral(self) -> dict:
|
|
99
104
|
return {
|
|
@@ -253,6 +258,8 @@ class Thinking:
|
|
|
253
258
|
type: str = field(init=False, default="thinking")
|
|
254
259
|
# for openai - to keep conversation chain
|
|
255
260
|
raw_payload: dict | None = None
|
|
261
|
+
# for gemini 3 - thought signatures to maintain reasoning context
|
|
262
|
+
thought_signature: str | None = None
|
|
256
263
|
|
|
257
264
|
@property
|
|
258
265
|
def fingerprint(self) -> str:
|
|
@@ -270,7 +277,10 @@ class Thinking:
|
|
|
270
277
|
return {"type": "thinking", "thinking": self.content}
|
|
271
278
|
|
|
272
279
|
def gemini(self) -> dict:
|
|
273
|
-
|
|
280
|
+
result = {"text": f"[Thinking: {self.content}]"}
|
|
281
|
+
if self.thought_signature is not None:
|
|
282
|
+
result["thoughtSignature"] = self.thought_signature
|
|
283
|
+
return result
|
|
274
284
|
|
|
275
285
|
def mistral(self) -> dict:
|
|
276
286
|
return {"type": "text", "text": f"[Thinking: {self.content}]"}
|
|
@@ -374,14 +384,15 @@ class Message:
|
|
|
374
384
|
size = p.size
|
|
375
385
|
content_blocks.append({"type": "file", "tag": f"<File ({size} bytes)>"})
|
|
376
386
|
elif isinstance(p, ToolCall):
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
387
|
+
tool_call_block = {
|
|
388
|
+
"type": "tool_call",
|
|
389
|
+
"id": p.id,
|
|
390
|
+
"name": p.name,
|
|
391
|
+
"arguments": _json_safe(p.arguments),
|
|
392
|
+
}
|
|
393
|
+
if p.thought_signature is not None:
|
|
394
|
+
tool_call_block["thought_signature"] = p.thought_signature
|
|
395
|
+
content_blocks.append(tool_call_block)
|
|
385
396
|
elif isinstance(p, ToolResult):
|
|
386
397
|
content_blocks.append(
|
|
387
398
|
{
|
|
@@ -391,7 +402,10 @@ class Message:
|
|
|
391
402
|
}
|
|
392
403
|
)
|
|
393
404
|
elif isinstance(p, Thinking):
|
|
394
|
-
|
|
405
|
+
thinking_block = {"type": "thinking", "content": p.content}
|
|
406
|
+
if p.thought_signature is not None:
|
|
407
|
+
thinking_block["thought_signature"] = p.thought_signature
|
|
408
|
+
content_blocks.append(thinking_block)
|
|
395
409
|
|
|
396
410
|
return {"role": self.role, "content": content_blocks}
|
|
397
411
|
|
|
@@ -415,14 +429,24 @@ class Message:
|
|
|
415
429
|
parts.append(Text(p["tag"]))
|
|
416
430
|
elif p["type"] == "tool_call":
|
|
417
431
|
parts.append(
|
|
418
|
-
ToolCall(
|
|
432
|
+
ToolCall(
|
|
433
|
+
id=p["id"],
|
|
434
|
+
name=p["name"],
|
|
435
|
+
arguments=p["arguments"],
|
|
436
|
+
thought_signature=p.get("thought_signature"),
|
|
437
|
+
)
|
|
419
438
|
)
|
|
420
439
|
elif p["type"] == "tool_result":
|
|
421
440
|
parts.append(
|
|
422
441
|
ToolResult(tool_call_id=p["tool_call_id"], result=p["result"])
|
|
423
442
|
)
|
|
424
443
|
elif p["type"] == "thinking":
|
|
425
|
-
parts.append(
|
|
444
|
+
parts.append(
|
|
445
|
+
Thinking(
|
|
446
|
+
content=p["content"],
|
|
447
|
+
thought_signature=p.get("thought_signature"),
|
|
448
|
+
)
|
|
449
|
+
)
|
|
426
450
|
else:
|
|
427
451
|
raise ValueError(f"Unknown part type {p['type']!r}")
|
|
428
452
|
|
|
@@ -1546,14 +1570,15 @@ class Conversation:
|
|
|
1546
1570
|
{"type": "file", "tag": f"<File ({size} bytes)>"}
|
|
1547
1571
|
)
|
|
1548
1572
|
elif isinstance(p, ToolCall):
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
|
|
1553
|
-
|
|
1554
|
-
|
|
1555
|
-
|
|
1556
|
-
|
|
1573
|
+
tool_call_block = {
|
|
1574
|
+
"type": "tool_call",
|
|
1575
|
+
"id": p.id,
|
|
1576
|
+
"name": p.name,
|
|
1577
|
+
"arguments": p.arguments,
|
|
1578
|
+
}
|
|
1579
|
+
if p.thought_signature is not None:
|
|
1580
|
+
tool_call_block["thought_signature"] = p.thought_signature
|
|
1581
|
+
content_blocks.append(tool_call_block)
|
|
1557
1582
|
elif isinstance(p, ToolResult):
|
|
1558
1583
|
content_blocks.append(
|
|
1559
1584
|
{
|
|
@@ -1565,7 +1590,10 @@ class Conversation:
|
|
|
1565
1590
|
}
|
|
1566
1591
|
)
|
|
1567
1592
|
elif isinstance(p, Thinking):
|
|
1568
|
-
|
|
1593
|
+
thinking_block = {"type": "thinking", "content": p.content}
|
|
1594
|
+
if p.thought_signature is not None:
|
|
1595
|
+
thinking_block["thought_signature"] = p.thought_signature
|
|
1596
|
+
content_blocks.append(thinking_block)
|
|
1569
1597
|
serialized.append({"role": msg.role, "content": content_blocks})
|
|
1570
1598
|
|
|
1571
1599
|
return {"messages": serialized}
|
|
@@ -1590,14 +1618,24 @@ class Conversation:
|
|
|
1590
1618
|
parts.append(Text(p["tag"]))
|
|
1591
1619
|
elif p["type"] == "tool_call":
|
|
1592
1620
|
parts.append(
|
|
1593
|
-
ToolCall(
|
|
1621
|
+
ToolCall(
|
|
1622
|
+
id=p["id"],
|
|
1623
|
+
name=p["name"],
|
|
1624
|
+
arguments=p["arguments"],
|
|
1625
|
+
thought_signature=p.get("thought_signature"),
|
|
1626
|
+
)
|
|
1594
1627
|
)
|
|
1595
1628
|
elif p["type"] == "tool_result":
|
|
1596
1629
|
parts.append(
|
|
1597
1630
|
ToolResult(tool_call_id=p["tool_call_id"], result=p["result"])
|
|
1598
1631
|
)
|
|
1599
1632
|
elif p["type"] == "thinking":
|
|
1600
|
-
parts.append(
|
|
1633
|
+
parts.append(
|
|
1634
|
+
Thinking(
|
|
1635
|
+
content=p["content"],
|
|
1636
|
+
thought_signature=p.get("thought_signature"),
|
|
1637
|
+
)
|
|
1638
|
+
)
|
|
1601
1639
|
else:
|
|
1602
1640
|
raise ValueError(f"Unknown part type {p['type']!r}")
|
|
1603
1641
|
|
lm_deluge/warnings.py
CHANGED
|
@@ -9,6 +9,8 @@ WARNINGS: dict[str, str] = {
|
|
|
9
9
|
"WARN_LOGPROBS_UNSUPPORTED": "Ignoring logprobs param for non-logprobs model: {model_name}",
|
|
10
10
|
"WARN_MINIMAL_TO_LOW": "'minimal' reasoning effort only allowed for gpt-5 models. Setting to 'low' for {model_name}.",
|
|
11
11
|
"WARN_MINIMAL_TO_NONE": "GPT-5.1 models don't support 'minimal' reasoning effort. Converting to 'none' for {model_name}.",
|
|
12
|
+
"WARN_MEDIA_RESOLUTION_UNSUPPORTED": "media_resolution parameter is only supported for Gemini 3 models, ignoring for {model_name}.",
|
|
13
|
+
"WARN_GEMINI3_MISSING_SIGNATURE": "Gemini 3 thought signature missing in {part_type}, injecting dummy signature 'context_engineering_is_the_way_to_go' to avoid API error.",
|
|
12
14
|
}
|
|
13
15
|
|
|
14
16
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: lm_deluge
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.79
|
|
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
|
|
@@ -52,7 +52,7 @@ Dynamic: license-file
|
|
|
52
52
|
pip install lm-deluge
|
|
53
53
|
```
|
|
54
54
|
|
|
55
|
-
The package relies on environment variables for API keys. Typical variables include `OPENAI_API_KEY`, `ANTHROPIC_API_KEY`, `COHERE_API_KEY`, `META_API_KEY`, and `
|
|
55
|
+
The package relies on environment variables for API keys. Typical variables include `OPENAI_API_KEY`, `ANTHROPIC_API_KEY`, `COHERE_API_KEY`, `META_API_KEY`, and `GEMINI_API_KEY`. `LLMClient` will automatically load the `.env` file when imported; we recommend using that to set the environment variables. For Bedrock, you'll need to set `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY`.
|
|
56
56
|
|
|
57
57
|
## Quickstart
|
|
58
58
|
|
|
@@ -61,9 +61,9 @@ The package relies on environment variables for API keys. Typical variables incl
|
|
|
61
61
|
```python
|
|
62
62
|
from lm_deluge import LLMClient
|
|
63
63
|
|
|
64
|
-
client = LLMClient("gpt-
|
|
64
|
+
client = LLMClient("gpt-4.1-mini")
|
|
65
65
|
resps = client.process_prompts_sync(["Hello, world!"])
|
|
66
|
-
print(
|
|
66
|
+
print(resps[0].completion)
|
|
67
67
|
```
|
|
68
68
|
|
|
69
69
|
## Spraying Across Models
|
|
@@ -74,13 +74,13 @@ To distribute your requests across models, just provide a list of more than one
|
|
|
74
74
|
from lm_deluge import LLMClient
|
|
75
75
|
|
|
76
76
|
client = LLMClient(
|
|
77
|
-
["gpt-
|
|
77
|
+
["gpt-4.1-mini", "claude-4.5-haiku"],
|
|
78
78
|
max_requests_per_minute=10_000
|
|
79
79
|
)
|
|
80
80
|
resps = client.process_prompts_sync(
|
|
81
81
|
["Hello, ChatGPT!", "Hello, Claude!"]
|
|
82
82
|
)
|
|
83
|
-
print(
|
|
83
|
+
print(resps[0].completion)
|
|
84
84
|
```
|
|
85
85
|
|
|
86
86
|
## Configuration
|
|
@@ -181,7 +181,7 @@ def get_weather(city: str) -> str:
|
|
|
181
181
|
return f"The weather in {city} is sunny and 72°F"
|
|
182
182
|
|
|
183
183
|
tool = Tool.from_function(get_weather)
|
|
184
|
-
client = LLMClient("claude-
|
|
184
|
+
client = LLMClient("claude-4.5-haiku")
|
|
185
185
|
resps = client.process_prompts_sync(
|
|
186
186
|
["What's the weather in Paris?"],
|
|
187
187
|
tools=[tool]
|
|
@@ -255,7 +255,7 @@ conv = (
|
|
|
255
255
|
)
|
|
256
256
|
|
|
257
257
|
# Use prompt caching to cache system message and tools
|
|
258
|
-
client = LLMClient("claude-
|
|
258
|
+
client = LLMClient("claude-4.5-sonnet")
|
|
259
259
|
resps = client.process_prompts_sync(
|
|
260
260
|
[conv],
|
|
261
261
|
cache="system_and_tools" # Cache system message and any tools
|
|
@@ -301,5 +301,6 @@ The `lm_deluge.llm_tools` package exposes a few helper functions:
|
|
|
301
301
|
- `extract` – structure text or images into a Pydantic model based on a schema.
|
|
302
302
|
- `translate` – translate a list of strings to English.
|
|
303
303
|
- `score_llm` – simple yes/no style scoring with optional log probability output.
|
|
304
|
+
- `FilesystemManager` – expose a sandboxed read/write filesystem tool (with optional regex search and `apply_patch` support) that agents can call without touching the host machine.
|
|
304
305
|
|
|
305
306
|
Experimental embeddings (`embed.embed_parallel_async`) and document reranking (`rerank.rerank_parallel_async`) clients are also provided.
|
|
@@ -2,27 +2,27 @@ lm_deluge/__init__.py,sha256=zF5lAitfgJ8A28IXJ5BE9OUCqGOqSnGOWn3ZIlizNyY,822
|
|
|
2
2
|
lm_deluge/batches.py,sha256=Km6QM5_7BlF2qEyo4WPlhkaZkpzrLqf50AaveHXQOoY,25127
|
|
3
3
|
lm_deluge/cache.py,sha256=xO2AIYvP3tUpTMKQjwQQYfGRJSRi6e7sMlRhLjsS-u4,4873
|
|
4
4
|
lm_deluge/cli.py,sha256=Ilww5gOw3J5v0NReq_Ra4hhxU4BCIJBl1oTGxJZKedc,12065
|
|
5
|
-
lm_deluge/client.py,sha256=
|
|
6
|
-
lm_deluge/config.py,sha256=
|
|
5
|
+
lm_deluge/client.py,sha256=ZwDD4qkPFJsPxDMCijD6lz2s5ULL-hW58tGFN00BmSI,44796
|
|
6
|
+
lm_deluge/config.py,sha256=7pTfqlg4qHf68qpckr21deVtCuao9b0ypiXT2k-nHUE,1210
|
|
7
7
|
lm_deluge/embed.py,sha256=CO-TOlC5kOTAM8lcnicoG4u4K664vCBwHF1vHa-nAGg,13382
|
|
8
8
|
lm_deluge/errors.py,sha256=oHjt7YnxWbh-eXMScIzov4NvpJMo0-2r5J6Wh5DQ1tk,209
|
|
9
9
|
lm_deluge/file.py,sha256=PTmlJQ-IaYcYUFun9V0bJ1NPVP84edJrR0hvCMWFylY,19697
|
|
10
10
|
lm_deluge/image.py,sha256=5AMXmn2x47yXeYNfMSMAOWcnlrOxxOel-4L8QCJwU70,8928
|
|
11
11
|
lm_deluge/mock_openai.py,sha256=-u4kxSzwoxDt_2fLh5LaiqETnu0Jg_VDL7TWAAYHGNw,21762
|
|
12
|
-
lm_deluge/prompt.py,sha256=
|
|
12
|
+
lm_deluge/prompt.py,sha256=JRjLckFQ14r5wfWcYCjFOTGADTz4klwMthctx0GwrtU,65808
|
|
13
13
|
lm_deluge/request_context.py,sha256=eM_cCXZsrVb5FF3VQl6u1dZeZrWv00wW42Cr_Fjs5oA,2752
|
|
14
14
|
lm_deluge/rerank.py,sha256=-NBAJdHz9OB-SWWJnHzkFmeVO4wR6lFV7Vw-SxG7aVo,11457
|
|
15
15
|
lm_deluge/tool.py,sha256=ipgNy4OpfH3CA9OPQq5zfn1xO8H08GMvDynB8ZPQ5mA,30617
|
|
16
16
|
lm_deluge/tracker.py,sha256=aeS9GUJpgOSQRVXAnGDvlMO8qYpSxpTNLYj2hrMg0m8,14757
|
|
17
17
|
lm_deluge/usage.py,sha256=xz9tAw2hqaJvv9aAVhnQ6N1Arn7fS8Shb28VwCW26wI,5136
|
|
18
|
-
lm_deluge/warnings.py,sha256=
|
|
18
|
+
lm_deluge/warnings.py,sha256=bAG9UXPnppk_oWGIsWpY3k5lWin4tganYFw0U7OEvJQ,2062
|
|
19
19
|
lm_deluge/api_requests/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
20
20
|
lm_deluge/api_requests/anthropic.py,sha256=OvkciXTHyrG1cFyC1vv6nYyCFTqtMgt1r15Q-pbHiUQ,10411
|
|
21
21
|
lm_deluge/api_requests/base.py,sha256=mXEM85mcU_5LD-ugELpCl28tv-tpHKcaxerTIVLQZVo,10436
|
|
22
22
|
lm_deluge/api_requests/bedrock.py,sha256=mY1xTvgfCLyqLlfFFmu_baKgkVq1Df1_MJXeN_G1jWQ,15597
|
|
23
23
|
lm_deluge/api_requests/chat_reasoning.py,sha256=sJvstvKFqsSBUjYcwxzGt2_FH4cEp3Z6gKcBPyPjGwk,236
|
|
24
24
|
lm_deluge/api_requests/common.py,sha256=BZ3vRO5TB669_UsNKugkkuFSzoLHOYJIKt4nV4sf4vc,422
|
|
25
|
-
lm_deluge/api_requests/gemini.py,sha256=
|
|
25
|
+
lm_deluge/api_requests/gemini.py,sha256=gHmIfEY48B-MYlJYxYc8hT8ojmK16XSETcvfljRKAH0,10813
|
|
26
26
|
lm_deluge/api_requests/mistral.py,sha256=8JZP2CDf1XZfaPcTk0WS4q-VfYYj58ptpoH8LD3MQG4,4528
|
|
27
27
|
lm_deluge/api_requests/openai.py,sha256=E0oakhcb2T5Swfn6ATMjRZKuLyRrx4Zj5SREo1JILfc,28841
|
|
28
28
|
lm_deluge/api_requests/response.py,sha256=vG194gAH5p7ulpNy4qy5Pryfb1p3ZV21-YGoj__ru3E,7436
|
|
@@ -40,9 +40,10 @@ lm_deluge/built_in_tools/anthropic/editor.py,sha256=DyC_DrHVTm1khU9QDL39vBuhu4tO
|
|
|
40
40
|
lm_deluge/llm_tools/__init__.py,sha256=fMBsM6cGNxmv0YHZHZ79DGrfn3XYmiucvfgtxS47Ii8,433
|
|
41
41
|
lm_deluge/llm_tools/classify.py,sha256=OdMwV5u4XoPlVhjOHX0sng5KPBIKFJmQeOE2fmnPgLU,21
|
|
42
42
|
lm_deluge/llm_tools/extract.py,sha256=p61JW8yv5gQxPp4P8Hkm90ERgfD_Ek5IABzjIIlX-M0,4631
|
|
43
|
-
lm_deluge/llm_tools/filesystem.py,sha256=
|
|
43
|
+
lm_deluge/llm_tools/filesystem.py,sha256=Uy0lQ2Ecx5Cvqv0Sr3r_PEw8gBGZ21VAov5dg2knKfk,27942
|
|
44
44
|
lm_deluge/llm_tools/locate.py,sha256=lYNbKTmy9dTvj0lEQkOQ7yrxyqsgYzjD0C_byJKI_4w,6271
|
|
45
45
|
lm_deluge/llm_tools/ocr.py,sha256=7fDlvs6uUOvbxMasvGGNJx5Fj6biM6z3lijKZaGN26k,23
|
|
46
|
+
lm_deluge/llm_tools/sandbox.py,sha256=7bc4r0ApY4WfdzNrfKfO4Omoz9rR1rr86qp-OwtqlyY,18399
|
|
46
47
|
lm_deluge/llm_tools/score.py,sha256=9oGA3-k2U5buHQXkXaEI9M4Wb5yysNhTLsPbGeghAlQ,2580
|
|
47
48
|
lm_deluge/llm_tools/subagents.py,sha256=srJ7On7YR0Y8WuNvf5TJl_7IUfEtG3zlxZeLgmn_-NI,8484
|
|
48
49
|
lm_deluge/llm_tools/todos.py,sha256=doKJZWLZlh4J_k6HkdwonWHfZTZaxEI9_XHAoNFnfQo,14906
|
|
@@ -54,7 +55,7 @@ lm_deluge/models/cerebras.py,sha256=u2FMXJF6xMr0euDRKLKMo_NVTOcvSrrEpehbHr8sSeE,
|
|
|
54
55
|
lm_deluge/models/cohere.py,sha256=iXjYtM6jy_YL73Op8OfNsrMNopwae9y-Sw-4vF9cEBw,3406
|
|
55
56
|
lm_deluge/models/deepseek.py,sha256=6_jDEprNNYis5I5MDQNloRes9h1P6pMYHXxOd2UZMgg,941
|
|
56
57
|
lm_deluge/models/fireworks.py,sha256=yvt2Ggzye4aUqCqY74ta67Vu7FrQaLFjdFtN4P7D-dc,638
|
|
57
|
-
lm_deluge/models/google.py,sha256=
|
|
58
|
+
lm_deluge/models/google.py,sha256=fARfBMHDwhPJ48SGcYg3sHQDQ0Mm0yPQ-9s6iVYne8M,6011
|
|
58
59
|
lm_deluge/models/grok.py,sha256=TDzr8yfTaHbdJhwMA-Du6L-efaKFJhjTQViuVElCCHI,2566
|
|
59
60
|
lm_deluge/models/groq.py,sha256=Mi5WE1xOBGoZlymD0UN6kzhH_NOmfJYU4N2l-TO0Z8Q,2552
|
|
60
61
|
lm_deluge/models/kimi.py,sha256=1voigLdNO2CxpWv0KDpQPP3Wolx5WrqgAlYL9ObJFuQ,1117
|
|
@@ -62,7 +63,7 @@ lm_deluge/models/meta.py,sha256=BBgnscL1gMcIdPbRqrlDl_q9YAYGSrkw9JkAIabXtLs,1883
|
|
|
62
63
|
lm_deluge/models/minimax.py,sha256=rwW9gNotAYfDVtMlqmSYegN6GoZM_9DSNNZU2yPOmaU,275
|
|
63
64
|
lm_deluge/models/mistral.py,sha256=x67o5gckBGmPcIGdVbS26XZAYFKBYM4tsxEAahGp8bk,4323
|
|
64
65
|
lm_deluge/models/openai.py,sha256=t6fcXo0YXgPQ6YiftZJP8gPw8FOBqoVapSavMVmtaOw,12411
|
|
65
|
-
lm_deluge/models/openrouter.py,sha256=
|
|
66
|
+
lm_deluge/models/openrouter.py,sha256=aT3AGBaZ0ShY2-ncGHbc8UEm00l78GqkXy9Pq67SITQ,2469
|
|
66
67
|
lm_deluge/models/together.py,sha256=AjKhPsazqBgqyLwHkNQW07COM1n_oSrYQRp2BFVvn9o,4381
|
|
67
68
|
lm_deluge/presets/cerebras.py,sha256=MDkqj15qQRrj8wxSCDNNe_Cs7h1WN1UjV6lTmSY1olQ,479
|
|
68
69
|
lm_deluge/presets/meta.py,sha256=QrreLAVgYS6VIC_NQth1vgGAYuxY38jFQQZSe6ot7C8,364
|
|
@@ -73,8 +74,8 @@ lm_deluge/util/schema.py,sha256=q6uwhA4s1lM2dHT1Kwc46E7OY1VecMOtTEI0PTFn6tA,1320
|
|
|
73
74
|
lm_deluge/util/spatial.py,sha256=BsF_UKhE-x0xBirc-bV1xSKZRTUhsOBdGqsMKme20C8,4099
|
|
74
75
|
lm_deluge/util/validation.py,sha256=hz5dDb3ebvZrZhnaWxOxbNSVMI6nmaOODBkk0htAUhs,1575
|
|
75
76
|
lm_deluge/util/xml.py,sha256=Ft4zajoYBJR3HHCt2oHwGfymGLdvp_gegVmJ-Wqk4Ck,10547
|
|
76
|
-
lm_deluge-0.0.
|
|
77
|
-
lm_deluge-0.0.
|
|
78
|
-
lm_deluge-0.0.
|
|
79
|
-
lm_deluge-0.0.
|
|
80
|
-
lm_deluge-0.0.
|
|
77
|
+
lm_deluge-0.0.79.dist-info/licenses/LICENSE,sha256=uNNXGXPCw2TC7CUs7SEBkA-Mz6QBQFWUUEWDMgEs1dU,1058
|
|
78
|
+
lm_deluge-0.0.79.dist-info/METADATA,sha256=wqNdfbJ_BIJT-uZMOvwX9RWgqqzUFM4rZ_a4KblAFus,13705
|
|
79
|
+
lm_deluge-0.0.79.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
80
|
+
lm_deluge-0.0.79.dist-info/top_level.txt,sha256=hqU-TJX93yBwpgkDtYcXyLr3t7TLSCCZ_reytJjwBaE,10
|
|
81
|
+
lm_deluge-0.0.79.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|