Shreyas094 commited on
Commit
d1fa158
·
verified ·
1 Parent(s): c8de333

Update backend/server/server.py

Browse files
Files changed (1) hide show
  1. backend/server/server.py +134 -134
backend/server/server.py CHANGED
@@ -1,134 +1,134 @@
1
- import json
2
- import os
3
- from typing import Dict, List
4
-
5
- from fastapi import FastAPI, Request, WebSocket, WebSocketDisconnect, File, UploadFile, Header
6
- from fastapi.middleware.cors import CORSMiddleware
7
- from fastapi.staticfiles import StaticFiles
8
- from fastapi.templating import Jinja2Templates
9
- from pydantic import BaseModel
10
-
11
- from backend.server.websocket_manager import WebSocketManager
12
- from backend.server.server_utils import (
13
- get_config_dict,
14
- update_environment_variables, handle_file_upload, handle_file_deletion,
15
- execute_multi_agents, handle_websocket_communication
16
- )
17
-
18
-
19
- from gpt_researcher.utils.logging_config import setup_research_logging
20
-
21
- import logging
22
-
23
- # Get logger instance
24
- logger = logging.getLogger(__name__)
25
-
26
- # Don't override parent logger settings
27
- logger.propagate = True
28
-
29
- logging.basicConfig(
30
- level=logging.INFO,
31
- format="%(asctime)s - %(levelname)s - %(message)s",
32
- handlers=[
33
- logging.StreamHandler() # Only log to console
34
- ]
35
- )
36
-
37
- # Models
38
-
39
-
40
- class ResearchRequest(BaseModel):
41
- task: str
42
- report_type: str
43
- agent: str
44
-
45
-
46
- class ConfigRequest(BaseModel):
47
- ANTHROPIC_API_KEY: str
48
- TAVILY_API_KEY: str
49
- LANGCHAIN_TRACING_V2: str
50
- LANGCHAIN_API_KEY: str
51
- OPENAI_API_KEY: str
52
- DOC_PATH: str
53
- RETRIEVER: str
54
- GOOGLE_API_KEY: str = ''
55
- GOOGLE_CX_KEY: str = ''
56
- BING_API_KEY: str = ''
57
- SEARCHAPI_API_KEY: str = ''
58
- SERPAPI_API_KEY: str = ''
59
- SERPER_API_KEY: str = ''
60
- SEARX_URL: str = ''
61
- XAI_API_KEY: str
62
- DEEPSEEK_API_KEY: str
63
-
64
-
65
- # App initialization
66
- app = FastAPI()
67
-
68
- # Static files and templates
69
- app.mount("/site", StaticFiles(directory="./frontend"), name="site")
70
- app.mount("/static", StaticFiles(directory="./frontend/static"), name="static")
71
- templates = Jinja2Templates(directory="./frontend")
72
-
73
- # WebSocket manager
74
- manager = WebSocketManager()
75
-
76
- # Middleware
77
- app.add_middleware(
78
- CORSMiddleware,
79
- allow_origins=["http://localhost:3000"],
80
- allow_credentials=True,
81
- allow_methods=["*"],
82
- allow_headers=["*"],
83
- )
84
-
85
- # Constants
86
- DOC_PATH = os.getenv("DOC_PATH", "./my-docs")
87
-
88
- # Startup event
89
-
90
-
91
- @app.on_event("startup")
92
- def startup_event():
93
- os.makedirs("outputs", exist_ok=True)
94
- app.mount("/outputs", StaticFiles(directory="outputs"), name="outputs")
95
- os.makedirs(DOC_PATH, exist_ok=True)
96
-
97
-
98
- # Routes
99
-
100
-
101
- @app.get("/")
102
- async def read_root(request: Request):
103
- return templates.TemplateResponse("index.html", {"request": request, "report": None})
104
-
105
-
106
- @app.get("/files/")
107
- async def list_files():
108
- files = os.listdir(DOC_PATH)
109
- print(f"Files in {DOC_PATH}: {files}")
110
- return {"files": files}
111
-
112
-
113
- @app.post("/api/multi_agents")
114
- async def run_multi_agents():
115
- return await execute_multi_agents(manager)
116
-
117
-
118
- @app.post("/upload/")
119
- async def upload_file(file: UploadFile = File(...)):
120
- return await handle_file_upload(file, DOC_PATH)
121
-
122
-
123
- @app.delete("/files/{filename}")
124
- async def delete_file(filename: str):
125
- return await handle_file_deletion(filename, DOC_PATH)
126
-
127
-
128
- @app.websocket("/ws")
129
- async def websocket_endpoint(websocket: WebSocket):
130
- await manager.connect(websocket)
131
- try:
132
- await handle_websocket_communication(websocket, manager)
133
- except WebSocketDisconnect:
134
- await manager.disconnect(websocket)
 
