Reqxtract-v2 / dependencies.py
Lucas ARRIESSE
Allow listing other document types than xxxxCRs
8ac47d4
raw
history blame
2.12 kB
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/"
DOC_FINDER_BASE_URL = "https://organizedprogrammers-docfinder.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