GPUStack STT model call error #892

Closed
opened 2026-02-16 10:20:52 -05:00 by yindo · 5 comments
Owner

Originally created by @yanhelin on GitHub (Dec 22, 2025).

Self Checks

  • This is only for bug report, if you would like to ask a question, please head to Discussions.
  • I have searched for existing issues Dify issues & Dify Official Plugins, including closed ones.
  • I confirm that I am using English to submit this report (我已阅读并同意 Language Policy).
  • [FOR CHINESE USERS] 请务必使用英文提交 Issue,否则会被关闭。谢谢!:)
  • Please do not modify this template :) and fill in all the required fields.

Dify version

1.8.1

Plugin version

GPUStack 0.0.8

Cloud or Self Hosted

Self Hosted (Docker)

Steps to reproduce

Calling the model: faster-whisper-large-v3
curl -X POST 'http://xxxxxx/v1/audio-to-text'
--header 'Authorization: Bearer {api_key}'
--form 'file=@localfile;type=audio/[mp3|mp4|mpeg|mpga|m4a|wav|webm]

{
"code": "completion_request_error",
"message": "[gpustack] Error: req_id: f942727304 PluginInvokeError: {"args":{"description":"[models] Error: 'text'"},"error_type":"InvokeError","message":"[models] Error: 'text'"}",
"status": 400
}

✔️ Error log

2025-12-23 04:31:18.949 ERROR [Dummy-190] [base.py:211] - Error in stream reponse for plugin {'code': -500, 'message': '{"message":"{\"args\":{\"description\":\"[models] Error: 'text'\"},\"error_type\":\"InvokeError\",\"message\":\"[models] Error: 'text'\"}","error_type":"PluginInvokeError","args":null}', 'data': None}

Originally created by @yanhelin on GitHub (Dec 22, 2025). ### Self Checks - [x] This is only for bug report, if you would like to ask a question, please head to [Discussions](https://github.com/langgenius/dify/discussions/categories/general). - [x] I have searched for existing issues [Dify issues](https://github.com/langgenius/dify/issues) & [Dify Official Plugins](https://github.com/langgenius/dify-official-plugins/issues), including closed ones. - [x] I confirm that I am using English to submit this report (我已阅读并同意 [Language Policy](https://github.com/langgenius/dify/issues/1542)). - [x] [FOR CHINESE USERS] 请务必使用英文提交 Issue,否则会被关闭。谢谢!:) - [x] Please do not modify this template :) and fill in all the required fields. ### Dify version 1.8.1 ### Plugin version GPUStack 0.0.8 ### Cloud or Self Hosted Self Hosted (Docker) ### Steps to reproduce Calling the model: faster-whisper-large-v3 curl -X POST 'http://xxxxxx/v1/audio-to-text' \ --header 'Authorization: Bearer {api_key}' \ --form 'file=@localfile;type=audio/[mp3|mp4|mpeg|mpga|m4a|wav|webm] { "code": "completion_request_error", "message": "[gpustack] Error: req_id: f942727304 PluginInvokeError: {\"args\":{\"description\":\"[models] Error: 'text'\"},\"error_type\":\"InvokeError\",\"message\":\"[models] Error: 'text'\"}", "status": 400 } ### ✔️ Error log 2025-12-23 04:31:18.949 ERROR [Dummy-190] [base.py:211] - Error in stream reponse for plugin {'code': -500, 'message': '{"message":"{\\"args\\":{\\"description\\":\\"[models] Error: \'text\'\\"},\\"error_type\\":\\"InvokeError\\",\\"message\\":\\"[models] Error: \'text\'\\"}","error_type":"PluginInvokeError","args":null}', 'data': None}
yindo added the bug label 2026-02-16 10:20:52 -05:00
yindo closed this issue 2026-02-16 10:20:52 -05:00
Author
Owner

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

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

The error happens because the GPUStack plugin expects the backend to return a JSON response with a top-level "text" key (for example, { "text": "..." }). If the backend returns a different schema—like using "result" or another field instead—the plugin raises a KeyError, which surfaces as [models] Error: 'text' in Dify's error handling. This is not caused by your request parameters or audio file, but by the backend response not matching the OpenAI-compatible schema the plugin expects.

To resolve this, make sure your GPUStack backend returns a response with a "text" key for speech-to-text requests. If you can't change the backend, you would need to patch the plugin to accept the actual key used in the response. There are no config options or recent plugin updates that address this schema mismatch—it's a hardcoded expectation in the plugin code (reference).

