ReMe/reme2/component/file_parser/base_file_parser.py
jinli.yl fa249a3e38 feat(components): add Anthropic LLM support and enhance component architecture
- Integrate AnthropicChatModel with new AnthropicAsLLM component
- Add component formatters for OpenAI and Anthropic chat models
- Implement token counter component with estimated token counting
- Create base client component for ReMe service communication
- Refactor BaseComponent to remove app_context parameter from _start/_close
- Update embedding model base class to remove retry logic and use npz cache
- Add job component for sequential step execution with BaseJob
- Implement step component base class for LLM workflow execution
- Enhance application context with proper type annotations
- Update component initialization to pass app_context automatically
- Remove asyncio dependency from embedding model cache operations
2026-04-23 14:18:57 +08:00

41 lines
1.1 KiB
Python

"""Abstract base class for file parsers."""
from abc import abstractmethod
from ..base_component import BaseComponent
from ...enumeration import ComponentEnum
from ...schema import FileChunk, FileMetadata
class BaseFileParser(BaseComponent):
"""Abstract base class for file format parsers.
Each parser declares which file suffixes it handles and implements
the parse method to produce FileMetadata and FileChunks.
"""
component_type = ComponentEnum.FILE_PARSER
suffixes: list[str] = []
def __init__(self, chunk_tokens: int = 400, chunk_overlap: int = 80, **kwargs):
super().__init__(**kwargs)
self.chunk_tokens = chunk_tokens
self.chunk_overlap = chunk_overlap
async def _start(self):
pass
async def _close(self):
pass
@abstractmethod
async def parse(self, path: str) -> tuple[FileMetadata, list[FileChunk]]:
"""Parse a file into metadata and chunks.
Args:
path: Absolute path to the file.
Returns:
Tuple of (FileMetadata, list of FileChunks).
"""