1
+ import json
2
+ import os
3
+ from typing import Dict, List
4
+
5
+ from fastapi import FastAPI, Request, WebSocket, WebSocketDisconnect, File, UploadFile, Header
6
+ from fastapi.middleware.cors import CORSMiddleware
7
+ from fastapi.staticfiles import StaticFiles
8
+ from fastapi.templating import Jinja2Templates
9
+ from pydantic import BaseModel
10
+
11
+ from backend.server.websocket_manager import WebSocketManager
12
+ from backend.server.server_utils import (
13
+ get_config_dict,
14
+ update_environment_variables, handle_file_upload, handle_file_deletion,
15
+ execute_multi_agents, handle_websocket_communication
16
+ )
17
+
18
+
19
+ from gpt_researcher.utils.logging_config import setup_research_logging
20
+
21
+ import logging
22
+
23
+ # Get logger instance
24
+ logger = logging.getLogger(__name__)
25
+
26
+ # Don't override parent logger settings
27
+ logger.propagate = True
28
+
29
+ logging.basicConfig(
30
+ level=logging.INFO,
31
+ format="%(asctime)s - %(levelname)s - %(message)s",
32
+ handlers=[
33
+ logging.StreamHandler() # Only log to console
34
+ ]
35
+ )
36
+
37
+ # Models
38
+
39
+
40
+ class ResearchRequest(BaseModel):
41
+ task: str
42
+ report_type: str
43
+ agent: str
44
+
45
+
46
+ class ConfigRequest(BaseModel):
47
+ ANTHROPIC_API_KEY: str
48
+ TAVILY_API_KEY: str
49
+ LANGCHAIN_TRACING_V2: str
50
+ LANGCHAIN_API_KEY: str
51
+ OPENAI_API_KEY: str
52
+ DOC_PATH: str
53
+ RETRIEVER: str
54
+ GOOGLE_API_KEY: str = ''
55
+ GOOGLE_CX_KEY: str = ''
56
+ BING_API_KEY: str = ''
57
+ SEARCHAPI_API_KEY: str = ''
58
+ SERPAPI_API_KEY: str = ''
59
+ SERPER_API_KEY: str = ''
60
+ SEARX_URL: str = ''
61
+ XAI_API_KEY: str
62
+ DEEPSEEK_API_KEY: str
63
+
64
+
65
+ # App initialization
66
+ app = FastAPI()
67
+
68
+ # Static files and templates
69
+ app.mount("/site", StaticFiles(directory="./frontend"), name="site")
70
+ app.mount("/static", StaticFiles(directory="./frontend/static"), name="static")
71
+ templates = Jinja2Templates(directory="./frontend")
72
+
73
+ # WebSocket manager
74
+ manager = WebSocketManager()
75
+
76
+ # Middleware
77
+ app.add_middleware(
78
+ CORSMiddleware,
79
+ allow_origins=["http://localhost:3000"],
80
+ allow_credentials=True,
81
+ allow_methods=["*"],
82
+ allow_headers=["*"],
83
+ )
84
+
85
+ # Constants
86
+ DOC_PATH = os.getenv("DOC_PATH", "/app/my-docs")
87
+
88
+ # Startup event
89
+
90
+
91
+ @app.on_event("startup")
92
+ def startup_event():
93
+ os.makedirs("outputs", exist_ok=True)
94
+ app.mount("/outputs", StaticFiles(directory="outputs"), name="outputs")
95
+ os.makedirs(DOC_PATH, exist_ok=True)
96
+
97
+
98
+ # Routes
99
+
100
+
101
+ @app.get("/")
102
+ async def read_root(request: Request):
103
+ return templates.TemplateResponse("index.html", {"request": request, "report": None})
104
+
105
+
106
+ @app.get("/files/")
107
+ async def list_files():
108
+ files = os.listdir(DOC_PATH)
109
+ print(f"Files in {DOC_PATH}: {files}")
110
+ return {"files": files}
111
+
112
+
113
+ @app.post("/api/multi_agents")
114
+ async def run_multi_agents():
115
+ return await execute_multi_agents(manager)
116
+
117
+
118
+ @app.post("/upload/")
119
+ async def upload_file(file: UploadFile = File(...)):
120
+ return await handle_file_upload(file, DOC_PATH)
121
+
122
+
123
+ @app.delete("/files/{filename}")
124
+ async def delete_file(filename: str):
125
+ return await handle_file_deletion(filename, DOC_PATH)
126
+
127
+
128
+ @app.websocket("/ws")
129
+ async def websocket_endpoint(websocket: WebSocket):
130
+ await manager.connect(websocket)
131
+ try:
132
+ await handle_websocket_communication(websocket, manager)
133
+ except WebSocketDisconnect:
134
+ await manager.disconnect(websocket)