Commit
·
7372212
1
Parent(s):
fa42c97
flexible textarea, send button, prompts refresh, and add voice
Browse files- api/auth.py +2 -2
- api/endpoints.py +9 -8
- main.py +7 -6
api/auth.py
CHANGED
|
@@ -38,5 +38,5 @@ fastapi_users = FastAPIUsers[User, int](
|
|
| 38 |
[auth_backend],
|
| 39 |
)
|
| 40 |
|
| 41 |
-
# Dependency للحصول على المستخدم الحالي
|
| 42 |
-
current_active_user = fastapi_users.current_user(active=True)
|
|
|
|
| 38 |
[auth_backend],
|
| 39 |
)
|
| 40 |
|
| 41 |
+
# Dependency للحصول على المستخدم الحالي (اختياري)
|
| 42 |
+
current_active_user = fastapi_users.current_user(active=True, optional=True) # ← تغيير هنا
|
api/endpoints.py
CHANGED
|
@@ -3,12 +3,11 @@ import os
|
|
| 3 |
import uuid
|
| 4 |
from fastapi import APIRouter, Depends, HTTPException, Request, status, UploadFile, File
|
| 5 |
from fastapi.responses import StreamingResponse
|
| 6 |
-
from api.models import QueryRequest
|
| 7 |
from api.auth import current_active_user
|
| 8 |
from api.database import get_db
|
| 9 |
from sqlalchemy.orm import Session
|
| 10 |
from utils.generation import request_generation, select_model
|
| 11 |
-
from utils.web_search import web_search
|
| 12 |
import io
|
| 13 |
from openai import OpenAI
|
| 14 |
from motor.motor_asyncio import AsyncIOMotorClient
|
|
@@ -29,6 +28,8 @@ TTS_MODEL = os.getenv("TTS_MODEL", "facebook/mms-tts-ara")
|
|
| 29 |
|
| 30 |
# إعداد MongoDB
|
| 31 |
MONGO_URI = os.getenv("MONGODB_URI")
|
|
|
|
|
|
|
| 32 |
client = AsyncIOMotorClient(MONGO_URI)
|
| 33 |
db = client["hager"]
|
| 34 |
session_message_counts = db["session_message_counts"]
|
|
@@ -60,7 +61,7 @@ async def performance_stats():
|
|
| 60 |
async def chat_endpoint(
|
| 61 |
request: Request,
|
| 62 |
req: QueryRequest,
|
| 63 |
-
user:
|
| 64 |
db: Session = Depends(get_db)
|
| 65 |
):
|
| 66 |
session_id = request.session.get("session_id")
|
|
@@ -109,7 +110,7 @@ async def chat_endpoint(
|
|
| 109 |
async def audio_transcription_endpoint(
|
| 110 |
request: Request,
|
| 111 |
file: UploadFile = File(...),
|
| 112 |
-
user:
|
| 113 |
db: Session = Depends(get_db)
|
| 114 |
):
|
| 115 |
session_id = request.session.get("session_id")
|
|
@@ -155,7 +156,7 @@ async def audio_transcription_endpoint(
|
|
| 155 |
async def text_to_speech_endpoint(
|
| 156 |
request: Request,
|
| 157 |
req: dict,
|
| 158 |
-
user:
|
| 159 |
db: Session = Depends(get_db)
|
| 160 |
):
|
| 161 |
session_id = request.session.get("session_id")
|
|
@@ -200,7 +201,7 @@ async def text_to_speech_endpoint(
|
|
| 200 |
async def code_endpoint(
|
| 201 |
request: Request,
|
| 202 |
req: dict,
|
| 203 |
-
user:
|
| 204 |
db: Session = Depends(get_db)
|
| 205 |
):
|
| 206 |
session_id = request.session.get("session_id")
|
|
@@ -252,7 +253,7 @@ async def code_endpoint(
|
|
| 252 |
async def analysis_endpoint(
|
| 253 |
request: Request,
|
| 254 |
req: dict,
|
| 255 |
-
user:
|
| 256 |
db: Session = Depends(get_db)
|
| 257 |
):
|
| 258 |
session_id = request.session.get("session_id")
|
|
@@ -302,7 +303,7 @@ async def image_analysis_endpoint(
|
|
| 302 |
request: Request,
|
| 303 |
file: UploadFile = File(...),
|
| 304 |
output_format: str = "text",
|
| 305 |
-
user:
|
| 306 |
db: Session = Depends(get_db)
|
| 307 |
):
|
| 308 |
session_id = request.session.get("session_id")
|
|
|
|
| 3 |
import uuid
|
| 4 |
from fastapi import APIRouter, Depends, HTTPException, Request, status, UploadFile, File
|
| 5 |
from fastapi.responses import StreamingResponse
|
| 6 |
+
from api.models import QueryRequest, User
|
| 7 |
from api.auth import current_active_user
|
| 8 |
from api.database import get_db
|
| 9 |
from sqlalchemy.orm import Session
|
| 10 |
from utils.generation import request_generation, select_model
|
|
|
|
| 11 |
import io
|
| 12 |
from openai import OpenAI
|
| 13 |
from motor.motor_asyncio import AsyncIOMotorClient
|
|
|
|
| 28 |
|
| 29 |
# إعداد MongoDB
|
| 30 |
MONGO_URI = os.getenv("MONGODB_URI")
|
| 31 |
+
if not MONGO_URI:
|
| 32 |
+
raise ValueError("MONGODB_URI is not set in environment variables.")
|
| 33 |
client = AsyncIOMotorClient(MONGO_URI)
|
| 34 |
db = client["hager"]
|
| 35 |
session_message_counts = db["session_message_counts"]
|
|
|
|
| 61 |
async def chat_endpoint(
|
| 62 |
request: Request,
|
| 63 |
req: QueryRequest,
|
| 64 |
+
user: User = Depends(current_active_user),
|
| 65 |
db: Session = Depends(get_db)
|
| 66 |
):
|
| 67 |
session_id = request.session.get("session_id")
|
|
|
|
| 110 |
async def audio_transcription_endpoint(
|
| 111 |
request: Request,
|
| 112 |
file: UploadFile = File(...),
|
| 113 |
+
user: User = Depends(current_active_user),
|
| 114 |
db: Session = Depends(get_db)
|
| 115 |
):
|
| 116 |
session_id = request.session.get("session_id")
|
|
|
|
| 156 |
async def text_to_speech_endpoint(
|
| 157 |
request: Request,
|
| 158 |
req: dict,
|
| 159 |
+
user: User = Depends(current_active_user),
|
| 160 |
db: Session = Depends(get_db)
|
| 161 |
):
|
| 162 |
session_id = request.session.get("session_id")
|
|
|
|
| 201 |
async def code_endpoint(
|
| 202 |
request: Request,
|
| 203 |
req: dict,
|
| 204 |
+
user: User = Depends(current_active_user),
|
| 205 |
db: Session = Depends(get_db)
|
| 206 |
):
|
| 207 |
session_id = request.session.get("session_id")
|
|
|
|
| 253 |
async def analysis_endpoint(
|
| 254 |
request: Request,
|
| 255 |
req: dict,
|
| 256 |
+
user: User = Depends(current_active_user),
|
| 257 |
db: Session = Depends(get_db)
|
| 258 |
):
|
| 259 |
session_id = request.session.get("session_id")
|
|
|
|
| 303 |
request: Request,
|
| 304 |
file: UploadFile = File(...),
|
| 305 |
output_format: str = "text",
|
| 306 |
+
user: User = Depends(current_active_user),
|
| 307 |
db: Session = Depends(get_db)
|
| 308 |
):
|
| 309 |
session_id = request.session.get("session_id")
|
main.py
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
|
|
| 1 |
import os
|
| 2 |
import logging
|
| 3 |
from fastapi import FastAPI, Request, Depends, HTTPException, status, Query
|
|
@@ -61,7 +62,7 @@ CONCURRENCY_LIMIT = int(os.getenv("CONCURRENCY_LIMIT", 20))
|
|
| 61 |
app = FastAPI(title="MGZon Chatbot API")
|
| 62 |
|
| 63 |
# إضافة SessionMiddleware
|
| 64 |
-
app.add_middleware(SessionMiddleware, secret_key=os.getenv("JWT_SECRET"))
|
| 65 |
|
| 66 |
# إنشاء الجداول تلقائيًا
|
| 67 |
Base.metadata.create_all(bind=engine)
|
|
@@ -122,31 +123,31 @@ app.add_middleware(NotFoundMiddleware)
|
|
| 122 |
|
| 123 |
# Root endpoint
|
| 124 |
@app.get("/", response_class=HTMLResponse)
|
| 125 |
-
async def root(request: Request, user: User = Depends(
|
| 126 |
return templates.TemplateResponse("index.html", {"request": request, "user": user})
|
| 127 |
|
| 128 |
# Login page
|
| 129 |
@app.get("/login", response_class=HTMLResponse)
|
| 130 |
-
async def login_page(request: Request, user: User = Depends(
|
| 131 |
if user:
|
| 132 |
return RedirectResponse(url="/chat", status_code=302)
|
| 133 |
return templates.TemplateResponse("login.html", {"request": request})
|
| 134 |
|
| 135 |
# Register page
|
| 136 |
@app.get("/register", response_class=HTMLResponse)
|
| 137 |
-
async def register_page(request: Request, user: User = Depends(
|
| 138 |
if user:
|
| 139 |
return RedirectResponse(url="/chat", status_code=302)
|
| 140 |
return templates.TemplateResponse("register.html", {"request": request})
|
| 141 |
|
| 142 |
# Chat endpoint
|
| 143 |
@app.get("/chat", response_class=HTMLResponse)
|
| 144 |
-
async def chat(request: Request, user: User = Depends(
|
| 145 |
return templates.TemplateResponse("chat.html", {"request": request, "user": user})
|
| 146 |
|
| 147 |
# About endpoint
|
| 148 |
@app.get("/about", response_class=HTMLResponse)
|
| 149 |
-
async def about(request: Request, user: User = Depends(
|
| 150 |
return templates.TemplateResponse("about.html", {"request": request, "user": user})
|
| 151 |
|
| 152 |
# Blog endpoint (قائمة المقالات)
|
|
|
|
| 1 |
+
# main.py
|
| 2 |
import os
|
| 3 |
import logging
|
| 4 |
from fastapi import FastAPI, Request, Depends, HTTPException, status, Query
|
|
|
|
| 62 |
app = FastAPI(title="MGZon Chatbot API")
|
| 63 |
|
| 64 |
# إضافة SessionMiddleware
|
| 65 |
+
app.add_middleware(SessionMiddleware, secret_key=os.getenv("JWT_SECRET"), cookie_secure=True)
|
| 66 |
|
| 67 |
# إنشاء الجداول تلقائيًا
|
| 68 |
Base.metadata.create_all(bind=engine)
|
|
|
|
| 123 |
|
| 124 |
# Root endpoint
|
| 125 |
@app.get("/", response_class=HTMLResponse)
|
| 126 |
+
async def root(request: Request, user: User = Depends(current_active_user)):
|
| 127 |
return templates.TemplateResponse("index.html", {"request": request, "user": user})
|
| 128 |
|
| 129 |
# Login page
|
| 130 |
@app.get("/login", response_class=HTMLResponse)
|
| 131 |
+
async def login_page(request: Request, user: User = Depends(current_active_user)):
|
| 132 |
if user:
|
| 133 |
return RedirectResponse(url="/chat", status_code=302)
|
| 134 |
return templates.TemplateResponse("login.html", {"request": request})
|
| 135 |
|
| 136 |
# Register page
|
| 137 |
@app.get("/register", response_class=HTMLResponse)
|
| 138 |
+
async def register_page(request: Request, user: User = Depends(current_active_user)):
|
| 139 |
if user:
|
| 140 |
return RedirectResponse(url="/chat", status_code=302)
|
| 141 |
return templates.TemplateResponse("register.html", {"request": request})
|
| 142 |
|
| 143 |
# Chat endpoint
|
| 144 |
@app.get("/chat", response_class=HTMLResponse)
|
| 145 |
+
async def chat(request: Request, user: User = Depends(current_active_user)):
|
| 146 |
return templates.TemplateResponse("chat.html", {"request": request, "user": user})
|
| 147 |
|
| 148 |
# About endpoint
|
| 149 |
@app.get("/about", response_class=HTMLResponse)
|
| 150 |
+
async def about(request: Request, user: User = Depends(current_active_user)):
|
| 151 |
return templates.TemplateResponse("about.html", {"request": request, "user": user})
|
| 152 |
|
| 153 |
# Blog endpoint (قائمة المقالات)
|