def load_cg_rag_config() -> CgRagConfig:
load_env_file()
return CgRagConfig(
http_prefix=_clean_path(
_env_str("CG_RAG_HTTP_PREFIX", "QUESTION_GENERATED_APP_HTTP_PREFIX", "/cg-rag"),
"/cg-rag",
),
mcp_path=_clean_path(
_env_str("CG_RAG_MCP_PATH", "QUESTION_GENERATED_APP_MCP_PATH", "/cg-rag/mcp"),
"/cg-rag/mcp",
),
generation_endpoint=_env_str(
"CG_RAG_GENERATION_ENDPOINT",
"QUESTION_GENERATED_APP_GENERATION_ENDPOINT",
"",
),
generation_model=_env_str(
"CG_RAG_GENERATION_MODEL",
"QUESTION_GENERATED_APP_GENERATION_MODEL",
"",
),
api_key=_env_str("CG_RAG_API_KEY", "QUESTION_GENERATED_APP_API_KEY", ""),
generation_response_format_json=_env_bool(
"CG_RAG_GENERATION_RESPONSE_FORMAT_JSON",
"QUESTION_GENERATED_APP_GENERATION_RESPONSE_FORMAT_JSON",
True,
),
generation_enable_thinking=_env_bool(
"CG_RAG_GENERATION_ENABLE_THINKING",
"QUESTION_GENERATED_APP_GENERATION_ENABLE_THINKING",
False,
),
timeout_seconds=_env_float(
"CG_RAG_TIMEOUT_SECONDS",
"QUESTION_GENERATED_APP_TIMEOUT_SECONDS",
DEFAULT_TIMEOUT_SECONDS,
),
max_context_docs=_env_positive_int(
"CG_RAG_MAX_CONTEXT_DOCS",
"QUESTION_GENERATED_APP_MAX_CONTEXT_DOCS",
DEFAULT_MAX_CONTEXT_DOCS,
),
default_max_items=_env_positive_int(
"CG_RAG_DEFAULT_MAX_ITEMS",
"QUESTION_GENERATED_APP_DEFAULT_MAX_ITEMS",
DEFAULT_MAX_ITEMS,
),
cache_max_entries=_env_non_negative_int(
"CG_RAG_RETRIEVE_CACHE_MAX_ENTRIES",
"QUESTION_GENERATED_APP_RETRIEVE_CACHE_MAX_ENTRIES",
DEFAULT_CACHE_MAX_ENTRIES,
),
cache_ttl_seconds=_env_non_negative_float(
"CG_RAG_RETRIEVE_CACHE_TTL_SECONDS",
"QUESTION_GENERATED_APP_RETRIEVE_CACHE_TTL_SECONDS",
DEFAULT_CACHE_TTL_SECONDS,
),
)