File size: 2,049 Bytes
8ac47d4
5ef0f8d
f6bffda
5ef0f8d
f6bffda
5ef0f8d
 
 
 
 
 
f6bffda
 
8ac47d4
5ef0f8d
 
 
 
f6bffda
 
 
5ef0f8d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f6bffda
5ef0f8d
 
 
 
 
 
 
 
f6bffda
 
 
8ac47d4
 
 
f6bffda
5ef0f8d
 
 
 
f6bffda
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
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