Spaces:
Sleeping
Sleeping
| import os | |
| from fastapi import FastAPI, Request, HTTPException | |
| import uvicorn | |
| from gradio_client import Client | |
| import uuid | |
| # Keys | |
| VALID_API_KEY = os.getenv("APP_API_KEY") # for your FastAPI security | |
| SPACE_API_KEY = os.getenv("SPACE_API_KEY") # for your hosted HF Space | |
| # Connect to hosted space | |
| client = Client("Futuresony/Mr.Events") | |
| #Futuresony/Mr.Events | |
| #Futuresony/ABSA_Test_Space | |
| app = FastAPI() | |
| async def chat(request: Request): | |
| data = await request.json() | |
| # API key check from headers or JSON | |
| api_key = request.headers.get("X-API-Key") or data.get("api_key") | |
| if api_key != VALID_API_KEY: | |
| raise HTTPException(status_code=403, detail="Invalid API Key") | |
| user_message = data.get("message") | |
| # Check for user_id in the request data, generate one if not present | |
| user_id = data.get("user_id") | |
| if not user_id: | |
| user_id = str(uuid.uuid4()) # Generate a unique ID if none is provided | |
| print(f"Generated user_id: {user_id} for this request.") | |
| if not user_message: | |
| raise HTTPException(status_code=400, detail="Message is required") | |
| # Call your hosted Space, passing the message and additional inputs (api_key, user_id) | |
| # The ChatInterface handles chat_history internally when type="messages" | |
| result = client.predict( | |
| user_message, # Primary query | |
| api_key, # First additional input (API Key) | |
| user_id, # Second additional input (User ID - assuming this will be added to Gradio) | |
| api_name="/chat" # Ensure this matches the endpoint in the Gradio app | |
| ) | |
| return {"response": result, "user_id": user_id} # Return the user_id so the client can potentially reuse it | |
| if __name__ == "__main__": | |
| uvicorn.run(app, host="0.0.0.0", port=7860) |