fabricatio 0.2.7.dev2__cp312-cp312-win_amd64.whl → 0.2.7.dev4__cp312-cp312-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.cp312-win_amd64.pyd +0 -0
- fabricatio/actions/article.py +4 -1
- fabricatio/actions/article_rag.py +35 -0
- fabricatio/models/extra/article_base.py +192 -0
- fabricatio/models/extra/article_essence.py +226 -0
- fabricatio/models/extra/article_main.py +293 -0
- fabricatio/models/extra/article_outline.py +181 -0
- fabricatio/models/extra/article_proposal.py +35 -0
- fabricatio/models/generic.py +55 -2
- fabricatio/models/utils.py +6 -4
- fabricatio-0.2.7.dev4.data/scripts/tdown.exe +0 -0
- fabricatio-0.2.7.dev4.dist-info/METADATA +181 -0
- {fabricatio-0.2.7.dev2.dist-info → fabricatio-0.2.7.dev4.dist-info}/RECORD +15 -10
- fabricatio/models/extra.py +0 -811
- fabricatio-0.2.7.dev2.data/scripts/tdown.exe +0 -0
- fabricatio-0.2.7.dev2.dist-info/METADATA +0 -436
- {fabricatio-0.2.7.dev2.dist-info → fabricatio-0.2.7.dev4.dist-info}/WHEEL +0 -0
- {fabricatio-0.2.7.dev2.dist-info → fabricatio-0.2.7.dev4.dist-info}/licenses/LICENSE +0 -0
Binary file
|
fabricatio/actions/article.py
CHANGED
@@ -6,7 +6,10 @@ from typing import Any, Callable, List, Optional
|
|
6
6
|
from fabricatio.fs import safe_text_read
|
7
7
|
from fabricatio.journal import logger
|
8
8
|
from fabricatio.models.action import Action
|
9
|
-
from fabricatio.models.extra import
|
9
|
+
from fabricatio.models.extra.article_essence import ArticleEssence
|
10
|
+
from fabricatio.models.extra.article_main import Article
|
11
|
+
from fabricatio.models.extra.article_outline import ArticleOutline
|
12
|
+
from fabricatio.models.extra.article_proposal import ArticleProposal
|
10
13
|
from fabricatio.models.task import Task
|
11
14
|
from fabricatio.models.utils import ok
|
12
15
|
|
@@ -0,0 +1,35 @@
|
|
1
|
+
"""A module for writing articles using RAG (Retrieval-Augmented Generation) capabilities."""
|
2
|
+
|
3
|
+
from typing import Optional
|
4
|
+
|
5
|
+
from fabricatio.capabilities.rag import RAG
|
6
|
+
from fabricatio.journal import logger
|
7
|
+
from fabricatio.models.action import Action
|
8
|
+
from fabricatio.models.extra.article_main import Article
|
9
|
+
from fabricatio.models.extra.article_outline import ArticleOutline
|
10
|
+
|
11
|
+
|
12
|
+
class GenerateArticleRAG(Action, RAG):
|
13
|
+
"""Write an article based on the provided outline."""
|
14
|
+
|
15
|
+
output_key: str = "article"
|
16
|
+
|
17
|
+
async def _execute(self, article_outline: ArticleOutline, **cxt) -> Optional[Article]:
|
18
|
+
"""Write an article based on the provided outline."""
|
19
|
+
logger.info(f"Writing an article based on the outline:\n{article_outline.title}")
|
20
|
+
refined_q = await self.arefined_query(article_outline.display())
|
21
|
+
return await self.propose(
|
22
|
+
Article,
|
23
|
+
article_outline.display(),
|
24
|
+
**self.prepend_sys_msg(f"{await self.aretrieve_compact(refined_q)}\n{self.briefing}"),
|
25
|
+
)
|
26
|
+
|
27
|
+
|
28
|
+
class WriteArticleFineGrind(Action, RAG):
|
29
|
+
"""Fine-grind an article based on the provided outline."""
|
30
|
+
|
31
|
+
output_key: str = "article"
|
32
|
+
|
33
|
+
async def _execute(self, article_outline: ArticleOutline, **cxt) -> Optional[Article]:
|
34
|
+
"""Fine-grind an article based on the provided outline."""
|
35
|
+
logger.info(f"Fine-grinding an article based on the outline:\n{article_outline.title}")
|
@@ -0,0 +1,192 @@
|
|
1
|
+
"""A foundation for hierarchical document components with dependency tracking."""
|
2
|
+
|
3
|
+
from abc import abstractmethod
|
4
|
+
from enum import StrEnum
|
5
|
+
from typing import TYPE_CHECKING, List, Optional, Self, Union, final, overload
|
6
|
+
|
7
|
+
from fabricatio.models.generic import Base, CensoredAble, Display, PersistentAble
|
8
|
+
from pydantic import Field
|
9
|
+
|
10
|
+
if TYPE_CHECKING:
|
11
|
+
from fabricatio.models.extra.article_main import Article
|
12
|
+
from fabricatio.models.extra.article_outline import ArticleOutline
|
13
|
+
|
14
|
+
|
15
|
+
class ReferringType(StrEnum):
|
16
|
+
"""Enumeration of different types of references that can be made in an article."""
|
17
|
+
|
18
|
+
CHAPTER: str = "chapter"
|
19
|
+
SECTION: str = "section"
|
20
|
+
SUBSECTION: str = "subsection"
|
21
|
+
|
22
|
+
|
23
|
+
class ArticleRef(CensoredAble):
|
24
|
+
"""Reference to a specific chapter, section or subsection within the article. You SHALL not refer to an article component that is external and not present within our own article.
|
25
|
+
|
26
|
+
Examples:
|
27
|
+
- Referring to a chapter titled `Introduction`:
|
28
|
+
Using Python
|
29
|
+
```python
|
30
|
+
ArticleRef(referred_chapter_title="Introduction")
|
31
|
+
```
|
32
|
+
Using JSON
|
33
|
+
```json
|
34
|
+
{referred_chapter_title="Introduction"}
|
35
|
+
```
|
36
|
+
- Referring to a section titled `Background` under the `Introduction` chapter:
|
37
|
+
Using Python
|
38
|
+
```python
|
39
|
+
ArticleRef(referred_chapter_title="Introduction", referred_section_title="Background")
|
40
|
+
```
|
41
|
+
Using JSON
|
42
|
+
```json
|
43
|
+
{referred_chapter_title="Introduction", referred_section_title="Background"}
|
44
|
+
```
|
45
|
+
- Referring to a subsection titled `Related Work` under the `Background` section of the `Introduction` chapter:
|
46
|
+
Using Python
|
47
|
+
```python
|
48
|
+
ArticleRef(referred_chapter_title="Introduction", referred_section_title="Background", referred_subsection_title="Related Work")
|
49
|
+
```
|
50
|
+
Using JSON
|
51
|
+
```json
|
52
|
+
{referred_chapter_title="Introduction", referred_section_title="Background", referred_subsection_title="Related Work"}
|
53
|
+
```
|
54
|
+
"""
|
55
|
+
|
56
|
+
referred_subsection_title: Optional[str] = None
|
57
|
+
"""`title` Field of the referenced subsection."""
|
58
|
+
|
59
|
+
referred_section_title: Optional[str] = None
|
60
|
+
"""`title` Field of the referenced section."""
|
61
|
+
|
62
|
+
referred_chapter_title: str
|
63
|
+
"""`title` Field of the referenced chapter"""
|
64
|
+
|
65
|
+
def __hash__(self) -> int:
|
66
|
+
"""Overrides the default hash function to ensure consistent hashing across instances."""
|
67
|
+
return hash((self.referred_chapter_title, self.referred_section_title, self.referred_subsection_title))
|
68
|
+
|
69
|
+
@overload
|
70
|
+
def deref(self, article: "Article") -> Optional["ArticleMainBase"]:
|
71
|
+
"""Dereference the reference to the actual section or subsection within the provided article."""
|
72
|
+
|
73
|
+
@overload
|
74
|
+
def deref(self, article: "ArticleOutline") -> Optional["ArticleOutlineBase"]:
|
75
|
+
"""Dereference the reference to the actual section or subsection within the provided article."""
|
76
|
+
|
77
|
+
def deref(
|
78
|
+
self, article: Union["ArticleOutline", "Article"]
|
79
|
+
) -> Union["ArticleOutlineBase", "ArticleMainBase", None]:
|
80
|
+
"""Dereference the reference to the actual section or subsection within the provided article.
|
81
|
+
|
82
|
+
Args:
|
83
|
+
article (ArticleOutline | Article): The article to dereference the reference from.
|
84
|
+
|
85
|
+
Returns:
|
86
|
+
ArticleMainBase | ArticleOutline | None: The dereferenced section or subsection, or None if not found.
|
87
|
+
"""
|
88
|
+
chap = next((chap for chap in article.chapters if chap.title == self.referred_chapter_title), None)
|
89
|
+
if self.referred_section_title is None or chap is None:
|
90
|
+
return chap
|
91
|
+
sec = next((sec for sec in chap.sections if sec.title == self.referred_section_title), None)
|
92
|
+
if self.referred_subsection_title is None or sec is None:
|
93
|
+
return sec
|
94
|
+
return next((subsec for subsec in sec.subsections if subsec.title == self.referred_subsection_title), None)
|
95
|
+
|
96
|
+
@property
|
97
|
+
def referring_type(self) -> ReferringType:
|
98
|
+
"""Determine the type of reference based on the presence of specific attributes."""
|
99
|
+
if self.referred_subsection_title is not None:
|
100
|
+
return ReferringType.SUBSECTION
|
101
|
+
if self.referred_section_title is not None:
|
102
|
+
return ReferringType.SECTION
|
103
|
+
return ReferringType.CHAPTER
|
104
|
+
|
105
|
+
|
106
|
+
class SubSectionBase(Base):
|
107
|
+
"""Base class for article sections and subsections."""
|
108
|
+
|
109
|
+
|
110
|
+
class SectionBase[T: SubSectionBase](Base):
|
111
|
+
"""Base class for article sections and subsections."""
|
112
|
+
|
113
|
+
subsections: List[T] = Field(min_length=1)
|
114
|
+
"""List of subsections, each containing a specific research component. Must contains at least 1 subsection, But do remember you should always add more subsection as required."""
|
115
|
+
|
116
|
+
|
117
|
+
class ChapterBase[T: SectionBase](Base):
|
118
|
+
"""Base class for article chapters."""
|
119
|
+
|
120
|
+
sections: List[T] = Field(min_length=1)
|
121
|
+
"""List of sections, each containing a specific research component. Must contains at least 1 section, But do remember you should always add more section as required."""
|
122
|
+
|
123
|
+
|
124
|
+
class ArticleBase[T: ChapterBase](Base):
|
125
|
+
"""Base class for article outlines."""
|
126
|
+
|
127
|
+
chapters: List[T] = Field(min_length=5)
|
128
|
+
"""List of chapters, each containing a specific research component. Must contains at least 5 chapters, But do remember you should always add more chapter as required."""
|
129
|
+
|
130
|
+
|
131
|
+
class ArticleOutlineBase(Base):
|
132
|
+
"""Base class for article outlines."""
|
133
|
+
|
134
|
+
title: str
|
135
|
+
"""Title of the research component in academic style."""
|
136
|
+
description: str
|
137
|
+
"""Description of the research component in academic style."""
|
138
|
+
|
139
|
+
support_to: List[ArticleRef]
|
140
|
+
"""Required: List of all essential ArticleRef objects identifying components this section provides evidence for.
|
141
|
+
Format: Each reference must point to a specific chapter, section, or subsection.
|
142
|
+
Note: References form a directed acyclic graph in the document structure."""
|
143
|
+
depend_on: List[ArticleRef]
|
144
|
+
"""Required: List of all essential ArticleRef objects identifying components this section builds upon.
|
145
|
+
Format: Each reference must point to a previously defined chapter, section, or subsection.
|
146
|
+
Note: Circular dependencies are not permitted."""
|
147
|
+
|
148
|
+
writing_aim: List[str]
|
149
|
+
"""Required: List of specific rhetorical objectives (3-5 items).
|
150
|
+
Format: Each item must be an actionable phrase starting with a verb.
|
151
|
+
Example: ['Establish metric validity', 'Compare with baseline approaches',
|
152
|
+
'Justify threshold selection']"""
|
153
|
+
|
154
|
+
|
155
|
+
class ArticleMainBase(CensoredAble, Display, ArticleOutlineBase, PersistentAble):
|
156
|
+
"""Foundation for hierarchical document components with dependency tracking."""
|
157
|
+
|
158
|
+
@abstractmethod
|
159
|
+
def to_typst_code(self) -> str:
|
160
|
+
"""Converts the component into a Typst code snippet for rendering."""
|
161
|
+
|
162
|
+
def _update_pre_check(self, other: Self) -> Self:
|
163
|
+
if not isinstance(other, self.__class__):
|
164
|
+
raise TypeError(f"Cannot update from a non-{self.__class__} instance.")
|
165
|
+
if self.title != other.title:
|
166
|
+
raise ValueError("Cannot update from a different title.")
|
167
|
+
return self
|
168
|
+
|
169
|
+
@abstractmethod
|
170
|
+
def resolve_update_error(self, other: Self) -> str:
|
171
|
+
"""Resolve update errors in the article outline.
|
172
|
+
|
173
|
+
Returns:
|
174
|
+
str: Error message indicating update errors in the article outline.
|
175
|
+
"""
|
176
|
+
|
177
|
+
@abstractmethod
|
178
|
+
def _update_from_inner(self, other: Self) -> Self:
|
179
|
+
"""Updates the current instance with the attributes of another instance."""
|
180
|
+
|
181
|
+
@final
|
182
|
+
def update_from(self, other: Self) -> Self:
|
183
|
+
"""Updates the current instance with the attributes of another instance."""
|
184
|
+
return self._update_pre_check(other)._update_from_inner(other)
|
185
|
+
|
186
|
+
def __eq__(self, other: "ArticleMainBase") -> bool:
|
187
|
+
"""Compares two ArticleBase objects based on their model_dump_json representation."""
|
188
|
+
return self.model_dump_json() == other.model_dump_json()
|
189
|
+
|
190
|
+
def __hash__(self) -> int:
|
191
|
+
"""Calculates a hash value for the ArticleBase object based on its model_dump_json representation."""
|
192
|
+
return hash(self.model_dump_json())
|
@@ -0,0 +1,226 @@
|
|
1
|
+
"""ArticleEssence: Semantic fingerprint of academic paper for structured analysis."""
|
2
|
+
|
3
|
+
from typing import List
|
4
|
+
|
5
|
+
from fabricatio.models.generic import Display, PrepareVectorization, ProposedAble
|
6
|
+
from pydantic import BaseModel, Field
|
7
|
+
|
8
|
+
|
9
|
+
class Equation(BaseModel):
|
10
|
+
"""Mathematical formalism specification for research contributions.
|
11
|
+
|
12
|
+
Encodes equations with dual representation: semantic meaning and typeset-ready notation.
|
13
|
+
"""
|
14
|
+
|
15
|
+
description: str
|
16
|
+
"""Equation significance structured in three elements:
|
17
|
+
1. Physical/conceptual meaning of the equation.
|
18
|
+
2. Role in technical workflow (e.g., derivation, optimization, or analysis).
|
19
|
+
3. Relationship to the paper's core contribution (e.g., theoretical foundation, empirical validation).
|
20
|
+
Example: "Defines constrained search space dimensionality reduction. Used in architecture optimization phase (Section 3.2). Enables 40% parameter reduction."
|
21
|
+
"""
|
22
|
+
|
23
|
+
latex_code: str
|
24
|
+
"""LaTeX representation following academic typesetting standards:
|
25
|
+
- Must use equation environment (e.g., `equation`, `align`).
|
26
|
+
- Multiline equations must align at '=' using `&`.
|
27
|
+
- Include unit annotations where applicable.
|
28
|
+
Example: "\\begin{equation} \\mathcal{L}_{NAS} = \\alpha \\|\\theta\\|_2 + \\beta H(p) \\end{equation}"
|
29
|
+
"""
|
30
|
+
|
31
|
+
|
32
|
+
class Figure(BaseModel):
|
33
|
+
"""Visual component specification for technical communication.
|
34
|
+
|
35
|
+
Combines graphical assets with structured academic captioning.Extracted from the article provided
|
36
|
+
"""
|
37
|
+
|
38
|
+
description: str
|
39
|
+
"""Figure interpretation guide containing:
|
40
|
+
1. Key visual elements mapping (e.g., axes, legends, annotations).
|
41
|
+
2. Data representation methodology (e.g., visualization type, statistical measures).
|
42
|
+
3. Connection to research findings (e.g., supports hypothesis, demonstrates performance).
|
43
|
+
Example: "Architecture search space topology (left) vs. convergence curves (right). Demonstrates NAS efficiency gains through constrained search."
|
44
|
+
"""
|
45
|
+
|
46
|
+
figure_caption: str
|
47
|
+
"""Complete caption following Nature-style guidelines:
|
48
|
+
1. Brief overview statement (首句总结).
|
49
|
+
2. Technical detail layer (e.g., data sources, experimental conditions).
|
50
|
+
3. Result implication (e.g., key insights, implications for future work).
|
51
|
+
Example: "Figure 3: Differentiable NAS framework. (a) Search space topology with constrained dimensions. (b) Training convergence across language pairs. Dashed lines indicate baseline methods."
|
52
|
+
"""
|
53
|
+
|
54
|
+
figure_serial_number: int
|
55
|
+
"""The Image serial number extracted from the Markdown article provided, the path usually in the form of ``, in this case the serial number is `1`"""
|
56
|
+
|
57
|
+
|
58
|
+
class Algorithm(BaseModel):
|
59
|
+
"""Algorithm specification for research contributions."""
|
60
|
+
|
61
|
+
title: str
|
62
|
+
"""Algorithm title with technical focus descriptor (e.g., 'Gradient Descent Optimization').
|
63
|
+
|
64
|
+
Tip: Do not attempt to translate the original element titles when generating JSON.
|
65
|
+
"""
|
66
|
+
|
67
|
+
description: str
|
68
|
+
"""Algorithm description with technical focus descriptor:
|
69
|
+
- Includes input/output specifications.
|
70
|
+
- Describes key steps and their purpose.
|
71
|
+
- Explains its role in the research workflow.
|
72
|
+
Example: "Proposed algorithm for neural architecture search. Inputs include search space constraints and training data. Outputs optimized architecture."
|
73
|
+
"""
|
74
|
+
|
75
|
+
|
76
|
+
class Table(BaseModel):
|
77
|
+
"""Table specification for research contributions."""
|
78
|
+
|
79
|
+
title: str
|
80
|
+
"""Table title with technical focus descriptor (e.g., 'Comparison of Model Performance Metrics').
|
81
|
+
|
82
|
+
Tip: Do not attempt to translate the original element titles when generating JSON.
|
83
|
+
"""
|
84
|
+
|
85
|
+
description: str
|
86
|
+
"""Table description with technical focus descriptor:
|
87
|
+
- Includes data source and structure.
|
88
|
+
- Explains key columns/rows and their significance.
|
89
|
+
- Connects to research findings or hypotheses.
|
90
|
+
Example: "Performance metrics for different architectures. Columns represent accuracy, F1-score, and inference time. Highlights efficiency gains of proposed method."
|
91
|
+
"""
|
92
|
+
|
93
|
+
|
94
|
+
class Highlightings(BaseModel):
|
95
|
+
"""Technical showcase aggregator for research artifacts.
|
96
|
+
|
97
|
+
Curates core scientific components with machine-parseable annotations.
|
98
|
+
"""
|
99
|
+
|
100
|
+
highlighted_equations: List[Equation]
|
101
|
+
"""3-5 pivotal equations representing theoretical contributions:
|
102
|
+
- Each equation must be wrapped in $$ for display math.
|
103
|
+
- Contain at least one novel operator/symbol.
|
104
|
+
- Be referenced in Methods/Results sections.
|
105
|
+
Example: Equation describing proposed loss function.
|
106
|
+
"""
|
107
|
+
|
108
|
+
highlighted_algorithms: List[Algorithm]
|
109
|
+
"""1-2 key algorithms demonstrating methodological contributions:
|
110
|
+
- Include pseudocode or step-by-step descriptions.
|
111
|
+
- Highlight innovation in computational approach.
|
112
|
+
Example: Algorithm for constrained search space exploration.
|
113
|
+
|
114
|
+
Tip: Do not attempt to translate the original element titles when generating JSON.
|
115
|
+
"""
|
116
|
+
|
117
|
+
highlighted_figures: List[Figure]
|
118
|
+
"""4-6 key figures demonstrating:
|
119
|
+
1. Framework overview (1 required).
|
120
|
+
2. Quantitative results (2-3 required).
|
121
|
+
3. Ablation studies (1 optional).
|
122
|
+
Each must appear in Results/Discussion chapters.
|
123
|
+
Example: Figure showing architecture topology and convergence curves.
|
124
|
+
"""
|
125
|
+
|
126
|
+
highlighted_tables: List[Table]
|
127
|
+
"""2-3 key tables summarizing:
|
128
|
+
- Comparative analysis of methods.
|
129
|
+
- Empirical results supporting claims.
|
130
|
+
Example: Table comparing model performance across datasets.
|
131
|
+
|
132
|
+
Tip: Do not attempt to translate the original element titles when generating JSON.
|
133
|
+
"""
|
134
|
+
|
135
|
+
|
136
|
+
class ArticleEssence(ProposedAble, Display, PrepareVectorization):
|
137
|
+
"""Semantic fingerprint of academic paper for structured analysis.
|
138
|
+
|
139
|
+
Encodes research artifacts with dual human-machine interpretability.
|
140
|
+
"""
|
141
|
+
|
142
|
+
title: str = Field(...)
|
143
|
+
"""Exact title of the original article without any modification.
|
144
|
+
Must be preserved precisely from the source material without:
|
145
|
+
- Translation
|
146
|
+
- Paraphrasing
|
147
|
+
- Adding/removing words
|
148
|
+
- Altering style or formatting
|
149
|
+
"""
|
150
|
+
|
151
|
+
authors: List[str]
|
152
|
+
"""Original author names exactly as they appear in the source document. No translation or paraphrasing.
|
153
|
+
Extract complete list without any modifications or formatting changes."""
|
154
|
+
|
155
|
+
keywords: List[str]
|
156
|
+
"""Original keywords exactly as they appear in the source document. No translation or paraphrasing.
|
157
|
+
Extract the complete set without modifying format or terminology."""
|
158
|
+
|
159
|
+
publication_year: int
|
160
|
+
"""Publication timestamp in ISO 8601 (YYYY format)."""
|
161
|
+
|
162
|
+
highlightings: Highlightings
|
163
|
+
"""Technical highlight reel containing:
|
164
|
+
- Core equations (Theory)
|
165
|
+
- Key algorithms (Implementation)
|
166
|
+
- Critical figures (Results)
|
167
|
+
- Benchmark tables (Evaluation)"""
|
168
|
+
|
169
|
+
domain: List[str]
|
170
|
+
"""Domain tags for research focus."""
|
171
|
+
|
172
|
+
abstract: str = Field(...)
|
173
|
+
"""Three-paragraph structured abstract:
|
174
|
+
Paragraph 1: Problem & Motivation (2-3 sentences)
|
175
|
+
Paragraph 2: Methodology & Innovations (3-4 sentences)
|
176
|
+
Paragraph 3: Results & Impact (2-3 sentences)
|
177
|
+
Total length: 150-250 words"""
|
178
|
+
|
179
|
+
core_contributions: List[str]
|
180
|
+
"""3-5 technical contributions using CRediT taxonomy verbs.
|
181
|
+
Each item starts with action verb.
|
182
|
+
Example:
|
183
|
+
- 'Developed constrained NAS framework'
|
184
|
+
- 'Established cross-lingual transfer metrics'"""
|
185
|
+
|
186
|
+
technical_novelty: List[str]
|
187
|
+
"""Patent-style claims with technical specificity.
|
188
|
+
Format: 'A [system/method] comprising [novel components]...'
|
189
|
+
Example:
|
190
|
+
'A neural architecture search system comprising:
|
191
|
+
a differentiable constrained search space;
|
192
|
+
multi-lingual transferability predictors...'"""
|
193
|
+
|
194
|
+
research_problems: List[str]
|
195
|
+
"""Problem statements as how/why questions.
|
196
|
+
Example:
|
197
|
+
- 'How to reduce NAS computational overhead while maintaining search diversity?'
|
198
|
+
- 'Why do existing architectures fail in low-resource cross-lingual transfer?'"""
|
199
|
+
|
200
|
+
limitations: List[str]
|
201
|
+
"""Technical limitations analysis containing:
|
202
|
+
1. Constraint source (data/method/theory)
|
203
|
+
2. Impact quantification
|
204
|
+
3. Mitigation pathway
|
205
|
+
Example:
|
206
|
+
'Methodology constraint: Single-objective optimization (affects 5% edge cases),
|
207
|
+
mitigated through future multi-task extension'"""
|
208
|
+
|
209
|
+
future_work: List[str]
|
210
|
+
"""Research roadmap items with 3 horizons:
|
211
|
+
1. Immediate extensions (1 year)
|
212
|
+
2. Mid-term directions (2-3 years)
|
213
|
+
3. Long-term vision (5+ years)
|
214
|
+
Example:
|
215
|
+
'Short-term: Adapt framework for vision transformers (ongoing with CVPR submission)'"""
|
216
|
+
|
217
|
+
impact_analysis: List[str]
|
218
|
+
"""Bibliometric impact projections:
|
219
|
+
- Expected citation counts (next 3 years)
|
220
|
+
- Target application domains
|
221
|
+
- Standard adoption potential
|
222
|
+
Example:
|
223
|
+
'Predicted 150+ citations via integration into MMEngine (Alibaba OpenMMLab)'"""
|
224
|
+
|
225
|
+
def _prepare_vectorization_inner(self) -> str:
|
226
|
+
return self.model_dump_json()
|