models.py 3.6 KB

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