123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- from typing import Optional, Any
- from r2r import R2RAsyncClient
- from app.libs.util import verify_jwt_expiration
- from config.llm import tool_settings
- class R2R:
- client: R2RAsyncClient
- def __init__(self):
- self.auth_enabled = tool_settings.R2R_USERNAME and tool_settings.R2R_PASSWORD
- self.client = None
- async def init(self):
- if not self.auth_enabled:
- return
- if not self.client:
- self.client = R2RAsyncClient(tool_settings.R2R_BASE_URL, "/v3")
- print(
- "1111111111111111111111111111111122222vvdgdfdf" + tool_settings.R2R_USERNAME
- )
- print(tool_settings.R2R_USERNAME)
- print(tool_settings.R2R_PASSWORD)
- await self.client.users.login(
- tool_settings.R2R_USERNAME, tool_settings.R2R_PASSWORD
- )
- print(self.client.access_token)
- async def ingest_file(self, file_path: str, metadata: Optional[dict]):
- await self._check_login()
- return await self.client.documents.create(
- file_path=file_path,
- metadata=metadata if metadata else None,
- id=None,
- )
- async def search(self, query: str, filters: dict[str, Any]):
- await self._check_login()
- search_response = await self.client.retrieval.search(
- query=query,
- search_settings={
- "filters": filters,
- "limit": tool_settings.R2R_SEARCH_LIMIT,
- },
- )
- return search_response.get("results").get("chunk_search_results")
- async def _check_login(self):
- if not self.auth_enabled:
- return
- if not self.client.access_token and verify_jwt_expiration(
- self.client.access_token
- ):
- return
- else:
- await self.init()
- # 创建 R2R 实例
- r2r = R2R()
- # 在您的应用程序启动时调用 initialize_r2r()
- async def initialize_r2r():
- await r2r.init()
|