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",
),
llm_provider=_normalize_llm_provider(
_env_str("CG_RAG_LLM_PROVIDER", "QUESTION_GENERATED_APP_LLM_PROVIDER", "deepseek")
),
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,
),
generation_streaming=_env_bool(
"CG_RAG_GENERATION_STREAMING",
"QUESTION_GENERATED_APP_GENERATION_STREAMING",
True,
),
stream_answer_token_delay_seconds=_env_non_negative_float(
"CG_RAG_STREAM_ANSWER_TOKEN_DELAY_SECONDS",
"QUESTION_GENERATED_APP_STREAM_ANSWER_TOKEN_DELAY_SECONDS",
DEFAULT_STREAM_ANSWER_TOKEN_DELAY_SECONDS,
),
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,
),
hydration_sidecar_enabled=_env_bool(
"CG_RAG_HYDRATION_SIDECAR_ENABLED",
"QUESTION_GENERATED_APP_HYDRATION_SIDECAR_ENABLED",
True,
),
hydration_sidecar_path=_env_str(
"CG_RAG_HYDRATION_SIDECAR_PATH",
"QUESTION_GENERATED_APP_HYDRATION_SIDECAR_PATH",
"",
),
generation_concurrency=_env_positive_int(
"CG_RAG_GENERATION_CONCURRENCY",
"QUESTION_GENERATED_APP_GENERATION_CONCURRENCY",
DEFAULT_GENERATION_CONCURRENCY,
),
retrieval_concurrency=_env_positive_int(
"CG_RAG_RETRIEVAL_CONCURRENCY",
"QUESTION_GENERATED_APP_RETRIEVAL_CONCURRENCY",
DEFAULT_RETRIEVAL_CONCURRENCY,
),
capacity_wait_timeout_seconds=_env_float(
"CG_RAG_CAPACITY_WAIT_TIMEOUT_SECONDS",
"QUESTION_GENERATED_APP_CAPACITY_WAIT_TIMEOUT_SECONDS",
DEFAULT_CAPACITY_WAIT_TIMEOUT_SECONDS,
),
vision_endpoint=_env_str(
"CG_RAG_VISION_ENDPOINT",
"QUESTION_GENERATED_APP_VISION_ENDPOINT",
"",
),
vision_model=_env_str(
"CG_RAG_VISION_MODEL",
"QUESTION_GENERATED_APP_VISION_MODEL",
"",
),
vision_api_key=_env_str(
"CG_RAG_VISION_API_KEY",
"QUESTION_GENERATED_APP_VISION_API_KEY",
"",
),
vision_enable_thinking=_env_bool(
"CG_RAG_VISION_ENABLE_THINKING",
"QUESTION_GENERATED_APP_VISION_ENABLE_THINKING",
False,
),
vision_streaming=_env_bool(
"CG_RAG_VISION_STREAMING",
"QUESTION_GENERATED_APP_VISION_STREAMING",
True,
),
vision_max_images=_env_positive_int(
"CG_RAG_VISION_MAX_IMAGES",
"QUESTION_GENERATED_APP_VISION_MAX_IMAGES",
DEFAULT_VISION_MAX_IMAGES,
),
vision_max_image_bytes=_env_positive_int(
"CG_RAG_VISION_MAX_IMAGE_BYTES",
"QUESTION_GENERATED_APP_VISION_MAX_IMAGE_BYTES",
DEFAULT_VISION_MAX_IMAGE_BYTES,
),
vision_max_tokens=_env_positive_int(
"CG_RAG_VISION_MAX_TOKENS",
"QUESTION_GENERATED_APP_VISION_MAX_TOKENS",
DEFAULT_VISION_MAX_TOKENS,
),
vision_agentic_max_search_rounds=_env_positive_int(
"CG_RAG_VISION_AGENTIC_MAX_SEARCH_ROUNDS",
"QUESTION_GENERATED_APP_VISION_AGENTIC_MAX_SEARCH_ROUNDS",
DEFAULT_VISION_AGENTIC_MAX_SEARCH_ROUNDS,
),
vision_agentic_retrieval_topk=_env_positive_int(
"CG_RAG_VISION_AGENTIC_RETRIEVAL_TOPK",
"QUESTION_GENERATED_APP_VISION_AGENTIC_RETRIEVAL_TOPK",
DEFAULT_VISION_AGENTIC_RETRIEVAL_TOPK,
),
)