entities.py 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. from collections.abc import Sequence
  2. from typing import Any, Optional
  3. from pydantic import BaseModel, Field
  4. from core.model_runtime.entities import ImagePromptMessageContent
  5. from core.prompt.entities.advanced_prompt_entities import ChatModelMessage, CompletionModelPromptTemplate, MemoryConfig
  6. from core.workflow.entities.variable_entities import VariableSelector
  7. from core.workflow.nodes.base import BaseNodeData
  8. class ModelConfig(BaseModel):
  9. provider: str
  10. name: str
  11. mode: str
  12. completion_params: dict[str, Any] = {}
  13. class ContextConfig(BaseModel):
  14. enabled: bool
  15. variable_selector: Optional[list[str]] = None
  16. class VisionConfigOptions(BaseModel):
  17. variable_selector: Sequence[str] = Field(default_factory=lambda: ["sys", "files"])
  18. detail: ImagePromptMessageContent.DETAIL = ImagePromptMessageContent.DETAIL.HIGH
  19. class VisionConfig(BaseModel):
  20. enabled: bool = False
  21. configs: VisionConfigOptions = Field(default_factory=VisionConfigOptions)
  22. class PromptConfig(BaseModel):
  23. jinja2_variables: Optional[list[VariableSelector]] = None
  24. class LLMNodeChatModelMessage(ChatModelMessage):
  25. jinja2_text: Optional[str] = None
  26. class LLMNodeCompletionModelPromptTemplate(CompletionModelPromptTemplate):
  27. jinja2_text: Optional[str] = None
  28. class LLMNodeData(BaseNodeData):
  29. model: ModelConfig
  30. prompt_template: Sequence[LLMNodeChatModelMessage] | LLMNodeCompletionModelPromptTemplate
  31. prompt_config: Optional[PromptConfig] = None
  32. memory: Optional[MemoryConfig] = None
  33. context: ContextConfig
  34. vision: VisionConfig = Field(default_factory=VisionConfig)