Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
@@ -10,6 +10,11 @@ from config import cookies, headers, groqapi
|
|
10 |
from prompts import ChiplingPrompts
|
11 |
from groq import Groq
|
12 |
import json
|
|
|
|
|
|
|
|
|
|
|
13 |
|
14 |
app = FastAPI()
|
15 |
|
@@ -22,6 +27,45 @@ app.add_middleware(
|
|
22 |
allow_headers=["*"],
|
23 |
)
|
24 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
25 |
# Define request model
|
26 |
class ChatRequest(BaseModel):
|
27 |
message: str
|
@@ -176,6 +220,7 @@ async def chat(request: ChatRequest):
|
|
176 |
}
|
177 |
|
178 |
selected_generator = random.choice([groqgenerate, generate])
|
|
|
179 |
return StreamingResponse(selected_generator(json_data), media_type='text/event-stream')
|
180 |
|
181 |
|
@@ -184,6 +229,9 @@ async def generate_modules(request: Request):
|
|
184 |
data = await request.json()
|
185 |
search_query = data.get("searchQuery")
|
186 |
|
|
|
|
|
|
|
187 |
if not search_query:
|
188 |
return {"error": "searchQuery is required"}
|
189 |
|
@@ -229,6 +277,9 @@ async def generate_topics(request: Request):
|
|
229 |
|
230 |
if not search_query:
|
231 |
return {"error": "searchQuery is required"}
|
|
|
|
|
|
|
232 |
|
233 |
system_prompt = ChiplingPrompts.generateTopics(search_query)
|
234 |
|
|
|
10 |
from prompts import ChiplingPrompts
|
11 |
from groq import Groq
|
12 |
import json
|
13 |
+
from fastapi.responses import HTMLResponse
|
14 |
+
from fastapi.templating import Jinja2Templates
|
15 |
+
from pathlib import Path
|
16 |
+
from collections import Counter, defaultdict
|
17 |
+
from utils.logger import log_request
|
18 |
|
19 |
app = FastAPI()
|
20 |
|
|
|
27 |
allow_headers=["*"],
|
28 |
)
|
29 |
|
30 |
+
templates = Jinja2Templates(directory="templates")
|
31 |
+
LOG_FILE = Path("logs.json")
|
32 |
+
|
33 |
+
@app.get("/dashboard", response_class=HTMLResponse)
|
34 |
+
async def dashboard(request: Request, endpoint: str = None):
|
35 |
+
try:
|
36 |
+
with open("logs.json") as f:
|
37 |
+
logs = json.load(f)
|
38 |
+
except FileNotFoundError:
|
39 |
+
logs = []
|
40 |
+
|
41 |
+
# Filter logs
|
42 |
+
if endpoint:
|
43 |
+
logs = [log for log in logs if log["endpoint"] == endpoint]
|
44 |
+
|
45 |
+
# Summary stats
|
46 |
+
total_requests = len(logs)
|
47 |
+
endpoint_counts = Counter(log["endpoint"] for log in logs)
|
48 |
+
query_counts = Counter(log["query"] for log in logs)
|
49 |
+
|
50 |
+
# Requests per date
|
51 |
+
date_counts = defaultdict(int)
|
52 |
+
for log in logs:
|
53 |
+
date = log["timestamp"].split("T")[0]
|
54 |
+
date_counts[date] += 1
|
55 |
+
|
56 |
+
# Sort logs by timestamp (desc)
|
57 |
+
logs_sorted = sorted(logs, key=lambda x: x["timestamp"], reverse=True)
|
58 |
+
|
59 |
+
return templates.TemplateResponse("dashboard.html", {
|
60 |
+
"request": request,
|
61 |
+
"logs": logs_sorted[:100], # show top 100
|
62 |
+
"total_requests": total_requests,
|
63 |
+
"endpoint_counts": dict(endpoint_counts),
|
64 |
+
"query_counts": query_counts.most_common(5),
|
65 |
+
"date_counts": dict(date_counts),
|
66 |
+
"filter_endpoint": endpoint or "",
|
67 |
+
})
|
68 |
+
|
69 |
# Define request model
|
70 |
class ChatRequest(BaseModel):
|
71 |
message: str
|
|
|
220 |
}
|
221 |
|
222 |
selected_generator = random.choice([groqgenerate, generate])
|
223 |
+
log_request("/chat", selected_generator.__name__)
|
224 |
return StreamingResponse(selected_generator(json_data), media_type='text/event-stream')
|
225 |
|
226 |
|
|
|
229 |
data = await request.json()
|
230 |
search_query = data.get("searchQuery")
|
231 |
|
232 |
+
log_request("/generate-modules", search_query)
|
233 |
+
|
234 |
+
|
235 |
if not search_query:
|
236 |
return {"error": "searchQuery is required"}
|
237 |
|
|
|
277 |
|
278 |
if not search_query:
|
279 |
return {"error": "searchQuery is required"}
|
280 |
+
|
281 |
+
log_request("/generate-topics", search_query)
|
282 |
+
|
283 |
|
284 |
system_prompt = ChiplingPrompts.generateTopics(search_query)
|
285 |
|