Spaces:
Runtime error
Runtime error
Upload 5 files
Browse files- Dockerfile +26 -0
- inspect_vector_db.py +12 -0
- main.py +38 -0
- models.py +17 -0
- requirements.txt +11 -0
Dockerfile
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Python 3.9 ์ฌ๋ฆผ ๋ฒ์ ์ฌ์ฉ
|
| 2 |
+
FROM python:3.9-slim
|
| 3 |
+
|
| 4 |
+
# ์์
๋๋ ํ ๋ฆฌ ์ค์
|
| 5 |
+
WORKDIR /app
|
| 6 |
+
|
| 7 |
+
# ์์คํ
ํจํค์ง ์
๋ฐ์ดํธ ๋ฐ ํ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น (ํ์์)
|
| 8 |
+
RUN apt-get update && apt-get install -y \
|
| 9 |
+
build-essential \
|
| 10 |
+
&& rm -rf /var/lib/apt/lists/*
|
| 11 |
+
|
| 12 |
+
# ์์กด์ฑ ํ์ผ ๋ณต์ฌ ๋ฐ ์ค์น
|
| 13 |
+
COPY requirements.txt .
|
| 14 |
+
RUN pip install --no-cache-dir -r requirements.txt
|
| 15 |
+
|
| 16 |
+
# ์์ค ์ฝ๋ ๋ฐ ๋ฐ์ดํฐ ๋ณต์ฌ
|
| 17 |
+
COPY . .
|
| 18 |
+
|
| 19 |
+
# ๊ถํ ์ค์ (Hugging Face Spaces์์ ํ์ํ ์ ์์)
|
| 20 |
+
RUN chmod -R 777 /app
|
| 21 |
+
|
| 22 |
+
# ํฌํธ ์ค์ (Hugging Face Spaces ๊ธฐ๋ณธ ํฌํธ)
|
| 23 |
+
EXPOSE 7860
|
| 24 |
+
|
| 25 |
+
# ์๋ฒ ์คํ ๋ช
๋ น
|
| 26 |
+
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "7860"]
|
inspect_vector_db.py
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import pickle
|
| 2 |
+
|
| 3 |
+
META_PATH = "vector_db/deposit_meta.pkl"
|
| 4 |
+
|
| 5 |
+
with open(META_PATH, "rb") as f:
|
| 6 |
+
docs = pickle.load(f)
|
| 7 |
+
|
| 8 |
+
print(f"โ
์ด {len(docs)}๊ฐ์ ๋ฌธ์๊ฐ ์ธ๋ฑ์ค์ ํฌํจ๋์ด ์์ต๋๋ค.\n")
|
| 9 |
+
|
| 10 |
+
# ์๋ถ๋ถ ๋ช ๊ฐ๋ง ๋ฏธ๋ฆฌ๋ณด๊ธฐ
|
| 11 |
+
for i, doc in enumerate(docs[:5]):
|
| 12 |
+
print(f"[{i+1}] {doc[:300]}...\n")
|
main.py
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from fastapi import FastAPI
|
| 2 |
+
from fastapi.middleware.cors import CORSMiddleware
|
| 3 |
+
|
| 4 |
+
from agents.question_agent import suggest_questions
|
| 5 |
+
from agents.rag_agent import answer_question
|
| 6 |
+
|
| 7 |
+
app = FastAPI()
|
| 8 |
+
|
| 9 |
+
# --- CORS ์ค์ ์ถ๊ฐ ---
|
| 10 |
+
origins = [
|
| 11 |
+
"http://localhost:5173", # Vite ๊ธฐ๋ณธ ํฌํธ
|
| 12 |
+
"http://127.0.0.1:5173",
|
| 13 |
+
"*", # ๊ฐ๋ฐ ๋จ๊ณ์์๋ ์ ์ฒด ํ์ฉ ๊ฐ๋ฅ
|
| 14 |
+
]
|
| 15 |
+
|
| 16 |
+
app.add_middleware(
|
| 17 |
+
CORSMiddleware,
|
| 18 |
+
allow_origins=origins,
|
| 19 |
+
allow_credentials=True,
|
| 20 |
+
allow_methods=["*"],
|
| 21 |
+
allow_headers=["*"],
|
| 22 |
+
)
|
| 23 |
+
# ------------------------
|
| 24 |
+
|
| 25 |
+
|
| 26 |
+
@app.get("/health")
|
| 27 |
+
def health():
|
| 28 |
+
return {"status": "ok"}
|
| 29 |
+
|
| 30 |
+
@app.post("/suggest")
|
| 31 |
+
def suggest(data: dict):
|
| 32 |
+
print(f"๐ฅ [POST /suggest] Request Body: {data}")
|
| 33 |
+
return suggest_questions(data["user_message"], data.get("user_profile", {}))
|
| 34 |
+
|
| 35 |
+
@app.post("/answer")
|
| 36 |
+
def answer(data: dict):
|
| 37 |
+
print(f"๐ฅ [POST /answer] Request Body: {data}")
|
| 38 |
+
return answer_question(data["selected_question"], data.get("user_profile", {}))
|
models.py
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from pydantic import BaseModel, Field
|
| 2 |
+
from typing import List, Optional, Dict
|
| 3 |
+
|
| 4 |
+
class SuggestRequest(BaseModel):
|
| 5 |
+
user_message: str
|
| 6 |
+
user_profile: Dict = Field(default_factory=dict)
|
| 7 |
+
|
| 8 |
+
class SuggestResponse(BaseModel):
|
| 9 |
+
category: str = "์ํ ์ถ์ฒ / ๋น๊ต"
|
| 10 |
+
suggested_questions: List[str]
|
| 11 |
+
|
| 12 |
+
class AnswerRequest(BaseModel):
|
| 13 |
+
selected_question: str
|
| 14 |
+
|
| 15 |
+
class AnswerResponse(BaseModel):
|
| 16 |
+
answer: str
|
| 17 |
+
source_docs: List[str] = []
|
requirements.txt
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
fastapi==0.115.2
|
| 2 |
+
uvicorn[standard]==0.30.6
|
| 3 |
+
openai==1.51.2
|
| 4 |
+
faiss-cpu==1.8.0.post1
|
| 5 |
+
sentence-transformers==3.1.1
|
| 6 |
+
pydantic==2.9.2
|
| 7 |
+
numpy==1.26.4
|
| 8 |
+
chardet
|
| 9 |
+
watchdog
|
| 10 |
+
pandas
|
| 11 |
+
openpyxl
|