from models.ChatRequest import ChatRequest from models.BaseResponse import BaseResponse import uuid import db.postgres as pg import uuid from fastapi import APIRouter, Depends from uuid import UUID from config.security import get_user_id_from_token serviceRouter = APIRouter() from llm.titleChain import get_title from agent.serviceAgent import get_service_agent_reply from llm.memLLM import take_memory import utils.MyUtils as utils # 对话列表 @serviceRouter.get("/sessionsForService") def getSessions(user_id: UUID = Depends(get_user_id_from_token)): if not user_id: return {"error": "userId is required"} return BaseResponse(data=pg.get_sessions(user_id,'service')) # 对话 @serviceRouter.post("/chatForService") def chat(req: ChatRequest, user_id: UUID = Depends(get_user_id_from_token)): if not user_id: return {"error": "userId is required"} if not req.aiId: return {"error": "aiId is required"} sessionName = get_title(req.userInput) # 如果没有 sessionId 就新建 if not req.sessionId: isNewSession = True req.sessionId = str(uuid.uuid4()) pg.insert_session(user_id,req.aiId, req.sessionId, sessionName, "service") else: isNewSession = False pg.update_session_updated_at(req.sessionId) # 插入用户消息 pg.insert_message(req.sessionId, False, req.userInput) answer = get_service_agent_reply(aiId=req.aiId,history=pg.get_history_with_time(req.sessionId,6), userInput= req.userInput,kn_bases=pg.get_ai_available_kn_bases(req.aiId)) # 插入 AI 回复 pg.insert_message(req.sessionId, True, answer) # 异步执行:记忆判断 utils.async_db_task(take_memory,req.aiId,req.sessionId,user_id,) return BaseResponse(data={"sessionName":sessionName,"isNewSession":isNewSession,"content":answer,"sessionId": req.sessionId})