xuyonghao
2024-11-12 1918bf4308d22adba7dc575b4dc9664b79318c80
知识问答,文档智能,智能问答。对话历史记录获取
2个文件已修改
33 ■■■■■ 已修改文件
app/api/agent.py 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/service/ragflow.py 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/api/agent.py
@@ -1,6 +1,7 @@
import uuid
from fastapi import Depends, APIRouter, Query, HTTPException
from fastapi.responses import JSONResponse
from pydantic import BaseModel
from sqlalchemy.orm import Session
@@ -51,6 +52,17 @@
        return ResponseList(code=200, msg="Unsupported agent type")
@router.get("/{conversation_id}/session_log")
async def session_log(conversation_id: str, db: Session = Depends(get_db), current_user: UserModel = Depends(get_current_user)):
    ragflow_service = RagflowService(base_url=settings.fwr_base_url)
    try:
        token = get_ragflow_token(db, current_user.id)
        result = await ragflow_service.get_session_log(token, conversation_id)
    except Exception as e:
        raise HTTPException(status_code=500, detail=str(e))
    return JSONResponse(status_code=200, content={"code": 200, "log": result})
@router.get("/get-chat-id/{agent_id}", response_model=Response)
async def get_chat_id(agent_id: str, db: Session = Depends(get_db)):
    agent = db.query(AgentModel).filter(AgentModel.id == agent_id).first()
app/service/ragflow.py
@@ -102,6 +102,27 @@
            ]
            return result
    async def get_session_log(self, token: str, conversation_id: str) -> dict:
        url = f"{self.base_url}/v1/conversation/get?conversation_id={conversation_id}"
        headers = {"Authorization": token}
        async with httpx.AsyncClient() as client:
            response = await client.get(url, headers=headers)
            data = self._handle_response(response)
            session_log = {
                "dialog_id": data.get("dialog_id"),
                "id": data.get("id"),
                "message": [
                    {
                        "content": message.get("content"),
                        "role": message.get("role"),
                    }
                    for message in data.get("message", [])
                ],
                "name": data.get("name"),
                "reference": data.get("reference"),
            }
        return session_log
    async def set_session(self, token: str, dialog_id: str, message: dict, chat_id: str, is_new: bool) -> list:
        url = f"{self.base_url}/v1/conversation/set?dialog_id={dialog_id}"
        headers = {"Authorization": token}