87 lines
2.3 KiB
Python
87 lines
2.3 KiB
Python
import logging
|
|
|
|
from fastapi import APIRouter, BackgroundTasks, Depends
|
|
from pydantic import BaseModel
|
|
from services.report import (
|
|
ask_ollama_qwen,
|
|
dialog_ask_gemini,
|
|
run_all_models,
|
|
tasks_store,
|
|
total_summation,
|
|
)
|
|
from utils.checking_keys import create_key
|
|
from utils.logging_utils import EndpointLogger
|
|
|
|
# ------------------------------------------
|
|
|
|
# 로깅 설정
|
|
logger = logging.getLogger(__name__)
|
|
|
|
router = APIRouter(tags=["summary"])
|
|
|
|
|
|
class SummaryRequest(BaseModel):
|
|
text: str
|
|
|
|
|
|
@router.post("/summary") # STT 요약 모델
|
|
async def summarize(
|
|
request: SummaryRequest, endpoint_logger: EndpointLogger = Depends(EndpointLogger)
|
|
):
|
|
endpoint_logger.log(
|
|
model="gpt-4.1-mini, qwen3:custom, gemini-2.5-flash, claude-3-7-sonnet-latest",
|
|
input_filename="None",
|
|
prompt_filename="None",
|
|
context_length=len(request.text),
|
|
)
|
|
|
|
results = await total_summation(request.text)
|
|
return {"summary_results": results}
|
|
|
|
|
|
@router.post("/ollama_summary") # ollama 모델 전용
|
|
async def ollama_summary(
|
|
request: SummaryRequest, endpoint_logger: EndpointLogger = Depends(EndpointLogger)
|
|
):
|
|
endpoint_logger.log(
|
|
model="qwen3:custom",
|
|
input_filename="None",
|
|
prompt_filename="None",
|
|
context_length=len(request.text),
|
|
)
|
|
|
|
results = await ask_ollama_qwen(request.text)
|
|
return {"summary_results": results}
|
|
|
|
|
|
@router.post("/gemini_summary")
|
|
async def gemini_summary(request: SummaryRequest):
|
|
results = await dialog_ask_gemini(request.text)
|
|
return {"summary_results": results}
|
|
|
|
|
|
@router.post("/task_summary") # 모델 별 전체 요약
|
|
async def task_summary(
|
|
request: SummaryRequest,
|
|
background_tasks: BackgroundTasks,
|
|
endpoint_logger: EndpointLogger = Depends(EndpointLogger),
|
|
):
|
|
endpoint_logger.log(
|
|
model="gpt-4.1-mini, qwen3:custom, gemini-2.5-flash, claude-3-7-sonnet-latest",
|
|
input_filename="None",
|
|
prompt_filename="None",
|
|
context_length=len(request.text),
|
|
)
|
|
|
|
task_id = create_key()
|
|
background_tasks.add_task(run_all_models, request.text, task_id)
|
|
return {"task_id": task_id}
|
|
|
|
|
|
@router.get("/task_summary/{task_id}") # 모델 별 요약 조회
|
|
async def get_status(task_id: str):
|
|
task = tasks_store.get(task_id)
|
|
if not task:
|
|
return {"error": "Invalid task_id"}
|
|
return task
|