models.py 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  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. class MessageCreateBill(BaseModel):
  32. """创建单据请求"""
  33. message: str
  34. document_type: str = None
  35. class ImageVectorItem(BaseModel):
  36. """图片向量项"""
  37. image_id: str # 图片ID
  38. vector: List[float] # 图片特征向量
  39. image_name: Optional[str] = None # 图片名称,可选
  40. image_path: Optional[str] = None # 图片路径,可选
  41. class ImageVectorRequest(BaseModel):
  42. """计算图片特征向量请求"""
  43. image: str # Base64编码的图片数据
  44. image_id: Optional[str] = None # 图片ID,可选
  45. class ImageVectorResponse(BaseModel):
  46. """计算图片特征向量响应"""
  47. success: bool
  48. image_id: Optional[str] = None
  49. vector: Optional[List[float]] = None
  50. error: Optional[str] = None
  51. class BuildIndexRequest(BaseModel):
  52. """构建索引请求"""
  53. image_vectors: List[ImageVectorItem] # 图片向量列表
  54. class BuildIndexResponse(BaseModel):
  55. """构建索引响应"""
  56. success: bool
  57. indexed_count: int # 索引的图片数量
  58. error: Optional[str] = None
  59. class SearchResultItem(BaseModel):
  60. """搜索结果项"""
  61. image_id: str # 图片ID
  62. similarity: float # 相似度
  63. image_name: Optional[str] = None # 图片名称
  64. image_path: Optional[str] = None # 图片路径
  65. class SearchRequest(BaseModel):
  66. """搜索请求(支持以图搜图和以文搜图)"""
  67. image: Optional[str] = None # Base64编码的图片数据,可选
  68. text: Optional[str] = None # 文字描述,可选
  69. top_k: int = 10 # 返回结果数量
  70. class SearchResponse(BaseModel):
  71. """搜索响应"""
  72. success: bool
  73. results: List[SearchResultItem] # 搜索结果列表
  74. total_count: int # 总结果数量
  75. processing_time: float # 处理时间(秒)
  76. error: Optional[str] = None
  77. class SearchHistoryRequest(BaseModel):
  78. """记录搜索历史请求"""
  79. empid: int # 员工ID
  80. search_type: int # 搜索类型:1-以图搜图,2-以文搜图,3-图文混合搜索
  81. search_content: str # 搜索内容
  82. result_count: int # 搜索结果数量
  83. result_content: str # 搜索结果内容(JSON格式)
  84. class SearchHistoryResponse(BaseModel):
  85. """记录搜索历史响应"""
  86. success: bool
  87. history_id: Optional[int] = None
  88. error: Optional[str] = None