How to add a multimodal LLM like qwen3-omni-flash that supports audio input? #846

Closed
opened 2026-02-16 10:20:41 -05:00 by yindo · 1 comment
Owner

Originally created by @305758409 on GitHub (Dec 1, 2025).

Self Checks

  • I have read the Contributing Guide and Language Policy.
  • 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.
  • Please do not modify this template :) and fill in all the required fields.

1. Is this request related to a challenge you're experiencing? Tell me about your story.

I am trying to integrate a multimodal LLM (specifically qwen3-omni-flash) that supports audio input into Dify for a project requiring audio processing capabilities. However, I’ve encountered several obstacles. First, the Tongyi Qianwen plugin does not include a model similar to qwen3-omni-flash, and I was unable to add it manually through the plugin. Next, I attempted to use the OpenAI-API-compatible provider, but the LLM type dropdown only includes a "Vision" support option—no audio-specific option is available. I tried selecting "Vision" support and providing audio input, but the model did not receive or process the audio data.

I noticed that the Gemini plugin in Dify does support audio input, confirming that Dify itself is capable of handling full multimodal models. The issue seems to be that existing plugins do not support adding a model like qwen3-omni-flash.

I would like to know what options are available to work around this. For example:

Can this be achieved through an HTTP node?

Is there another existing plugin that can be used?

Would I need to develop a custom plugin, modify an existing one, or make changes to the Dify source code directly?

Any guidance on the recommended approach would be greatly appreciated.

2. Additional context or comments

Dify version: [1.10.1]

Relevant plugins tested: Tongyi Qianwen, OpenAI-API-compatible, Gemini

Audio input format attempted: [WAV .etc]

Reference: Gemini plugin demonstrates audio input support in Dify.

If custom development is required, are there any documentation or examples for adding new multimodal model providers?

3. Can you help us with this feature?

  • I am interested in contributing to this feature.
Originally created by @305758409 on GitHub (Dec 1, 2025). ### Self Checks - [x] I have read the [Contributing Guide](https://github.com/langgenius/dify/blob/main/CONTRIBUTING.md) and [Language Policy](https://github.com/langgenius/dify/issues/1542). - [x] I have searched for existing issues [search for existing issues](https://github.com/langgenius/dify-official-plugins/issues), including closed ones. - [x] I confirm that I am using English to submit this report, otherwise it will be closed. - [x] Please do not modify this template :) and fill in all the required fields. ### 1. Is this request related to a challenge you're experiencing? Tell me about your story. I am trying to integrate a multimodal LLM (specifically qwen3-omni-flash) that supports audio input into Dify for a project requiring audio processing capabilities. However, I’ve encountered several obstacles. First, the Tongyi Qianwen plugin does not include a model similar to qwen3-omni-flash, and I was unable to add it manually through the plugin. Next, I attempted to use the OpenAI-API-compatible provider, but the LLM type dropdown only includes a "Vision" support option—no audio-specific option is available. I tried selecting "Vision" support and providing audio input, but the model did not receive or process the audio data. I noticed that the Gemini plugin in Dify does support audio input, confirming that Dify itself is capable of handling full multimodal models. The issue seems to be that existing plugins do not support adding a model like qwen3-omni-flash. I would like to know what options are available to work around this. For example: Can this be achieved through an HTTP node? Is there another existing plugin that can be used? Would I need to develop a custom plugin, modify an existing one, or make changes to the Dify source code directly? Any guidance on the recommended approach would be greatly appreciated. ### 2. Additional context or comments Dify version: [1.10.1] Relevant plugins tested: Tongyi Qianwen, OpenAI-API-compatible, Gemini Audio input format attempted: [WAV .etc] Reference: Gemini plugin demonstrates audio input support in Dify. If custom development is required, are there any documentation or examples for adding new multimodal model providers? ### 3. Can you help us with this feature? - [ ] I am interested in contributing to this feature.
yindo added the enhancementquestion labels 2026-02-16 10:20:41 -05:00
yindo closed this issue 2026-02-16 10:20:41 -05:00
Author
Owner

@dosubot[bot] commented on GitHub (Dec 1, 2025):

Hi @305758409! I'm Dosu and I’m helping the dify-official-plugins team.

To add a multimodal LLM like qwen3-omni-flash with audio input support to Dify, you’ll need to develop a custom plugin or extend an existing one—there’s no out-of-the-box solution or official example for this yet. The Gemini plugin is a good reference: it handles audio by converting prompt messages into SDK content parts, uploading files (audio, image, etc.), and passing their URIs and MIME types to the model API. Audio input is represented as a specific content type and flows through the same upload pipeline as other files, with MIME types preserved so the model can consume the stream (Gemini plugin code, Gemini plugin tests).

