Files
llm-gateway-sub-backup/workspace/routers/llm_summation.py
2025-08-11 18:56:38 +09:00

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