| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207 | from typing import Any, Literal, Optionalfrom pydantic import BaseModel, ConfigDict, Field, field_validatorfrom core.entities.provider_entities import BasicProviderConfigfrom core.model_runtime.entities.message_entities import (    AssistantPromptMessage,    PromptMessage,    PromptMessageRole,    PromptMessageTool,    SystemPromptMessage,    ToolPromptMessage,    UserPromptMessage,)from core.model_runtime.entities.model_entities import ModelTypefrom core.workflow.nodes.parameter_extractor.entities import (    ModelConfig as ParameterExtractorModelConfig,)from core.workflow.nodes.parameter_extractor.entities import (    ParameterConfig,)from core.workflow.nodes.question_classifier.entities import (    ClassConfig,)from core.workflow.nodes.question_classifier.entities import (    ModelConfig as QuestionClassifierModelConfig,)class RequestInvokeTool(BaseModel):    """    Request to invoke a tool    """    tool_type: Literal["builtin", "workflow", "api"]    provider: str    tool: str    tool_parameters: dictclass BaseRequestInvokeModel(BaseModel):    provider: str    model: str    model_type: ModelType    model_config = ConfigDict(protected_namespaces=())class RequestInvokeLLM(BaseRequestInvokeModel):    """    Request to invoke LLM    """    model_type: ModelType = ModelType.LLM    mode: str    completion_params: dict[str, Any] = Field(default_factory=dict)    prompt_messages: list[PromptMessage] = Field(default_factory=list)    tools: Optional[list[PromptMessageTool]] = Field(default_factory=list)    stop: Optional[list[str]] = Field(default_factory=list)    stream: Optional[bool] = False    model_config = ConfigDict(protected_namespaces=())    @field_validator("prompt_messages", mode="before")    @classmethod    def convert_prompt_messages(cls, v):        if not isinstance(v, list):            raise ValueError("prompt_messages must be a list")        for i in range(len(v)):            if v[i]["role"] == PromptMessageRole.USER.value:                v[i] = UserPromptMessage(**v[i])            elif v[i]["role"] == PromptMessageRole.ASSISTANT.value:                v[i] = AssistantPromptMessage(**v[i])            elif v[i]["role"] == PromptMessageRole.SYSTEM.value:                v[i] = SystemPromptMessage(**v[i])            elif v[i]["role"] == PromptMessageRole.TOOL.value:                v[i] = ToolPromptMessage(**v[i])            else:                v[i] = PromptMessage(**v[i])        return vclass RequestInvokeTextEmbedding(BaseRequestInvokeModel):    """    Request to invoke text embedding    """    model_type: ModelType = ModelType.TEXT_EMBEDDING    texts: list[str]class RequestInvokeRerank(BaseRequestInvokeModel):    """    Request to invoke rerank    """    model_type: ModelType = ModelType.RERANK    query: str    docs: list[str]    score_threshold: float    top_n: intclass RequestInvokeTTS(BaseRequestInvokeModel):    """    Request to invoke TTS    """    model_type: ModelType = ModelType.TTS    content_text: str    voice: strclass RequestInvokeSpeech2Text(BaseRequestInvokeModel):    """    Request to invoke speech2text    """    model_type: ModelType = ModelType.SPEECH2TEXT    file: bytes    @field_validator("file", mode="before")    @classmethod    def convert_file(cls, v):        # hex string to bytes        if isinstance(v, str):            return bytes.fromhex(v)        else:            raise ValueError("file must be a hex string")class RequestInvokeModeration(BaseRequestInvokeModel):    """    Request to invoke moderation    """    model_type: ModelType = ModelType.MODERATION    text: strclass RequestInvokeParameterExtractorNode(BaseModel):    """    Request to invoke parameter extractor node    """    parameters: list[ParameterConfig]    model: ParameterExtractorModelConfig    instruction: str    query: strclass RequestInvokeQuestionClassifierNode(BaseModel):    """    Request to invoke question classifier node    """    query: str    model: QuestionClassifierModelConfig    classes: list[ClassConfig]    instruction: strclass RequestInvokeApp(BaseModel):    """    Request to invoke app    """    app_id: str    inputs: dict[str, Any]    query: Optional[str] = None    response_mode: Literal["blocking", "streaming"]    conversation_id: Optional[str] = None    user: Optional[str] = None    files: list[dict] = Field(default_factory=list)class RequestInvokeEncrypt(BaseModel):    """    Request to encryption    """    opt: Literal["encrypt", "decrypt", "clear"]    namespace: Literal["endpoint"]    identity: str    data: dict = Field(default_factory=dict)    config: list[BasicProviderConfig] = Field(default_factory=list)class RequestInvokeSummary(BaseModel):    """    Request to summary    """    text: str    instruction: strclass RequestRequestUploadFile(BaseModel):    """    Request to upload file    """    filename: str    mimetype: str
 |