From 0d11657e07dff84cfe118eb446efdb645a3c735f Mon Sep 17 00:00:00 2001
From: zhaoqingang <zhaoqg0118@163.com>
Date: 星期三, 13 十一月 2024 15:17:04 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.5.5:10010/r/rag-gateway

---
 app/service/bisheng.py |   22 +++++++++++
 app/service/ragflow.py |    7 +--
 app/api/agent.py       |   34 ++++++++++++----
 3 files changed, 49 insertions(+), 14 deletions(-)

diff --git a/app/api/agent.py b/app/api/agent.py
index 028bded..59d1f21 100644
--- a/app/api/agent.py
+++ b/app/api/agent.py
@@ -52,15 +52,31 @@
         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("/{agent_id}/{conversation_id}/session_log")
+async def session_log(agent_id: str, conversation_id: str, db: Session = Depends(get_db), current_user: UserModel = Depends(get_current_user)):
+    agent = db.query(AgentModel).filter(AgentModel.id == agent_id).first()
+    if not agent:
+        return Response(code=404, msg="Agent not found")
+
+    if agent.agent_type == AgentType.RAGFLOW:
+        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})
+    if agent.agent_type == AgentType.BISHENG:
+        bisheng_service = BishengService(base_url=settings.sgb_base_url)
+        try:
+            token = get_bisheng_token(db, current_user.id)
+            result = await bisheng_service.get_session_log(token, agent_id, conversation_id)
+        except Exception as e:
+            raise HTTPException(status_code=500, detail=str(e))
+        return JSONResponse(status_code=200, content={"code": 200, "log": result})
+
+    else:
+        return JSONResponse(status_code=200, content={"code": 200, "log": "Unsupported agent type"})
 
 
 @router.get("/get-chat-id/{agent_id}", response_model=Response)
diff --git a/app/service/bisheng.py b/app/service/bisheng.py
index ad5d084..77473f5 100644
--- a/app/service/bisheng.py
+++ b/app/service/bisheng.py
@@ -73,6 +73,28 @@
             ]
             return result
 
+    async def get_session_log(self, token: str, agent_id: str, conversation_id: str):
+        url = (
+            f"{self.base_url}/api/v1/chat/history?"
+            f"flow_id={agent_id}&"
+            f"chat_id={conversation_id}&page_size=30&id="
+        )
+        headers = {'cookie': f"access_token_cookie={token};"}
+        async with httpx.AsyncClient() as client:
+            response = await client.get(url, headers=headers)
+            response.raise_for_status()
+            data = self._check_response(response)
+            session_log = {
+                "session_log": [
+                    {
+                        "message": message.get("intermediate_steps"),
+                        "role": message.get("category"),
+                    }
+                    for message in data
+                ],
+            }
+            return session_log
+
     async def variable_list(self, token: str, agent_id: str) -> list:
         url = f"{self.base_url}/api/v1/variable/list?flow_id={agent_id}"
         headers = {'cookie': f"access_token_cookie={token};"}
diff --git a/app/service/ragflow.py b/app/service/ragflow.py
index 969f3b0..f4928d4 100644
--- a/app/service/ragflow.py
+++ b/app/service/ragflow.py
@@ -109,16 +109,13 @@
             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": [
+                "session_log": [
                     {
-                        "content": message.get("content"),
+                        "message": message.get("content"),
                         "role": message.get("role"),
                     }
                     for message in data.get("message", [])
                 ],
-                "name": data.get("name"),
                 "reference": data.get("reference"),
             }
         return session_log

--
Gitblit v1.8.0