models.py 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. from pydantic import BaseModel
  2. from typing import Optional, List, Dict
  3. class ChatRequest(BaseModel):
  4. message: str
  5. thread_id: str = "default"
  6. username: str = "default"
  7. backend_url: str = ""
  8. token: str = ""
  9. include_thoughts: bool = False
  10. include_tool_calls: bool = False
  11. class MessageModel(BaseModel):
  12. type: str
  13. content: str
  14. tool_calls: Optional[List[Dict]] = None
  15. tool_call_id: Optional[str] = None
  16. name: Optional[str] = None
  17. class ChatResponse(BaseModel):
  18. final_answer: str
  19. all_ai_messages: List[MessageModel]
  20. all_messages: List[MessageModel]
  21. tool_calls: List[Dict]
  22. thread_id: str
  23. user_identifier: str
  24. backend_config: Dict
  25. success: bool
  26. error: Optional[str] = None
  27. class OCRRequest(BaseModel):
  28. """图片处理请求"""
  29. image: str
  30. type: str
  31. file_type: int = 1
  32. class MessageCreateBill(BaseModel):
  33. """创建单据请求"""
  34. message: str
  35. document_type: str = None
  36. class ImageVectorItem(BaseModel):
  37. """图片向量项"""
  38. image_id: str # 图片ID
  39. vector: List[float] # 图片特征向量
  40. image_name: Optional[str] = None # 图片名称,可选
  41. image_path: Optional[str] = None # 图片路径,可选
  42. class ImageVectorRequest(BaseModel):
  43. """计算图片特征向量请求"""
  44. image: str # Base64编码的图片数据
  45. image_id: Optional[str] = None # 图片ID,可选
  46. class ImageVectorResponse(BaseModel):
  47. """计算图片特征向量响应"""
  48. success: bool
  49. image_id: Optional[str] = None
  50. vector: Optional[List[float]] = None
  51. error: Optional[str] = None
  52. class BuildIndexRequest(BaseModel):
  53. """构建索引请求"""
  54. image_vectors: List[ImageVectorItem] # 图片向量列表
  55. class BuildIndexResponse(BaseModel):
  56. """构建索引响应"""
  57. success: bool
  58. indexed_count: int # 索引的图片数量
  59. error: Optional[str] = None
  60. class SearchResultItem(BaseModel):
  61. """搜索结果项"""
  62. image_id: str # 图片ID
  63. similarity: float # 相似度
  64. image_name: Optional[str] = None # 图片名称
  65. image_path: Optional[str] = None # 图片路径
  66. class SearchRequest(BaseModel):
  67. """搜索请求(支持以图搜图和以文搜图)"""
  68. image: Optional[str] = None # Base64编码的图片数据,可选
  69. text: Optional[str] = None # 文字描述,可选
  70. top_k: int = 10 # 返回结果数量
  71. class SearchResponse(BaseModel):
  72. """搜索响应"""
  73. success: bool
  74. results: List[SearchResultItem] # 搜索结果列表
  75. total_count: int # 总结果数量
  76. processing_time: float # 处理时间(秒)
  77. error: Optional[str] = None
  78. class SearchHistoryRequest(BaseModel):
  79. """记录搜索历史请求"""
  80. empid: int # 员工ID
  81. search_type: int # 搜索类型:1-以图搜图,2-以文搜图,3-图文混合搜索
  82. search_content: str # 搜索内容
  83. result_count: int # 搜索结果数量
  84. result_content: str # 搜索结果内容(JSON格式)
  85. class SearchHistoryResponse(BaseModel):
  86. """记录搜索历史响应"""
  87. success: bool
  88. history_id: Optional[int] = None
  89. error: Optional[str] = None