|
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 |
|
|