main.py 2.35 KB
Newer Older
1
2
from fastapi import FastAPI, Depends
from fastapi.routing import APIRoute
3
from fastapi.middleware.cors import CORSMiddleware
4
from apps.webui.routers import (
Timothy J. Baek's avatar
Timothy J. Baek committed
5
6
7
8
    auths,
    users,
    chats,
    documents,
Timothy J. Baek's avatar
Timothy J. Baek committed
9
    models,
Timothy J. Baek's avatar
Timothy J. Baek committed
10
11
    prompts,
    configs,
Timothy J. Baek's avatar
Timothy J. Baek committed
12
    memories,
Timothy J. Baek's avatar
Timothy J. Baek committed
13
14
    utils,
)
Timothy J. Baek's avatar
Timothy J. Baek committed
15
from config import (
16
    WEBUI_BUILD_HASH,
17
18
    SHOW_ADMIN_DETAILS,
    ADMIN_EMAIL,
Timothy J. Baek's avatar
Timothy J. Baek committed
19
20
21
22
23
24
    WEBUI_AUTH,
    DEFAULT_MODELS,
    DEFAULT_PROMPT_SUGGESTIONS,
    DEFAULT_USER_ROLE,
    ENABLE_SIGNUP,
    USER_PERMISSIONS,
Timothy J. Baek's avatar
Timothy J. Baek committed
25
    WEBHOOK_URL,
26
    WEBUI_AUTH_TRUSTED_EMAIL_HEADER,
27
    JWT_EXPIRES_IN,
Timothy J. Baek's avatar
Timothy J. Baek committed
28
    WEBUI_BANNERS,
29
    AppConfig,
30
    ENABLE_COMMUNITY_SHARING,
Timothy J. Baek's avatar
Timothy J. Baek committed
31
)
32
33
34
35
36

app = FastAPI()

origins = ["*"]

37
app.state.config = AppConfig()
Timothy J. Baek's avatar
Timothy J. Baek committed
38

39
40
41
app.state.config.ENABLE_SIGNUP = ENABLE_SIGNUP
app.state.config.JWT_EXPIRES_IN = JWT_EXPIRES_IN

42
43
44
45
46

app.state.config.SHOW_ADMIN_DETAILS = SHOW_ADMIN_DETAILS
app.state.config.ADMIN_EMAIL = ADMIN_EMAIL


47
48
49
50
51
app.state.config.DEFAULT_MODELS = DEFAULT_MODELS
app.state.config.DEFAULT_PROMPT_SUGGESTIONS = DEFAULT_PROMPT_SUGGESTIONS
app.state.config.DEFAULT_USER_ROLE = DEFAULT_USER_ROLE
app.state.config.USER_PERMISSIONS = USER_PERMISSIONS
app.state.config.WEBHOOK_URL = WEBHOOK_URL
Timothy J. Baek's avatar
Timothy J. Baek committed
52
app.state.config.BANNERS = WEBUI_BANNERS
Timothy J. Baek's avatar
Timothy J. Baek committed
53

54
app.state.config.ENABLE_COMMUNITY_SHARING = ENABLE_COMMUNITY_SHARING
Timothy J. Baek's avatar
Timothy J. Baek committed
55
56

app.state.MODELS = {}
57
app.state.AUTH_TRUSTED_EMAIL_HEADER = WEBUI_AUTH_TRUSTED_EMAIL_HEADER
58

Timothy J. Baek's avatar
Timothy J. Baek committed
59

60
61
62
63
64
65
66
67
68
app.add_middleware(
    CORSMiddleware,
    allow_origins=origins,
    allow_credentials=True,
    allow_methods=["*"],
    allow_headers=["*"],
)

app.include_router(auths.router, prefix="/auths", tags=["auths"])
69
70
app.include_router(users.router, prefix="/users", tags=["users"])
app.include_router(chats.router, prefix="/chats", tags=["chats"])
Timothy J. Baek's avatar
Timothy J. Baek committed
71

Timothy J. Baek's avatar
Timothy J. Baek committed
72
app.include_router(documents.router, prefix="/documents", tags=["documents"])
Timothy J. Baek's avatar
Timothy J. Baek committed
73
app.include_router(models.router, prefix="/models", tags=["models"])
74
app.include_router(prompts.router, prefix="/prompts", tags=["prompts"])
Timothy J. Baek's avatar
Timothy J. Baek committed
75
76
app.include_router(memories.router, prefix="/memories", tags=["memories"])

Timothy J. Baek's avatar
Timothy J. Baek committed
77
app.include_router(configs.router, prefix="/configs", tags=["configs"])
Timothy J. Baek's avatar
Timothy J. Baek committed
78
app.include_router(utils.router, prefix="/utils", tags=["utils"])
79
80
81
82


@app.get("/")
async def get_status():
Timothy J. Baek's avatar
Timothy J. Baek committed
83
84
85
    return {
        "status": True,
        "auth": WEBUI_AUTH,
86
87
        "default_models": app.state.config.DEFAULT_MODELS,
        "default_prompt_suggestions": app.state.config.DEFAULT_PROMPT_SUGGESTIONS,
Timothy J. Baek's avatar
Timothy J. Baek committed
88
    }