cmboulanger's picture
disaster-recovery deploy of pdf-tei-editor
6a49f21 verified
Raw
History Blame Contribute Delete
2 kB
"""
LLamore extractor plugin.
Registers the LLamoreExtractor with the extraction registry.
"""
import logging
from typing import Any, Callable
from fastapi_app.lib.plugins.plugin_base import Plugin, PluginContext
from fastapi_app.lib.plugins.plugin_tools import get_plugin_config
from fastapi_app.lib.extraction import ExtractorRegistry
from .extractor import LLamoreExtractor
logger = logging.getLogger(__name__)
class LLamorePlugin(Plugin):
"""Plugin that provides LLamore-based extraction."""
def __init__(self) -> None:
get_plugin_config("plugin.llamore.api.key", "GEMINI_API_KEY", default=None)
get_plugin_config("plugin.llamore.model", "LLAMORE_MODEL", default="gemini-2.0-flash")
@property
def metadata(self) -> dict[str, Any]:
"""Return plugin metadata."""
return {
"id": "llamore",
"name": "LLamore Extractor",
"description": "Extract references using LLamore with Gemini AI",
"category": "extractor",
"version": "1.0.0",
"required_roles": ["user"],
"endpoints": [] # No menu items - accessed via extraction API
}
def get_endpoints(self) -> dict[str, Callable]:
"""Return available endpoints."""
return {} # Extractor accessed via /api/v1/extract endpoint
@classmethod
def is_available(cls) -> bool:
"""Check if LLamore extractor is available."""
return LLamoreExtractor.is_available()
async def initialize(self, context: PluginContext) -> None:
"""Register the LLamore extractor."""
registry = ExtractorRegistry.get_instance()
registry.register(LLamoreExtractor)
logger.info("LLamore extractor plugin initialized")
async def cleanup(self) -> None:
"""Unregister the LLamore extractor."""
registry = ExtractorRegistry.get_instance()
registry.unregister("llamore-gemini")
logger.info("LLamore extractor plugin cleaned up")