mirror of
https://github.com/himanshudongre/smriti.git
synced 2026-09-10 22:41:12 +00:00
39 lines
1.3 KiB
Python
39 lines
1.3 KiB
Python
"""Extraction service — orchestrates LLM-based context extraction."""
|
|
|
|
from app.domain.models import ExtractionResult, Message
|
|
from app.services.llm.base import LLMProvider
|
|
|
|
|
|
class ExtractorService:
|
|
"""Extracts structured artifacts from parsed messages using an LLM provider.
|
|
|
|
The LLM provider is injected, enabling:
|
|
- MockProvider for tests (deterministic, no API calls)
|
|
- OpenAIProvider for production
|
|
"""
|
|
|
|
def __init__(self, llm_provider: LLMProvider):
|
|
self.llm_provider = llm_provider
|
|
|
|
async def extract(self, messages: list[Message]) -> ExtractionResult:
|
|
"""Extract structured artifacts from parsed messages.
|
|
|
|
Args:
|
|
messages: List of parsed Message objects from a transcript.
|
|
|
|
Returns:
|
|
ExtractionResult containing summary, decisions, tasks, etc.
|
|
"""
|
|
result = await self.llm_provider.extract(messages)
|
|
return result
|
|
|
|
async def extract_memories(self, messages: list[Message]) -> list['app.domain.models.ExtractedMemory']:
|
|
"""Extract generic memory items from parsed messages.
|
|
|
|
Args:
|
|
messages: List of parsed Message objects.
|
|
|
|
Returns:
|
|
List of ExtractedMemory objects.
|
|
"""
|
|
return await self.llm_provider.extract_memories(messages)
|