Spaces:
Sleeping
Sleeping
| from __future__ import annotations | |
| from ..core.llm import FakeLLMClient, LLMClient, default_failover_from_env | |
| from ..core.loader import load_index | |
| from ..ingest.embedder import Embedder, FakeEmbedder | |
| from .config import Settings | |
| from .service import StudyService | |
| def build_embedder(kind: str) -> Embedder: | |
| if kind == "fake": | |
| return FakeEmbedder() | |
| from ..ingest.embedder import BGEM3Embedder | |
| return BGEM3Embedder() | |
| def build_llm(settings: Settings) -> LLMClient: | |
| if settings.fake_llm: | |
| return FakeLLMClient("This is a local demo answer grounded in your notes [S1].") | |
| return default_failover_from_env() | |
| def build_reranker(settings: Settings): | |
| kind = settings.rerank_kind | |
| if kind == "fake": | |
| from ..core.rerank import FakeReranker | |
| return FakeReranker() | |
| if kind == "bge": | |
| from ..core.rerank import BGEReranker | |
| return BGEReranker() | |
| return None | |
| def build_service(settings: Settings) -> StudyService: | |
| from pathlib import Path | |
| from ..graph.store import load_graph | |
| index = load_index(settings.index_dir) | |
| embedder = build_embedder(settings.embedder_kind) | |
| llm = build_llm(settings) | |
| reranker = build_reranker(settings) | |
| graph = load_graph(Path(settings.index_dir) / "graph.json") | |
| return StudyService(index, embedder, llm, settings.materials_dir, reranker=reranker, graph=graph) | |