[PR #5396] fix: tongyi json output #24903

Closed
opened 2026-02-21 20:23:54 -05:00 by yindo · 0 comments
Owner

Original Pull Request: https://github.com/langgenius/dify/pull/5396

State: closed
Merged: Yes


Description

Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. List any dependencies that are required for this change.

Fixes https://github.com/langgenius/dify/issues/5397

Type of Change

Please delete options that are not relevant.

  • Bug fix (non-breaking change which fixes an issue)

How Has This Been Tested?

api change

Accroding to tongyi api docs. There's no different between chat models and completaion models.

original code: in api/core/model_runtime/model_providers/tongyi/llm/llm.py line 245, 249 will cause prompt missing when using json response format

        else:
            if mode == LLMMode.CHAT:
                params['messages'] = self._convert_prompt_messages_to_tongyi_messages(prompt_messages)
            else:
                params['prompt'] = prompt_messages[0].content.rstrip()

json parse change

as comment in file api/core/model_runtime/model_providers/__base/large_language_model.py, some LLM with directly output json data without markdown block

test result with same prompt

请按以下格式输出json数据 `{"data": "test", "code": 200, "msg": "success"}`

before change

image

after change

image

  • TODO raise a error when json output did not satisfy

Suggested Checklist:

  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • My changes generate no new warnings
  • I ran dev/reformat(backend) and cd web && npx lint-staged(frontend) to appease the lint gods
  • optional I have made corresponding changes to the documentation
  • optional I have added tests that prove my fix is effective or that my feature works
  • optional New and existing unit tests pass locally with my changes
**Original Pull Request:** https://github.com/langgenius/dify/pull/5396 **State:** closed **Merged:** Yes --- # Description Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. List any dependencies that are required for this change. Fixes https://github.com/langgenius/dify/issues/5397 ## Type of Change Please delete options that are not relevant. - [x] Bug fix (non-breaking change which fixes an issue) # How Has This Been Tested? ## api change Accroding to [tongyi api docs](!https://help.aliyun.com/document_detail/2712576.html). There's no different between chat models and completaion models. original code: in `api/core/model_runtime/model_providers/tongyi/llm/llm.py` line 245, 249 will cause prompt missing when using json response format ``` else: if mode == LLMMode.CHAT: params['messages'] = self._convert_prompt_messages_to_tongyi_messages(prompt_messages) else: params['prompt'] = prompt_messages[0].content.rstrip() ``` ## json parse change as comment in file `api/core/model_runtime/model_providers/__base/large_language_model.py`, some LLM with directly output json data without markdown block ## test result with same prompt ``` 请按以下格式输出json数据 `{"data": "test", "code": 200, "msg": "success"}` ``` ### before change ![image](https://github.com/langgenius/dify/assets/1918195/31efe2ec-0cd2-476f-aea2-41a5263fc5c6) ### after change ![image](https://github.com/langgenius/dify/assets/1918195/4d3b986d-bea5-4778-acad-a6bd09575c54) - [ ] TODO raise a error when json output did not satisfy # Suggested Checklist: - [x] I have performed a self-review of my own code - [x] I have commented my code, particularly in hard-to-understand areas - [x] My changes generate no new warnings - [x] I ran `dev/reformat`(backend) and `cd web && npx lint-staged`(frontend) to appease the lint gods - [ ] `optional` I have made corresponding changes to the documentation - [ ] `optional` I have added tests that prove my fix is effective or that my feature works - [ ] `optional` New and existing unit tests pass locally with my changes
yindo added the pull-request label 2026-02-21 20:23:54 -05:00
yindo closed this issue 2026-02-21 20:23:54 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: langgenius/dify#24903