zhaoqingang
2024-11-19 1b417d75a8e24e5ec9fd29e9b75ee53049f3b79e
app/service/ragflow.py
@@ -3,6 +3,7 @@
from fastapi import HTTPException
from starlette import status
# from Log import logger
from app.config.config import settings
from app.utils.rsa_crypto import RagflowCrypto
@@ -99,6 +100,7 @@
                    "updated_time": item["update_time"]
                }
                for item in data
                if "id" in item and "name" in item and item["name"]
            ]
            return result
@@ -144,12 +146,15 @@
                }
            ] if data else []
    async def get_session_history(self, token: str, chat_id: str) -> list:
    async def get_session_history(self, token: str, chat_id: str, is_all: int=0):
        url = f"{self.base_url}/v1/conversation/get?conversation_id={chat_id}"
        headers = {"Authorization": token}
        async with httpx.AsyncClient() as client:
            response = await client.get(url, headers=headers)
            data = self._handle_response(response)
            # print("----------------data----------------------:", data)
            if is_all:
                return data
            return data.get("message", [])
    async def upload_and_parse(self, token: str, chat_id: str, filename: str, file: bytes) -> str:
@@ -170,5 +175,51 @@
        data = {"email": email, "user_id": user_id}
        async with httpx.AsyncClient(timeout=60) as client:
            response = await client.post(url, headers=headers, json=data)
            print(response)
            if response.status_code != 200:
                raise Exception(f"Ragflow add user to tenant failed: {response.text}")
    async def get_knowledge_list(self, token: str, page_index: int, page_size: int) -> str:
        url = f"{self.base_url}/v1/kb/list"
        headers = {"Authorization": token}
        params = {"page": page_index, "page_size": page_size}
        async with httpx.AsyncClient(timeout=60) as client:
            response = await client.get(url, headers=headers, params=params)
            res = self._handle_response(response)
            print(res)
            return res
    async def set_user_password(self, token: str, password: str, new_password: str) -> str:
        # print("password:", password)
        # print("new_password:", new_password)
        headers = {
            'Content-Type': 'application/json',
            'Authorization': token
        }
        password = RagflowCrypto(settings.PUBLIC_KEY, settings.PRIVATE_KEY).encrypt(password)
        new_password = RagflowCrypto(settings.PUBLIC_KEY, settings.PRIVATE_KEY).encrypt(new_password)
        url = f"{self.base_url}/v1/user/setting"
        # headers = {"Authorization": token}
        data = {"password": password, "new_password":new_password}
        async with httpx.AsyncClient(timeout=60) as client:
            response = await client.post(url, headers=headers, data=data)
            print(response.text)
            data = self._handle_response(response)
            print(data)
            # logger.info("set_user_password:{}".format(data))
            return data
if __name__ == "__main__":
    async def a():
        a = RagflowService("http://192.168.20.119:11080")
        b = await a.set_user_password("IjYwYjg1MTFjYTY1NTExZWY4ODZlMDI0MmFjMTMwMDA2Ig.ZzxUxQ.8rIH2HifXNWtkNsnODv6XFHjGVU", "123456",
                                 "000000")
        print(b)
    import asyncio
    asyncio.run(a())