From a00f4a8b971e8bedefc297af61552e1bab6e3da7 Mon Sep 17 00:00:00 2001
From: xuyonghao <898441624@qq.com>
Date: 星期二, 12 十一月 2024 19:16:12 +0800
Subject: [PATCH] 毕昇与ragflow历史记录获取
---
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