> ## Documentation Index
> Fetch the complete documentation index at: https://dify-6c0370d8-release-1-15-0.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Node

> Invoke the Parameter Extractor and Question Classifier nodes from your plugin

A plugin can reverse invoke the capabilities of certain nodes within a Dify Chatflow/Workflow application.

Plugins can call the `ParameterExtractor` and `QuestionClassifier` nodes. Both encapsulate complex prompt and code logic, using LLMs to handle tasks that are difficult to solve with hardcoded rules.

## Call the Parameter Extractor Node

### Entry Point

```python theme={null}
    self.session.workflow_node.parameter_extractor
```

### Interface

```python theme={null}
    def invoke(
        self,
        parameters: list[ParameterConfig],
        model: ModelConfig,
        query: str,
        instruction: str = "",
    ) -> NodeResponse
        pass
```

* **`parameters`**: The list of parameters to extract.
* **`model`**: Conforms to the `LLMModelConfig` specification.
* **`query`**: The source text for parameter extraction.
* **`instruction`**: Any additional instructions the LLM might need.

For the structure of `NodeResponse`, see the [General Specifications Definition](/en/develop-plugin/features-and-specs/plugin-types/general-specifications#noderesponse).

### Use Case

This example extracts a person's name from a conversation:

```python theme={null}
from collections.abc import Generator
from dify_plugin import Tool
from dify_plugin.entities.tool import ToolInvokeMessage
from dify_plugin.entities.workflow_node import ModelConfig, NodeResponse, ParameterConfig


class ParameterExtractorTool(Tool):
    def _invoke(
        self, tool_parameters: dict
    ) -> Generator[ToolInvokeMessage, None, None]:
        response: NodeResponse = 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",
        )

        extracted_name = response.outputs.get("name", "Name not found")
        yield self.create_text_message(extracted_name)
```

`NodeResponse` is a Pydantic model defined in `dify_plugin.entities.workflow_node` with three dictionary fields: `process_data`, `inputs`, and `outputs`. Extracted values live under `response.outputs`.

## Call the Question Classifier Node

### Entry Point

```python theme={null}
    self.session.workflow_node.question_classifier
```

### Interface

```python theme={null}
    def invoke(
        self,
        classes: list[ClassConfig],
        model: ModelConfig,
        query: str,
        instruction: str = "",
    ) -> NodeResponse:
        pass
```

`ClassConfig` is also exported from `dify_plugin.entities.workflow_node`. The interface parameters match those of `ParameterExtractor`, and the final result is stored in `response.outputs["class_name"]`.
