vibe.review.services.provider_factory

Provider resolution for VIBE Review.

Review uses a narrow subset of LLM functionality (single-shot, structured output). We still reuse the existing global configuration registry patterns: - Embedding/rerank providers selected by key (local/berget/mock). - LLM endpoints selected by name from config.yml (LLM_ENDPOINTS).

TemplateConfigLoader

Protocol for loading template config.

get_template_config

get_template_config(template_id: str) -> dict[str, Any]

Return the parsed config.yml for a template.

ReviewProviders

Resolved providers for a review template.

ReviewProviderFactory

Resolve providers from template config and app config.

Template config keys (in template's config.yml): review: embedding: local|berget|mock|auto reranking: local|berget|mock|auto evaluation:

create_embedding_provider

create_embedding_provider(template_config: Mapping[str, Any] | None) -> EmbeddingProvider

Create embedding provider from template's review.embedding config.

create_rerank_provider

create_rerank_provider(template_config: Mapping[str, Any] | None) -> RerankProvider

Create rerank provider from template's review.reranking config.

create_llm_client

create_llm_client(template_config: Mapping[str, Any] | None, *, require_config: bool = False) -> BaseLLMClient

Create LLM client from template's review.evaluation endpoint config.

create_providers

create_providers(template_config: Mapping[str, Any] | None, *, require_llm_config: bool = False) -> ReviewProviders

Create all review providers (embedding, rerank, LLM) from template config.

load_template_config

load_template_config(template_id: str) -> dict[str, Any]

Load template config.yml by template ID.

Uses template_config_loader if provided, otherwise raises.

get_template_id_for_session

get_template_id_for_session(db_session: Session, session_id: int) -> str | None

Look up template_id from a review session.

get_template_id_for_document

get_template_id_for_document(db_session: Session, document_id: int) -> str | None

Look up template_id from a document's session.

create_embedding_provider_for_session

create_embedding_provider_for_session(db_session: Session, session_id: int) -> EmbeddingProvider

Create embedding provider using template config from session.

create_rerank_provider_for_session

create_rerank_provider_for_session(db_session: Session, session_id: int) -> RerankProvider

Create rerank provider using template config from session.

create_providers_for_session

create_providers_for_session(db_session: Session, session_id: int, *, require_llm_config: bool = False) -> ReviewProviders

Create all providers using template config from session.

TemplateProviderAdapter

Adapts TemplateDataProvider to TemplateConfigLoader protocol.

get_template_config

get_template_config(template_id: str) -> dict[str, Any]

Get template config by loading template data and extracting config.

create_factory_with_app_context

create_factory_with_app_context(app_config: Mapping[str, Any] | None = None) -> tuple[Any, ReviewProviderFactory]

Create a ReviewProviderFactory with proper app context.

Returns a tuple of (app_context, factory). The caller must use the app_context as a context manager.

Usage

ctx, factory = create_factory_with_app_context() with ctx: provider = factory.create_embedding_provider_for_session(db, session_id)