[PR #21565] refactor: move structured output support outside LLM Node #29702

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

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

State: closed
Merged: Yes


  • Introduced a new module structured_output.py to handle structured output for large language model invocations.
  • Added LLMStructuredOutput and LLMResultWithStructuredOutput models to represent structured output.
  • Updated LLMNode to utilize the new structured output functionality, allowing for enhanced response handling.
  • Refactored existing methods to streamline structured output processing and improve code organization.

Summary

Fixes #21570

Tested locally

GPT4o

image

Doubao

image

Screenshots

Before After
... ...

Checklist

  • This change requires a documentation update, included: Dify Document
  • I understand that this PR may be closed in case there was no previous discussion or issues. (This doesn't apply to typos!)
  • I've added a test for each change that was introduced, and I tried as much as possible to make a single atomic change.
  • I've updated the documentation accordingly.
  • I ran dev/reformat(backend) and cd web && npx lint-staged(frontend) to appease the lint gods
**Original Pull Request:** https://github.com/langgenius/dify/pull/21565 **State:** closed **Merged:** Yes --- - Introduced a new module `structured_output.py` to handle structured output for large language model invocations. - Added `LLMStructuredOutput` and `LLMResultWithStructuredOutput` models to represent structured output. - Updated `LLMNode` to utilize the new structured output functionality, allowing for enhanced response handling. - Refactored existing methods to streamline structured output processing and improve code organization. ## Summary Fixes #21570 Tested locally #### GPT4o <img width="396" alt="image" src="https://github.com/user-attachments/assets/0daaa649-29f1-4987-b260-bb46c11da3ad" /> <!-- 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. --> #### Doubao <img width="920" alt="image" src="https://github.com/user-attachments/assets/b164bf9b-1981-4baa-9c12-0c2ed7302800" /> ## Screenshots | Before | After | |--------|-------| | ... | ... | ## Checklist - [ ] This change requires a documentation update, included: [Dify Document](https://github.com/langgenius/dify-docs) - [x] I understand that this PR may be closed in case there was no previous discussion or issues. (This doesn't apply to typos!) - [x] I've added a test for each change that was introduced, and I tried as much as possible to make a single atomic change. - [x] I've updated the documentation accordingly. - [x] I ran `dev/reformat`(backend) and `cd web && npx lint-staged`(frontend) to appease the lint gods
yindo added the pull-request label 2026-02-21 20:46:04 -05:00
yindo closed this issue 2026-02-21 20:46:04 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: langgenius/dify#29702