Reqxtract-v2 / dependencies.py
Lucas ARRIESSE
Misc changes
2ba1434
import logging
import os
from httpx import AsyncClient
from litellm.router import Router
from jinja2 import Environment, StrictUndefined, FileSystemLoader
# Declare all global app dependencies here
# - Setup your dependency global inside init_dependencies()
# - Create a get_xxxx_() function to retrieve the dependency inside the FastAPI router
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