generated from coulomb/repo-seed
configuration support for optional LLM extraction
This commit is contained in:
@@ -7,6 +7,7 @@ from fastapi import Depends, FastAPI, HTTPException
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
from repo_registry.core.service import RegistryService
|
||||
from repo_registry.llm_extraction import LLMCandidateExtractor, create_llm_connect_adapter
|
||||
from repo_registry.repo_ingestion.git import GitIngestionService
|
||||
from repo_registry.storage.sqlite import NotFoundError, RegistryStore
|
||||
|
||||
@@ -14,6 +15,8 @@ from repo_registry.storage.sqlite import NotFoundError, RegistryStore
|
||||
class Settings(BaseModel):
|
||||
database_path: str = Field(default="var/repo-registry.sqlite3")
|
||||
checkout_root: str = Field(default="var/checkouts")
|
||||
llm_provider: str | None = Field(default=None)
|
||||
llm_model: str | None = Field(default=None)
|
||||
|
||||
|
||||
def get_settings() -> Settings:
|
||||
@@ -25,7 +28,18 @@ def get_service(settings: Settings = Depends(get_settings)) -> RegistryService:
|
||||
database_path.parent.mkdir(parents=True, exist_ok=True)
|
||||
store = RegistryStore(database_path)
|
||||
store.initialize()
|
||||
return RegistryService(store, ingestion=GitIngestionService(settings.checkout_root))
|
||||
llm_extractor = None
|
||||
if settings.llm_provider:
|
||||
adapter = create_llm_connect_adapter(
|
||||
settings.llm_provider,
|
||||
model=settings.llm_model,
|
||||
)
|
||||
llm_extractor = LLMCandidateExtractor(adapter)
|
||||
return RegistryService(
|
||||
store,
|
||||
ingestion=GitIngestionService(settings.checkout_root),
|
||||
llm_extractor=llm_extractor,
|
||||
)
|
||||
|
||||
|
||||
class RepositoryCreate(BaseModel):
|
||||
|
||||
Reference in New Issue
Block a user