entities.py 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. from collections.abc import Sequence
  2. from enum import Enum
  3. from pydantic import BaseModel, Field
  4. from core.workflow.nodes.base import BaseNodeData
  5. class AnswerNodeData(BaseNodeData):
  6. """
  7. Answer Node Data.
  8. """
  9. answer: str = Field(..., description="answer template string")
  10. class GenerateRouteChunk(BaseModel):
  11. """
  12. Generate Route Chunk.
  13. """
  14. class ChunkType(Enum):
  15. VAR = "var"
  16. TEXT = "text"
  17. type: ChunkType = Field(..., description="generate route chunk type")
  18. class VarGenerateRouteChunk(GenerateRouteChunk):
  19. """
  20. Var Generate Route Chunk.
  21. """
  22. type: GenerateRouteChunk.ChunkType = GenerateRouteChunk.ChunkType.VAR
  23. """generate route chunk type"""
  24. value_selector: Sequence[str] = Field(..., description="value selector")
  25. class TextGenerateRouteChunk(GenerateRouteChunk):
  26. """
  27. Text Generate Route Chunk.
  28. """
  29. type: GenerateRouteChunk.ChunkType = GenerateRouteChunk.ChunkType.TEXT
  30. """generate route chunk type"""
  31. text: str = Field(..., description="text")
  32. class AnswerNodeDoubleLink(BaseModel):
  33. node_id: str = Field(..., description="node id")
  34. source_node_ids: list[str] = Field(..., description="source node ids")
  35. target_node_ids: list[str] = Field(..., description="target node ids")
  36. class AnswerStreamGenerateRoute(BaseModel):
  37. """
  38. AnswerStreamGenerateRoute entity
  39. """
  40. answer_dependencies: dict[str, list[str]] = Field(
  41. ..., description="answer dependencies (answer node id -> dependent answer node ids)"
  42. )
  43. answer_generate_route: dict[str, list[GenerateRouteChunk]] = Field(
  44. ..., description="answer generate route (answer node id -> generate route chunks)"
  45. )