You can keep an eye on the open issue for updates, but for now, aligning the backend response schema is the most direct fix.

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 22, 2025): <!-- Greeting --> Hi @yanhelin! I'm [Dosu](https://go.dosu.dev/dosubot) and I’m helping the dify-official-plugins team. <!-- Answer --> The error happens because the GPUStack plugin expects the backend to return a JSON response with a top-level `"text"` key (for example, `{ "text": "..." }`). If the backend returns a different schema—like using `"result"` or another field instead—the plugin raises a KeyError, which surfaces as `[models] Error: 'text'` in Dify's error handling. This is not caused by your request parameters or audio file, but by the backend response not matching the OpenAI-compatible schema the plugin expects. To resolve this, make sure your GPUStack backend returns a response with a `"text"` key for speech-to-text requests. If you can't change the backend, you would need to patch the plugin to accept the actual key used in the response. There are no config options or recent plugin updates that address this schema mismatch—it's a hardcoded expectation in the plugin code ([reference](https://github.com/langgenius/dify-official-plugins/blob/15e71b153f4ebcf244b27ee10fbd20f3a3a004a1/models/openai_api_compatible/models/speech2text/speech2text.py#L9-L40)). You can keep an eye on the open issue for updates, but for now, aligning the backend response schema is the most direct fix. <!-- 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/10a0933e-f9cd-416e-9965-28f5ac1d02ed?feedback_type=great_response) | [Irrelevant](https://app.dosu.dev/response-feedback/10a0933e-f9cd-416e-9965-28f5ac1d02ed?feedback_type=irrelevant_answer) | [Incorrect](https://app.dosu.dev/response-feedback/10a0933e-f9cd-416e-9965-28f5ac1d02ed?feedback_type=incorrect_sources) | [Verbose](https://app.dosu.dev/response-feedback/10a0933e-f9cd-416e-9965-28f5ac1d02ed?feedback_type=too_verbose) | [Hallucination](https://app.dosu.dev/response-feedback/10a0933e-f9cd-416e-9965-28f5ac1d02ed?feedback_type=hallucination) | [Report 🐛](https://app.dosu.dev/response-feedback/10a0933e-f9cd-416e-9965-28f5ac1d02ed?feedback_type=bug_report) | [Other](https://app.dosu.dev/response-feedback/10a0933e-f9cd-416e-9965-28f5ac1d02ed?feedback_type=other)</sup> [![Open in Cursor](https://dosu.dev/dosu-in-cursor.svg)](https://cursor.com/link/prompt?text=The%20error%20happens%20because%20the%20GPUStack%20plugin%20expects%20the%20backend%20to%20return%20a%20JSON%20response%20with%20a%20top-level%20%60%22text%22%60%20key%20%28for%20example%2C%20%60%7B%20%22text%22%3A%20%22...%22%20%7D%60%29.%20If%20the%20backend%20returns%20a%20different%20schema%E2%80%94like%20using%20%60%22result%22%60%20or%20another%20field%20instead%E2%80%94the%20plugin%20raises%20a%20KeyError%2C%20which%20surfaces%20as%20%60%5Bmodels%5D%20Error%3A%20%27text%27%60%20in%20Dify%27s%20error%20handling.%20This%20is%20not%20caused%20by%20your%20request%20parameters%20or%20audio%20file%2C%20but%20by%20the%20backend%20response%20not%20matching%20the%20OpenAI-compatible%20schema%20the%20plugin%20expects.%20%0A%0ATo%20resolve%20this%2C%20make%20sure%20your%20GPUStack%20backend%20returns%20a%20response%20with%20a%20%60%22text%22%60%20key%20for%20speech-to-text%20requests.%20If%20you%20can%27t%20change%20the%20backend%2C%20you%20would%20need%20to%20patch%20the%20plugin%20to%20accept%20the%20actual%20key%20used%20in%20the%20response.%20There%20are%20no%20config%20options%20or%20recent%20plugin%20updates%20that%20address%20this%20schema%20mismatch%E2%80%94it%27s%20a%20hardcoded%20expectation%20in%20the%20plugin%20code%20%28%5Breference%5D%28https%3A//github.com/langgenius/dify-official-plugins/blob/15e71b153f4ebcf244b27ee10fbd20f3a3a004a1/models/openai_api_compatible/models/speech2text/speech2text.py%23L9-L40%29%29.%20%0A%0AYou%20can%20keep%20an%20eye%20on%20the%20open%20issue%20for%20updates%2C%20but%20for%20now%2C%20aligning%20the%20backend%20response%20schema%20is%20the%20most%20direct%20fix.)&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/2313)
Author
Owner

@yanhelin commented on GitHub (Dec 23, 2025):

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

The error happens because the GPUStack plugin expects the backend to return a JSON response with a top-level "text" key (for example, { "text": "..." }). If the backend returns a different schema—like using "result" or another field instead—the plugin raises a KeyError, which surfaces as [models] Error: 'text' in Dify's error handling. This is not caused by your request parameters or audio file, but by the backend response not matching the OpenAI-compatible schema the plugin expects.

To resolve this, make sure your GPUStack backend returns a response with a "text" key for speech-to-text requests. If you can't change the backend, you would need to patch the plugin to accept the actual key used in the response. There are no config options or recent plugin updates that address this schema mismatch—it's a hardcoded expectation in the plugin code (reference).

You can keep an eye on the open issue for updates, but for now, aligning the backend response schema is the most direct fix.

To reply, just mention @dosu.

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

Open in Cursor Join Discord Share on X

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

The error happens because the GPUStack plugin expects the backend to return a JSON response with a top-level "text" key (for example, { "text": "..." }). If the backend returns a different schema—like using "result" or another field instead—the plugin raises a KeyError, which surfaces as [models] Error: 'text' in Dify's error handling. This is not caused by your request parameters or audio file, but by the backend response not matching the OpenAI-compatible schema the plugin expects.

To resolve this, make sure your GPUStack backend returns a response with a "text" key for speech-to-text requests. If you can't change the backend, you would need to patch the plugin to accept the actual key used in the response. There are no config options or recent plugin updates that address this schema mismatch—it's a hardcoded expectation in the plugin code (reference).

You can keep an eye on the open issue for updates, but for now, aligning the backend response schema is the most direct fix.

To reply, just mention @dosu.

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

Open in Cursor Join Discord Share on X

Thank you! Below is the result returned by my test of gpustack's stt interface. Please help me check it again:

Request:
curl http://10.42.110.149/v1/audio/transcriptions
-H "Content-Type: multipart/form-data"
-H "Authorization: Bearer ${YOUR_GPUSTACK_API_KEY}"
-F model="faster-whisper-large-v3"
-F file="@/path/to/file/audio.mp3;type=audio/mpeg"
-F language=""auto""

Response:
{
"text": "xxxxx"
}

This is the code under the gpustack plugin:
class GPUStackSpeechToTextModel(OAICompatSpeech2TextModel):
"""
Model class for GPUStack Speech to text model.
"""

def _invoke(
    self,
    model: str,
    credentials: dict,
    file: IO[bytes],
    user: Optional[str] = None,
) -> str:
    model = model.strip()
    compatible_credentials = self._get_compatible_credentials(credentials)
    return super()._invoke(model, compatible_credentials,  file)
@yanhelin commented on GitHub (Dec 23, 2025): > Hi [@yanhelin](https://github.com/yanhelin)! I'm [Dosu](https://go.dosu.dev/dosubot) and I’m helping the dify-official-plugins team. > > The error happens because the GPUStack plugin expects the backend to return a JSON response with a top-level `"text"` key (for example, `{ "text": "..." }`). If the backend returns a different schema—like using `"result"` or another field instead—the plugin raises a KeyError, which surfaces as `[models] Error: 'text'` in Dify's error handling. This is not caused by your request parameters or audio file, but by the backend response not matching the OpenAI-compatible schema the plugin expects. > > To resolve this, make sure your GPUStack backend returns a response with a `"text"` key for speech-to-text requests. If you can't change the backend, you would need to patch the plugin to accept the actual key used in the response. There are no config options or recent plugin updates that address this schema mismatch—it's a hardcoded expectation in the plugin code ([reference](https://github.com/langgenius/dify-official-plugins/blob/15e71b153f4ebcf244b27ee10fbd20f3a3a004a1/models/openai_api_compatible/models/speech2text/speech2text.py#L9-L40)). > > You can keep an eye on the open issue for updates, but for now, aligning the backend response schema is the most direct fix. > > _To reply, just mention [@dosu](https://go.dosu.dev/dosubot)._ > > How did I do? [Good](https://app.dosu.dev/response-feedback/10a0933e-f9cd-416e-9965-28f5ac1d02ed?feedback_type=great_response) | [Irrelevant](https://app.dosu.dev/response-feedback/10a0933e-f9cd-416e-9965-28f5ac1d02ed?feedback_type=irrelevant_answer) | [Incorrect](https://app.dosu.dev/response-feedback/10a0933e-f9cd-416e-9965-28f5ac1d02ed?feedback_type=incorrect_sources) | [Verbose](https://app.dosu.dev/response-feedback/10a0933e-f9cd-416e-9965-28f5ac1d02ed?feedback_type=too_verbose) | [Hallucination](https://app.dosu.dev/response-feedback/10a0933e-f9cd-416e-9965-28f5ac1d02ed?feedback_type=hallucination) | [Report 🐛](https://app.dosu.dev/response-feedback/10a0933e-f9cd-416e-9965-28f5ac1d02ed?feedback_type=bug_report) | [Other](https://app.dosu.dev/response-feedback/10a0933e-f9cd-416e-9965-28f5ac1d02ed?feedback_type=other) > > [![Open in Cursor](https://camo.githubusercontent.com/bdf7dbded65ee585887f47e5fd6fa099ea0933088b4b03d02e83b4def50154d4/68747470733a2f2f646f73752e6465762f646f73752d696e2d637572736f722e737667)](https://cursor.com/link/prompt?text=The%20error%20happens%20because%20the%20GPUStack%20plugin%20expects%20the%20backend%20to%20return%20a%20JSON%20response%20with%20a%20top-level%20%60%22text%22%60%20key%20%28for%20example%2C%20%60%7B%20%22text%22%3A%20%22...%22%20%7D%60%29.%20If%20the%20backend%20returns%20a%20different%20schema%E2%80%94like%20using%20%60%22result%22%60%20or%20another%20field%20instead%E2%80%94the%20plugin%20raises%20a%20KeyError%2C%20which%20surfaces%20as%20%60%5Bmodels%5D%20Error%3A%20%27text%27%60%20in%20Dify%27s%20error%20handling.%20This%20is%20not%20caused%20by%20your%20request%20parameters%20or%20audio%20file%2C%20but%20by%20the%20backend%20response%20not%20matching%20the%20OpenAI-compatible%20schema%20the%20plugin%20expects.%20%0A%0ATo%20resolve%20this%2C%20make%20sure%20your%20GPUStack%20backend%20returns%20a%20response%20with%20a%20%60%22text%22%60%20key%20for%20speech-to-text%20requests.%20If%20you%20can%27t%20change%20the%20backend%2C%20you%20would%20need%20to%20patch%20the%20plugin%20to%20accept%20the%20actual%20key%20used%20in%20the%20response.%20There%20are%20no%20config%20options%20or%20recent%20plugin%20updates%20that%20address%20this%20schema%20mismatch%E2%80%94it%27s%20a%20hardcoded%20expectation%20in%20the%20plugin%20code%20%28%5Breference%5D%28https%3A//github.com/langgenius/dify-official-plugins/blob/15e71b153f4ebcf244b27ee10fbd20f3a3a004a1/models/openai_api_compatible/models/speech2text/speech2text.py%23L9-L40%29%29.%20%0A%0AYou%20can%20keep%20an%20eye%20on%20the%20open%20issue%20for%20updates%2C%20but%20for%20now%2C%20aligning%20the%20backend%20response%20schema%20is%20the%20most%20direct%20fix.) [![Join Discord](https://camo.githubusercontent.com/7d2066700925db1e370d956834f9ea0e5bc92cecbe84963fbd2a363e45091b4e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6a6f696e2d3538363546323f6c6f676f3d646973636f7264266c6f676f436f6c6f723d7768697465266c6162656c3d)](https://go.dosu.dev/discord-bot) [![Share on X](https://camo.githubusercontent.com/a8bd7f3fcf3f5e3bd124eee9ae50ae2ac17b40971726665ac2121d48f9aee155/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f582d73686172652d626c61636b)](https://twitter.com/intent/tweet?text=%40dosu_ai%20helped%20me%20solve%20this%20issue!&url=https%3A//github.com/langgenius/dify-official-plugins/issues/2313) > Hi [@yanhelin](https://github.com/yanhelin)! I'm [Dosu](https://go.dosu.dev/dosubot) and I’m helping the dify-official-plugins team. > > The error happens because the GPUStack plugin expects the backend to return a JSON response with a top-level `"text"` key (for example, `{ "text": "..." }`). If the backend returns a different schema—like using `"result"` or another field instead—the plugin raises a KeyError, which surfaces as `[models] Error: 'text'` in Dify's error handling. This is not caused by your request parameters or audio file, but by the backend response not matching the OpenAI-compatible schema the plugin expects. > > To resolve this, make sure your GPUStack backend returns a response with a `"text"` key for speech-to-text requests. If you can't change the backend, you would need to patch the plugin to accept the actual key used in the response. There are no config options or recent plugin updates that address this schema mismatch—it's a hardcoded expectation in the plugin code ([reference](https://github.com/langgenius/dify-official-plugins/blob/15e71b153f4ebcf244b27ee10fbd20f3a3a004a1/models/openai_api_compatible/models/speech2text/speech2text.py#L9-L40)). > > You can keep an eye on the open issue for updates, but for now, aligning the backend response schema is the most direct fix. > > _To reply, just mention [@dosu](https://go.dosu.dev/dosubot)._ > > How did I do? [Good](https://app.dosu.dev/response-feedback/10a0933e-f9cd-416e-9965-28f5ac1d02ed?feedback_type=great_response) | [Irrelevant](https://app.dosu.dev/response-feedback/10a0933e-f9cd-416e-9965-28f5ac1d02ed?feedback_type=irrelevant_answer) | [Incorrect](https://app.dosu.dev/response-feedback/10a0933e-f9cd-416e-9965-28f5ac1d02ed?feedback_type=incorrect_sources) | [Verbose](https://app.dosu.dev/response-feedback/10a0933e-f9cd-416e-9965-28f5ac1d02ed?feedback_type=too_verbose) | [Hallucination](https://app.dosu.dev/response-feedback/10a0933e-f9cd-416e-9965-28f5ac1d02ed?feedback_type=hallucination) | [Report 🐛](https://app.dosu.dev/response-feedback/10a0933e-f9cd-416e-9965-28f5ac1d02ed?feedback_type=bug_report) | [Other](https://app.dosu.dev/response-feedback/10a0933e-f9cd-416e-9965-28f5ac1d02ed?feedback_type=other) > > [![Open in Cursor](https://camo.githubusercontent.com/bdf7dbded65ee585887f47e5fd6fa099ea0933088b4b03d02e83b4def50154d4/68747470733a2f2f646f73752e6465762f646f73752d696e2d637572736f722e737667)](https://cursor.com/link/prompt?text=The%20error%20happens%20because%20the%20GPUStack%20plugin%20expects%20the%20backend%20to%20return%20a%20JSON%20response%20with%20a%20top-level%20%60%22text%22%60%20key%20%28for%20example%2C%20%60%7B%20%22text%22%3A%20%22...%22%20%7D%60%29.%20If%20the%20backend%20returns%20a%20different%20schema%E2%80%94like%20using%20%60%22result%22%60%20or%20another%20field%20instead%E2%80%94the%20plugin%20raises%20a%20KeyError%2C%20which%20surfaces%20as%20%60%5Bmodels%5D%20Error%3A%20%27text%27%60%20in%20Dify%27s%20error%20handling.%20This%20is%20not%20caused%20by%20your%20request%20parameters%20or%20audio%20file%2C%20but%20by%20the%20backend%20response%20not%20matching%20the%20OpenAI-compatible%20schema%20the%20plugin%20expects.%20%0A%0ATo%20resolve%20this%2C%20make%20sure%20your%20GPUStack%20backend%20returns%20a%20response%20with%20a%20%60%22text%22%60%20key%20for%20speech-to-text%20requests.%20If%20you%20can%27t%20change%20the%20backend%2C%20you%20would%20need%20to%20patch%20the%20plugin%20to%20accept%20the%20actual%20key%20used%20in%20the%20response.%20There%20are%20no%20config%20options%20or%20recent%20plugin%20updates%20that%20address%20this%20schema%20mismatch%E2%80%94it%27s%20a%20hardcoded%20expectation%20in%20the%20plugin%20code%20%28%5Breference%5D%28https%3A//github.com/langgenius/dify-official-plugins/blob/15e71b153f4ebcf244b27ee10fbd20f3a3a004a1/models/openai_api_compatible/models/speech2text/speech2text.py%23L9-L40%29%29.%20%0A%0AYou%20can%20keep%20an%20eye%20on%20the%20open%20issue%20for%20updates%2C%20but%20for%20now%2C%20aligning%20the%20backend%20response%20schema%20is%20the%20most%20direct%20fix.) [![Join Discord](https://camo.githubusercontent.com/7d2066700925db1e370d956834f9ea0e5bc92cecbe84963fbd2a363e45091b4e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6a6f696e2d3538363546323f6c6f676f3d646973636f7264266c6f676f436f6c6f723d7768697465266c6162656c3d)](https://go.dosu.dev/discord-bot) [![Share on X](https://camo.githubusercontent.com/a8bd7f3fcf3f5e3bd124eee9ae50ae2ac17b40971726665ac2121d48f9aee155/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f582d73686172652d626c61636b)](https://twitter.com/intent/tweet?text=%40dosu_ai%20helped%20me%20solve%20this%20issue!&url=https%3A//github.com/langgenius/dify-official-plugins/issues/2313) Thank you! Below is the result returned by my test of gpustack's stt interface. Please help me check it again: Request: curl http://10.42.110.149/v1/audio/transcriptions \ -H "Content-Type: multipart/form-data" \ -H "Authorization: Bearer ${YOUR_GPUSTACK_API_KEY}" \ -F model="faster-whisper-large-v3" \ -F file="@/path/to/file/audio.mp3;type=audio/mpeg" \ -F language=""auto"" Response: { "text": "xxxxx" } This is the code under the gpustack plugin: class GPUStackSpeechToTextModel(OAICompatSpeech2TextModel): """ Model class for GPUStack Speech to text model. """ def _invoke( self, model: str, credentials: dict, file: IO[bytes], user: Optional[str] = None, ) -> str: model = model.strip() compatible_credentials = self._get_compatible_credentials(credentials) return super()._invoke(model, compatible_credentials, file)
Author
Owner

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

Your backend response format ({"text": "xxxxx"}) is correct and matches exactly what the plugin expects. The plugin code simply parses the JSON and returns the value at the top-level "text" key—if that key is missing, it raises the error you're seeing. There are no intermediate steps or schema transformations in the plugin logic that could cause this error if the backend response is truly as shown (source).

Given this, the most likely causes are:

  • The actual response received by the plugin is not exactly {"text": ...} at runtime (for example, due to a proxy, encoding, or environment issue).
  • The backend sometimes returns a different schema or a non-JSON response under certain conditions (e.g., on error or for specific files).
  • There is a mismatch between the endpoint the plugin is calling and the one you tested manually.

To troubleshoot:

  1. Capture the raw HTTP response (headers and body) that the plugin receives during a failing request to confirm it matches your manual test.
  2. Check for any middleware, proxies, or Docker network issues that could alter the response.
  3. Try running a minimal Python script (using requests.post) from inside the same Docker container/environment as the plugin to replicate the plugin's request and confirm the response is as expected.

If the raw response is correct and the error still occurs, please share the exact response (including headers) received by the plugin for further analysis.

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 23, 2025): <!-- Answer --> Your backend response format (`{"text": "xxxxx"}`) is correct and matches exactly what the plugin expects. The plugin code simply parses the JSON and returns the value at the top-level `"text"` key—if that key is missing, it raises the error you're seeing. There are no intermediate steps or schema transformations in the plugin logic that could cause this error if the backend response is truly as shown [(source)](https://github.com/langgenius/dify-official-plugins/blob/15e71b153f4ebcf244b27ee10fbd20f3a3a004a1/models/openai_api_compatible/models/speech2text/speech2text.py#L10-L40). Given this, the most likely causes are: - The actual response received by the plugin is not exactly `{"text": ...}` at runtime (for example, due to a proxy, encoding, or environment issue). - The backend sometimes returns a different schema or a non-JSON response under certain conditions (e.g., on error or for specific files). - There is a mismatch between the endpoint the plugin is calling and the one you tested manually. To troubleshoot: 1. Capture the raw HTTP response (headers and body) that the plugin receives during a failing request to confirm it matches your manual test. 2. Check for any middleware, proxies, or Docker network issues that could alter the response. 3. Try running a minimal Python script (using `requests.post`) from inside the same Docker container/environment as the plugin to replicate the plugin's request and confirm the response is as expected. If the raw response is correct and the error still occurs, please share the exact response (including headers) received by the plugin for further analysis. <!-- 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/126afb06-bef5-4645-a646-8c32e73a55a6?feedback_type=great_response) | [Irrelevant](https://app.dosu.dev/response-feedback/126afb06-bef5-4645-a646-8c32e73a55a6?feedback_type=irrelevant_answer) | [Incorrect](https://app.dosu.dev/response-feedback/126afb06-bef5-4645-a646-8c32e73a55a6?feedback_type=incorrect_sources) | [Verbose](https://app.dosu.dev/response-feedback/126afb06-bef5-4645-a646-8c32e73a55a6?feedback_type=too_verbose) | [Hallucination](https://app.dosu.dev/response-feedback/126afb06-bef5-4645-a646-8c32e73a55a6?feedback_type=hallucination) | [Report 🐛](https://app.dosu.dev/response-feedback/126afb06-bef5-4645-a646-8c32e73a55a6?feedback_type=bug_report) | [Other](https://app.dosu.dev/response-feedback/126afb06-bef5-4645-a646-8c32e73a55a6?feedback_type=other)</sup> [![Open in Cursor](https://dosu.dev/dosu-in-cursor.svg)](https://cursor.com/link/prompt?text=Your%20backend%20response%20format%20%28%60%7B%22text%22%3A%20%22xxxxx%22%7D%60%29%20is%20correct%20and%20matches%20exactly%20what%20the%20plugin%20expects.%20The%20plugin%20code%20simply%20parses%20the%20JSON%20and%20returns%20the%20value%20at%20the%20top-level%20%60%22text%22%60%20key%E2%80%94if%20that%20key%20is%20missing%2C%20it%20raises%20the%20error%20you%27re%20seeing.%20There%20are%20no%20intermediate%20steps%20or%20schema%20transformations%20in%20the%20plugin%20logic%20that%20could%20cause%20this%20error%20if%20the%20backend%20response%20is%20truly%20as%20shown%20%5B%28source%29%5D%28https%3A//github.com/langgenius/dify-official-plugins/blob/15e71b153f4ebcf244b27ee10fbd20f3a3a004a1/models/openai_api_compatible/models/speech2text/speech2text.py%23L10-L40%29.%0A%0AGiven%20this%2C%20the%20most%20likely%20causes%20are%3A%0A-%20The%20actual%20response%20received%20by%20the%20plugin%20is%20not%20exactly%20%60%7B%22text%22%3A%20...%7D%60%20at%20runtime%20%28for%20example%2C%20due%20to%20a%20proxy%2C%20encoding%2C%20or%20environment%20issue%29.%0A-%20The%20backend%20sometimes%20returns%20a%20different%20schema%20or%20a%20non-JSON%20response%20under%20certain%20conditions%20%28e.g.%2C%20on%20error%20or%20for%20specific%20files%29.%0A-%20There%20is%20a%20mismatch%20between%20the%20endpoint%20the%20plugin%20is%20calling%20and%20the%20one%20you%20tested%20manually.%0A%0ATo%20troubleshoot%3A%0A1.%20Capture%20the%20raw%20HTTP%20response%20%28headers%20and%20body%29%20that%20the%20plugin%20receives%20during%20a%20failing%20request%20to%20confirm%20it%20matches%20your%20manual%20test.%0A2.%20Check%20for%20any%20middleware%2C%20proxies%2C%20or%20Docker%20network%20issues%20that%20could%20alter%20the%20response.%0A3.%20Try%20running%20a%20minimal%20Python%20script%20%28using%20%60requests.post%60%29%20from%20inside%20the%20same%20Docker%20container/environment%20as%20the%20plugin%20to%20replicate%20the%20plugin%27s%20request%20and%20confirm%20the%20response%20is%20as%20expected.%0A%0AIf%20the%20raw%20response%20is%20correct%20and%20the%20error%20still%20occurs%2C%20please%20share%20the%20exact%20response%20%28including%20headers%29%20received%20by%20the%20plugin%20for%20further%20analysis.)&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/2313)
Author
Owner

@yanhelin commented on GitHub (Dec 24, 2025):

Your backend response format ({"text": "xxxxx"}) is correct and matches exactly what the plugin expects. The plugin code simply parses the JSON and returns the value at the top-level "text" key—if that key is missing, it raises the error you're seeing. There are no intermediate steps or schema transformations in the plugin logic that could cause this error if the backend response is truly as shown (source).

Given this, the most likely causes are:

  • The actual response received by the plugin is not exactly {"text": ...} at runtime (for example, due to a proxy, encoding, or environment issue).
  • The backend sometimes returns a different schema or a non-JSON response under certain conditions (e.g., on error or for specific files).
  • There is a mismatch between the endpoint the plugin is calling and the one you tested manually.

To troubleshoot:

  1. Capture the raw HTTP response (headers and body) that the plugin receives during a failing request to confirm it matches your manual test.
  2. Check for any middleware, proxies, or Docker network issues that could alter the response.
  3. Try running a minimal Python script (using requests.post) from inside the same Docker container/environment as the plugin to replicate the plugin's request and confirm the response is as expected.

If the raw response is correct and the error still occurs, please share the exact response (including headers) received by the plugin for further analysis.

To reply, just mention @dosu.

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

Open in Cursor Join Discord Share on X

The result of my packet capture inside the plugin container:
Request:
......r.POST /v1/audio/transcriptions HTTP/1.1
Host: 10.42.110.149
User-Agent: python-requests/2.32.5
Accept-Encoding: gzip, deflate
Accept: /
Connection: keep-alive
Authorization: Bearer gpustack_eedc1226a9906178_caca875c357a0e86dba299218e5955a7
Content-Length: 219337
Content-Type: multipart/form-data; boundary=2e8e6e087f7690f8c1c51551170ab776

Response:
{"status_code":400,"detail":"Unsupported file format: None","headers":null}

@yanhelin commented on GitHub (Dec 24, 2025): > Your backend response format (`{"text": "xxxxx"}`) is correct and matches exactly what the plugin expects. The plugin code simply parses the JSON and returns the value at the top-level `"text"` key—if that key is missing, it raises the error you're seeing. There are no intermediate steps or schema transformations in the plugin logic that could cause this error if the backend response is truly as shown [(source)](https://github.com/langgenius/dify-official-plugins/blob/15e71b153f4ebcf244b27ee10fbd20f3a3a004a1/models/openai_api_compatible/models/speech2text/speech2text.py#L10-L40). > > Given this, the most likely causes are: > > * The actual response received by the plugin is not exactly `{"text": ...}` at runtime (for example, due to a proxy, encoding, or environment issue). > * The backend sometimes returns a different schema or a non-JSON response under certain conditions (e.g., on error or for specific files). > * There is a mismatch between the endpoint the plugin is calling and the one you tested manually. > > To troubleshoot: > > 1. Capture the raw HTTP response (headers and body) that the plugin receives during a failing request to confirm it matches your manual test. > 2. Check for any middleware, proxies, or Docker network issues that could alter the response. > 3. Try running a minimal Python script (using `requests.post`) from inside the same Docker container/environment as the plugin to replicate the plugin's request and confirm the response is as expected. > > If the raw response is correct and the error still occurs, please share the exact response (including headers) received by the plugin for further analysis. > > _To reply, just mention [@dosu](https://go.dosu.dev/dosubot)._ > > How did I do? [Good](https://app.dosu.dev/response-feedback/126afb06-bef5-4645-a646-8c32e73a55a6?feedback_type=great_response) | [Irrelevant](https://app.dosu.dev/response-feedback/126afb06-bef5-4645-a646-8c32e73a55a6?feedback_type=irrelevant_answer) | [Incorrect](https://app.dosu.dev/response-feedback/126afb06-bef5-4645-a646-8c32e73a55a6?feedback_type=incorrect_sources) | [Verbose](https://app.dosu.dev/response-feedback/126afb06-bef5-4645-a646-8c32e73a55a6?feedback_type=too_verbose) | [Hallucination](https://app.dosu.dev/response-feedback/126afb06-bef5-4645-a646-8c32e73a55a6?feedback_type=hallucination) | [Report 🐛](https://app.dosu.dev/response-feedback/126afb06-bef5-4645-a646-8c32e73a55a6?feedback_type=bug_report) | [Other](https://app.dosu.dev/response-feedback/126afb06-bef5-4645-a646-8c32e73a55a6?feedback_type=other) > > [![Open in Cursor](https://camo.githubusercontent.com/bdf7dbded65ee585887f47e5fd6fa099ea0933088b4b03d02e83b4def50154d4/68747470733a2f2f646f73752e6465762f646f73752d696e2d637572736f722e737667)](https://cursor.com/link/prompt?text=Your%20backend%20response%20format%20%28%60%7B%22text%22%3A%20%22xxxxx%22%7D%60%29%20is%20correct%20and%20matches%20exactly%20what%20the%20plugin%20expects.%20The%20plugin%20code%20simply%20parses%20the%20JSON%20and%20returns%20the%20value%20at%20the%20top-level%20%60%22text%22%60%20key%E2%80%94if%20that%20key%20is%20missing%2C%20it%20raises%20the%20error%20you%27re%20seeing.%20There%20are%20no%20intermediate%20steps%20or%20schema%20transformations%20in%20the%20plugin%20logic%20that%20could%20cause%20this%20error%20if%20the%20backend%20response%20is%20truly%20as%20shown%20%5B%28source%29%5D%28https%3A//github.com/langgenius/dify-official-plugins/blob/15e71b153f4ebcf244b27ee10fbd20f3a3a004a1/models/openai_api_compatible/models/speech2text/speech2text.py%23L10-L40%29.%0A%0AGiven%20this%2C%20the%20most%20likely%20causes%20are%3A%0A-%20The%20actual%20response%20received%20by%20the%20plugin%20is%20not%20exactly%20%60%7B%22text%22%3A%20...%7D%60%20at%20runtime%20%28for%20example%2C%20due%20to%20a%20proxy%2C%20encoding%2C%20or%20environment%20issue%29.%0A-%20The%20backend%20sometimes%20returns%20a%20different%20schema%20or%20a%20non-JSON%20response%20under%20certain%20conditions%20%28e.g.%2C%20on%20error%20or%20for%20specific%20files%29.%0A-%20There%20is%20a%20mismatch%20between%20the%20endpoint%20the%20plugin%20is%20calling%20and%20the%20one%20you%20tested%20manually.%0A%0ATo%20troubleshoot%3A%0A1.%20Capture%20the%20raw%20HTTP%20response%20%28headers%20and%20body%29%20that%20the%20plugin%20receives%20during%20a%20failing%20request%20to%20confirm%20it%20matches%20your%20manual%20test.%0A2.%20Check%20for%20any%20middleware%2C%20proxies%2C%20or%20Docker%20network%20issues%20that%20could%20alter%20the%20response.%0A3.%20Try%20running%20a%20minimal%20Python%20script%20%28using%20%60requests.post%60%29%20from%20inside%20the%20same%20Docker%20container/environment%20as%20the%20plugin%20to%20replicate%20the%20plugin%27s%20request%20and%20confirm%20the%20response%20is%20as%20expected.%0A%0AIf%20the%20raw%20response%20is%20correct%20and%20the%20error%20still%20occurs%2C%20please%20share%20the%20exact%20response%20%28including%20headers%29%20received%20by%20the%20plugin%20for%20further%20analysis.) [![Join Discord](https://camo.githubusercontent.com/7d2066700925db1e370d956834f9ea0e5bc92cecbe84963fbd2a363e45091b4e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6a6f696e2d3538363546323f6c6f676f3d646973636f7264266c6f676f436f6c6f723d7768697465266c6162656c3d)](https://go.dosu.dev/discord-bot) [![Share on X](https://camo.githubusercontent.com/a8bd7f3fcf3f5e3bd124eee9ae50ae2ac17b40971726665ac2121d48f9aee155/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f582d73686172652d626c61636b)](https://twitter.com/intent/tweet?text=%40dosu_ai%20helped%20me%20solve%20this%20issue!&url=https%3A//github.com/langgenius/dify-official-plugins/issues/2313) The result of my packet capture inside the plugin container: Request: ......r.POST /v1/audio/transcriptions HTTP/1.1 Host: 10.42.110.149 User-Agent: python-requests/2.32.5 Accept-Encoding: gzip, deflate Accept: */* Connection: keep-alive Authorization: Bearer gpustack_eedc1226a9906178_caca875c357a0e86dba299218e5955a7 Content-Length: 219337 Content-Type: multipart/form-data; boundary=2e8e6e087f7690f8c1c51551170ab776 Response: {"status_code":400,"detail":"Unsupported file format: None","headers":null}
Author
Owner

@dosubot[bot] commented on GitHub (Jan 10, 2026):

Hi, @yanhelin. I'm Dosu, and I'm helping the dify-official-plugins team manage their backlog and am marking this issue as stale.

Issue Summary:

  • You reported a 400 error "'text'" when calling the GPUStack STT model "faster-whisper-large-v3" on Dify 1.8.1 with GPUStack plugin 0.0.8.
  • The error indicates a missing 'text' key in the backend response expected by the plugin.
  • You confirmed the backend returns the correct JSON format manually, but packet capture inside the plugin container shows a 400 error with "Unsupported file format: None."
  • This suggests the plugin's request or environment might be causing the issue, possibly due to middleware or network problems.
  • Further troubleshooting is needed to verify the exact response received by the plugin.

Next Steps:

  • Please confirm if this issue is still relevant with the latest version of the dify-official-plugins repository by commenting here.
  • If no further updates are provided, I will automatically close this issue in 5 days.

Thank you for your understanding and contribution!

@dosubot[bot] commented on GitHub (Jan 10, 2026): Hi, @yanhelin. I'm [Dosu](https://dosu.dev), and I'm helping the dify-official-plugins team manage their backlog and am marking this issue as stale. **Issue Summary:** - You reported a 400 error "'text'" when calling the GPUStack STT model "faster-whisper-large-v3" on Dify 1.8.1 with GPUStack plugin 0.0.8. - The error indicates a missing 'text' key in the backend response expected by the plugin. - You confirmed the backend returns the correct JSON format manually, but packet capture inside the plugin container shows a 400 error with "Unsupported file format: None." - This suggests the plugin's request or environment might be causing the issue, possibly due to middleware or network problems. - Further troubleshooting is needed to verify the exact response received by the plugin. **Next Steps:** - Please confirm if this issue is still relevant with the latest version of the dify-official-plugins repository by commenting here. - If no further updates are provided, I will automatically close this issue in 5 days. Thank you for your understanding and contribution!
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: langgenius/dify-official-plugins#892