request.py 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. from pydantic import BaseModel
  2. from typing import Optional
  3. from typing import List
  4. class ReqeustBase(BaseModel):
  5. action: str
  6. class TextData(BaseModel):
  7. text: str
  8. class EmbeddingRequest(ReqeustBase):
  9. data: List[TextData]
  10. class SearchRequest(ReqeustBase):
  11. query: str
  12. top_k: int = 20
  13. meta_only: Optional[bool] = False
  14. class GetDocumentRequest(ReqeustBase):
  15. title: str
  16. class GraphFilterRequest(ReqeustBase):
  17. node_types: Optional[List[str]] = None
  18. min_degree: Optional[int] = None
  19. min_community_size: Optional[int] = None
  20. attributes: Optional[dict] = None
  21. class GraphSearchRequest(ReqeustBase):
  22. """图谱语义搜索请求参数"""
  23. query: str
  24. node_types: Optional[List[str]] = None
  25. relationship_types: Optional[List[str]] = None
  26. min_weight: Optional[float] = None
  27. max_depth: int = 3
  28. limit: int = 20
  29. similarity_threshold: float = 0.6
  30. class PathAnalysisRequest(ReqeustBase):
  31. """节点路径分析请求参数"""
  32. source: str
  33. target: str
  34. max_path_length: int = 3
  35. algorithm: str = "bidirectional"
  36. class NodeFilterRequest(ReqeustBase):
  37. """复杂节点过滤请求参数"""
  38. must: List[dict] = []
  39. should: List[dict] = []
  40. must_not: List[dict] = []
  41. min_score: Optional[float] = None