fabricatio 0.2.7.dev0__cp39-cp39-win_amd64.whl → 0.2.7.dev1__cp39-cp39-win_amd64.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.
- fabricatio/_rust.cp39-win_amd64.pyd +0 -0
- fabricatio/_rust.pyi +11 -2
- fabricatio/actions/article.py +69 -42
- fabricatio/actions/output.py +21 -6
- fabricatio/capabilities/correct.py +34 -4
- fabricatio/capabilities/rag.py +41 -5
- fabricatio/capabilities/rating.py +4 -4
- fabricatio/capabilities/task.py +2 -2
- fabricatio/config.py +3 -0
- fabricatio/models/extra.py +285 -258
- fabricatio/models/generic.py +60 -9
- fabricatio/models/kwargs_types.py +20 -2
- fabricatio/models/usages.py +45 -37
- fabricatio-0.2.7.dev1.data/scripts/tdown.exe +0 -0
- {fabricatio-0.2.7.dev0.dist-info → fabricatio-0.2.7.dev1.dist-info}/METADATA +6 -2
- {fabricatio-0.2.7.dev0.dist-info → fabricatio-0.2.7.dev1.dist-info}/RECORD +18 -18
- fabricatio-0.2.7.dev0.data/scripts/tdown.exe +0 -0
- {fabricatio-0.2.7.dev0.dist-info → fabricatio-0.2.7.dev1.dist-info}/WHEEL +0 -0
- {fabricatio-0.2.7.dev0.dist-info → fabricatio-0.2.7.dev1.dist-info}/licenses/LICENSE +0 -0
fabricatio/models/generic.py
CHANGED
@@ -10,6 +10,7 @@ from fabricatio._rust_instances import TEMPLATE_MANAGER
|
|
10
10
|
from fabricatio.config import configs
|
11
11
|
from fabricatio.fs.readers import MAGIKA, safe_text_read
|
12
12
|
from fabricatio.journal import logger
|
13
|
+
from fabricatio.models.utils import ok
|
13
14
|
from fabricatio.parser import JsonCapture
|
14
15
|
from pydantic import (
|
15
16
|
BaseModel,
|
@@ -19,6 +20,7 @@ from pydantic import (
|
|
19
20
|
NonNegativeFloat,
|
20
21
|
PositiveFloat,
|
21
22
|
PositiveInt,
|
23
|
+
PrivateAttr,
|
22
24
|
SecretStr,
|
23
25
|
)
|
24
26
|
|
@@ -63,6 +65,44 @@ class Described(Base):
|
|
63
65
|
"""The description of the object."""
|
64
66
|
|
65
67
|
|
68
|
+
class AsPrompt(Base):
|
69
|
+
"""Class that provides a method to generate a prompt from the model."""
|
70
|
+
|
71
|
+
@final
|
72
|
+
def as_prompt(self) -> str:
|
73
|
+
"""Generate a prompt from the model.
|
74
|
+
|
75
|
+
Returns:
|
76
|
+
str: The generated prompt.
|
77
|
+
"""
|
78
|
+
return TEMPLATE_MANAGER.render_template(
|
79
|
+
configs.templates.as_prompt_template,
|
80
|
+
self._as_prompt_inner(),
|
81
|
+
)
|
82
|
+
|
83
|
+
@abstractmethod
|
84
|
+
def _as_prompt_inner(self) -> Dict[str, str]: ...
|
85
|
+
|
86
|
+
|
87
|
+
class WithRef[T](Base):
|
88
|
+
"""Class that provides a reference to another object."""
|
89
|
+
|
90
|
+
_reference: Optional[T] = PrivateAttr(None)
|
91
|
+
|
92
|
+
@property
|
93
|
+
def referenced(self) -> T:
|
94
|
+
"""Get the referenced object."""
|
95
|
+
return ok(self._reference, "_reference is None")
|
96
|
+
|
97
|
+
def update_ref(self, reference: T | Self) -> Self:
|
98
|
+
"""Update the reference of the object."""
|
99
|
+
if isinstance(reference, self.__class__):
|
100
|
+
self._reference = reference.referenced
|
101
|
+
else:
|
102
|
+
self._reference = reference
|
103
|
+
return self
|
104
|
+
|
105
|
+
|
66
106
|
class WithBriefing(Named, Described):
|
67
107
|
"""Class that provides a briefing based on the name and description."""
|
68
108
|
|
@@ -75,17 +115,26 @@ class WithBriefing(Named, Described):
|
|
75
115
|
"""
|
76
116
|
return f"{self.name}: {self.description}" if self.description else self.name
|
77
117
|
|
78
|
-
def
|
79
|
-
"
|
118
|
+
def _prepend_inner(self, input_text: str) -> str:
|
119
|
+
return f"# your personal briefing: \n{self.briefing}\n{input_text}"
|
120
|
+
|
121
|
+
def prepend_sys_msg[D: (Dict[str, Any], str)](self, system_msg_like: D = "") -> Dict[str, Any]:
|
122
|
+
"""Prepend the system message with the briefing.
|
80
123
|
|
81
124
|
Args:
|
82
|
-
|
125
|
+
system_msg_like (str | dict): The system message or a dictionary containing the system message.
|
83
126
|
|
84
127
|
Returns:
|
85
|
-
|
128
|
+
dict: The system message with the briefing prepended.
|
86
129
|
"""
|
87
|
-
|
88
|
-
|
130
|
+
match system_msg_like:
|
131
|
+
case dict(d):
|
132
|
+
d["system_message"] = self._prepend_inner(d.get("system_message", ""))
|
133
|
+
return d
|
134
|
+
case str(s):
|
135
|
+
return {"system_message": self._prepend_inner(s)}
|
136
|
+
case _:
|
137
|
+
raise TypeError(f"{system_msg_like} is not a dict or str")
|
89
138
|
|
90
139
|
|
91
140
|
class WithFormatedJsonSchema(Base):
|
@@ -158,19 +207,17 @@ class InstantiateFromString(Base):
|
|
158
207
|
class ProposedAble(CreateJsonObjPrompt, InstantiateFromString):
|
159
208
|
"""Class that provides a method to propose a JSON object based on the requirement."""
|
160
209
|
|
161
|
-
pass
|
162
|
-
|
163
210
|
|
164
211
|
class FinalizedDumpAble(Base):
|
165
212
|
"""Class that provides a method to finalize the dump of the object."""
|
166
213
|
|
167
|
-
@abstractmethod
|
168
214
|
def finalized_dump(self) -> str:
|
169
215
|
"""Finalize the dump of the object.
|
170
216
|
|
171
217
|
Returns:
|
172
218
|
str: The finalized dump of the object.
|
173
219
|
"""
|
220
|
+
return self.model_dump_json()
|
174
221
|
|
175
222
|
def finalized_dump_to(self, path: str | Path) -> Self:
|
176
223
|
"""Finalize the dump of the object to a file.
|
@@ -185,6 +232,10 @@ class FinalizedDumpAble(Base):
|
|
185
232
|
return self
|
186
233
|
|
187
234
|
|
235
|
+
class CensoredAble(ProposedAble, FinalizedDumpAble):
|
236
|
+
"""Class that provides a method to censor the object."""
|
237
|
+
|
238
|
+
|
188
239
|
class WithDependency(Base):
|
189
240
|
"""Class that manages file dependencies."""
|
190
241
|
|
@@ -38,6 +38,12 @@ class FetchKwargs(TypedDict, total=False):
|
|
38
38
|
result_per_query: int
|
39
39
|
|
40
40
|
|
41
|
+
class RetrievalKwargs(FetchKwargs, total=False):
|
42
|
+
"""Arguments for retrieval operations."""
|
43
|
+
|
44
|
+
final_limit: int
|
45
|
+
|
46
|
+
|
41
47
|
class EmbeddingKwargs(TypedDict, total=False):
|
42
48
|
"""Configuration parameters for text embedding operations.
|
43
49
|
|
@@ -94,8 +100,14 @@ class ValidateKwargs[T](GenerateKwargs, total=False):
|
|
94
100
|
co_extractor: GenerateKwargs
|
95
101
|
|
96
102
|
|
103
|
+
class ReviewInnerKwargs[T](ValidateKwargs[T], total=False):
|
104
|
+
"""Arguments for content review operations."""
|
105
|
+
|
106
|
+
criteria: set[str]
|
107
|
+
|
108
|
+
|
97
109
|
# noinspection PyTypedDict
|
98
|
-
class ReviewKwargs[T](
|
110
|
+
class ReviewKwargs[T](ReviewInnerKwargs[T], total=False):
|
99
111
|
"""Arguments for content review operations.
|
100
112
|
|
101
113
|
Extends GenerateKwargs with parameters for evaluating content against
|
@@ -103,7 +115,6 @@ class ReviewKwargs[T](ValidateKwargs[T], total=False):
|
|
103
115
|
"""
|
104
116
|
|
105
117
|
topic: Required[str]
|
106
|
-
criteria: set[str]
|
107
118
|
|
108
119
|
|
109
120
|
class CorrectKwargs[T](ReviewKwargs[T], total=False):
|
@@ -117,6 +128,13 @@ class CorrectKwargs[T](ReviewKwargs[T], total=False):
|
|
117
128
|
supervisor_check: bool
|
118
129
|
|
119
130
|
|
131
|
+
class CensoredCorrectKwargs[T](ReviewInnerKwargs[T], total=False):
|
132
|
+
"""Arguments for content censorship operations."""
|
133
|
+
|
134
|
+
reference: str
|
135
|
+
supervisor_check: bool
|
136
|
+
|
137
|
+
|
120
138
|
# noinspection PyTypedDict
|
121
139
|
class ChooseKwargs[T](ValidateKwargs[T], total=False):
|
122
140
|
"""Arguments for selection operations.
|
fabricatio/models/usages.py
CHANGED
@@ -23,7 +23,7 @@ from litellm.types.utils import (
|
|
23
23
|
StreamingChoices,
|
24
24
|
TextChoices,
|
25
25
|
)
|
26
|
-
from litellm.utils import CustomStreamWrapper # pyright: ignore [reportPrivateImportUsage]
|
26
|
+
from litellm.utils import CustomStreamWrapper, token_counter # pyright: ignore [reportPrivateImportUsage]
|
27
27
|
from more_itertools import duplicates_everseen
|
28
28
|
from pydantic import Field, NonNegativeInt, PositiveInt
|
29
29
|
|
@@ -118,6 +118,7 @@ class LLMUsage(ScopedConfig):
|
|
118
118
|
question: str,
|
119
119
|
system_message: str = "",
|
120
120
|
n: PositiveInt | None = None,
|
121
|
+
stream_buffer_size: int = 50,
|
121
122
|
**kwargs: Unpack[LLMKwargs],
|
122
123
|
) -> Sequence[TextChoices | Choices | StreamingChoices]:
|
123
124
|
"""Asynchronously invokes the language model with a question and optional system message.
|
@@ -126,6 +127,7 @@ class LLMUsage(ScopedConfig):
|
|
126
127
|
question (str): The question to ask the model.
|
127
128
|
system_message (str): The system message to provide context to the model. Defaults to an empty string.
|
128
129
|
n (PositiveInt | None): The number of responses to generate. Defaults to the instance's `llm_generation_count` or the global configuration.
|
130
|
+
stream_buffer_size (int): The buffer size for streaming responses. Defaults to 50.
|
129
131
|
**kwargs (Unpack[LLMKwargs]): Additional keyword arguments for the LLM usage.
|
130
132
|
|
131
133
|
Returns:
|
@@ -142,9 +144,13 @@ class LLMUsage(ScopedConfig):
|
|
142
144
|
if not configs.debug.streaming_visible and (pack := stream_chunk_builder(await asyncstdlib.list())):
|
143
145
|
return pack.choices
|
144
146
|
chunks = []
|
147
|
+
buffer = ""
|
145
148
|
async for chunk in resp:
|
146
149
|
chunks.append(chunk)
|
147
|
-
|
150
|
+
buffer += chunk.choices[0].delta.content or ""
|
151
|
+
if len(buffer) % stream_buffer_size == 0:
|
152
|
+
print(buffer, end="") # noqa: T201
|
153
|
+
buffer = ""
|
148
154
|
if pack := stream_chunk_builder(chunks):
|
149
155
|
return pack.choices
|
150
156
|
logger.critical(err := f"Unexpected response type: {type(resp)}")
|
@@ -196,8 +202,7 @@ class LLMUsage(ScopedConfig):
|
|
196
202
|
Returns:
|
197
203
|
str | List[str]: The content of the model's response message.
|
198
204
|
"""
|
199
|
-
|
200
|
-
match (question, system_message):
|
205
|
+
match (question, system_message or ""):
|
201
206
|
case (list(q_seq), list(sm_seq)):
|
202
207
|
res = await gather(
|
203
208
|
*[
|
@@ -205,18 +210,23 @@ class LLMUsage(ScopedConfig):
|
|
205
210
|
for q, sm in zip(q_seq, sm_seq, strict=True)
|
206
211
|
]
|
207
212
|
)
|
208
|
-
|
213
|
+
out = [r[0].message.content for r in res] # pyright: ignore [reportAttributeAccessIssue]
|
209
214
|
case (list(q_seq), str(sm)):
|
210
215
|
res = await gather(*[self.ainvoke(n=1, question=q, system_message=sm, **kwargs) for q in q_seq])
|
211
|
-
|
216
|
+
out = [r[0].message.content for r in res] # pyright: ignore [reportAttributeAccessIssue]
|
212
217
|
case (str(q), list(sm_seq)):
|
213
218
|
res = await gather(*[self.ainvoke(n=1, question=q, system_message=sm, **kwargs) for sm in sm_seq])
|
214
|
-
|
219
|
+
out = [r[0].message.content for r in res] # pyright: ignore [reportAttributeAccessIssue]
|
215
220
|
case (str(q), str(sm)):
|
216
|
-
|
221
|
+
out = ((await self.ainvoke(n=1, question=q, system_message=sm, **kwargs))[0]).message.content # pyright: ignore [reportAttributeAccessIssue]
|
217
222
|
case _:
|
218
223
|
raise RuntimeError("Should not reach here.")
|
219
224
|
|
225
|
+
logger.debug(
|
226
|
+
f"Response Token Count: {token_counter(text=out) if isinstance(out, str) else sum(token_counter(text=o) for o in out)}" # pyright: ignore [reportOptionalIterable]
|
227
|
+
)
|
228
|
+
return out # pyright: ignore [reportReturnType]
|
229
|
+
|
220
230
|
@overload
|
221
231
|
async def aask_validate[T](
|
222
232
|
self,
|
@@ -286,26 +296,26 @@ class LLMUsage(ScopedConfig):
|
|
286
296
|
async def _inner(q: str) -> Optional[T]:
|
287
297
|
for lap in range(max_validations):
|
288
298
|
try:
|
289
|
-
if (
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
)
|
301
|
-
|
302
|
-
|
299
|
+
if (
|
300
|
+
(response := await self.aask(question=q, **kwargs))
|
301
|
+
or (
|
302
|
+
co_extractor
|
303
|
+
and (
|
304
|
+
response := await self.aask(
|
305
|
+
question=(
|
306
|
+
TEMPLATE_MANAGER.render_template(
|
307
|
+
configs.templates.co_validation_template,
|
308
|
+
{"original_q": q, "original_a": response},
|
309
|
+
)
|
310
|
+
),
|
311
|
+
**co_extractor,
|
312
|
+
)
|
303
313
|
)
|
304
314
|
)
|
305
|
-
|
306
|
-
|
307
|
-
logger.debug(f"Successfully validated the co-response at {lap}th attempt.")
|
315
|
+
) and (validated := validator(response)):
|
316
|
+
logger.debug(f"Successfully validated the response at {lap}th attempt.")
|
308
317
|
return validated
|
318
|
+
|
309
319
|
except RateLimitError as e:
|
310
320
|
logger.warning(f"Rate limit error: {e}")
|
311
321
|
continue
|
@@ -319,10 +329,7 @@ class LLMUsage(ScopedConfig):
|
|
319
329
|
logger.error(f"Failed to validate the response after {max_validations} attempts.")
|
320
330
|
return default
|
321
331
|
|
322
|
-
if isinstance(question,
|
323
|
-
return await _inner(question)
|
324
|
-
|
325
|
-
return await gather(*[_inner(q) for q in question])
|
332
|
+
return await (gather(*[_inner(q) for q in question]) if isinstance(question, list) else _inner(question))
|
326
333
|
|
327
334
|
async def aliststr(
|
328
335
|
self, requirement: str, k: NonNegativeInt = 0, **kwargs: Unpack[ValidateKwargs[List[str]]]
|
@@ -364,7 +371,7 @@ class LLMUsage(ScopedConfig):
|
|
364
371
|
**kwargs,
|
365
372
|
)
|
366
373
|
|
367
|
-
async def awhich_pathstr(self, requirement: str, **kwargs: Unpack[ValidateKwargs[List[str]]]) -> str:
|
374
|
+
async def awhich_pathstr(self, requirement: str, **kwargs: Unpack[ValidateKwargs[List[str]]]) -> Optional[str]:
|
368
375
|
"""Asynchronously generates a single path string based on a given requirement.
|
369
376
|
|
370
377
|
Args:
|
@@ -374,13 +381,14 @@ class LLMUsage(ScopedConfig):
|
|
374
381
|
Returns:
|
375
382
|
str: The validated response as a single string.
|
376
383
|
"""
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
)
|
383
|
-
|
384
|
+
if paths := await self.apathstr(
|
385
|
+
requirement,
|
386
|
+
k=1,
|
387
|
+
**kwargs,
|
388
|
+
):
|
389
|
+
return paths.pop()
|
390
|
+
|
391
|
+
return None
|
384
392
|
|
385
393
|
async def ageneric_string(self, requirement: str, **kwargs: Unpack[ValidateKwargs[str]]) -> Optional[str]:
|
386
394
|
"""Asynchronously generates a generic string based on a given requirement.
|
Binary file
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: fabricatio
|
3
|
-
Version: 0.2.7.
|
3
|
+
Version: 0.2.7.dev1
|
4
4
|
Classifier: License :: OSI Approved :: MIT License
|
5
5
|
Classifier: Programming Language :: Rust
|
6
6
|
Classifier: Programming Language :: Python :: 3.12
|
@@ -24,9 +24,13 @@ Requires-Dist: questionary>=2.1.0
|
|
24
24
|
Requires-Dist: regex>=2024.11.6
|
25
25
|
Requires-Dist: rich>=13.9.4
|
26
26
|
Requires-Dist: pymilvus>=2.5.4 ; extra == 'rag'
|
27
|
-
Requires-Dist: fabricatio[rag] ; extra == 'full'
|
27
|
+
Requires-Dist: fabricatio[calc,plot,rag] ; extra == 'full'
|
28
|
+
Requires-Dist: sympy>=1.13.3 ; extra == 'calc'
|
29
|
+
Requires-Dist: matplotlib>=3.10.1 ; extra == 'plot'
|
28
30
|
Provides-Extra: rag
|
29
31
|
Provides-Extra: full
|
32
|
+
Provides-Extra: calc
|
33
|
+
Provides-Extra: plot
|
30
34
|
License-File: LICENSE
|
31
35
|
Summary: A LLM multi-agent framework.
|
32
36
|
Keywords: ai,agents,multi-agent,llm,pyo3
|
@@ -1,16 +1,16 @@
|
|
1
|
-
fabricatio-0.2.7.
|
2
|
-
fabricatio-0.2.7.
|
3
|
-
fabricatio-0.2.7.
|
4
|
-
fabricatio/actions/article.py,sha256=
|
5
|
-
fabricatio/actions/output.py,sha256=
|
1
|
+
fabricatio-0.2.7.dev1.dist-info/METADATA,sha256=rbtzXxw7C4TQhFkrr8L-0M_EbrmJV3VKDgJEMX5ewgs,14236
|
2
|
+
fabricatio-0.2.7.dev1.dist-info/WHEEL,sha256=mDFV3bKFgwlxLHvOsPqpR9up9dUKYzsUQNKBdkW5c08,94
|
3
|
+
fabricatio-0.2.7.dev1.dist-info/licenses/LICENSE,sha256=do7J7EiCGbq0QPbMAL_FqLYufXpHnCnXBOuqVPwSV8Y,1088
|
4
|
+
fabricatio/actions/article.py,sha256=m35NoNcnc2vPnAT9Ya3xtBFTUr52K8ymqPUSq6AQDpQ,5309
|
5
|
+
fabricatio/actions/output.py,sha256=K7xsBH8MjXRH6JOy3ZO94KCQzX2jNrwPPK_rRXVkS0E,1161
|
6
6
|
fabricatio/actions/rag.py,sha256=QBdzEM8MloM_ahx5pTBZAETm9_631lTe_0ih_he_Iuo,2759
|
7
|
-
fabricatio/capabilities/correct.py,sha256=
|
7
|
+
fabricatio/capabilities/correct.py,sha256=8GOU2VBPUakjG-r59SqsCgCD0QHX-l__IynCLO-ib8Q,6482
|
8
8
|
fabricatio/capabilities/propose.py,sha256=y3kge5g6bb8HYuV8e9h4MdqOMTlsfAIZpqE_cagWPTY,1593
|
9
|
-
fabricatio/capabilities/rag.py,sha256=
|
10
|
-
fabricatio/capabilities/rating.py,sha256=
|
9
|
+
fabricatio/capabilities/rag.py,sha256=XVvfH6rcog-moj1WCgwtR-l0-NdbFR6-fMQFLG7_asY,17690
|
10
|
+
fabricatio/capabilities/rating.py,sha256=vzEWOjGXmcZcw-bHtOWba0VojONU1Toy015o9H42RLQ,14438
|
11
11
|
fabricatio/capabilities/review.py,sha256=zETLiWBU0sJ_xHGyDMpTIItofaEieLyv0eSZGqEjDT4,11106
|
12
|
-
fabricatio/capabilities/task.py,sha256=
|
13
|
-
fabricatio/config.py,sha256=
|
12
|
+
fabricatio/capabilities/task.py,sha256=vtS0YOe639vN8iTrkP2WK0AJVCr5N_JAaJuvRGyY2Fg,4639
|
13
|
+
fabricatio/config.py,sha256=hUv5XMzOkEw8cQjsVHTpPPix52IKwmxjBsZM6Px3xZI,16915
|
14
14
|
fabricatio/core.py,sha256=VQ_JKgUGIy2gZ8xsTBZCdr_IP7wC5aPg0_bsOmjQ588,6458
|
15
15
|
fabricatio/decorators.py,sha256=uzsP4tFKQNjDHBkofsjjoJA0IUAaYOtt6YVedoyOqlo,6551
|
16
16
|
fabricatio/fs/curd.py,sha256=N6l2MncjrFfnXBRtteRouXp5Rjy8EAKC_i29_G-zz98,4618
|
@@ -19,13 +19,13 @@ fabricatio/fs/__init__.py,sha256=PCf0s_9KDjVfNw7AfPoJzGt3jMq4gJOfbcT4pb0D0ZY,588
|
|
19
19
|
fabricatio/journal.py,sha256=stnEP88aUBA_GmU9gfTF2EZI8FS2OyMLGaMSTgK4QgA,476
|
20
20
|
fabricatio/models/action.py,sha256=6gffWv8NKw5HwtbmNimWfD5AZqQRzBV-PgAICHq7ZYU,8608
|
21
21
|
fabricatio/models/events.py,sha256=QvlnS8FEELg6KNabcJMeh2GV_y0ZBzKOPphcteKYWYU,4183
|
22
|
-
fabricatio/models/extra.py,sha256=
|
23
|
-
fabricatio/models/generic.py,sha256=
|
24
|
-
fabricatio/models/kwargs_types.py,sha256=
|
22
|
+
fabricatio/models/extra.py,sha256=QuN4pv80DApjzU1Jny03Dib8bu7ff5YXZs7yMzVhH30,28176
|
23
|
+
fabricatio/models/generic.py,sha256=vS7klUD4FMsRfdwWCskN0qtsEGcNUAQGJwp6dMvFHjU,15715
|
24
|
+
fabricatio/models/kwargs_types.py,sha256=J8Ct2_toefwehGfPi6ttSPd2AvqnZXpKGNZdhhv1UuA,5433
|
25
25
|
fabricatio/models/role.py,sha256=mmQbJ6GKr2Gx3wtjEz8d-vYoXs09ffcEkT_eCXaDd3E,2782
|
26
26
|
fabricatio/models/task.py,sha256=8NaR7ojQWyM740EDTqt9stwHKdrD6axCRpLKo0QzS-I,10492
|
27
27
|
fabricatio/models/tool.py,sha256=kD0eB7OxO9geZOxO6JIKvCBeG-KOpRAkfRZqK_WGfW4,7105
|
28
|
-
fabricatio/models/usages.py,sha256=
|
28
|
+
fabricatio/models/usages.py,sha256=LvU3Zfy3TZp6dwxWczRw9sb2c7xleqhsGscZ9gymf_0,31453
|
29
29
|
fabricatio/models/utils.py,sha256=NyIS82Gex4Q9qs6pzys5HplQ6JJXOLJBj4OkMPZYioc,5910
|
30
30
|
fabricatio/parser.py,sha256=9Jzw-yV6uKbFvf6sPna-XHdziVGVBZWvPctgX_6ODL8,6251
|
31
31
|
fabricatio/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -34,9 +34,9 @@ fabricatio/toolboxes/fs.py,sha256=l4L1CVxJmjw9Ld2XUpIlWfV0_Fu_2Og6d3E13I-S4aE,73
|
|
34
34
|
fabricatio/toolboxes/__init__.py,sha256=KBJi5OG_pExscdlM7Bnt_UF43j4I3Lv6G71kPVu4KQU,395
|
35
35
|
fabricatio/workflows/articles.py,sha256=G5HGRr-DHuYuEcfhFdFAuDvTTJ9aSU_UQ2yYXEjTMtM,1047
|
36
36
|
fabricatio/workflows/rag.py,sha256=-YYp2tlE9Vtfgpg6ROpu6QVO8j8yVSPa6yDzlN3qVxs,520
|
37
|
-
fabricatio/_rust.pyi,sha256=
|
37
|
+
fabricatio/_rust.pyi,sha256=dGTGV7viu3YAGl1cRKIWrdHPc1hlwk3_hbaDaswxdVo,3831
|
38
38
|
fabricatio/_rust_instances.py,sha256=2GwF8aVfYNemRI2feBzH1CZfBGno-XJJE5imJokGEYw,314
|
39
39
|
fabricatio/__init__.py,sha256=SzBYsRhZeL77jLtfJEjmoHOSwHwUGyvMATX6xfndLDM,1135
|
40
|
-
fabricatio/_rust.cp39-win_amd64.pyd,sha256=
|
41
|
-
fabricatio-0.2.7.
|
42
|
-
fabricatio-0.2.7.
|
40
|
+
fabricatio/_rust.cp39-win_amd64.pyd,sha256=v28StThnbVVewtNPoW6XDKZ004F-CB0y7aRUcHATz-s,1840128
|
41
|
+
fabricatio-0.2.7.dev1.data/scripts/tdown.exe,sha256=1BjZ8Iu_BgKhjSg9nH8BdSHfCjIYNq50DfaKWsomKxA,3401728
|
42
|
+
fabricatio-0.2.7.dev1.dist-info/RECORD,,
|
Binary file
|
File without changes
|
File without changes
|