Dify Plugin SDK
Project description
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:
runningreturns plugin-owned state for the next check.succeededreturns the final LLM result.failedreturns 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 |
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dify_plugin-0.9.0.tar.gz.
File metadata
- Download URL: dify_plugin-0.9.0.tar.gz
- Upload date:
- Size: 319.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c32dc99d4122d960bd447ee65a17e1e93bf942bbad8f7b4d53a2841416ecd3e0
|
|
| MD5 |
edb2d8d5b4a0b5eaa67e84dd6ca91331
|
|
| BLAKE2b-256 |
e25286c042b72d42eb40460563bacf2ed46ff6a2e02dbec299892fef0ed2f70f
|
Provenance
The following attestation bundles were made for dify_plugin-0.9.0.tar.gz:
Publisher:
release.yml on langgenius/dify-plugin-sdks
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
dify_plugin-0.9.0.tar.gz -
Subject digest:
c32dc99d4122d960bd447ee65a17e1e93bf942bbad8f7b4d53a2841416ecd3e0 - Sigstore transparency entry: 1579758504
- Sigstore integration time:
-
Permalink:
langgenius/dify-plugin-sdks@43ede32bf0ac82265ce21c92d942c37716a729ee -
Branch / Tag:
refs/tags/v0.9.0 - Owner: https://github.com/langgenius
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
self-hosted -
Publication workflow:
release.yml@43ede32bf0ac82265ce21c92d942c37716a729ee -
Trigger Event:
push
-
Statement type:
File details
Details for the file dify_plugin-0.9.0-py3-none-any.whl.
File metadata
- Download URL: dify_plugin-0.9.0-py3-none-any.whl
- Upload date:
- Size: 377.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3299a8c77549a43f68705796eed4c9ca494664810fb8d10eb7ecce2e545f3d2d
|
|
| MD5 |
965238cb28863798d0a4e8b59301471c
|
|
| BLAKE2b-256 |
9bdcdf1d6d1a8c604880702dd792226f175523f890bfca89f828f58b58661edc
|
Provenance
The following attestation bundles were made for dify_plugin-0.9.0-py3-none-any.whl:
Publisher:
release.yml on langgenius/dify-plugin-sdks
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
dify_plugin-0.9.0-py3-none-any.whl -
Subject digest:
3299a8c77549a43f68705796eed4c9ca494664810fb8d10eb7ecce2e545f3d2d - Sigstore transparency entry: 1579758573
- Sigstore integration time:
-
Permalink:
langgenius/dify-plugin-sdks@43ede32bf0ac82265ce21c92d942c37716a729ee -
Branch / Tag:
refs/tags/v0.9.0 - Owner: https://github.com/langgenius
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
self-hosted -
Publication workflow:
release.yml@43ede32bf0ac82265ce21c92d942c37716a729ee -
Trigger Event:
push
-
Statement type: