47 lines
1.8 KiB
Python
47 lines
1.8 KiB
Python
from typing import Annotated
|
|
|
|
from fastapi import APIRouter
|
|
from fastapi.params import Depends
|
|
from sqlalchemy.ext.asyncio import AsyncSession
|
|
|
|
from app.chat_qa_query.api.qa_dependencies import get_assistant_session, get_qa_query_service
|
|
from app.chat_qa_query.api.schema.query_qa_schema import QueryQASchema
|
|
from app.chat_qa_query.service.query_qa_service import QueryQAService
|
|
from app.client.embedding_client_manager import embedding_client
|
|
from app.core.log import logger
|
|
from app.repository.archive_messages_repository import ArchiveMessagesRepository
|
|
from app.repository.milvus.summary_repository import SummaryRepository
|
|
from app.summary.service import SummaryService
|
|
|
|
query_qa_router = APIRouter()
|
|
|
|
|
|
@query_qa_router.post("/api/qa/query")
|
|
async def query_handler(query: QueryQASchema, query_service: Annotated[QueryQAService, Depends(get_qa_query_service)]):
|
|
logger.info(f"请求参数:{query.external_str},历史top15:{query.messages_top15}")
|
|
return await query_service.query(query.external_str, query.messages_top15)
|
|
|
|
|
|
async def get_summary_service(
|
|
session: Annotated[AsyncSession, Depends(get_assistant_session)],
|
|
) -> SummaryService:
|
|
archive_messages_repository = ArchiveMessagesRepository(session)
|
|
summary_repository = SummaryRepository()
|
|
return SummaryService(
|
|
archive_messages_repository=archive_messages_repository,
|
|
embedding_client=embedding_client,
|
|
summary_repository=summary_repository,
|
|
)
|
|
|
|
|
|
@query_qa_router.get("/api/summary/real-time")
|
|
async def real_time_summary_handler(
|
|
from_user: str,
|
|
to_user: str,
|
|
summary_service: Annotated[SummaryService, Depends(get_summary_service)],
|
|
):
|
|
logger.info(f"实时总结请求: from_user={from_user}, to_user={to_user}")
|
|
result = await summary_service.real_time_summary(from_user, to_user)
|
|
return result
|
|
|