| | import logging |
| | import os |
| | from httpx import AsyncClient |
| | from litellm.router import Router |
| | from jinja2 import Environment, StrictUndefined, FileSystemLoader |
| |
|
| | |
| | |
| | |
| |
|
| |
|
| | INSIGHT_FINDER_BASE_URL = "https://organizedprogrammers-insight-finder.hf.space/" |
| |
|
| |
|
| | def init_dependencies(): |
| | """Initialize the application global dependencies""" |
| |
|
| | global llm_router |
| | global prompt_templates |
| | global http_client |
| |
|
| | llm_router = Router(model_list=[ |
| | { |
| | "model_name": "gemini-v1", |
| | "litellm_params": |
| | { |
| | "model": "gemini/gemini-2.0-flash", |
| | "api_key": os.environ.get("GEMINI"), |
| | "max_retries": 5, |
| | "rpm": 15, |
| | "allowed_fails": 1, |
| | "cooldown": 30, |
| | } |
| | }, |
| | { |
| | "model_name": "gemini-v2", |
| | "litellm_params": |
| | { |
| | "model": "gemini/gemini-2.5-flash-lite-preview-06-17", |
| | "api_key": os.environ.get("GEMINI"), |
| | "max_retries": 5, |
| | "rpm": 10, |
| | "allowed_fails": 1, |
| | "cooldown": 30, |
| | } |
| | }], fallbacks=[{"gemini-v2": ["gemini-v1"]}], num_retries=10, retry_after=30) |
| |
|
| | prompt_templates = Environment(loader=FileSystemLoader( |
| | "prompts"), enable_async=True, undefined=StrictUndefined) |
| |
|
| | enable_ssl = not os.environ.get("NO_SSL", "0") == "1" |
| | logging.debug(f"SSL cert check is {enable_ssl}") |
| | http_client = AsyncClient(verify=enable_ssl, timeout=None) |
| |
|
| |
|
| | def get_llm_router() -> Router: |
| | """Retrieves the LLM router""" |
| | return llm_router |
| |
|
| |
|
| | def get_prompt_templates() -> Environment: |
| | """Retrieves the Jinja2 prompt templates environment""" |
| | return prompt_templates |
| |
|
| |
|
| | def get_http_client() -> AsyncClient: |
| | """Retrieves the HTTP Client""" |
| | return http_client |
| |
|