From 0e5f87417a7f775252d14d79a9b85941130e0e2d Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期五, 15 十一月 2024 15:55:45 +0800
Subject: [PATCH] 对话列表过滤name为空的,设置最多1000条返回
---
app/service/ragflow.py | 42 ++++++++++++++++++++++++++++++++++++++----
1 files changed, 38 insertions(+), 4 deletions(-)
diff --git a/app/service/ragflow.py b/app/service/ragflow.py
index 65c5a27..3c45988 100644
--- a/app/service/ragflow.py
+++ b/app/service/ragflow.py
@@ -1,6 +1,5 @@
import httpx
from typing import Union, Dict, List
-
from fastapi import HTTPException
from starlette import status
@@ -40,10 +39,11 @@
response = await client.post(
f"{self.base_url}/v1/user/register",
headers={'Content-Type': 'application/json'},
- json={"nickname": username, "email": f"{username}@example.com", "password": password}
+ json={"nickname": username, "email": f"{username}@example.com", "password": password}
)
if response.status_code != 200:
raise Exception(f"Ragflow registration failed: {response.text}")
+ return self._handle_response(response)
async def login(self, username: str, password: str) -> str:
password = RagflowCrypto(settings.PUBLIC_KEY, settings.PRIVATE_KEY).encrypt(password)
@@ -66,7 +66,8 @@
"messages": chat_history
}
- print(data)
+ print(f"send to ragflow chat: {data}")
+
target_url = f"{self.base_url}/v1/conversation/completion"
async with httpx.AsyncClient(timeout=300.0) as client:
headers = {
@@ -77,6 +78,7 @@
if response.status_code == 200:
try:
async for answer in response.aiter_text():
+ print(f"response of ragflow chat: {answer}")
yield answer
except GeneratorExit as e:
print(e)
@@ -97,8 +99,27 @@
"updated_time": item["update_time"]
}
for item in data
+ if "id" in item and "name" in item and item["name"]
]
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 = {
+ "session_log": [
+ {
+ "message": message.get("content"),
+ "role": message.get("role"),
+ }
+ for message in data.get("message", [])
+ ],
+ "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}"
@@ -117,7 +138,11 @@
"content": "浣犲ソ锛� 鎴戞槸浣犵殑鍔╃悊锛屾湁浠�涔堝彲浠ュ府鍒颁綘鐨勫悧锛�",
"role": "assistant"
},
- message,
+ {
+ "content": message["message"],
+ "doc_ids":message.get("doc_ids", []),
+ "role": "user"
+ }
] if data else []
async def get_session_history(self, token: str, chat_id: str) -> list:
@@ -139,3 +164,12 @@
response = await client.post(url, headers=headers, files=files, data=data)
data = self._handle_response(response)
return data
+
+ async def add_user_tenant(self, token: str, tenant_id: str, email: str, user_id: str) -> str:
+ url = f"{self.base_url}/v1/tenant/{tenant_id}/user"
+ headers = {"Authorization": token}
+ data = {"email": email, "user_id": user_id}
+ async with httpx.AsyncClient(timeout=60) as client:
+ response = await client.post(url, headers=headers, json=data)
+ if response.status_code != 200:
+ raise Exception(f"Ragflow add user to tenant failed: {response.text}")
--
Gitblit v1.8.0