Skip to main content

Dify Plugin SDK

A Python SDK for building plugins for Dify.

Here is a short introduction to Dify Plugin: https://docs.dify.ai/plugins/introduction

Development

This repository uses just as its command runner. Install it with your preferred package manager, or with uv:

uv tool install rust-just

Common development commands:

just dev      # Sync default dev dependencies
just check    # Check lockfile, formatting, and linting
just test     # Run all tests
just build    # Build source and wheel distributions

LLM Polling Support

SDK 0.9.0 adds support for polling-based LLM invocation. A model can now declare the polling feature and implement polling methods, allowing plugins to submit long-running provider jobs and return later checks through a short request/response flow.

Polling results use three states:

  • running returns plugin-owned state for the next check.
  • succeeded returns the final LLM result.
  • failed returns a terminal error.

Version Management

This SDK follows Semantic Versioning (a.b.c):

  • a: Major version - Indicates significant architectural changes or incompatible API modifications
  • b: Minor version - Indicates new feature additions while maintaining backward compatibility
  • c: Patch version - Indicates backward-compatible bug fixes

For SDK Users

When depending on this SDK, it's recommended to specify version constraints that:

  • Allow patch and minor updates for bug fixes and new features
  • Prevent major version updates to avoid breaking changes

Example in your project's dependency management:

dify_plugin >= 0.8

Manifest Version Reference

For the manifest specification, we've introduced two versioning fields:

  • meta.version - The version of the manifest specification, designed for backward compatibility. When installing an older plugin to a newer Dify, it's difficult to ensure breaking changes never occur, but at least Dify can detect them through this field. Once an unsupported version is detected, Dify will only use the supported parts of the plugin.
  • meta.minimum_dify_version - The minimum version of Dify, designed for forward compatibility. When installing a newer plugin to an older Dify, many new features may not be available, but showing the minimum Dify version helps users understand how to upgrade.

Meta.Version Reference

Manifest Version Description
0.0.2 As ToolProviderType now supports mcp, an elder implementation is going to broken when user selected a mcp tool in Dify, so we bump it to 0.0.2 to ensure Dify knows that mcp is disabled if meta.version under 0.0.2.
0.0.1 Initial release

Meta.MinimumDifyVersion Reference

Minimum Dify Version SDK Version Description
1.2.0 0.2.0 Support fetching application info
1.4.0 0.0.1-beta.49 Support LLM multimodal output
1.4.0 0.3.1 Support OAuth functionality for plugins
1.5.1 0.4.0 Support dynamic-select parameter type
1.5.1 0.4.0 Support LLM structured output
1.6.0 0.4.1 Support dark-icon field in manifest
1.7.0 0.4.2 Support OAuth functionality for plugins
1.8.1 0.4.4 Support filename in MultiModalPromptMessageContent
1.9.0 0.5.0 Support Datasource functionality for plugins
1.10.0 0.6.0 Support Trigger functionality for plugins
1.11.0 0.7.0 Support Multimodal Reranking / Embeddings
1.14.0 0.8.1 Dependency and project structure cleanup
1.14.2 0.9.0 Support polling-based LLM plugin invocations

Metadata

Release files for dify-plugin-security-fix 0.9.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dify-plugin-security-fix 0.9.0
File Size Uploaded
dify_plugin_security_fix-0.9.0.tar.gz 319.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for dify-plugin-security-fix 0.9.0
File Interpreter ABI Platform
dify_plugin_security_fix-0.9.0-py3-none-any.whl Python 3 none any Details

Total release size: 696.3 kB

Release files / dify_plugin_security_fix-0.9.0.tar.gz

Download URL dify_plugin_security_fix-0.9.0.tar.gz
Size 319.1 kB
Tags Source
SHA-256 checksum
How to use checksums
3a47a74be560424bc2906d557fa2e638af4352b1ae3ce229e448fdc6ea52cde8
BLAKE2b-256 checksum
How to use checksums
0fdfbf0b27136c1bf9b4918f0cb931f4c28687240994e4854878fbe33a5868a6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.2 {"installer":{"name":"uv","version":"0.11.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / dify_plugin_security_fix-0.9.0-py3-none-any.whl

Download URL dify_plugin_security_fix-0.9.0-py3-none-any.whl
Size 377.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0e181ad4e243db227c718bb75143f2287cbeea4abd82d5e92cb625e948e46d54
BLAKE2b-256 checksum
How to use checksums
420a07ec2c97596e37b14c818252985a1ef1e6bf195ba8609cb81cc2836acb3b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.2 {"installer":{"name":"uv","version":"0.11.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

This release

0.9.0 This release

2 release files

0.8.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page