ノード
リバースノードリクエストとは、プラグインがDifyのChatflow/Workflowアプリケーション内の特定のノードにアクセスする能力を指します。
WorkflowのParameterExtractorとQuestionClassifierノードは、複雑なPromptとコードロジックをカプセル化しており、LLMを通じたハードコーディングでは解決が困難な多くのタスクを実行できます。プラグインはこれら2つのノードをリクエストすることができます。
パラメータ抽出ノードのリクエスト
エントリー
self.session.workflow_node.parameter_extractorエンドポイント
def invoke(
self,
parameters: list[ParameterConfig],
model: ModelConfig,
query: str,
instruction: str = "",
) -> NodeResponse
passここで、parametersは抽出するパラメータのリスト、modelはLLMModelConfig仕様に従い、queryはパラメータ抽出のソーステキスト、instructionはLLMへの追加指示を含み、NodeResponse構造はドキュメントで参照できます。
例
会話から人の名前を抽出したい場合は、以下のコードを参照してください:
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"])質問分類ノードのリクエスト
エントリー
self.session.workflow_node.question_classifierエンドポイント
def invoke(
self,
classes: list[ClassConfig],
model: ModelConfig,
query: str,
instruction: str = "",
) -> NodeResponse:
passこのエンドポイントのパラメータはParameterExtractorと一致しており、最終結果はNodeResponse.outputs['class_name']に格納されます。
Last updated