Reqxtract-v2 / dependencies.py
Lucas ARRIESSE
Merge all API endpoints into the app API
f6bffda
raw
history blame
1.96 kB
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)
http_client = AsyncClient(verify=os.environ.get(
"NO_SSL", "0") == "1", 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