main.py 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. from fastapi import FastAPI, Depends
  2. from fastapi.routing import APIRoute
  3. from fastapi.middleware.cors import CORSMiddleware
  4. from apps.webui.routers import (
  5. auths,
  6. users,
  7. chats,
  8. documents,
  9. tools,
  10. models,
  11. prompts,
  12. configs,
  13. memories,
  14. utils,
  15. files,
  16. )
  17. from config import (
  18. WEBUI_BUILD_HASH,
  19. SHOW_ADMIN_DETAILS,
  20. ADMIN_EMAIL,
  21. WEBUI_AUTH,
  22. DEFAULT_MODELS,
  23. DEFAULT_PROMPT_SUGGESTIONS,
  24. DEFAULT_USER_ROLE,
  25. ENABLE_SIGNUP,
  26. USER_PERMISSIONS,
  27. WEBHOOK_URL,
  28. WEBUI_AUTH_TRUSTED_EMAIL_HEADER,
  29. WEBUI_AUTH_TRUSTED_NAME_HEADER,
  30. JWT_EXPIRES_IN,
  31. WEBUI_BANNERS,
  32. ENABLE_COMMUNITY_SHARING,
  33. AppConfig,
  34. )
  35. app = FastAPI()
  36. origins = ["*"]
  37. app.state.config = AppConfig()
  38. app.state.config.ENABLE_SIGNUP = ENABLE_SIGNUP
  39. app.state.config.JWT_EXPIRES_IN = JWT_EXPIRES_IN
  40. app.state.AUTH_TRUSTED_EMAIL_HEADER = WEBUI_AUTH_TRUSTED_EMAIL_HEADER
  41. app.state.AUTH_TRUSTED_NAME_HEADER = WEBUI_AUTH_TRUSTED_NAME_HEADER
  42. app.state.config.SHOW_ADMIN_DETAILS = SHOW_ADMIN_DETAILS
  43. app.state.config.ADMIN_EMAIL = ADMIN_EMAIL
  44. app.state.config.DEFAULT_MODELS = DEFAULT_MODELS
  45. app.state.config.DEFAULT_PROMPT_SUGGESTIONS = DEFAULT_PROMPT_SUGGESTIONS
  46. app.state.config.DEFAULT_USER_ROLE = DEFAULT_USER_ROLE
  47. app.state.config.USER_PERMISSIONS = USER_PERMISSIONS
  48. app.state.config.WEBHOOK_URL = WEBHOOK_URL
  49. app.state.config.BANNERS = WEBUI_BANNERS
  50. app.state.config.ENABLE_COMMUNITY_SHARING = ENABLE_COMMUNITY_SHARING
  51. app.state.MODELS = {}
  52. app.state.TOOLS = {}
  53. app.state.FUNCTIONS = {}
  54. app.add_middleware(
  55. CORSMiddleware,
  56. allow_origins=origins,
  57. allow_credentials=True,
  58. allow_methods=["*"],
  59. allow_headers=["*"],
  60. )
  61. app.include_router(auths.router, prefix="/auths", tags=["auths"])
  62. app.include_router(users.router, prefix="/users", tags=["users"])
  63. app.include_router(chats.router, prefix="/chats", tags=["chats"])
  64. app.include_router(documents.router, prefix="/documents", tags=["documents"])
  65. app.include_router(tools.router, prefix="/tools", tags=["tools"])
  66. app.include_router(models.router, prefix="/models", tags=["models"])
  67. app.include_router(prompts.router, prefix="/prompts", tags=["prompts"])
  68. app.include_router(memories.router, prefix="/memories", tags=["memories"])
  69. app.include_router(configs.router, prefix="/configs", tags=["configs"])
  70. app.include_router(utils.router, prefix="/utils", tags=["utils"])
  71. app.include_router(files.router, prefix="/files", tags=["files"])
  72. @app.get("/")
  73. async def get_status():
  74. return {
  75. "status": True,
  76. "auth": WEBUI_AUTH,
  77. "default_models": app.state.config.DEFAULT_MODELS,
  78. "default_prompt_suggestions": app.state.config.DEFAULT_PROMPT_SUGGESTIONS,
  79. }