12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- from typing import Optional, Any
- from r2r import R2RClient
- from app.libs.util import verify_jwt_expiration
- from config.llm import tool_settings
- import inspect
- import r2r
- print(r2r.__version__)
- class R2R:
- client: R2RClient
- def init(self):
- self.client = R2RClient(tool_settings.R2R_BASE_URL)
-
- self.auth_enabled = tool_settings.R2R_USERNAME and tool_settings.R2R_PASSWORD
- self._login()
- def ingest_file(self, file_path: str, metadata: Optional[dict]):
- self._check_login()
- ingest_response = self.client.ingest_files(
- file_paths=[file_path],
- metadatas=[metadata] if metadata else None
- )
- return ingest_response.get("results")
- def search(self, query: str, filters: dict[str, Any]):
- self._check_login()
- search_response = self.client.search(
- query=query,
- vector_search_settings={
- "filters": filters,
- "search_limit": tool_settings.R2R_SEARCH_LIMIT,
- "do_hybrid_search": True
- },
- )
- return search_response.get("results").get("vector_search_results")
- def _login(self):
- if not self.auth_enabled:
- return
- print("test")
- print(self.client)
- print(self.client.users)
- print(self.client._wrap_v3_methods)
- # 获取实例方法
- instance_methods = inspect.getmembers(self.client._wrap_v3_methods, predicate=inspect.isfunction)
- print("实例方法:", [method[0] for method in instance_methods])
- # 获取类方法(包括静态方法)
- class_methods = inspect.getmembers(self.client._wrap_v3_methods, predicate=inspect.ismethod)
- print("类方法:", [method[0] for method in class_methods])
- #self.client.user.login(tool_settings.R2R_USERNAME, tool_settings.R2R_PASSWORD)
- def _check_login(self):
- if not self.auth_enabled:
- return
- if verify_jwt_expiration(self.client.access_token):
- return
- if verify_jwt_expiration(self.client._refresh_token):
- self.client.refresh_access_token()
- else:
- self._login()
- def get_method_parameters(method):
- params = inspect.signature(method).parameters
- for name, param in params.items():
- default_value = param.default if param.default is not param.empty else None
- print(f"参数名: {name}, 默认值: {default_value}")
- # 获取实例方法
- instance_methods = inspect.getmembers(R2RClient, predicate=inspect.isfunction)
- print("实例方法:", [method[0] for method in instance_methods])
- # 获取类方法(包括静态方法)
- class_methods = inspect.getmembers(R2RClient, predicate=inspect.ismethod)
- print("类方法:", [method[0] for method in class_methods])
- r2r1 = R2R()
- r2r1.init()
|