dify - 💡(How to fix) Fix Plugin with model-selector parameter fails: "The selector must be a dictionary" after upgrading to 1.14.0 [2 comments, 3 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
langgenius/dify#35822Fetched 2026-05-07 03:54:47
View on GitHub
Comments
2
Participants
3
Timeline
5
Reactions
1
Author
Timeline (top)
commented ×2labeled ×1mentioned ×1subscribed ×1

Error Message

The error is thrown at the framework level (parameter deserialization), before the plugin's _invoke() method is ever called. No plugin-side fix is possible.

RAW_BUFFERClick to expand / collapse

Self Checks

  • I have read the Contributing Guide and Language Policy.
  • This is only for bug report, if you would like to ask a question, please head to Discussions.
  • I have searched for existing issues search for existing issues, including closed ones.
  • I confirm that I am using English to submit this report, otherwise it will be closed.
  • 【中文用户 & Non English User】请使用英语提交,否则会被关闭 :)
  • Please do not modify this template :) and fill in all the required fields.

Dify version

1.14.0

Cloud or Self Hosted

Self Hosted (Docker)

Steps to reproduce

  1. Install any tool plugin that uses a model-selector type parameter in its YAML definition, for example:

parameters:

  • name: model type: model-selector scope: llm required: true form: form
  1. Configure the plugin in a workflow, select a model (e.g. DeepSeek deepseek-chat).
  2. Run the workflow / invoke the tool.

✔️ Expected Behavior

The model-selector parameter should be passed to the plugin as a dictionary (as it was in v1.13.x), and the tool should invoke the selected LLM successfully.

❌ Actual Behavior

The tool invocation fails immediately with:

Failed to invoke tool: The selector must be a dictionary.

The error is thrown at the framework level (parameter deserialization), before the plugin's _invoke() method is ever called. No plugin-side fix is possible.

The actual parameter value passed by Dify shows the model field is serialized as a string instead of a dictionary:

{ "model": "{'provider': 'langgenius/deepseek/deepseek', 'model': 'deepseek-chat', 'model_type': 'llm', 'mode': 'chat', 'completion_params': {}}" }

This is a breaking regression — ALL tool plugins using model-selector parameters are affected after upgrading to 1.14.0.

Related:

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING