queue_entities.py 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246
  1. from enum import Enum
  2. from typing import Any, Optional
  3. from pydantic import BaseModel
  4. from core.model_runtime.entities.llm_entities import LLMResult, LLMResultChunk
  5. from core.workflow.entities.base_node_data_entities import BaseNodeData
  6. from core.workflow.entities.node_entities import NodeType
  7. class QueueEvent(Enum):
  8. """
  9. QueueEvent enum
  10. """
  11. LLM_CHUNK = "llm_chunk"
  12. TEXT_CHUNK = "text_chunk"
  13. AGENT_MESSAGE = "agent_message"
  14. MESSAGE_REPLACE = "message_replace"
  15. MESSAGE_END = "message_end"
  16. ADVANCED_CHAT_MESSAGE_END = "advanced_chat_message_end"
  17. WORKFLOW_STARTED = "workflow_started"
  18. WORKFLOW_SUCCEEDED = "workflow_succeeded"
  19. WORKFLOW_FAILED = "workflow_failed"
  20. NODE_STARTED = "node_started"
  21. NODE_SUCCEEDED = "node_succeeded"
  22. NODE_FAILED = "node_failed"
  23. RETRIEVER_RESOURCES = "retriever_resources"
  24. ANNOTATION_REPLY = "annotation_reply"
  25. AGENT_THOUGHT = "agent_thought"
  26. MESSAGE_FILE = "message_file"
  27. ERROR = "error"
  28. PING = "ping"
  29. STOP = "stop"
  30. class AppQueueEvent(BaseModel):
  31. """
  32. QueueEvent entity
  33. """
  34. event: QueueEvent
  35. class QueueLLMChunkEvent(AppQueueEvent):
  36. """
  37. QueueLLMChunkEvent entity
  38. """
  39. event = QueueEvent.LLM_CHUNK
  40. chunk: LLMResultChunk
  41. class QueueTextChunkEvent(AppQueueEvent):
  42. """
  43. QueueTextChunkEvent entity
  44. """
  45. event = QueueEvent.TEXT_CHUNK
  46. text: str
  47. metadata: Optional[dict] = None
  48. class QueueAgentMessageEvent(AppQueueEvent):
  49. """
  50. QueueMessageEvent entity
  51. """
  52. event = QueueEvent.AGENT_MESSAGE
  53. chunk: LLMResultChunk
  54. class QueueMessageReplaceEvent(AppQueueEvent):
  55. """
  56. QueueMessageReplaceEvent entity
  57. """
  58. event = QueueEvent.MESSAGE_REPLACE
  59. text: str
  60. class QueueRetrieverResourcesEvent(AppQueueEvent):
  61. """
  62. QueueRetrieverResourcesEvent entity
  63. """
  64. event = QueueEvent.RETRIEVER_RESOURCES
  65. retriever_resources: list[dict]
  66. class QueueAnnotationReplyEvent(AppQueueEvent):
  67. """
  68. QueueAnnotationReplyEvent entity
  69. """
  70. event = QueueEvent.ANNOTATION_REPLY
  71. message_annotation_id: str
  72. class QueueMessageEndEvent(AppQueueEvent):
  73. """
  74. QueueMessageEndEvent entity
  75. """
  76. event = QueueEvent.MESSAGE_END
  77. llm_result: Optional[LLMResult] = None
  78. class QueueAdvancedChatMessageEndEvent(AppQueueEvent):
  79. """
  80. QueueAdvancedChatMessageEndEvent entity
  81. """
  82. event = QueueEvent.ADVANCED_CHAT_MESSAGE_END
  83. class QueueWorkflowStartedEvent(AppQueueEvent):
  84. """
  85. QueueWorkflowStartedEvent entity
  86. """
  87. event = QueueEvent.WORKFLOW_STARTED
  88. class QueueWorkflowSucceededEvent(AppQueueEvent):
  89. """
  90. QueueWorkflowSucceededEvent entity
  91. """
  92. event = QueueEvent.WORKFLOW_SUCCEEDED
  93. class QueueWorkflowFailedEvent(AppQueueEvent):
  94. """
  95. QueueWorkflowFailedEvent entity
  96. """
  97. event = QueueEvent.WORKFLOW_FAILED
  98. error: str
  99. class QueueNodeStartedEvent(AppQueueEvent):
  100. """
  101. QueueNodeStartedEvent entity
  102. """
  103. event = QueueEvent.NODE_STARTED
  104. node_id: str
  105. node_type: NodeType
  106. node_data: BaseNodeData
  107. node_run_index: int = 1
  108. predecessor_node_id: Optional[str] = None
  109. class QueueNodeSucceededEvent(AppQueueEvent):
  110. """
  111. QueueNodeSucceededEvent entity
  112. """
  113. event = QueueEvent.NODE_SUCCEEDED
  114. node_id: str
  115. node_type: NodeType
  116. node_data: BaseNodeData
  117. inputs: Optional[dict] = None
  118. process_data: Optional[dict] = None
  119. outputs: Optional[dict] = None
  120. execution_metadata: Optional[dict] = None
  121. error: Optional[str] = None
  122. class QueueNodeFailedEvent(AppQueueEvent):
  123. """
  124. QueueNodeFailedEvent entity
  125. """
  126. event = QueueEvent.NODE_FAILED
  127. node_id: str
  128. node_type: NodeType
  129. node_data: BaseNodeData
  130. inputs: Optional[dict] = None
  131. outputs: Optional[dict] = None
  132. process_data: Optional[dict] = None
  133. error: str
  134. class QueueAgentThoughtEvent(AppQueueEvent):
  135. """
  136. QueueAgentThoughtEvent entity
  137. """
  138. event = QueueEvent.AGENT_THOUGHT
  139. agent_thought_id: str
  140. class QueueMessageFileEvent(AppQueueEvent):
  141. """
  142. QueueAgentThoughtEvent entity
  143. """
  144. event = QueueEvent.MESSAGE_FILE
  145. message_file_id: str
  146. class QueueErrorEvent(AppQueueEvent):
  147. """
  148. QueueErrorEvent entity
  149. """
  150. event = QueueEvent.ERROR
  151. error: Any
  152. class QueuePingEvent(AppQueueEvent):
  153. """
  154. QueuePingEvent entity
  155. """
  156. event = QueueEvent.PING
  157. class QueueStopEvent(AppQueueEvent):
  158. """
  159. QueueStopEvent entity
  160. """
  161. class StopBy(Enum):
  162. """
  163. Stop by enum
  164. """
  165. USER_MANUAL = "user-manual"
  166. ANNOTATION_REPLY = "annotation-reply"
  167. OUTPUT_MODERATION = "output-moderation"
  168. INPUT_MODERATION = "input-moderation"
  169. event = QueueEvent.STOP
  170. stopped_by: StopBy
  171. class QueueMessage(BaseModel):
  172. """
  173. QueueMessage entity
  174. """
  175. task_id: str
  176. app_mode: str
  177. event: AppQueueEvent
  178. class MessageQueueMessage(QueueMessage):
  179. """
  180. MessageQueueMessage entity
  181. """
  182. message_id: str
  183. conversation_id: str
  184. class WorkflowQueueMessage(QueueMessage):
  185. """
  186. WorkflowQueueMessage entity
  187. """
  188. pass