fabricatio 0.2.12.dev1__cp312-cp312-manylinux_2_34_x86_64.whl → 0.2.12.dev2__cp312-cp312-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 +42 -48
- fabricatio/actions/output.py +12 -3
- fabricatio/capabilities/advanced_rag.py +53 -0
- fabricatio/capabilities/rag.py +4 -4
- fabricatio/models/extra/article_base.py +2 -2
- fabricatio/models/extra/article_main.py +2 -1
- fabricatio/rust.cpython-312-x86_64-linux-gnu.so +0 -0
- fabricatio/rust.pyi +10 -0
- {fabricatio-0.2.12.dev1.data → fabricatio-0.2.12.dev2.data}/scripts/tdown +0 -0
- {fabricatio-0.2.12.dev1.dist-info → fabricatio-0.2.12.dev2.dist-info}/METADATA +1 -1
- {fabricatio-0.2.12.dev1.dist-info → fabricatio-0.2.12.dev2.dist-info}/RECORD +13 -12
- {fabricatio-0.2.12.dev1.dist-info → fabricatio-0.2.12.dev2.dist-info}/WHEEL +0 -0
- {fabricatio-0.2.12.dev1.dist-info → fabricatio-0.2.12.dev2.dist-info}/licenses/LICENSE +0 -0
@@ -4,9 +4,10 @@ from asyncio import gather
|
|
4
4
|
from pathlib import Path
|
5
5
|
from typing import List, Optional
|
6
6
|
|
7
|
-
from pydantic import PositiveInt
|
7
|
+
from pydantic import Field, PositiveInt
|
8
8
|
|
9
9
|
from fabricatio import BibManager
|
10
|
+
from fabricatio.capabilities.advanced_rag import AdvancedRAG
|
10
11
|
from fabricatio.capabilities.censor import Censor
|
11
12
|
from fabricatio.capabilities.extract import Extract
|
12
13
|
from fabricatio.capabilities.rag import RAG
|
@@ -18,6 +19,7 @@ from fabricatio.models.extra.article_essence import ArticleEssence
|
|
18
19
|
from fabricatio.models.extra.article_main import Article, ArticleChapter, ArticleSection, ArticleSubsection
|
19
20
|
from fabricatio.models.extra.article_outline import ArticleOutline
|
20
21
|
from fabricatio.models.extra.rule import RuleSet
|
22
|
+
from fabricatio.models.kwargs_types import ChooseKwargs, LLMKwargs
|
21
23
|
from fabricatio.utils import ask_retain, ok
|
22
24
|
|
23
25
|
TYPST_CITE_USAGE = (
|
@@ -27,17 +29,17 @@ TYPST_CITE_USAGE = (
|
|
27
29
|
"Illegal citing syntax examples(seperated by |): [[1],[2],[3]]|[[1],[1-2]]\n"
|
28
30
|
"Those reference mark shall not be omitted during the extraction\n"
|
29
31
|
"It's recommended to cite multiple references that supports your conclusion at a time.\n"
|
30
|
-
"
|
32
|
+
"Wrap inline expression with '\\(' and '\\)',like '\\(>5m\\)' '\\(89%\\)', and wrap block equation with '\\[' and '\\]'.\n"
|
31
33
|
"In addition to that, you can add a label outside the block equation which can be used as a cross reference identifier, the label is a string wrapped in `<` and `>` like `<energy-release-rate-equation>`.Note that the label string should be a summarizing title for the equation being labeled.\n"
|
32
34
|
"you can refer to that label by using the syntax with prefix of `@eqt:`, which indicate that this notation is citing a label from the equations. For example ' @eqt:energy-release-rate-equation ' DO remember that the notation shall have both suffixed and prefixed space char which enable the compiler to distinguish the notation from the plaintext."
|
33
|
-
"Below is
|
35
|
+
"Below is two usage example:\n"
|
34
36
|
"```typst\n"
|
35
37
|
"See @eqt:mass-energy-equation , it's the foundation of physics.\n"
|
36
|
-
"
|
38
|
+
"\\[\n"
|
37
39
|
"E = m c^2\n"
|
38
|
-
"
|
39
|
-
"In @eqt:mass-energy-equation ,
|
40
|
-
"
|
40
|
+
"\\] <mass-energy-equation>\n\n\n"
|
41
|
+
"In @eqt:mass-energy-equation , \\(m\\) stands for mass, \\(c\\) stands for speed of light, and \\(E\\) stands for energy. \n"
|
42
|
+
"```\n"
|
41
43
|
)
|
42
44
|
|
43
45
|
|
@@ -50,9 +52,9 @@ class WriteArticleContentRAG(Action, RAG, Extract):
|
|
50
52
|
"""The limit of references to be retrieved"""
|
51
53
|
threshold: float = 0.62
|
52
54
|
"""The threshold of relevance"""
|
53
|
-
extractor_model:
|
55
|
+
extractor_model: LLMKwargs
|
54
56
|
"""The model to use for extracting the content from the retrieved references."""
|
55
|
-
query_model:
|
57
|
+
query_model: LLMKwargs
|
56
58
|
"""The model to use for querying the database"""
|
57
59
|
supervisor: bool = False
|
58
60
|
"""Whether to use supervisor mode"""
|
@@ -154,12 +156,12 @@ class WriteArticleContentRAG(Action, RAG, Extract):
|
|
154
156
|
f"Above is the subsection titled `{subsec.title}`.\n"
|
155
157
|
f"I need you to extract the content to update my subsection obj provided below.\n{self.req}"
|
156
158
|
f"{subsec.display()}\n",
|
157
|
-
|
159
|
+
**self.extractor_model,
|
158
160
|
),
|
159
161
|
"Failed to propose new subsection.",
|
160
162
|
)
|
161
163
|
for p in new_subsec.paragraphs:
|
162
|
-
p.content = cm.apply(p.content)
|
164
|
+
p.content = cm.apply(p.content)
|
163
165
|
subsec.update_from(new_subsec)
|
164
166
|
logger.debug(f"{subsec.title}:rpl\n{subsec.display()}")
|
165
167
|
return subsec
|
@@ -175,28 +177,16 @@ class WriteArticleContentRAG(Action, RAG, Extract):
|
|
175
177
|
extra_instruction: str = "",
|
176
178
|
) -> str:
|
177
179
|
"""Write the raw paragraphs of the subsec."""
|
178
|
-
return (
|
179
|
-
(
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
f"You should not copy others' works from the references directly on to my thesis, we can only harness the conclusion they have drawn.\n"
|
189
|
-
f"No extra explanation is allowed."
|
190
|
-
)
|
191
|
-
)
|
192
|
-
.replace(r" \( ", "$")
|
193
|
-
.replace(r" \) ", "$")
|
194
|
-
.replace(r"\(", "$")
|
195
|
-
.replace(r"\)", "$")
|
196
|
-
.replace("\\[\n", "$$\n")
|
197
|
-
.replace("\\[ ", "$$\n")
|
198
|
-
.replace("\n\\]", "\n$$")
|
199
|
-
.replace(" \\]", "\n$$")
|
180
|
+
return await self.aask(
|
181
|
+
f"{cm.as_prompt()}\nAbove is some related reference from other auther retrieved for you."
|
182
|
+
f"{article_outline.finalized_dump()}\n\nAbove is my article outline, I m writing graduate thesis titled `{article.title}`. "
|
183
|
+
f"More specifically, i m witting the Chapter `{chap.title}` >> Section `{sec.title}` >> Subsection `{subsec.title}`.\n"
|
184
|
+
f"Please help me write the paragraphs of the subsec mentioned above, which is `{subsec.title}`.\n"
|
185
|
+
f"{self.req}\n"
|
186
|
+
f"You SHALL use `{article.language}` as writing language.\n{extra_instruction}\n"
|
187
|
+
f"Do not use numbered list to display the outcome, you should regard you are writing the main text of the thesis.\n"
|
188
|
+
f"You should not copy others' works from the references directly on to my thesis, we can only harness the conclusion they have drawn.\n"
|
189
|
+
f"No extra explanation is allowed."
|
200
190
|
)
|
201
191
|
|
202
192
|
async def search_database(
|
@@ -222,7 +212,7 @@ class WriteArticleContentRAG(Action, RAG, Extract):
|
|
222
212
|
ref_q = ok(
|
223
213
|
await self.arefined_query(
|
224
214
|
search_req,
|
225
|
-
|
215
|
+
**self.query_model,
|
226
216
|
),
|
227
217
|
"Failed to refine query.",
|
228
218
|
)
|
@@ -232,7 +222,7 @@ class WriteArticleContentRAG(Action, RAG, Extract):
|
|
232
222
|
ret = await self.aretrieve(
|
233
223
|
ref_q,
|
234
224
|
ArticleChunk,
|
235
|
-
|
225
|
+
max_accepted=self.ref_limit,
|
236
226
|
result_per_query=self.result_per_query,
|
237
227
|
similarity_threshold=self.threshold,
|
238
228
|
)
|
@@ -240,7 +230,7 @@ class WriteArticleContentRAG(Action, RAG, Extract):
|
|
240
230
|
cm.add_chunks(ok(ret))
|
241
231
|
ref_q = await self.arefined_query(
|
242
232
|
f"{cm.as_prompt()}\n\nAbove is the retrieved references in the first RAG, now we need to perform the second RAG.\n\n{search_req}",
|
243
|
-
|
233
|
+
**self.query_model,
|
244
234
|
)
|
245
235
|
|
246
236
|
if ref_q is None:
|
@@ -252,7 +242,7 @@ class WriteArticleContentRAG(Action, RAG, Extract):
|
|
252
242
|
ret = await self.aretrieve(
|
253
243
|
ref_q,
|
254
244
|
ArticleChunk,
|
255
|
-
|
245
|
+
max_accepted=int(self.ref_limit * self.search_increment_multiplier),
|
256
246
|
result_per_query=int(self.result_per_query * self.search_increment_multiplier),
|
257
247
|
similarity_threshold=self.threshold,
|
258
248
|
)
|
@@ -262,18 +252,19 @@ class WriteArticleContentRAG(Action, RAG, Extract):
|
|
262
252
|
cm.add_chunks(ret)
|
263
253
|
|
264
254
|
|
265
|
-
class ArticleConsultRAG(Action,
|
255
|
+
class ArticleConsultRAG(Action, AdvancedRAG):
|
266
256
|
"""Write an article based on the provided outline."""
|
267
257
|
|
268
258
|
output_key: str = "consult_count"
|
269
|
-
|
259
|
+
search_increment_multiplier: float = 1.6
|
260
|
+
"""The multiplier to increase the limit of references to retrieve per query."""
|
270
261
|
ref_limit: int = 20
|
271
262
|
"""The final limit of references."""
|
272
263
|
ref_per_q: int = 3
|
273
264
|
"""The limit of references to retrieve per query."""
|
274
265
|
similarity_threshold: float = 0.62
|
275
266
|
"""The similarity threshold of references to retrieve."""
|
276
|
-
ref_q_model:
|
267
|
+
ref_q_model: ChooseKwargs = Field(default_factory=ChooseKwargs)
|
277
268
|
"""The model to use for refining query."""
|
278
269
|
req: str = TYPST_CITE_USAGE
|
279
270
|
"""The request for the rag model."""
|
@@ -285,7 +276,7 @@ class ArticleConsultRAG(Action, RAG):
|
|
285
276
|
from questionary import confirm, text
|
286
277
|
from rich import print as r_print
|
287
278
|
|
288
|
-
from fabricatio.rust import convert_all_block_tex, convert_all_inline_tex
|
279
|
+
from fabricatio.rust import convert_all_block_tex, convert_all_inline_tex, fix_misplaced_labels
|
289
280
|
|
290
281
|
self.target_collection = collection_name or self.safe_target_collection
|
291
282
|
|
@@ -295,16 +286,19 @@ class ArticleConsultRAG(Action, RAG):
|
|
295
286
|
while (req := await text("User: ").ask_async()) is not None:
|
296
287
|
if await confirm("Empty the cm?").ask_async():
|
297
288
|
cm.empty()
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
289
|
+
await self.clued_search(
|
290
|
+
req,
|
291
|
+
cm,
|
292
|
+
refinery_kwargs=self.ref_q_model,
|
293
|
+
expand_multiplier=self.search_increment_multiplier,
|
294
|
+
base_accepted=self.ref_limit,
|
303
295
|
result_per_query=self.ref_per_q,
|
304
296
|
similarity_threshold=self.similarity_threshold,
|
305
297
|
)
|
306
298
|
|
307
|
-
ret = await self.aask(f"{cm.
|
299
|
+
ret = await self.aask(f"{cm.as_prompt()}\n{self.req}\n{req}")
|
300
|
+
|
301
|
+
ret = fix_misplaced_labels(ret)
|
308
302
|
ret = convert_all_inline_tex(ret)
|
309
303
|
ret = convert_all_block_tex(ret)
|
310
304
|
ret = cm.apply(ret)
|
@@ -396,7 +390,7 @@ class TweakArticleRAG(Action, RAG, Censor):
|
|
396
390
|
await self.censor_obj_inplace(
|
397
391
|
subsec,
|
398
392
|
ruleset=ruleset,
|
399
|
-
reference=f"{'\n\n'.join(d.display() for d in await self.aretrieve(refind_q, document_model=ArticleEssence,
|
393
|
+
reference=f"{'\n\n'.join(d.display() for d in await self.aretrieve(refind_q, document_model=ArticleEssence, max_accepted=self.ref_limit))}\n\n"
|
400
394
|
f"You can use Reference above to rewrite the `{subsec.__class__.__name__}`.\n"
|
401
395
|
f"You should Always use `{subsec.language}` as written language, "
|
402
396
|
f"which is the original language of the `{subsec.title}`. "
|
fabricatio/actions/output.py
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
"""Dump the finalized output to a file."""
|
2
2
|
|
3
3
|
from pathlib import Path
|
4
|
-
from typing import Any,
|
4
|
+
from typing import Any, Iterable, List, Mapping, Optional, Type
|
5
5
|
|
6
6
|
from fabricatio import TEMPLATE_MANAGER
|
7
|
+
from fabricatio.fs import dump_text
|
7
8
|
from fabricatio.journal import logger
|
8
9
|
from fabricatio.models.action import Action
|
9
10
|
from fabricatio.models.generic import FinalizedDumpAble, FromMapping, PersistentAble
|
@@ -51,7 +52,7 @@ class RenderedDump(Action, LLMUsage):
|
|
51
52
|
|
52
53
|
async def _execute(
|
53
54
|
self,
|
54
|
-
to_dump:
|
55
|
+
to_dump: FinalizedDumpAble,
|
55
56
|
task_input: Optional[Task] = None,
|
56
57
|
dump_path: Optional[str | Path] = None,
|
57
58
|
**_,
|
@@ -66,8 +67,16 @@ class RenderedDump(Action, LLMUsage):
|
|
66
67
|
"Could not find the path of file to dump the data.",
|
67
68
|
)
|
68
69
|
)
|
70
|
+
|
69
71
|
logger.info(f"Saving output to {dump_path.as_posix()}")
|
70
|
-
|
72
|
+
dump_text(
|
73
|
+
dump_path,
|
74
|
+
TEMPLATE_MANAGER.render_template(
|
75
|
+
self.template_name, {to_dump.__class__.__name__: to_dump.finalized_dump()}
|
76
|
+
),
|
77
|
+
)
|
78
|
+
|
79
|
+
return dump_path.as_posix()
|
71
80
|
|
72
81
|
|
73
82
|
class PersistentAll(Action, LLMUsage):
|
@@ -0,0 +1,53 @@
|
|
1
|
+
"""Advanced RAG (Retrieval Augmented Generation) model."""
|
2
|
+
|
3
|
+
from typing import Optional, Unpack
|
4
|
+
|
5
|
+
from fabricatio.capabilities.rag import RAG
|
6
|
+
from fabricatio.journal import logger
|
7
|
+
from fabricatio.models.adv_kwargs_types import FetchKwargs
|
8
|
+
from fabricatio.models.extra.aricle_rag import ArticleChunk, CitationManager
|
9
|
+
from fabricatio.models.kwargs_types import ChooseKwargs
|
10
|
+
|
11
|
+
|
12
|
+
class AdvancedRAG(RAG):
|
13
|
+
"""A class representing the Advanced RAG (Retrieval Augmented Generation) model."""
|
14
|
+
async def clued_search(
|
15
|
+
self,
|
16
|
+
requirement: str,
|
17
|
+
cm: CitationManager,
|
18
|
+
max_capacity=40,
|
19
|
+
max_round: int = 3,
|
20
|
+
expand_multiplier: float = 1.4,
|
21
|
+
base_accepted: int = 12,
|
22
|
+
refinery_kwargs: Optional[ChooseKwargs] = None,
|
23
|
+
**kwargs: Unpack[FetchKwargs],
|
24
|
+
) -> CitationManager:
|
25
|
+
"""Asynchronously performs a clued search based on a given requirement and citation manager."""
|
26
|
+
if max_round < 2:
|
27
|
+
logger.warning(
|
28
|
+
"max_round should be greater than 1, otherwise it behaves nothing different from the `self.aretrieve`"
|
29
|
+
)
|
30
|
+
|
31
|
+
refinery_kwargs = refinery_kwargs or {}
|
32
|
+
|
33
|
+
for i in range(max_round + 1, 1):
|
34
|
+
logger.info(f"Round [{i + 1}/{max_round}] search started.")
|
35
|
+
ref_q = await self.arefined_query(
|
36
|
+
f"{cm.as_prompt()}\n\nAbove is the retrieved references in the {i - 1}th RAG, now we need to perform the {i}th RAG."
|
37
|
+
f"\n\n{requirement}",
|
38
|
+
**refinery_kwargs,
|
39
|
+
)
|
40
|
+
if ref_q is None:
|
41
|
+
logger.error(f"At round [{i + 1}/{max_round}] search, failed to refine the query, exit.")
|
42
|
+
return cm
|
43
|
+
refs = await self.aretrieve(ref_q, ArticleChunk, base_accepted, **kwargs)
|
44
|
+
|
45
|
+
if (max_capacity := max_capacity - len(refs)) < 0:
|
46
|
+
cm.add_chunks(refs[0:max_capacity])
|
47
|
+
logger.debug(f"At round [{i + 1}/{max_round}] search, the capacity is not enough, exit.")
|
48
|
+
return cm
|
49
|
+
|
50
|
+
cm.add_chunks(refs)
|
51
|
+
base_accepted = int(base_accepted * expand_multiplier)
|
52
|
+
logger.debug(f"Exceeded max_round: {max_round}, exit.")
|
53
|
+
return cm
|
fabricatio/capabilities/rag.py
CHANGED
@@ -189,7 +189,7 @@ class RAG(EmbeddingUsage):
|
|
189
189
|
self,
|
190
190
|
query: List[str] | str,
|
191
191
|
document_model: Type[D],
|
192
|
-
|
192
|
+
max_accepted: int = 20,
|
193
193
|
**kwargs: Unpack[FetchKwargs],
|
194
194
|
) -> List[D]:
|
195
195
|
"""Retrieve data from the collection.
|
@@ -197,7 +197,7 @@ class RAG(EmbeddingUsage):
|
|
197
197
|
Args:
|
198
198
|
query (List[str] | str): The query to be used for retrieval.
|
199
199
|
document_model (Type[D]): The model class used to convert retrieved data into document objects.
|
200
|
-
|
200
|
+
max_accepted (int): The final limit on the number of results to return.
|
201
201
|
**kwargs (Unpack[FetchKwargs]): Additional keyword arguments for retrieval.
|
202
202
|
|
203
203
|
Returns:
|
@@ -211,9 +211,9 @@ class RAG(EmbeddingUsage):
|
|
211
211
|
document_model=document_model,
|
212
212
|
**kwargs,
|
213
213
|
)
|
214
|
-
)[:
|
214
|
+
)[:max_accepted]
|
215
215
|
|
216
|
-
async def arefined_query(self, question: List[str] | str, **kwargs: Unpack[ChooseKwargs]) -> Optional[List[str]]:
|
216
|
+
async def arefined_query(self, question: List[str] | str, **kwargs: Unpack[ChooseKwargs[Optional[List[str]]]]) -> Optional[List[str]]:
|
217
217
|
"""Refines the given question using a template.
|
218
218
|
|
219
219
|
Args:
|
@@ -348,6 +348,6 @@ class ArticleBase[T: ChapterBase](FinalizedDumpAble, AsPrompt, WordCount, Descri
|
|
348
348
|
ss.expected_word_count = avg
|
349
349
|
return self
|
350
350
|
|
351
|
-
def avg_wordcount_recursive(self) ->
|
351
|
+
def avg_wordcount_recursive[S](self:S) -> S:
|
352
352
|
"""Set all chap, sec, subsec have same word count sum up to be `self.expected_word_count`."""
|
353
|
-
return self.avg_chap_wordcount().avg_sec_wordcount().
|
353
|
+
return self.avg_chap_wordcount().avg_sec_wordcount().avg_subsec_wordcount()
|
@@ -18,7 +18,7 @@ from fabricatio.models.extra.article_outline import (
|
|
18
18
|
ArticleSubsectionOutline,
|
19
19
|
)
|
20
20
|
from fabricatio.models.generic import Described, PersistentAble, SequencePatch, SketchedAble, WithRef, WordCount
|
21
|
-
from fabricatio.rust import convert_all_block_tex, convert_all_inline_tex, word_count
|
21
|
+
from fabricatio.rust import convert_all_block_tex, convert_all_inline_tex, fix_misplaced_labels, word_count
|
22
22
|
from fabricatio.utils import fallback_kwargs
|
23
23
|
from pydantic import Field, NonNegativeInt
|
24
24
|
|
@@ -165,6 +165,7 @@ class Article(
|
|
165
165
|
"""Convert tex to typst code."""
|
166
166
|
for _, _, subsec in self.iter_subsections():
|
167
167
|
for p in subsec.paragraphs:
|
168
|
+
p.content = fix_misplaced_labels(p.content)
|
168
169
|
p.content = convert_all_inline_tex(p.content)
|
169
170
|
p.content = convert_all_block_tex(p.content)
|
170
171
|
return self
|
Binary file
|
fabricatio/rust.pyi
CHANGED
@@ -325,6 +325,16 @@ def convert_all_block_tex(string: str) -> str:
|
|
325
325
|
The converted string with block TeX code replaced.
|
326
326
|
"""
|
327
327
|
|
328
|
+
def fix_misplaced_labels(input: str) -> str:
|
329
|
+
"""A func to fix labels in a string.
|
330
|
+
|
331
|
+
Args:
|
332
|
+
input: The input string containing misplaced labels.
|
333
|
+
|
334
|
+
Returns:
|
335
|
+
The fixed string with labels properly placed.
|
336
|
+
"""
|
337
|
+
|
328
338
|
def comment(string: str) -> str:
|
329
339
|
"""Add comment to the string.
|
330
340
|
|
Binary file
|
@@ -1,6 +1,6 @@
|
|
1
|
-
fabricatio-0.2.12.
|
2
|
-
fabricatio-0.2.12.
|
3
|
-
fabricatio-0.2.12.
|
1
|
+
fabricatio-0.2.12.dev2.dist-info/METADATA,sha256=R4LEdEoO9RZmJ-XOdvcczROJ9yu1prSCkT0Z6vOiVQ0,5120
|
2
|
+
fabricatio-0.2.12.dev2.dist-info/WHEEL,sha256=7FgAcpQES0h1xhfN9Ugve9FTUilU6sRAr1WJ5ph2cuw,108
|
3
|
+
fabricatio-0.2.12.dev2.dist-info/licenses/LICENSE,sha256=yDZaTLnOi03bi3Dk6f5IjhLUc5old2yOsihHWU0z-i0,1067
|
4
4
|
fabricatio/decorators.py,sha256=iuFCTtZ4VXwxJpM_z-CtrEpTaVZsv_eBFe5mOhe4wlo,8715
|
5
5
|
fabricatio/constants.py,sha256=JxtaKGTf0IQhM-MNCHtr6x85Ejg8FWYcie-Z_RupCBg,557
|
6
6
|
fabricatio/core.py,sha256=MaEKZ6DDmbdScAY-7F1gwGA6fr7ADX6Mz5rNVi2msFA,6277
|
@@ -10,7 +10,7 @@ fabricatio/models/role.py,sha256=5SJ1Vm6H3FwOVEk5Z-4GBJWABI3OKAKwkz5t170osi8,285
|
|
10
10
|
fabricatio/models/kwargs_types.py,sha256=aI844DNQXLbSBC3P0bZQLJpuJxwwF66WTDbbYQTftaE,4618
|
11
11
|
fabricatio/models/extra/article_proposal.py,sha256=4G2qLkMxtK54G1ANgPW0G3w4Pahxgk2lhGPU5KMxuzw,1818
|
12
12
|
fabricatio/models/extra/advanced_judge.py,sha256=CKPP4Lseb_Ey8Y7i2V9HJfB-mZgCknFdqq7Zo41o6s4,1060
|
13
|
-
fabricatio/models/extra/article_main.py,sha256=
|
13
|
+
fabricatio/models/extra/article_main.py,sha256=eKkZZK9eS50MBqg9_q2xhIt7KJ8NejQvXfa8TmYr2DY,11604
|
14
14
|
fabricatio/models/extra/problem.py,sha256=1Sd8hsThQK6pXMXhErRhP1ft58z4PvqeB8AV8VcXiaI,7051
|
15
15
|
fabricatio/models/extra/article_essence.py,sha256=zUfZ2_bX3h__RaVPwJlxQ-tkFyfSV8SdX8DsmFX6v_w,2649
|
16
16
|
fabricatio/models/extra/rag.py,sha256=RWv_YJhDX6UL4t3sRtQt-LYMtxN-K-t931nmyiJXkKM,3857
|
@@ -18,7 +18,7 @@ fabricatio/models/extra/article_outline.py,sha256=2vqMDhXwfRooHEe_cblkOj-4V96VsI
|
|
18
18
|
fabricatio/models/extra/__init__.py,sha256=0R9eZsCNu6OV-Xtf15H7FrqhfHTFBFf3fBrcd7ChsJ0,53
|
19
19
|
fabricatio/models/extra/rule.py,sha256=b756_XmWeDoJ1qOFEGy6ZfP8O7rBjOZs4XvfZvWKXXI,2574
|
20
20
|
fabricatio/models/extra/aricle_rag.py,sha256=-w1fxs5PrsLTYPmNtUhWSeucQ9evnasUB75aMlzutL0,10722
|
21
|
-
fabricatio/models/extra/article_base.py,sha256=
|
21
|
+
fabricatio/models/extra/article_base.py,sha256=w86qsqDY1DZqVfiw2TR1f3xgh7JjlWl9cHhdEmKEuyE,13713
|
22
22
|
fabricatio/models/extra/patches.py,sha256=_ghmnlvTZQq7UJyaH77mTZE9abjvxRJ2mgWHUbezUls,977
|
23
23
|
fabricatio/models/adv_kwargs_types.py,sha256=659KMMuvdVq1xJxavLbUAMWxPOAz0RP9bNaZm3hyz-4,1890
|
24
24
|
fabricatio/models/usages.py,sha256=FVRhh_AulXlJF9uUmJzKEdiLz-di0rAiaQm4snYEid0,32571
|
@@ -36,11 +36,11 @@ fabricatio/rust_instances.py,sha256=i5fIt6XkE8UwUU4JarmPt50AZs8aJW6efaypSLGLl0I,
|
|
36
36
|
fabricatio/config.py,sha256=Zc2UG1Jf8u0XfwHR7yrApgynzdX_uC6jInMw8PDm64o,17526
|
37
37
|
fabricatio/utils.py,sha256=DZDOsJN1FxTVqq-i1fAJZdLfDYxyVoMAJFQURuYt1rY,3004
|
38
38
|
fabricatio/journal.py,sha256=Op0wC-JlZumnAc_aDmYM4ljnSNLoKEEMfcIRbCF69ow,455
|
39
|
-
fabricatio/rust.pyi,sha256=
|
39
|
+
fabricatio/rust.pyi,sha256=cx2dzGjDS554HKsM9pjt1n5b0RGsemEpPvWBbxVVcQU,10378
|
40
40
|
fabricatio/__init__.py,sha256=OXoMMHJKHEB_vN97_34U4I5QpAKL9xnVQEVcBCvwBCg,986
|
41
41
|
fabricatio/actions/fs.py,sha256=nlTmk-tYDW158nz_fzlsNfuYJwj7j4BHn_MFY5hxdqs,934
|
42
|
-
fabricatio/actions/output.py,sha256=
|
43
|
-
fabricatio/actions/article_rag.py,sha256=
|
42
|
+
fabricatio/actions/output.py,sha256=lTvMgXzY-fwA_kNrivdFZkk3kT8DMpjBSIWLyav2B1k,8089
|
43
|
+
fabricatio/actions/article_rag.py,sha256=XcPSHJzODKUGJHjY_3Mj6la7hwZmTeWLECeATq8iRfk,18297
|
44
44
|
fabricatio/actions/rag.py,sha256=-bA7KkZEFfWEanAPHzYwRHG7zRlTZcNDI7HL3n-lDuE,3496
|
45
45
|
fabricatio/actions/__init__.py,sha256=ZMa1LeM5BNeqp-J-D32W-f5bD53-kdXGyt0zuueJofM,47
|
46
46
|
fabricatio/actions/article.py,sha256=syUjEyKppdT72Xd1LSXKR3Djo1aybRPeFRHRzifNhm0,10632
|
@@ -52,14 +52,15 @@ fabricatio/parser.py,sha256=rMXd9Lo5TjxUkI0rocYigF9d1kC0rSySenuMW8uqXm8,6483
|
|
52
52
|
fabricatio/capabilities/censor.py,sha256=j6vyjKpR1CfLzC-XrOZSZePjJz3jsoM104gqqsWwi1Q,4615
|
53
53
|
fabricatio/capabilities/advanced_judge.py,sha256=bvb8fYoiKoGlBwMZVMflVE9R2MoS1VtmZAo65jMJFew,683
|
54
54
|
fabricatio/capabilities/check.py,sha256=TLtkUIR6tX73qR_V5TkXpdmplrmqFt4dZj32PBy81H0,8409
|
55
|
+
fabricatio/capabilities/advanced_rag.py,sha256=SIrrJu6PH3eybGY19UW0TApSHOMCKiQ92Gs5DGG0zws,2229
|
55
56
|
fabricatio/capabilities/correct.py,sha256=Et3Ud-oLZlwTVSy2XyT5UX2shT_OJ9j4HWP9b5Hntvk,10192
|
56
|
-
fabricatio/capabilities/rag.py,sha256=
|
57
|
+
fabricatio/capabilities/rag.py,sha256=f7d3y6ZmjkbGZL_KyK9d-DAFE-yJFBck-NBrTPTVF8c,9387
|
57
58
|
fabricatio/capabilities/__init__.py,sha256=skaJ43CqAQaZMH-mCRzF4Fps3x99P2SwJ8vSM9pInX8,56
|
58
59
|
fabricatio/capabilities/rating.py,sha256=nolk5iBSiOzsOqqKIh1c4YSdRLwcllo9vBHuwp1dV74,17432
|
59
60
|
fabricatio/capabilities/review.py,sha256=EPL8IlxSKO0XStBkXdW7FJMbPztDQMv9w7tHgu6r3PM,4948
|
60
61
|
fabricatio/capabilities/propose.py,sha256=vOJvmmnMBHUQB6N1AmZNFw42jf7Bl2mBRNlBK15TpNI,1942
|
61
62
|
fabricatio/capabilities/task.py,sha256=_BAQonNy5JH3JxhLmPGfn0nDvn_ENKXyOdql8EVXRLE,4362
|
62
63
|
fabricatio/capabilities/extract.py,sha256=b4_Tuc9O6Pe71y4Tj-JHMb4simdhduVR-rcfD9yW8RA,2425
|
63
|
-
fabricatio/rust.cpython-312-x86_64-linux-gnu.so,sha256=
|
64
|
-
fabricatio-0.2.12.
|
65
|
-
fabricatio-0.2.12.
|
64
|
+
fabricatio/rust.cpython-312-x86_64-linux-gnu.so,sha256=EzHqoCuWs4VUMi2nHlpB_BY7jdunTKm3QUscNlwL_Jk,4455976
|
65
|
+
fabricatio-0.2.12.dev2.data/scripts/tdown,sha256=5u-NAkPfzHNDINCww3Qzi0lZnDy_YYUZCnOIVo4RnCo,4583848
|
66
|
+
fabricatio-0.2.12.dev2.dist-info/RECORD,,
|
File without changes
|
File without changes
|