Dify’s plugin architecture supports multimodal features, including audio, at both the data model and API levels. To integrate qwen3-omni-flash, you would: define the provider and credential schema, add a YAML entry describing the model and its modalities, implement the model logic to handle audio input (upload, URI, MIME type), and register the plugin so Dify recognizes it as a provider. You may need to tune modality-specific helpers and ensure the UI supports audio input (plugin architecture, model entities, plugin client).

HTTP node or direct API calls could be a workaround, but there’s no documentation confirming this approach for audio input models. The most robust path is to follow the Gemini plugin’s structure and adapt it for qwen3-omni-flash, ensuring you handle audio uploads and prompt construction in a similar way.

If you need a template, the Gemini plugin’s code and tests provide a practical example of how to handle audio and other modalities in a Dify plugin.

To reply, just mention @dosu.


How did I do? Good | Irrelevant | Incorrect | Verbose | Hallucination | Report 🐛 | Other

Open in Cursor Join Discord Share on X

@dosubot[bot] commented on GitHub (Dec 1, 2025): <!-- Greeting --> Hi @305758409! I'm [Dosu](https://go.dosu.dev/dosubot) and I’m helping the dify-official-plugins team. <!-- Answer --> To add a multimodal LLM like qwen3-omni-flash with audio input support to Dify, you’ll need to develop a custom plugin or extend an existing one—there’s no out-of-the-box solution or official example for this yet. The Gemini plugin is a good reference: it handles audio by converting prompt messages into SDK content parts, uploading files (audio, image, etc.), and passing their URIs and MIME types to the model API. Audio input is represented as a specific content type and flows through the same upload pipeline as other files, with MIME types preserved so the model can consume the stream ([Gemini plugin code](https://github.com/langgenius/dify-official-plugins/blob/ce98548234e058990cb0e630b2204e8e243f49bf/models/gemini/models/llm/llm.py#L46-L1000), [Gemini plugin tests](https://github.com/langgenius/dify-official-plugins/blob/ce98548234e058990cb0e630b2204e8e243f49bf/models/gemini/models/tests/test_llm.py#L52-L407)). Dify’s plugin architecture supports multimodal features, including audio, at both the data model and API levels. To integrate qwen3-omni-flash, you would: define the provider and credential schema, add a YAML entry describing the model and its modalities, implement the model logic to handle audio input (upload, URI, MIME type), and register the plugin so Dify recognizes it as a provider. You may need to tune modality-specific helpers and ensure the UI supports audio input ([plugin architecture](https://github.com/langgenius/dify/blob/0a22bc5d05160afa0334e620a333699af1e2e2c0/api/agent_skills/infra.md#L61-L67), [model entities](https://github.com/langgenius/dify/blob/0a22bc5d05160afa0334e620a333699af1e2e2c0/api/core/model_runtime/entities/message_entities.py#L52-L202), [plugin client](https://github.com/langgenius/dify/blob/0a22bc5d05160afa0334e620a333699af1e2e2c0/api/core/plugin/impl/model.py#L24-L532)). HTTP node or direct API calls could be a workaround, but there’s no documentation confirming this approach for audio input models. The most robust path is to follow the Gemini plugin’s structure and adapt it for qwen3-omni-flash, ensuring you handle audio uploads and prompt construction in a similar way. If you need a template, the Gemini plugin’s code and tests provide a practical example of how to handle audio and other modalities in a Dify plugin. <!-- Dosu Comment Footer --> *To reply, just mention [@dosu](https://go.dosu.dev/dosubot).* --- <sup>How did I do? [Good](https://app.dosu.dev/response-feedback/75d493be-771c-43c5-987c-57cf792c4424?feedback_type=great_response) | [Irrelevant](https://app.dosu.dev/response-feedback/75d493be-771c-43c5-987c-57cf792c4424?feedback_type=irrelevant_answer) | [Incorrect](https://app.dosu.dev/response-feedback/75d493be-771c-43c5-987c-57cf792c4424?feedback_type=incorrect_sources) | [Verbose](https://app.dosu.dev/response-feedback/75d493be-771c-43c5-987c-57cf792c4424?feedback_type=too_verbose) | [Hallucination](https://app.dosu.dev/response-feedback/75d493be-771c-43c5-987c-57cf792c4424?feedback_type=hallucination) | [Report 🐛](https://app.dosu.dev/response-feedback/75d493be-771c-43c5-987c-57cf792c4424?feedback_type=bug_report) | [Other](https://app.dosu.dev/response-feedback/75d493be-771c-43c5-987c-57cf792c4424?feedback_type=other)</sup> [![Open in Cursor](https://dosu.dev/dosu-in-cursor.svg)](https://cursor.com/link/prompt?text=To%20add%20a%20multimodal%20LLM%20like%20qwen3-omni-flash%20with%20audio%20input%20support%20to%20Dify%2C%20you%E2%80%99ll%20need%20to%20develop%20a%20custom%20plugin%20or%20extend%20an%20existing%20one%E2%80%94there%E2%80%99s%20no%20out-of-the-box%20solution%20or%20official%20example%20for%20this%20yet.%20The%20Gemini%20plugin%20is%20a%20good%20reference%3A%20it%20handles%20audio%20by%20converting%20prompt%20messages%20into%20SDK%20content%20parts%2C%20uploading%20files%20%28audio%2C%20image%2C%20etc.%29%2C%20and%20passing%20their%20URIs%20and%20MIME%20types%20to%20the%20model%20API.%20Audio%20input%20is%20represented%20as%20a%20specific%20content%20type%20and%20flows%20through%20the%20same%20upload%20pipeline%20as%20other%20files%2C%20with%20MIME%20types%20preserved%20so%20the%20model%20can%20consume%20the%20stream%C2%A0%28%5BGemini%20plugin%20code%5D%28https%3A//github.com/langgenius/dify-official-plugins/blob/ce98548234e058990cb0e630b2204e8e243f49bf/models/gemini/models/llm/llm.py%23L46-L1000%29%2C%20%5BGemini%20plugin%20tests%5D%28https%3A//github.com/langgenius/dify-official-plugins/blob/ce98548234e058990cb0e630b2204e8e243f49bf/models/gemini/models/tests/test_llm.py%23L52-L407%29%29.%0A%0ADify%E2%80%99s%20plugin%20architecture%20supports%20multimodal%20features%2C%20including%20audio%2C%20at%20both%20the%20data%20model%20and%20API%20levels.%20To%20integrate%20qwen3-omni-flash%2C%20you%20would%3A%20define%20the%20provider%20and%20credential%20schema%2C%20add%20a%20YAML%20entry%20describing%20the%20model%20and%20its%20modalities%2C%20implement%20the%20model%20logic%20to%20handle%20audio%20input%20%28upload%2C%20URI%2C%20MIME%20type%29%2C%20and%20register%20the%20plugin%20so%20Dify%20recognizes%20it%20as%20a%20provider.%20You%20may%20need%20to%20tune%20modality-specific%20helpers%20and%20ensure%20the%20UI%20supports%20audio%20input%C2%A0%28%5Bplugin%20architecture%5D%28https%3A//github.com/langgenius/dify/blob/0a22bc5d05160afa0334e620a333699af1e2e2c0/api/agent_skills/infra.md%23L61-L67%29%2C%20%5Bmodel%20entities%5D%28https%3A//github.com/langgenius/dify/blob/0a22bc5d05160afa0334e620a333699af1e2e2c0/api/core/model_runtime/entities/message_entities.py%23L52-L202%29%2C%20%5Bplugin%20client%5D%28https%3A//github.com/langgenius/dify/blob/0a22bc5d05160afa0334e620a333699af1e2e2c0/api/core/plugin/impl/model.py%23L24-L532%29%29.%0A%0AHTTP%20node%20or%20direct%20API%20calls%20could%20be%20a%20workaround%2C%20but%20there%E2%80%99s%20no%20documentation%20confirming%20this%20approach%20for%20audio%20input%20models.%20The%20most%20robust%20path%20is%20to%20follow%20the%20Gemini%20plugin%E2%80%99s%20structure%20and%20adapt%20it%20for%20qwen3-omni-flash%2C%20ensuring%20you%20handle%20audio%20uploads%20and%20prompt%20construction%20in%20a%20similar%20way.%0A%0AIf%20you%20need%20a%20template%2C%20the%20Gemini%20plugin%E2%80%99s%20code%20and%20tests%20provide%20a%20practical%20example%20of%20how%20to%20handle%20audio%20and%20other%20modalities%20in%20a%20Dify%20plugin.)&nbsp;[![Join Discord](https://img.shields.io/badge/join-5865F2?logo=discord&logoColor=white&label=)](https://go.dosu.dev/discord-bot)&nbsp;[![Share on X](https://img.shields.io/badge/X-share-black)](https://twitter.com/intent/tweet?text=%40dosu_ai%20helped%20me%20solve%20this%20issue!&url=https%3A//github.com/langgenius/dify-official-plugins/issues/2160)
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: langgenius/dify-official-plugins#846