Reem1 commited on
Commit
71079a3
·
verified ·
1 Parent(s): 9d786dc

Upload 3 files

Browse files
Files changed (3) hide show
  1. Dockerfile +10 -0
  2. app.py +32 -0
  3. requirements.txt +3 -0
Dockerfile ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ FROM python:3.10
2
+
3
+ WORKDIR /code
4
+
5
+ COPY requirements.txt .
6
+ RUN pip install --no-cache-dir -r requirements.txt
7
+
8
+ COPY app.py .
9
+
10
+ CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "7860"]
app.py ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from fastapi import FastAPI, Request, HTTPException
2
+ from pydantic import BaseModel
3
+ import os
4
+ import requests
5
+
6
+ app = FastAPI(title="Hakayti Proxy API")
7
+
8
+ UPSTREAM_URL = os.getenv("UPSTREAM_URL", "https://placeholder.invalid")
9
+ API_KEY = os.getenv("API_KEY", "my_secret_key_123")
10
+
11
+ class StoryRequest(BaseModel):
12
+ name: str
13
+ hobby: str
14
+
15
+ @app.post("/generate")
16
+ async def generate(req: StoryRequest, request: Request):
17
+ header_key = request.headers.get("x-api-key") or request.headers.get("authorization")
18
+ if API_KEY and header_key not in (API_KEY, f"Bearer {API_KEY}"):
19
+ raise HTTPException(status_code=401, detail="Unauthorized")
20
+
21
+ try:
22
+ r = requests.post(
23
+ f"{UPSTREAM_URL}/generate",
24
+ headers={"x-api-key": API_KEY},
25
+ json=req.dict(),
26
+ timeout=120
27
+ )
28
+ r.raise_for_status()
29
+ except Exception as e:
30
+ raise HTTPException(status_code=502, detail=f"Kaggle upstream error: {e}")
31
+
32
+ return r.json()
requirements.txt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ fastapi
2
+ uvicorn
3
+ requests