main.py 2.41 KB
Newer Older
1
2
from fastapi import FastAPI, Depends
from fastapi.routing import APIRoute
3
from fastapi.middleware.cors import CORSMiddleware
4
5
from starlette.middleware.sessions import SessionMiddleware

6
from apps.webui.routers import (
Timothy J. Baek's avatar
Timothy J. Baek committed
7
8
9
10
    auths,
    users,
    chats,
    documents,
Timothy J. Baek's avatar
Timothy J. Baek committed
11
    models,
Timothy J. Baek's avatar
Timothy J. Baek committed
12
13
    prompts,
    configs,
Timothy J. Baek's avatar
Timothy J. Baek committed
14
    memories,
Timothy J. Baek's avatar
Timothy J. Baek committed
15
16
    utils,
)
Timothy J. Baek's avatar
Timothy J. Baek committed
17
from config import (
18
    WEBUI_BUILD_HASH,
19
20
    SHOW_ADMIN_DETAILS,
    ADMIN_EMAIL,
Timothy J. Baek's avatar
Timothy J. Baek committed
21
22
23
24
25
26
    WEBUI_AUTH,
    DEFAULT_MODELS,
    DEFAULT_PROMPT_SUGGESTIONS,
    DEFAULT_USER_ROLE,
    ENABLE_SIGNUP,
    USER_PERMISSIONS,
Timothy J. Baek's avatar
Timothy J. Baek committed
27
    WEBHOOK_URL,
28
    WEBUI_AUTH_TRUSTED_EMAIL_HEADER,
29
    JWT_EXPIRES_IN,
30
    AppConfig,
31
    ENABLE_COMMUNITY_SHARING,
32
    WEBUI_BANNERS,
Timothy J. Baek's avatar
Timothy J. Baek committed
33
)
34
35
36
37
38

app = FastAPI()

origins = ["*"]

39
app.state.config = AppConfig()
Timothy J. Baek's avatar
Timothy J. Baek committed
40

41
42
43
app.state.config.ENABLE_SIGNUP = ENABLE_SIGNUP
app.state.config.JWT_EXPIRES_IN = JWT_EXPIRES_IN

44
45
46
47
48

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


49
50
51
52
53
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
54
app.state.config.BANNERS = WEBUI_BANNERS
Timothy J. Baek's avatar
Timothy J. Baek committed
55

56
app.state.config.ENABLE_COMMUNITY_SHARING = ENABLE_COMMUNITY_SHARING
Timothy J. Baek's avatar
Timothy J. Baek committed
57
58

app.state.MODELS = {}
59
app.state.AUTH_TRUSTED_EMAIL_HEADER = WEBUI_AUTH_TRUSTED_EMAIL_HEADER
60

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

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

app.include_router(auths.router, prefix="/auths", tags=["auths"])
71
72
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
73

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

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


@app.get("/")
async def get_status():
Timothy J. Baek's avatar
Timothy J. Baek committed
85
86
87
    return {
        "status": True,
        "auth": WEBUI_AUTH,
88
89
        "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
90
    }