Node

Reverse Node Request refers to the plugin's ability to access certain nodes within Dify's Chatflow/Workflow applications.

The ParameterExtractor and QuestionClassifier nodes in Workflow encapsulate complex Prompt and code logic that can accomplish many tasks that are difficult to solve with hard coding through LLM. Plugins can request these two nodes.

Request Parameter Extractor Node

Entry:

self.session.workflow_node.parameter_extractor

Endpoint:

def invoke(
    self,
    parameters: list[ParameterConfig],
    model: ModelConfig,
    query: str,
    instruction: str = "",
) -> NodeResponse
    pass

Where parameters is the list of parameters to extract, model follows the LLMModelConfig specification, query is the source text for parameter extraction, instruction contains additional instructions for the LLM, and NodeResponse structure can be referenced in the documentation.

Example

If you want to extract a person's name from a conversation, refer to this code:

from collections.abc import Generator
from dify_plugin.entities.tool import ToolInvokeMessage
from dify_plugin import Tool
from dify_plugin.entities.workflow_node import ModelConfig, ParameterConfig

class ParameterExtractorTool(Tool):
    def _invoke(
        self, tool_parameters: dict
    ) -> Generator[ToolInvokeMessage, None, None]:
        response = self.session.workflow_node.parameter_extractor.invoke(
            parameters=[
                ParameterConfig(
                    name="name",
                    description="name of the person",
                    required=True,
                    type="string",
                )
            ],
            model=ModelConfig(
                provider="langgenius/openai/openai",
                name="gpt-4o-mini",
                completion_params={},
            ),
            query="My name is John Doe",
            instruction="Extract the name of the person",
        )
        yield self.create_text_message(response.outputs["name"])

Request Question Classifier Node

Entry:

self.session.workflow_node.question_classifier

Endpoint:

def invoke(
    self,
    classes: list[ClassConfig],
    model: ModelConfig,
    query: str,
    instruction: str = "",
) -> NodeResponse:
    pass

This endpoint's parameters are consistent with ParameterExtractor, and the final result is stored in NodeResponse.outputs['class_name'].

Last updated