fabricatio 0.3.14.dev5__cp313-cp313-manylinux_2_34_x86_64.whl → 0.3.14.dev8__cp313-cp313-manylinux_2_34_x86_64.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/actions/article_rag.py +5 -14
- fabricatio/capabilities/rag.py +30 -29
- fabricatio/decorators.py +2 -0
- fabricatio/models/extra/aricle_rag.py +8 -6
- fabricatio/models/extra/article_base.py +3 -3
- fabricatio/models/extra/article_main.py +3 -6
- fabricatio/models/role.py +24 -20
- fabricatio/rust.cpython-313-x86_64-linux-gnu.so +0 -0
- fabricatio/rust.pyi +11 -64
- {fabricatio-0.3.14.dev5.data → fabricatio-0.3.14.dev8.data}/scripts/tdown +0 -0
- {fabricatio-0.3.14.dev5.data → fabricatio-0.3.14.dev8.data}/scripts/ttm +0 -0
- {fabricatio-0.3.14.dev5.dist-info → fabricatio-0.3.14.dev8.dist-info}/METADATA +1 -1
- {fabricatio-0.3.14.dev5.dist-info → fabricatio-0.3.14.dev8.dist-info}/RECORD +43 -43
- {fabricatio-0.3.14.dev5.dist-info → fabricatio-0.3.14.dev8.dist-info}/WHEEL +1 -1
- {fabricatio-0.3.14.dev5.dist-info → fabricatio-0.3.14.dev8.dist-info}/licenses/LICENSE +0 -0
@@ -21,10 +21,7 @@ from fabricatio.models.extra.rule import RuleSet
|
|
21
21
|
from fabricatio.models.kwargs_types import ChooseKwargs, LLMKwargs
|
22
22
|
from fabricatio.rust import (
|
23
23
|
BibManager,
|
24
|
-
|
25
|
-
convert_all_inline_tex,
|
26
|
-
convert_to_block_formula,
|
27
|
-
convert_to_inline_formula,
|
24
|
+
convert_all_tex_math,
|
28
25
|
fix_misplaced_labels,
|
29
26
|
)
|
30
27
|
from fabricatio.utils import ok
|
@@ -129,8 +126,7 @@ class WriteArticleContentRAG(Action, Extract, AdvancedRAG):
|
|
129
126
|
raw_paras = edt
|
130
127
|
|
131
128
|
raw_paras = fix_misplaced_labels(raw_paras)
|
132
|
-
raw_paras =
|
133
|
-
raw_paras = convert_all_block_tex(raw_paras)
|
129
|
+
raw_paras = convert_all_tex_math(raw_paras)
|
134
130
|
|
135
131
|
r_print(raw_paras)
|
136
132
|
|
@@ -153,8 +149,7 @@ class WriteArticleContentRAG(Action, Extract, AdvancedRAG):
|
|
153
149
|
raw_paras = "\n".join(p for p in raw_paras.splitlines() if p and not p.endswith("**") and not p.startswith("#"))
|
154
150
|
|
155
151
|
raw_paras = fix_misplaced_labels(raw_paras)
|
156
|
-
raw_paras =
|
157
|
-
raw_paras = convert_all_block_tex(raw_paras)
|
152
|
+
raw_paras = convert_all_tex_math(raw_paras)
|
158
153
|
|
159
154
|
return await self.extract_new_subsec(subsec, raw_paras, cm)
|
160
155
|
|
@@ -261,8 +256,6 @@ class ArticleConsultRAG(Action, AdvancedRAG):
|
|
261
256
|
from questionary import confirm, text
|
262
257
|
from rich import print as r_print
|
263
258
|
|
264
|
-
from fabricatio.rust import convert_all_block_tex, convert_all_inline_tex, fix_misplaced_labels
|
265
|
-
|
266
259
|
self.target_collection = collection_name or self.safe_target_collection
|
267
260
|
|
268
261
|
cm = CitationManager()
|
@@ -272,8 +265,7 @@ class ArticleConsultRAG(Action, AdvancedRAG):
|
|
272
265
|
if await confirm("Empty the cm?").ask_async():
|
273
266
|
cm.empty()
|
274
267
|
|
275
|
-
req =
|
276
|
-
req = convert_to_inline_formula(req)
|
268
|
+
req = convert_all_tex_math(req)
|
277
269
|
|
278
270
|
await self.clued_search(
|
279
271
|
req,
|
@@ -289,8 +281,7 @@ class ArticleConsultRAG(Action, AdvancedRAG):
|
|
289
281
|
ret = await self.aask(f"{cm.as_prompt()}\n{self.req}\n{req}")
|
290
282
|
|
291
283
|
ret = fix_misplaced_labels(ret)
|
292
|
-
ret =
|
293
|
-
ret = convert_all_block_tex(ret)
|
284
|
+
ret = convert_all_tex_math(ret)
|
294
285
|
ret = cm.apply(ret)
|
295
286
|
|
296
287
|
r_print(ret)
|
fabricatio/capabilities/rag.py
CHANGED
@@ -51,16 +51,16 @@ class RAG(EmbeddingUsage, ABC):
|
|
51
51
|
return self._client
|
52
52
|
|
53
53
|
def init_client(
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
54
|
+
self,
|
55
|
+
milvus_uri: Optional[str] = None,
|
56
|
+
milvus_token: Optional[str] = None,
|
57
|
+
milvus_timeout: Optional[float] = None,
|
58
58
|
) -> Self:
|
59
59
|
"""Initialize the Milvus client."""
|
60
60
|
self._client = create_client(
|
61
61
|
uri=milvus_uri or ok(self.milvus_uri or CONFIG.rag.milvus_uri),
|
62
62
|
token=milvus_token
|
63
|
-
|
63
|
+
or (token.get_secret_value() if (token := (self.milvus_token or CONFIG.rag.milvus_token)) else ""),
|
64
64
|
timeout=milvus_timeout or self.milvus_timeout or CONFIG.rag.milvus_timeout,
|
65
65
|
)
|
66
66
|
return self
|
@@ -74,7 +74,7 @@ class RAG(EmbeddingUsage, ABC):
|
|
74
74
|
return self
|
75
75
|
|
76
76
|
def view(
|
77
|
-
|
77
|
+
self, collection_name: Optional[str], create: bool = False, **kwargs: Unpack[CollectionConfigKwargs]
|
78
78
|
) -> Self:
|
79
79
|
"""View the specified collection.
|
80
80
|
|
@@ -116,7 +116,7 @@ class RAG(EmbeddingUsage, ABC):
|
|
116
116
|
return ok(self.target_collection, "No collection is being viewed. Have you called `self.view()`?")
|
117
117
|
|
118
118
|
async def add_document[D: MilvusDataBase](
|
119
|
-
|
119
|
+
self, data: List[D] | D, collection_name: Optional[str] = None, flush: bool = False
|
120
120
|
) -> Self:
|
121
121
|
"""Adds a document to the specified collection.
|
122
122
|
|
@@ -143,15 +143,15 @@ class RAG(EmbeddingUsage, ABC):
|
|
143
143
|
return self
|
144
144
|
|
145
145
|
async def afetch_document[D: MilvusDataBase](
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
146
|
+
self,
|
147
|
+
query: List[str],
|
148
|
+
document_model: Type[D],
|
149
|
+
collection_name: Optional[str] = None,
|
150
|
+
similarity_threshold: float = 0.37,
|
151
|
+
result_per_query: int = 10,
|
152
|
+
tei_endpoint: Optional[str] = None,
|
153
|
+
reranker_threshold: float = 0.7,
|
154
|
+
filter_expr: str = "",
|
155
155
|
) -> List[D]:
|
156
156
|
"""Asynchronously fetches documents from a Milvus database based on input vectors.
|
157
157
|
|
@@ -192,7 +192,8 @@ class RAG(EmbeddingUsage, ABC):
|
|
192
192
|
retrieved_id.update(res["id"] for res in g)
|
193
193
|
if not models:
|
194
194
|
continue
|
195
|
-
rank_scores = await reranker.arerank(q, [m.prepare_vectorization() for m in models], truncate=True
|
195
|
+
rank_scores = await reranker.arerank(q, [m.prepare_vectorization() for m in models], truncate=True,
|
196
|
+
truncation_direction="Left")
|
196
197
|
raw_result.extend((models[idx], scr) for (idx, scr) in rank_scores if scr > reranker_threshold)
|
197
198
|
|
198
199
|
raw_result_sorted = sorted(raw_result, key=lambda x: x[1], reverse=True)
|
@@ -214,11 +215,11 @@ class RAG(EmbeddingUsage, ABC):
|
|
214
215
|
return document_model.from_sequence(resp)
|
215
216
|
|
216
217
|
async def aretrieve[D: MilvusDataBase](
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
218
|
+
self,
|
219
|
+
query: List[str] | str,
|
220
|
+
document_model: Type[D],
|
221
|
+
max_accepted: int = 20,
|
222
|
+
**kwargs: Unpack[FetchKwargs],
|
222
223
|
) -> List[D]:
|
223
224
|
"""Retrieve data from the collection.
|
224
225
|
|
@@ -235,15 +236,15 @@ class RAG(EmbeddingUsage, ABC):
|
|
235
236
|
query = [query]
|
236
237
|
|
237
238
|
return (
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
239
|
+
await self.afetch_document(
|
240
|
+
query=query,
|
241
|
+
document_model=document_model,
|
242
|
+
**kwargs,
|
243
|
+
)
|
244
|
+
)[:max_accepted]
|
244
245
|
|
245
246
|
async def arefined_query(
|
246
|
-
|
247
|
+
self, question: List[str] | str, **kwargs: Unpack[ChooseKwargs[Optional[List[str]]]]
|
247
248
|
) -> Optional[List[str]]:
|
248
249
|
"""Refines the given question using a template.
|
249
250
|
|
fabricatio/decorators.py
CHANGED
@@ -235,6 +235,7 @@ def logging_exec_time[**P, R](
|
|
235
235
|
@wraps(func)
|
236
236
|
async def _async_wrapper(*args: P.args, **kwargs: P.kwargs) -> R:
|
237
237
|
start_time = time()
|
238
|
+
logger.debug(f"Starting execution of {func.__name__}")
|
238
239
|
result = await func(*args, **kwargs)
|
239
240
|
logger.debug(f"Execution time of `{func.__name__}`: {time() - start_time:.2f} s")
|
240
241
|
return result
|
@@ -244,6 +245,7 @@ def logging_exec_time[**P, R](
|
|
244
245
|
@wraps(func)
|
245
246
|
def _wrapper(*args: P.args, **kwargs: P.kwargs) -> R:
|
246
247
|
start_time = time()
|
248
|
+
logger.debug(f"Starting execution of {func.__name__}")
|
247
249
|
result = func(*args, **kwargs)
|
248
250
|
logger.debug(f"Execution time of {func.__name__}: {(time() - start_time) * 1000:.2f} ms")
|
249
251
|
return result
|
@@ -1,6 +1,7 @@
|
|
1
1
|
"""A Module containing the article rag models."""
|
2
2
|
|
3
3
|
import re
|
4
|
+
from dataclasses import dataclass, field
|
4
5
|
from itertools import groupby
|
5
6
|
from pathlib import Path
|
6
7
|
from typing import ClassVar, Dict, List, Optional, Self, Unpack
|
@@ -68,7 +69,7 @@ class ArticleChunk(MilvusDataBase):
|
|
68
69
|
|
69
70
|
@classmethod
|
70
71
|
def from_file[P: str | Path](
|
71
|
-
|
72
|
+
cls, path: P | List[P], bib_mgr: BibManager, **kwargs: Unpack[ChunkKwargs]
|
72
73
|
) -> List[Self]:
|
73
74
|
"""Load the article chunks from the file."""
|
74
75
|
if isinstance(path, list):
|
@@ -85,9 +86,9 @@ class ArticleChunk(MilvusDataBase):
|
|
85
86
|
title_seg = path.stem.split(" - ").pop()
|
86
87
|
|
87
88
|
key = (
|
88
|
-
|
89
|
-
|
90
|
-
|
89
|
+
bib_mgr.get_cite_key_by_title(title_seg)
|
90
|
+
or bib_mgr.get_cite_key_by_title_fuzzy(title_seg)
|
91
|
+
or bib_mgr.get_cite_key_fuzzy(path.stem)
|
91
92
|
)
|
92
93
|
if key is None:
|
93
94
|
logger.warning(f"no cite key found for {path.as_posix()}, skip.")
|
@@ -165,10 +166,11 @@ class ArticleChunk(MilvusDataBase):
|
|
165
166
|
return self
|
166
167
|
|
167
168
|
|
169
|
+
@dataclass
|
168
170
|
class CitationManager(AsPrompt):
|
169
171
|
"""Citation manager."""
|
170
172
|
|
171
|
-
article_chunks: List[ArticleChunk] =
|
173
|
+
article_chunks: List[ArticleChunk] = field(default_factory=list)
|
172
174
|
"""Article chunks."""
|
173
175
|
|
174
176
|
pat: str = r"(\[\[([\d\s,-]*)]])"
|
@@ -179,7 +181,7 @@ class CitationManager(AsPrompt):
|
|
179
181
|
"""Separator for abbreviated citation numbers."""
|
180
182
|
|
181
183
|
def update_chunks(
|
182
|
-
|
184
|
+
self, article_chunks: List[ArticleChunk], set_cite_number: bool = True, dedup: bool = True
|
183
185
|
) -> Self:
|
184
186
|
"""Update article chunks."""
|
185
187
|
self.article_chunks.clear()
|
@@ -2,9 +2,7 @@
|
|
2
2
|
|
3
3
|
from abc import ABC
|
4
4
|
from enum import StrEnum
|
5
|
-
from fabricatio.rust import extract_body, replace_thesis_body, split_out_metadata, to_metadata, word_count
|
6
5
|
from pathlib import Path
|
7
|
-
from pydantic import Field
|
8
6
|
from typing import ClassVar, Generator, List, Optional, Self, Tuple, Type
|
9
7
|
|
10
8
|
from fabricatio.capabilities.persist import PersistentAble
|
@@ -23,7 +21,9 @@ from fabricatio.models.generic import (
|
|
23
21
|
Titled,
|
24
22
|
WordCount,
|
25
23
|
)
|
24
|
+
from fabricatio.rust import extract_body, replace_thesis_body, split_out_metadata, to_metadata, word_count
|
26
25
|
from fabricatio.utils import fallback_kwargs, ok
|
26
|
+
from pydantic import Field
|
27
27
|
|
28
28
|
ARTICLE_WRAPPER = "// =-=-=-=-=-=-=-=-=-="
|
29
29
|
|
@@ -275,7 +275,7 @@ class ArticleBase[T: ChapterBase](FinalizedDumpAble, AsPrompt, FromTypstCode, To
|
|
275
275
|
)
|
276
276
|
|
277
277
|
def iter_dfs_rev(
|
278
|
-
|
278
|
+
self,
|
279
279
|
) -> Generator[ArticleOutlineBase, None, None]:
|
280
280
|
"""Performs a depth-first search (DFS) through the article structure in reverse order.
|
281
281
|
|
@@ -19,8 +19,7 @@ from fabricatio.models.extra.article_outline import (
|
|
19
19
|
)
|
20
20
|
from fabricatio.models.generic import Described, SequencePatch, SketchedAble, WithRef, WordCount
|
21
21
|
from fabricatio.rust import (
|
22
|
-
|
23
|
-
convert_all_inline_tex,
|
22
|
+
convert_all_tex_math,
|
24
23
|
fix_misplaced_labels,
|
25
24
|
split_out_metadata,
|
26
25
|
word_count,
|
@@ -155,15 +154,13 @@ class Article(
|
|
155
154
|
if descriptions:
|
156
155
|
for a in self.iter_dfs():
|
157
156
|
a.description = fix_misplaced_labels(a.description)
|
158
|
-
a.description =
|
159
|
-
a.description = convert_all_block_tex(a.description)
|
157
|
+
a.description = convert_all_tex_math(a.description)
|
160
158
|
|
161
159
|
if paragraphs:
|
162
160
|
for _, _, subsec in self.iter_subsections():
|
163
161
|
for p in subsec.paragraphs:
|
164
162
|
p.content = fix_misplaced_labels(p.content)
|
165
|
-
p.content =
|
166
|
-
p.content = convert_all_block_tex(p.content)
|
163
|
+
p.content = convert_all_tex_math(p.content)
|
167
164
|
return self
|
168
165
|
|
169
166
|
@override
|
fabricatio/models/role.py
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
"""Module that contains the Role class for managing workflows and their event registrations."""
|
2
2
|
|
3
3
|
from functools import partial
|
4
|
-
from typing import Any, Dict, Self
|
4
|
+
from typing import Any, Callable, Dict, Self, Type
|
5
5
|
|
6
6
|
from fabricatio.emitter import env
|
7
7
|
from fabricatio.journal import logger
|
@@ -68,28 +68,32 @@ class Role(WithBriefing):
|
|
68
68
|
workflow.inject_personality(self.briefing)
|
69
69
|
return self
|
70
70
|
|
71
|
-
def
|
72
|
-
|
73
|
-
|
71
|
+
def _propagate_config(
|
72
|
+
self,
|
73
|
+
workflow: WorkFlow,
|
74
|
+
has_capability: Callable[[Type], bool],
|
75
|
+
config_method_name: str,
|
76
|
+
capability_description: str,
|
77
|
+
) -> None:
|
78
|
+
"""Propagates configuration to workflow and its actions if they have a given capability."""
|
79
|
+
if not has_capability(self.__class__):
|
74
80
|
return
|
75
81
|
|
76
|
-
|
77
|
-
if
|
78
|
-
|
79
|
-
|
82
|
+
config_source_for_actions = self
|
83
|
+
if has_capability(workflow.__class__):
|
84
|
+
logger.debug(
|
85
|
+
f"Configuring {capability_description} inherited from `{self.name}` for workflow: `{workflow.name}`"
|
86
|
+
)
|
87
|
+
getattr(workflow, config_method_name)(self)
|
88
|
+
config_source_for_actions = workflow
|
80
89
|
|
81
|
-
for action in (
|
82
|
-
action
|
90
|
+
for action in (act for act in workflow.iter_actions() if has_capability(act.__class__)):
|
91
|
+
getattr(action, config_method_name)(config_source_for_actions)
|
92
|
+
|
93
|
+
def _configure_scoped_config(self, workflow: WorkFlow) -> None:
|
94
|
+
"""Configure scoped configuration for workflow and its actions."""
|
95
|
+
self._propagate_config(workflow, is_scoped_config, "fallback_to", "scoped config")
|
83
96
|
|
84
97
|
def _configure_toolbox_usage(self, workflow: WorkFlow) -> None:
|
85
98
|
"""Configure toolbox usage for workflow and its actions."""
|
86
|
-
|
87
|
-
return
|
88
|
-
|
89
|
-
supply_target = self
|
90
|
-
if is_toolbox_usage(workflow):
|
91
|
-
workflow.supply_tools_from(self)
|
92
|
-
supply_target = workflow
|
93
|
-
|
94
|
-
for action in (a for a in workflow.iter_actions() if is_toolbox_usage(a)):
|
95
|
-
action.supply_tools_from(supply_target)
|
99
|
+
self._propagate_config(workflow, is_toolbox_usage, "supply_tools_from", "toolbox usage")
|
Binary file
|
fabricatio/rust.pyi
CHANGED
@@ -12,9 +12,10 @@ Key Features:
|
|
12
12
|
"""
|
13
13
|
|
14
14
|
from enum import StrEnum
|
15
|
-
from
|
15
|
+
from pathlib import Path
|
16
16
|
from typing import Any, Dict, List, Literal, Optional, Self, Tuple, Union, overload
|
17
17
|
|
18
|
+
from pydantic import JsonValue
|
18
19
|
|
19
20
|
class TemplateManager:
|
20
21
|
"""Template rendering engine using Handlebars templates.
|
@@ -47,10 +48,8 @@ class TemplateManager:
|
|
47
48
|
|
48
49
|
@overload
|
49
50
|
def render_template(self, name: str, data: Dict[str, Any]) -> str: ...
|
50
|
-
|
51
51
|
@overload
|
52
52
|
def render_template(self, name: str, data: List[Dict[str, Any]]) -> List[str]: ...
|
53
|
-
|
54
53
|
def render_template(self, name: str, data: Dict[str, Any] | List[Dict[str, Any]]) -> str | List[str]:
|
55
54
|
"""Render a template with context data.
|
56
55
|
|
@@ -67,10 +66,8 @@ class TemplateManager:
|
|
67
66
|
|
68
67
|
@overload
|
69
68
|
def render_template_raw(self, template: str, data: Dict[str, Any]) -> str: ...
|
70
|
-
|
71
69
|
@overload
|
72
70
|
def render_template_raw(self, template: str, data: List[Dict[str, Any]]) -> List[str]: ...
|
73
|
-
|
74
71
|
def render_template_raw(self, template: str, data: Dict[str, Any] | List[Dict[str, Any]]) -> str | List[str]:
|
75
72
|
"""Render a template with context data.
|
76
73
|
|
@@ -82,7 +79,6 @@ class TemplateManager:
|
|
82
79
|
Rendered template content as string or list of strings
|
83
80
|
"""
|
84
81
|
|
85
|
-
|
86
82
|
class BibManager:
|
87
83
|
"""BibTeX bibliography manager for parsing and querying citation data."""
|
88
84
|
|
@@ -191,7 +187,6 @@ class BibManager:
|
|
191
187
|
Field value if found, None otherwise
|
192
188
|
"""
|
193
189
|
|
194
|
-
|
195
190
|
def blake3_hash(content: bytes) -> str:
|
196
191
|
"""Calculate the BLAKE3 cryptographic hash of data.
|
197
192
|
|
@@ -202,11 +197,9 @@ def blake3_hash(content: bytes) -> str:
|
|
202
197
|
Hex-encoded BLAKE3 hash string
|
203
198
|
"""
|
204
199
|
|
205
|
-
|
206
200
|
def detect_language(string: str) -> str:
|
207
201
|
"""Detect the language of a given string."""
|
208
202
|
|
209
|
-
|
210
203
|
def split_word_bounds(string: str) -> List[str]:
|
211
204
|
"""Split the string into words based on word boundaries.
|
212
205
|
|
@@ -217,7 +210,6 @@ def split_word_bounds(string: str) -> List[str]:
|
|
217
210
|
A list of words extracted from the string.
|
218
211
|
"""
|
219
212
|
|
220
|
-
|
221
213
|
def split_sentence_bounds(string: str) -> List[str]:
|
222
214
|
"""Split the string into sentences based on sentence boundaries.
|
223
215
|
|
@@ -228,7 +220,6 @@ def split_sentence_bounds(string: str) -> List[str]:
|
|
228
220
|
A list of sentences extracted from the string.
|
229
221
|
"""
|
230
222
|
|
231
|
-
|
232
223
|
def split_into_chunks(string: str, max_chunk_size: int, max_overlapping_rate: float = 0.3) -> List[str]:
|
233
224
|
"""Split the string into chunks of a specified size.
|
234
225
|
|
@@ -241,7 +232,6 @@ def split_into_chunks(string: str, max_chunk_size: int, max_overlapping_rate: fl
|
|
241
232
|
A list of chunks extracted from the string.
|
242
233
|
"""
|
243
234
|
|
244
|
-
|
245
235
|
def word_count(string: str) -> int:
|
246
236
|
"""Count the number of words in the string.
|
247
237
|
|
@@ -252,67 +242,51 @@ def word_count(string: str) -> int:
|
|
252
242
|
The number of words in the string.
|
253
243
|
"""
|
254
244
|
|
255
|
-
|
256
245
|
def is_chinese(string: str) -> bool:
|
257
246
|
"""Check if the given string is in Chinese."""
|
258
247
|
|
259
|
-
|
260
248
|
def is_english(string: str) -> bool:
|
261
249
|
"""Check if the given string is in English."""
|
262
250
|
|
263
|
-
|
264
251
|
def is_japanese(string: str) -> bool:
|
265
252
|
"""Check if the given string is in Japanese."""
|
266
253
|
|
267
|
-
|
268
254
|
def is_korean(string: str) -> bool:
|
269
255
|
"""Check if the given string is in Korean."""
|
270
256
|
|
271
|
-
|
272
257
|
def is_arabic(string: str) -> bool:
|
273
258
|
"""Check if the given string is in Arabic."""
|
274
259
|
|
275
|
-
|
276
260
|
def is_russian(string: str) -> bool:
|
277
261
|
"""Check if the given string is in Russian."""
|
278
262
|
|
279
|
-
|
280
263
|
def is_german(string: str) -> bool:
|
281
264
|
"""Check if the given string is in German."""
|
282
265
|
|
283
|
-
|
284
266
|
def is_french(string: str) -> bool:
|
285
267
|
"""Check if the given string is in French."""
|
286
268
|
|
287
|
-
|
288
269
|
def is_hindi(string: str) -> bool:
|
289
270
|
"""Check if the given string is in Hindi."""
|
290
271
|
|
291
|
-
|
292
272
|
def is_italian(string: str) -> bool:
|
293
273
|
"""Check if the given string is in Italian."""
|
294
274
|
|
295
|
-
|
296
275
|
def is_dutch(string: str) -> bool:
|
297
276
|
"""Check if the given string is in Dutch."""
|
298
277
|
|
299
|
-
|
300
278
|
def is_portuguese(string: str) -> bool:
|
301
279
|
"""Check if the given string is in Portuguese."""
|
302
280
|
|
303
|
-
|
304
281
|
def is_swedish(string: str) -> bool:
|
305
282
|
"""Check if the given string is in Swedish."""
|
306
283
|
|
307
|
-
|
308
284
|
def is_turkish(string: str) -> bool:
|
309
285
|
"""Check if the given string is in Turkish."""
|
310
286
|
|
311
|
-
|
312
287
|
def is_vietnamese(string: str) -> bool:
|
313
288
|
"""Check if the given string is in Vietnamese."""
|
314
289
|
|
315
|
-
|
316
290
|
def tex_to_typst(string: str) -> str:
|
317
291
|
"""Convert TeX to Typst.
|
318
292
|
|
@@ -323,11 +297,11 @@ def tex_to_typst(string: str) -> str:
|
|
323
297
|
The converted Typst string.
|
324
298
|
"""
|
325
299
|
|
326
|
-
|
327
300
|
def convert_all_tex_math(string: str) -> str:
|
328
|
-
"""Unified function to convert all supported TeX math expressions in a string to Typst format.
|
301
|
+
r"""Unified function to convert all supported TeX math expressions in a string to Typst format.
|
329
302
|
|
330
303
|
Handles $...$, $$...$$, \\(...\\), and \\[...\\]
|
304
|
+
|
331
305
|
Args:
|
332
306
|
string: The input string containing TeX math expressions.
|
333
307
|
|
@@ -335,7 +309,6 @@ def convert_all_tex_math(string: str) -> str:
|
|
335
309
|
The string with TeX math expressions converted to Typst format.
|
336
310
|
"""
|
337
311
|
|
338
|
-
|
339
312
|
def fix_misplaced_labels(string: str) -> str:
|
340
313
|
"""A func to fix labels in a string.
|
341
314
|
|
@@ -346,9 +319,8 @@ def fix_misplaced_labels(string: str) -> str:
|
|
346
319
|
The fixed string with labels properly placed.
|
347
320
|
"""
|
348
321
|
|
349
|
-
|
350
322
|
def comment(string: str) -> str:
|
351
|
-
"""Add comment to the string.
|
323
|
+
r"""Add comment to the string.
|
352
324
|
|
353
325
|
Args:
|
354
326
|
string: The input string to which comments will be added.
|
@@ -357,7 +329,6 @@ def comment(string: str) -> str:
|
|
357
329
|
The string with each line prefixed by '// '.
|
358
330
|
"""
|
359
331
|
|
360
|
-
|
361
332
|
def uncomment(string: str) -> str:
|
362
333
|
"""Remove comment from the string.
|
363
334
|
|
@@ -368,7 +339,6 @@ def uncomment(string: str) -> str:
|
|
368
339
|
The string with comments (lines starting with '// ' or '//') removed.
|
369
340
|
"""
|
370
341
|
|
371
|
-
|
372
342
|
def split_out_metadata(string: str) -> Tuple[Optional[JsonValue], str]:
|
373
343
|
"""Split out metadata from a string.
|
374
344
|
|
@@ -379,7 +349,6 @@ def split_out_metadata(string: str) -> Tuple[Optional[JsonValue], str]:
|
|
379
349
|
A tuple containing the metadata as a Python object (if parseable) and the remaining string.
|
380
350
|
"""
|
381
351
|
|
382
|
-
|
383
352
|
def to_metadata(data: JsonValue) -> str:
|
384
353
|
"""Convert a Python object to a YAML string.
|
385
354
|
|
@@ -390,7 +359,6 @@ def to_metadata(data: JsonValue) -> str:
|
|
390
359
|
The YAML string representation of the input data.
|
391
360
|
"""
|
392
361
|
|
393
|
-
|
394
362
|
def replace_thesis_body(string: str, wrapper: str, new_body: str) -> Optional[str]:
|
395
363
|
"""Replace content between wrapper strings.
|
396
364
|
|
@@ -404,7 +372,6 @@ def replace_thesis_body(string: str, wrapper: str, new_body: str) -> Optional[st
|
|
404
372
|
|
405
373
|
"""
|
406
374
|
|
407
|
-
|
408
375
|
def extract_body(string: str, wrapper: str) -> Optional[str]:
|
409
376
|
"""Extract the content between two occurrences of a wrapper string.
|
410
377
|
|
@@ -416,7 +383,6 @@ def extract_body(string: str, wrapper: str) -> Optional[str]:
|
|
416
383
|
The content between the first two occurrences of the wrapper string if found, otherwise None.
|
417
384
|
"""
|
418
385
|
|
419
|
-
|
420
386
|
class LLMConfig:
|
421
387
|
"""LLM configuration structure.
|
422
388
|
|
@@ -468,7 +434,6 @@ class LLMConfig:
|
|
468
434
|
frequency_penalty: Optional[float]
|
469
435
|
"""Penalizes new tokens based on their frequency in text so far (-2.0-2.0)."""
|
470
436
|
|
471
|
-
|
472
437
|
class EmbeddingConfig:
|
473
438
|
"""Embedding configuration structure."""
|
474
439
|
|
@@ -493,7 +458,6 @@ class EmbeddingConfig:
|
|
493
458
|
api_key: Optional[SecretStr]
|
494
459
|
"""The API key."""
|
495
460
|
|
496
|
-
|
497
461
|
class RagConfig:
|
498
462
|
"""RAG (Retrieval Augmented Generation) configuration structure."""
|
499
463
|
|
@@ -509,18 +473,16 @@ class RagConfig:
|
|
509
473
|
milvus_dimensions: Optional[int]
|
510
474
|
"""The dimensions for Milvus vectors."""
|
511
475
|
|
512
|
-
|
513
476
|
class DebugConfig:
|
514
477
|
"""Debug configuration structure."""
|
515
478
|
|
516
479
|
log_level: Optional[str]
|
517
480
|
"""The logging level to use."""
|
518
481
|
|
519
|
-
|
520
482
|
class TemplateManagerConfig:
|
521
483
|
"""Template manager configuration structure."""
|
522
484
|
|
523
|
-
template_dir: List[
|
485
|
+
template_dir: List[Path]
|
524
486
|
"""The directories containing the templates."""
|
525
487
|
|
526
488
|
active_loading: Optional[bool]
|
@@ -529,7 +491,6 @@ class TemplateManagerConfig:
|
|
529
491
|
template_suffix: Optional[str]
|
530
492
|
"""The suffix of the templates."""
|
531
493
|
|
532
|
-
|
533
494
|
class TemplateConfig:
|
534
495
|
"""Template configuration structure."""
|
535
496
|
|
@@ -614,7 +575,6 @@ class TemplateConfig:
|
|
614
575
|
chap_summary_template: str
|
615
576
|
"""The name of the chap summary template which will be used to generate a chapter summary."""
|
616
577
|
|
617
|
-
|
618
578
|
class RoutingConfig:
|
619
579
|
"""Routing configuration structure for controlling request dispatching behavior."""
|
620
580
|
|
@@ -630,7 +590,6 @@ class RoutingConfig:
|
|
630
590
|
cooldown_time: Optional[int]
|
631
591
|
"""Time to cooldown a deployment after failure in seconds."""
|
632
592
|
|
633
|
-
|
634
593
|
class GeneralConfig:
|
635
594
|
"""General configuration structure for application-wide settings."""
|
636
595
|
|
@@ -640,7 +599,6 @@ class GeneralConfig:
|
|
640
599
|
use_json_repair: bool
|
641
600
|
"""Whether to automatically repair malformed JSON."""
|
642
601
|
|
643
|
-
|
644
602
|
class ToolBoxConfig:
|
645
603
|
"""Configuration for toolbox functionality."""
|
646
604
|
|
@@ -650,7 +608,6 @@ class ToolBoxConfig:
|
|
650
608
|
data_module_name: str
|
651
609
|
"""The name of the module containing the data."""
|
652
610
|
|
653
|
-
|
654
611
|
class PymitterConfig:
|
655
612
|
"""Pymitter configuration structure for controlling event emission and listener behavior."""
|
656
613
|
|
@@ -663,7 +620,6 @@ class PymitterConfig:
|
|
663
620
|
max_listeners: int
|
664
621
|
"""The maximum number of listeners per event. -1 means unlimited."""
|
665
622
|
|
666
|
-
|
667
623
|
class Config:
|
668
624
|
"""Configuration structure containing all system components."""
|
669
625
|
|
@@ -697,22 +653,17 @@ class Config:
|
|
697
653
|
pymitter: PymitterConfig
|
698
654
|
"""Pymitter configuration."""
|
699
655
|
|
700
|
-
|
701
656
|
CONFIG: Config
|
702
657
|
|
703
|
-
|
704
658
|
class SecretStr:
|
705
659
|
"""A string that should not be exposed."""
|
706
660
|
|
707
661
|
def __init__(self, source: str) -> None: ...
|
708
|
-
|
709
662
|
def get_secret_value(self) -> str:
|
710
663
|
"""Expose the secret string."""
|
711
664
|
|
712
|
-
|
713
665
|
TEMPLATE_MANAGER: TemplateManager
|
714
666
|
|
715
|
-
|
716
667
|
class Event:
|
717
668
|
"""Event class that represents a hierarchical event with segments.
|
718
669
|
|
@@ -824,12 +775,9 @@ class Event:
|
|
824
775
|
"""
|
825
776
|
|
826
777
|
def __hash__(self) -> int: ...
|
827
|
-
|
828
778
|
def __eq__(self, other: object) -> bool: ...
|
829
|
-
|
830
779
|
def __ne__(self, other: object) -> bool: ...
|
831
780
|
|
832
|
-
|
833
781
|
class TaskStatus(StrEnum, str):
|
834
782
|
"""Enumeration of possible task statuses."""
|
835
783
|
|
@@ -848,7 +796,6 @@ class TaskStatus(StrEnum, str):
|
|
848
796
|
Cancelled: TaskStatus
|
849
797
|
"""Task has been cancelled."""
|
850
798
|
|
851
|
-
|
852
799
|
class TEIClient:
|
853
800
|
"""Client for TEI reranking service.
|
854
801
|
|
@@ -864,11 +811,11 @@ class TEIClient:
|
|
864
811
|
"""
|
865
812
|
|
866
813
|
async def arerank(
|
867
|
-
|
868
|
-
|
869
|
-
|
870
|
-
|
871
|
-
|
814
|
+
self,
|
815
|
+
query: str,
|
816
|
+
texts: List[str],
|
817
|
+
truncate: bool = False,
|
818
|
+
truncation_direction: Literal["Left", "Right"] = "Left",
|
872
819
|
) -> List[Tuple[int, float]]:
|
873
820
|
"""Rerank texts based on relevance to query.
|
874
821
|
|
Binary file
|
Binary file
|
@@ -1,64 +1,64 @@
|
|
1
|
-
fabricatio-0.3.14.
|
2
|
-
fabricatio-0.3.14.
|
3
|
-
fabricatio-0.3.14.
|
4
|
-
fabricatio/
|
5
|
-
fabricatio/
|
6
|
-
fabricatio/emitter.py,sha256=QpMvs8dTy1zs5iDORFKzA615S3Lb1tm6AQxYBemQGcc,6164
|
1
|
+
fabricatio-0.3.14.dev8.data/scripts/tdown,sha256=op_mffGEO0MwNpPoDJVgVwtrHvVHizmgffZG2vc7aXE,4722624
|
2
|
+
fabricatio-0.3.14.dev8.data/scripts/ttm,sha256=497Iiu2C1OODIRb-pqOJ9WZdSL7wlHqfTDoPNkINJX8,3918760
|
3
|
+
fabricatio-0.3.14.dev8.dist-info/METADATA,sha256=pPky7D10BatBBFi46gZ4JXl6uVfgtnK_-BS5ydzBMlU,4969
|
4
|
+
fabricatio-0.3.14.dev8.dist-info/WHEEL,sha256=OZYXF4emuP5o7uCHyen8StXv3k74AF7eDhQe1rxgOqQ,108
|
5
|
+
fabricatio-0.3.14.dev8.dist-info/licenses/LICENSE,sha256=yDZaTLnOi03bi3Dk6f5IjhLUc5old2yOsihHWU0z-i0,1067
|
7
6
|
fabricatio/__init__.py,sha256=pSLe6QL4zQGaZXfhF9KW4fa1D8chqCQm_7yInCP6Kt8,732
|
8
|
-
fabricatio/actions/article_rag.py,sha256=1CoL5Jdvur5Pyn9S4GilBfAAiPL2--fmkFLTOwtrT1I,17991
|
9
7
|
fabricatio/actions/__init__.py,sha256=ZMa1LeM5BNeqp-J-D32W-f5bD53-kdXGyt0zuueJofM,47
|
10
|
-
fabricatio/actions/output.py,sha256=3VRwDcvimBPrf4ypxbhJd_ScJ_JYiC0ucr6vGOqs9Fc,9687
|
11
8
|
fabricatio/actions/article.py,sha256=8ea9QZk7m21j5fw6_CO_znZtik9_o71JmX77Po5gyS4,12188
|
12
|
-
fabricatio/actions/
|
9
|
+
fabricatio/actions/article_rag.py,sha256=2lQogjV_1iZkbYI4C9kGGpQH9TBeIDaQCkyi7ueqFus,17582
|
13
10
|
fabricatio/actions/fs.py,sha256=nlTmk-tYDW158nz_fzlsNfuYJwj7j4BHn_MFY5hxdqs,934
|
11
|
+
fabricatio/actions/output.py,sha256=3VRwDcvimBPrf4ypxbhJd_ScJ_JYiC0ucr6vGOqs9Fc,9687
|
12
|
+
fabricatio/actions/rag.py,sha256=GuRU6VJzIxo3V8dvGWNQ0uQbu6nF0g_qgVuC8NPRx2Y,3487
|
14
13
|
fabricatio/actions/rules.py,sha256=07ILsiwR250AUcKLPHTUPpWD_mPhPCfWKSkEAKcPv3A,3557
|
15
|
-
fabricatio/capabilities/
|
14
|
+
fabricatio/capabilities/__init__.py,sha256=skaJ43CqAQaZMH-mCRzF4Fps3x99P2SwJ8vSM9pInX8,56
|
16
15
|
fabricatio/capabilities/advanced_judge.py,sha256=wTiTyBxkZfOXsmzULOW4nX-QAwFMz9wQqqAAM3aQ5XQ,662
|
16
|
+
fabricatio/capabilities/advanced_rag.py,sha256=2GYYUHFUP6O8rVOlLqxmPnU1Ve-JwxbUnLv3GRlOCCQ,2478
|
17
|
+
fabricatio/capabilities/censor.py,sha256=m90gGDAkEkkxkUKcZNkyhYsRwAxkcDut_-gZEBKrUCU,4640
|
18
|
+
fabricatio/capabilities/check.py,sha256=eiZZaiX78k-Zt7-Ik43Pn5visXHeOJLk8yLWgtqln40,8379
|
17
19
|
fabricatio/capabilities/correct.py,sha256=z7KiMK1KykGXNdLVA0sB28x63LsQ6Hd4wbtYd0bkEKE,10175
|
18
20
|
fabricatio/capabilities/extract.py,sha256=eLQagkRnHVLZ64yPBtLVcPELO7ubJlN3fbwoaNMWT70,2449
|
19
|
-
fabricatio/capabilities/task.py,sha256=Ah14-xLUzXCMRydAemHoo85QDB-cLlXJslmaTCRsfms,4288
|
20
|
-
fabricatio/capabilities/__init__.py,sha256=skaJ43CqAQaZMH-mCRzF4Fps3x99P2SwJ8vSM9pInX8,56
|
21
|
-
fabricatio/capabilities/review.py,sha256=rxA_qdnJc8ehytL5EnlKo9QJ99stnF-n6YaBFRYLe5I,4947
|
22
21
|
fabricatio/capabilities/persist.py,sha256=GAbj93lYLnGVPu74H_ImrINGWNAglIDH9aGSLJKMLkw,3318
|
23
22
|
fabricatio/capabilities/propose.py,sha256=KqeXaUURJ6O-Ve0ijZYg88rgQYCZEFbuWoqIepI-nQ8,1965
|
24
|
-
fabricatio/capabilities/rag.py,sha256=
|
25
|
-
fabricatio/capabilities/
|
26
|
-
fabricatio/capabilities/
|
27
|
-
fabricatio/capabilities/
|
28
|
-
fabricatio/
|
23
|
+
fabricatio/capabilities/rag.py,sha256=VSk4BKN8Clwi28-8bz-roqHRln9vu6mGnozr6snaPeY,10930
|
24
|
+
fabricatio/capabilities/rating.py,sha256=FSIh3h0E7G1OkBKAkY83VA4w0G6OZ2bXq27b40WRsL8,17411
|
25
|
+
fabricatio/capabilities/review.py,sha256=rxA_qdnJc8ehytL5EnlKo9QJ99stnF-n6YaBFRYLe5I,4947
|
26
|
+
fabricatio/capabilities/task.py,sha256=Ah14-xLUzXCMRydAemHoo85QDB-cLlXJslmaTCRsfms,4288
|
27
|
+
fabricatio/decorators.py,sha256=t3fc9SRdpy8ksQclWzm9jLMv87Ls0o4wAVhN3kMUJ_Y,8841
|
28
|
+
fabricatio/emitter.py,sha256=QpMvs8dTy1zs5iDORFKzA615S3Lb1tm6AQxYBemQGcc,6164
|
29
29
|
fabricatio/fs/__init__.py,sha256=NQ_BnAwJ0iScY34QpCBH1dCq8vO5Zi4fh6VyEzrBIb8,678
|
30
30
|
fabricatio/fs/curd.py,sha256=x7Je9V1ydv-BdZTjlLc3syZ6380gkOhpfrfnhXstisg,4624
|
31
|
-
fabricatio/
|
32
|
-
fabricatio/
|
33
|
-
fabricatio/workflows/articles.py,sha256=ZDV5nqUKRo1GOuuKWeSV7ZI32FYZU7WiTrD4YDuCeEo,945
|
34
|
-
fabricatio/workflows/rag.py,sha256=uOZXprD479fUhLA6sYvEM8RWcVcUZXXtP0xRbTMPdHE,509
|
35
|
-
fabricatio/models/usages.py,sha256=bpM-a9i-WpSOh-XL3LiYTa3AxQUd_ckn44lh-uuKM6M,32250
|
36
|
-
fabricatio/models/tool.py,sha256=jYdN6FWEz6pE-vEh3H78VHDPpSttUQE79nfXOD4FE6U,12091
|
37
|
-
fabricatio/models/role.py,sha256=tOwzILaTb8QUOddy9RrJRyhfB_pEVv_IiUBRuc6ylH8,3761
|
38
|
-
fabricatio/models/adv_kwargs_types.py,sha256=nmj1D0GVosZxKcdiw-B5vJB04Whr5zh30ZBJntSZUpY,2034
|
31
|
+
fabricatio/fs/readers.py,sha256=hFHfGw1E58Da0ndBXXWcD2t-4HNdR1FimeDxuMI4-oE,1690
|
32
|
+
fabricatio/journal.py,sha256=qZoaPdv17fc_9l2xVZ-ve7dXKmMFJ8MzPa8_vNXMGyE,204
|
39
33
|
fabricatio/models/action.py,sha256=O8BLh8fRNqde_3PC7OFHBjLTdLRPvy5mtalMqQFaZXs,9789
|
40
|
-
fabricatio/models/
|
41
|
-
fabricatio/models/kwargs_types.py,sha256=VrzAJaOSlQ-xN5NIIi3k4KpIY0c9beuxcuUnF-mkEEk,3282
|
42
|
-
fabricatio/models/generic.py,sha256=dGap-ckYy7ZX_lXDNxv4d3yM45vdoLDYW4cl49BbCAY,27061
|
43
|
-
fabricatio/models/extra/problem.py,sha256=1Sd8hsThQK6pXMXhErRhP1ft58z4PvqeB8AV8VcXiaI,7051
|
44
|
-
fabricatio/models/extra/advanced_judge.py,sha256=CKPP4Lseb_Ey8Y7i2V9HJfB-mZgCknFdqq7Zo41o6s4,1060
|
45
|
-
fabricatio/models/extra/aricle_rag.py,sha256=egUZPmHkzA48IU8s9f6WRhqVMI8B8Uz8Amx-WkLLWGE,11651
|
46
|
-
fabricatio/models/extra/article_base.py,sha256=0_WWal6Z6iAmEoy1g-o7JO9fNqOZ7cJX-1_AD1Rkuqg,16361
|
47
|
-
fabricatio/models/extra/patches.py,sha256=_ghmnlvTZQq7UJyaH77mTZE9abjvxRJ2mgWHUbezUls,977
|
48
|
-
fabricatio/models/extra/rule.py,sha256=TYtA_aSgunw8wRS3BfdNqBZbbdeS-VXLbVCJhz85Suk,2617
|
49
|
-
fabricatio/models/extra/article_outline.py,sha256=71mgx66KRiXBtdYId4WNkAYp9tJ7OhUqmQyOEe7IRxI,1627
|
34
|
+
fabricatio/models/adv_kwargs_types.py,sha256=nmj1D0GVosZxKcdiw-B5vJB04Whr5zh30ZBJntSZUpY,2034
|
50
35
|
fabricatio/models/extra/__init__.py,sha256=0R9eZsCNu6OV-Xtf15H7FrqhfHTFBFf3fBrcd7ChsJ0,53
|
36
|
+
fabricatio/models/extra/advanced_judge.py,sha256=CKPP4Lseb_Ey8Y7i2V9HJfB-mZgCknFdqq7Zo41o6s4,1060
|
37
|
+
fabricatio/models/extra/aricle_rag.py,sha256=KaryVIaMZRV6vpUYwkHDe09tgOihVWGPb1mGs1GXKSw,11723
|
38
|
+
fabricatio/models/extra/article_base.py,sha256=GmtgMa--sHSP_H4rJ-6fUxj6tYYfd-m8fOOBDXVyMZQ,16357
|
51
39
|
fabricatio/models/extra/article_essence.py,sha256=lAkfGj4Jqiy3dSmtloVVr2krej76TV1Ky-2Fr6pNE_Q,2692
|
40
|
+
fabricatio/models/extra/article_main.py,sha256=Lg0cT4SF-0Y9in5LfYU1l9Rq_OnMYH3cCqqEByEnOhE,10817
|
41
|
+
fabricatio/models/extra/article_outline.py,sha256=71mgx66KRiXBtdYId4WNkAYp9tJ7OhUqmQyOEe7IRxI,1627
|
52
42
|
fabricatio/models/extra/article_proposal.py,sha256=7OgcsS9ujjSi_06Z1ln4SCDQgrS4xPGrtgc2dv8EzGo,1857
|
43
|
+
fabricatio/models/extra/patches.py,sha256=_ghmnlvTZQq7UJyaH77mTZE9abjvxRJ2mgWHUbezUls,977
|
44
|
+
fabricatio/models/extra/problem.py,sha256=1Sd8hsThQK6pXMXhErRhP1ft58z4PvqeB8AV8VcXiaI,7051
|
53
45
|
fabricatio/models/extra/rag.py,sha256=fwyEXOECQNe8LPUKGAxEcp9vp7o5356rna-TzGpkvnE,3869
|
54
|
-
fabricatio/models/extra/
|
46
|
+
fabricatio/models/extra/rule.py,sha256=TYtA_aSgunw8wRS3BfdNqBZbbdeS-VXLbVCJhz85Suk,2617
|
47
|
+
fabricatio/models/generic.py,sha256=dGap-ckYy7ZX_lXDNxv4d3yM45vdoLDYW4cl49BbCAY,27061
|
48
|
+
fabricatio/models/kwargs_types.py,sha256=VrzAJaOSlQ-xN5NIIi3k4KpIY0c9beuxcuUnF-mkEEk,3282
|
49
|
+
fabricatio/models/role.py,sha256=KxiP_hsIP85QtJhOQL_UH0lKul87hqRcd49IdWr05qQ,4154
|
50
|
+
fabricatio/models/task.py,sha256=CdR1Zbf-lZN0jODj9iriTn1X2DxLxjXlvZgy3kEd6lI,10723
|
51
|
+
fabricatio/models/tool.py,sha256=jYdN6FWEz6pE-vEh3H78VHDPpSttUQE79nfXOD4FE6U,12091
|
52
|
+
fabricatio/models/usages.py,sha256=bpM-a9i-WpSOh-XL3LiYTa3AxQUd_ckn44lh-uuKM6M,32250
|
55
53
|
fabricatio/parser.py,sha256=3vT5u5SGpzDH4WLJdMwK5CP8RqO4g1MyQUYpiDKDoEo,4528
|
56
|
-
fabricatio/
|
57
|
-
fabricatio/rust.
|
54
|
+
fabricatio/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
55
|
+
fabricatio/rust.cpython-313-x86_64-linux-gnu.so,sha256=xzXBPe9ePywwC0nHRFo7mouBTKUerBYu1YotXCT3NJU,7904464
|
56
|
+
fabricatio/rust.pyi,sha256=czqdl3jgSjmF05T_mUK6wwzpLaPEXQIFGHckRmuYspA,25026
|
58
57
|
fabricatio/toolboxes/__init__.py,sha256=dYm_Gd8XolSU_h4wnkA09dlaLDK146eeFz0CUgPZ8_c,380
|
59
58
|
fabricatio/toolboxes/arithmetic.py,sha256=sSTPkKI6-mb278DwQKFO9jKyzc9kCx45xNH7V6bGBpE,1307
|
60
59
|
fabricatio/toolboxes/fs.py,sha256=OQMdeokYxSNVrCZJAweJ0cYiK4k2QuEiNdIbS5IHIV8,705
|
61
|
-
fabricatio/
|
62
|
-
fabricatio
|
63
|
-
fabricatio
|
64
|
-
fabricatio
|
60
|
+
fabricatio/utils.py,sha256=qvl4R8ThuNIIoBJuR1DGEuWYZ7jRFT_8SRx4I_FA8pU,5298
|
61
|
+
fabricatio/workflows/__init__.py,sha256=Lq9pFo2cudwFCrQUUNgSTr1CoU0J1Nw-HNEQN7cHLp8,50
|
62
|
+
fabricatio/workflows/articles.py,sha256=ZDV5nqUKRo1GOuuKWeSV7ZI32FYZU7WiTrD4YDuCeEo,945
|
63
|
+
fabricatio/workflows/rag.py,sha256=uOZXprD479fUhLA6sYvEM8RWcVcUZXXtP0xRbTMPdHE,509
|
64
|
+
fabricatio-0.3.14.dev8.dist-info/RECORD,,
|
File without changes
|