app_invoke_entities.py 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. from enum import Enum
  2. from typing import Any, Optional
  3. from pydantic import BaseModel, ConfigDict
  4. from core.app.app_config.entities import AppConfig, EasyUIBasedAppConfig, WorkflowUIBasedAppConfig
  5. from core.entities.provider_configuration import ProviderModelBundle
  6. from core.file.file_obj import FileVar
  7. from core.model_runtime.entities.model_entities import AIModelEntity
  8. from core.ops.ops_trace_manager import TraceQueueManager
  9. class InvokeFrom(Enum):
  10. """
  11. Invoke From.
  12. """
  13. SERVICE_API = 'service-api'
  14. WEB_APP = 'web-app'
  15. EXPLORE = 'explore'
  16. DEBUGGER = 'debugger'
  17. @classmethod
  18. def value_of(cls, value: str) -> 'InvokeFrom':
  19. """
  20. Get value of given mode.
  21. :param value: mode value
  22. :return: mode
  23. """
  24. for mode in cls:
  25. if mode.value == value:
  26. return mode
  27. raise ValueError(f'invalid invoke from value {value}')
  28. def to_source(self) -> str:
  29. """
  30. Get source of invoke from.
  31. :return: source
  32. """
  33. if self == InvokeFrom.WEB_APP:
  34. return 'web_app'
  35. elif self == InvokeFrom.DEBUGGER:
  36. return 'dev'
  37. elif self == InvokeFrom.EXPLORE:
  38. return 'explore_app'
  39. elif self == InvokeFrom.SERVICE_API:
  40. return 'api'
  41. return 'dev'
  42. class ModelConfigWithCredentialsEntity(BaseModel):
  43. """
  44. Model Config With Credentials Entity.
  45. """
  46. provider: str
  47. model: str
  48. model_schema: AIModelEntity
  49. mode: str
  50. provider_model_bundle: ProviderModelBundle
  51. credentials: dict[str, Any] = {}
  52. parameters: dict[str, Any] = {}
  53. stop: list[str] = []
  54. # pydantic configs
  55. model_config = ConfigDict(protected_namespaces=())
  56. class AppGenerateEntity(BaseModel):
  57. """
  58. App Generate Entity.
  59. """
  60. task_id: str
  61. # app config
  62. app_config: AppConfig
  63. inputs: dict[str, Any]
  64. files: list[FileVar] = []
  65. user_id: str
  66. # extras
  67. stream: bool
  68. invoke_from: InvokeFrom
  69. # invoke call depth
  70. call_depth: int = 0
  71. # extra parameters, like: auto_generate_conversation_name
  72. extras: dict[str, Any] = {}
  73. # tracing instance
  74. trace_manager: Optional[TraceQueueManager] = None
  75. class Config:
  76. arbitrary_types_allowed = True
  77. class EasyUIBasedAppGenerateEntity(AppGenerateEntity):
  78. """
  79. Chat Application Generate Entity.
  80. """
  81. # app config
  82. app_config: EasyUIBasedAppConfig
  83. model_conf: ModelConfigWithCredentialsEntity
  84. query: Optional[str] = None
  85. # pydantic configs
  86. model_config = ConfigDict(protected_namespaces=())
  87. class ChatAppGenerateEntity(EasyUIBasedAppGenerateEntity):
  88. """
  89. Chat Application Generate Entity.
  90. """
  91. conversation_id: Optional[str] = None
  92. class CompletionAppGenerateEntity(EasyUIBasedAppGenerateEntity):
  93. """
  94. Completion Application Generate Entity.
  95. """
  96. pass
  97. class AgentChatAppGenerateEntity(EasyUIBasedAppGenerateEntity):
  98. """
  99. Agent Chat Application Generate Entity.
  100. """
  101. conversation_id: Optional[str] = None
  102. class AdvancedChatAppGenerateEntity(AppGenerateEntity):
  103. """
  104. Advanced Chat Application Generate Entity.
  105. """
  106. # app config
  107. app_config: WorkflowUIBasedAppConfig
  108. conversation_id: Optional[str] = None
  109. query: Optional[str] = None
  110. class SingleIterationRunEntity(BaseModel):
  111. """
  112. Single Iteration Run Entity.
  113. """
  114. node_id: str
  115. inputs: dict
  116. single_iteration_run: Optional[SingleIterationRunEntity] = None
  117. class WorkflowAppGenerateEntity(AppGenerateEntity):
  118. """
  119. Workflow Application Generate Entity.
  120. """
  121. # app config
  122. app_config: WorkflowUIBasedAppConfig
  123. class SingleIterationRunEntity(BaseModel):
  124. """
  125. Single Iteration Run Entity.
  126. """
  127. node_id: str
  128. inputs: dict
  129. single_iteration_run: Optional[SingleIterationRunEntity] = None