dasomaru commited on
Commit
901a928
ยท
verified ยท
1 Parent(s): c4c19b0

Upload folder using huggingface_hub

Browse files
__pycache__/ask.cpython-312.pyc ADDED
Binary file (1.13 kB). View file
 
__pycache__/generation.cpython-312.pyc ADDED
Binary file (1.26 kB). View file
 
__pycache__/main.cpython-312.pyc ADDED
Binary file (1.42 kB). View file
 
__pycache__/retrieval.cpython-312.pyc ADDED
Binary file (1.16 kB). View file
 
ask.py ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from fastapi import APIRouter
2
+ from pydantic import BaseModel
3
+ from services.rag_pipeline import rag_pipeline
4
+
5
+ router = APIRouter()
6
+
7
+ # ์š”์ฒญ ์Šคํ‚ค๋งˆ
8
+ class AskRequest(BaseModel):
9
+ query: str
10
+ top_k: int = 5
11
+
12
+ # ์‘๋‹ต ์Šคํ‚ค๋งˆ
13
+ class AskResponse(BaseModel):
14
+ output: str
15
+
16
+ @router.post("/ask", response_model=AskResponse)
17
+ async def ask(request: AskRequest):
18
+ output = rag_pipeline(request.query, top_k=request.top_k)
19
+ return {"output": output}
generation.py ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from fastapi import APIRouter
2
+ from pydantic import BaseModel
3
+ from generator.prompt_builder import build_prompt
4
+ from generator.llm_inference import generate_answer
5
+
6
+ router = APIRouter()
7
+
8
+ # ์š”์ฒญ ์Šคํ‚ค๋งˆ
9
+ class GenerateRequest(BaseModel):
10
+ query: str
11
+ context_docs: list
12
+
13
+ # ์‘๋‹ต ์Šคํ‚ค๋งˆ
14
+ class GenerateResponse(BaseModel):
15
+ output: str
16
+
17
+ @router.post("/generate", response_model=GenerateResponse)
18
+ async def generate(request: GenerateRequest):
19
+ prompt = build_prompt(request.query, request.context_docs)
20
+ output = generate_answer(prompt)
21
+ return {"output": output}
main.py ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from fastapi import FastAPI
2
+ from fastapi.middleware.cors import CORSMiddleware
3
+ from api.retrieval import router as retrieval_router
4
+ from api.generation import router as generation_router
5
+ from api.ask import router as ask_router
6
+
7
+ app = FastAPI(
8
+ title="RAG ๊ธฐ๋ฐ˜ ๋ฌธ์ œ ์ถœ์ œ ์‹œ์Šคํ…œ",
9
+ description="๊ณต์ธ์ค‘๊ฐœ์‚ฌ ์‹œํ—˜ ๋ฌธ์ œ ์ž๋™ ์ƒ์„ฑ API",
10
+ version="1.0.0",
11
+ )
12
+
13
+ # (์„ ํƒ) CORS ์„ค์ • - ๋‚˜์ค‘์— Next.js ํ”„๋ก ํŠธ ์—ฐ๊ฒฐํ•  ๋•Œ ํ•„์š”ํ•จ
14
+ app.add_middleware(
15
+ CORSMiddleware,
16
+ allow_origins=["*"], # ์‹ค์ œ ๋ฐฐํฌ ๋•Œ๋Š” ํ”„๋ก ํŠธ ๋„๋ฉ”์ธ๋งŒ ํ—ˆ์šฉ ์ถ”์ฒœ
17
+ allow_credentials=True,
18
+ allow_methods=["*"],
19
+ allow_headers=["*"],
20
+ )
21
+
22
+ # ํ—ฌ์Šค ์ฒดํฌ์šฉ ์—”๋“œํฌ์ธํŠธ
23
+ @app.get("/health")
24
+ async def health_check():
25
+ return {"status": "ok"}
26
+
27
+ # ๊ธฐ๋ณธ ์ธ๋ฑ์Šค
28
+ @app.get("/")
29
+ async def root():
30
+ return {"message": "Welcome to the RAG Question Generator API!"}
31
+
32
+ app.include_router(retrieval_router, prefix="/api")
33
+ app.include_router(generation_router, prefix="/api")
34
+ app.include_router(ask_router, prefix="/api")
retrieval.py ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from fastapi import APIRouter
2
+ from pydantic import BaseModel
3
+ from retriever.vectordb import search_documents
4
+
5
+ router = APIRouter()
6
+
7
+ # ์š”์ฒญ๋ฐ›์„ ๋ฐ์ดํ„ฐ ํฌ๋งท ์ •์˜
8
+ class SearchRequest(BaseModel):
9
+ query: str
10
+ top_k: int = 5 # ๊ธฐ๋ณธ์ ์œผ๋กœ ์ƒ์œ„ 5๊ฐœ ๊ฒ€์ƒ‰
11
+
12
+ # ์‘๋‹ต ๋ฐ์ดํ„ฐ ํฌ๋งท ์ •์˜
13
+ class SearchResponse(BaseModel):
14
+ documents: list
15
+
16
+ @router.post("/search", response_model=SearchResponse)
17
+ async def search(request: SearchRequest):
18
+ docs = search_documents(request.query, top_k=request.top_k)
19
+ return {"documents": docs}
search.py ADDED
File without changes