From 89c1e91c5879d4d2296179cb05b86e1e5cee6243 Mon Sep 17 00:00:00 2001 From: iridite Date: Mon, 4 May 2026 22:00:17 +0800 Subject: [PATCH 1/2] fix(model): pass text embedding input type --- .../core/entities/plugin/request.py | 1 + src/dify_plugin/core/plugin_executor.py | 3 +- tests/entities/plugin/test_model_request.py | 33 +++++++++++++++++++ 3 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 tests/entities/plugin/test_model_request.py diff --git a/src/dify_plugin/core/entities/plugin/request.py b/src/dify_plugin/core/entities/plugin/request.py index aa5d7149..76c14c24 100644 --- a/src/dify_plugin/core/entities/plugin/request.py +++ b/src/dify_plugin/core/entities/plugin/request.py @@ -208,6 +208,7 @@ class ModelInvokeTextEmbeddingRequest(PluginAccessModelRequest): action: ModelActions = ModelActions.InvokeTextEmbedding texts: list[str] + input_type: EmbeddingInputType = EmbeddingInputType.DOCUMENT class ModelInvokeMultimodalEmbeddingRequest(PluginAccessModelRequest): diff --git a/src/dify_plugin/core/plugin_executor.py b/src/dify_plugin/core/plugin_executor.py index 1aa8668a..0b135a14 100644 --- a/src/dify_plugin/core/plugin_executor.py +++ b/src/dify_plugin/core/plugin_executor.py @@ -295,7 +295,8 @@ def invoke_text_embedding( data.model, data.credentials, data.texts, - data.user_id, + user=data.user_id, + input_type=data.input_type, ) msg = f"Model `{data.model_type}` not found for provider `{data.provider}`" raise ValueError( diff --git a/tests/entities/plugin/test_model_request.py b/tests/entities/plugin/test_model_request.py new file mode 100644 index 00000000..4f99b4e1 --- /dev/null +++ b/tests/entities/plugin/test_model_request.py @@ -0,0 +1,33 @@ +from dify_plugin.core.entities.plugin.request import ModelActions, ModelInvokeTextEmbeddingRequest, PluginInvokeType +from dify_plugin.entities.model import EmbeddingInputType, ModelType + + +def test_text_embedding_request_accepts_input_type() -> None: + request = ModelInvokeTextEmbeddingRequest( + type=PluginInvokeType.Model, + action=ModelActions.InvokeTextEmbedding, + user_id="user-id", + provider="provider", + model_type=ModelType.TEXT_EMBEDDING, + model="embedding-model", + credentials={}, + texts=["query text"], + input_type=EmbeddingInputType.QUERY, + ) + + assert request.input_type == EmbeddingInputType.QUERY + + +def test_text_embedding_request_defaults_input_type_to_document() -> None: + request = ModelInvokeTextEmbeddingRequest( + type=PluginInvokeType.Model, + action=ModelActions.InvokeTextEmbedding, + user_id="user-id", + provider="provider", + model_type=ModelType.TEXT_EMBEDDING, + model="embedding-model", + credentials={}, + texts=["document text"], + ) + + assert request.input_type == EmbeddingInputType.DOCUMENT From f3bf8b6175c04cf24d417c497b463e96a62545ee Mon Sep 17 00:00:00 2001 From: iridite Date: Tue, 5 May 2026 15:55:31 +0800 Subject: [PATCH 2/2] fix(model): default text embedding model type --- src/dify_plugin/core/entities/plugin/request.py | 1 + tests/entities/plugin/test_model_request.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/dify_plugin/core/entities/plugin/request.py b/src/dify_plugin/core/entities/plugin/request.py index 76c14c24..09583883 100644 --- a/src/dify_plugin/core/entities/plugin/request.py +++ b/src/dify_plugin/core/entities/plugin/request.py @@ -206,6 +206,7 @@ class ModelGetLLMNumTokens(PluginAccessModelRequest, PromptMessageMixin): class ModelInvokeTextEmbeddingRequest(PluginAccessModelRequest): action: ModelActions = ModelActions.InvokeTextEmbedding + model_type: ModelType = ModelType.TEXT_EMBEDDING texts: list[str] input_type: EmbeddingInputType = EmbeddingInputType.DOCUMENT diff --git a/tests/entities/plugin/test_model_request.py b/tests/entities/plugin/test_model_request.py index 4f99b4e1..de174026 100644 --- a/tests/entities/plugin/test_model_request.py +++ b/tests/entities/plugin/test_model_request.py @@ -24,10 +24,10 @@ def test_text_embedding_request_defaults_input_type_to_document() -> None: action=ModelActions.InvokeTextEmbedding, user_id="user-id", provider="provider", - model_type=ModelType.TEXT_EMBEDDING, model="embedding-model", credentials={}, texts=["document text"], ) + assert request.model_type == ModelType.TEXT_EMBEDDING assert request.input_type == EmbeddingInputType.DOCUMENT