how to convert the knowledge content return from '\r\n' to '\n' #13802

Closed
opened 2026-02-21 19:13:56 -05:00 by yindo · 9 comments
Owner

Originally created by @liaoweiguo on GitHub (May 12, 2025).

Self Checks

  • I have searched for existing issues search for existing issues, 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.

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

while splite a pdf file, the PdfExtractor output content with returns as '\r\n', but the delimiter for parent-child is '\n\n' for default.

Just modify PdfExtractor.extract, or IndexProcessor.transform?

want instructions about the python structure,thx

2. Additional context or comments

Image

3. Can you help us with this feature?

  • I am interested in contributing to this feature.
Originally created by @liaoweiguo on GitHub (May 12, 2025). ### Self Checks - [x] I have searched for existing issues [search for existing issues](https://github.com/langgenius/dify/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. ### 1. Is this request related to a challenge you're experiencing? Tell me about your story. while splite a pdf file, the PdfExtractor output content with returns as '\r\n', but the delimiter for parent-child is '\n\n' for default. Just modify PdfExtractor.extract, or IndexProcessor.transform? want instructions about the python structure,thx ### 2. Additional context or comments ![Image](https://github.com/user-attachments/assets/64e031a0-e9a7-4b34-b29f-e49aa464b3b6) ### 3. Can you help us with this feature? - [x] I am interested in contributing to this feature.
yindo closed this issue 2026-02-21 19:13:56 -05:00
Author
Owner

@dosubot[bot] commented on GitHub (May 12, 2025):

To convert the content returned by PdfExtractor from '\r\n' to '\n', you can modify the load_from_upload_file and load_from_url methods in the ExtractProcessor class. These methods already use '\n' as the delimiter when return_text is True. You can ensure that the content is converted by replacing '\r\n' with '\n' before joining the content:

class ExtractProcessor:
    @classmethod
    def load_from_upload_file(
        cls, upload_file: UploadFile, return_text: bool = False, is_automatic: bool = False
    ) -> Union[list[Document], str]:
        extract_setting = ExtractSetting(
            datasource_type="upload_file", upload_file=upload_file, document_model="text_model"
        )
        if return_text:
            delimiter = "\n"
            return delimiter.join(
                [document.page_content.replace('\r\n', '\n') for document in cls.extract(extract_setting, is_automatic)]
            )
        else:
            return cls.extract(extract_setting, is_automatic)

    @classmethod
    def load_from_url(cls, url: str, return_text: bool = False) -> Union[list[Document], str]:
        response = ssrf_proxy.get(url, headers={"User-Agent": USER_AGENT})

        with tempfile.TemporaryDirectory() as temp_dir:
            suffix = Path(url).suffix
            if not suffix and suffix != ".":
                # get content-type
                if response.headers.get("Content-Type"):
                    suffix = "." + response.headers.get("Content-Type").split("/")[-1]
                else:
                    content_disposition = response.headers.get("Content-Disposition")
                    filename_match = re.search(r'filename="([^"]+)"', content_disposition)
                    if filename_match:
                        filename = unquote(filename_match.group(1))
                        match = re.search(r"\.(\w+)$", filename)
                        if match:
                            suffix = "." + match.group(1)
                        else:
                            suffix = ""
            file_path = f"{temp_dir}/{next(tempfile._get_candidate_names())}{suffix}"  # type: ignore
            Path(file_path).write_bytes(response.content)
            extract_setting = ExtractSetting(datasource_type="upload_file", document_model="text_model")
            if return_text:
                delimiter = "\n"
                return delimiter.join(
                    [
                        document.page_content.replace('\r\n', '\n')
                        for document in cls.extract(extract_setting=extract_setting, file_path=file_path)
                    ]
                )
            else:
                return cls.extract(extract_setting=extract_setting, file_path=file_path)

This code ensures that any '\r\n' sequences in the extracted content are replaced with '\n', maintaining compatibility with the default delimiter settings [1].

To continue talking to Dosu, mention @dosu.


Help Dosu learn! Give it feedback: Great Response | Irrelevant Answer | Incorrect Sources | Too Verbose | Hallucination | Bug Report | Other

@dosubot[bot] commented on GitHub (May 12, 2025): <!-- Answer --> To convert the content returned by `PdfExtractor` from `'\r\n'` to `'\n'`, you can modify the `load_from_upload_file` and `load_from_url` methods in the `ExtractProcessor` class. These methods already use `'\n'` as the delimiter when `return_text` is `True`. You can ensure that the content is converted by replacing `'\r\n'` with `'\n'` before joining the content: ```python class ExtractProcessor: @classmethod def load_from_upload_file( cls, upload_file: UploadFile, return_text: bool = False, is_automatic: bool = False ) -> Union[list[Document], str]: extract_setting = ExtractSetting( datasource_type="upload_file", upload_file=upload_file, document_model="text_model" ) if return_text: delimiter = "\n" return delimiter.join( [document.page_content.replace('\r\n', '\n') for document in cls.extract(extract_setting, is_automatic)] ) else: return cls.extract(extract_setting, is_automatic) @classmethod def load_from_url(cls, url: str, return_text: bool = False) -> Union[list[Document], str]: response = ssrf_proxy.get(url, headers={"User-Agent": USER_AGENT}) with tempfile.TemporaryDirectory() as temp_dir: suffix = Path(url).suffix if not suffix and suffix != ".": # get content-type if response.headers.get("Content-Type"): suffix = "." + response.headers.get("Content-Type").split("/")[-1] else: content_disposition = response.headers.get("Content-Disposition") filename_match = re.search(r'filename="([^"]+)"', content_disposition) if filename_match: filename = unquote(filename_match.group(1)) match = re.search(r"\.(\w+)$", filename) if match: suffix = "." + match.group(1) else: suffix = "" file_path = f"{temp_dir}/{next(tempfile._get_candidate_names())}{suffix}" # type: ignore Path(file_path).write_bytes(response.content) extract_setting = ExtractSetting(datasource_type="upload_file", document_model="text_model") if return_text: delimiter = "\n" return delimiter.join( [ document.page_content.replace('\r\n', '\n') for document in cls.extract(extract_setting=extract_setting, file_path=file_path) ] ) else: return cls.extract(extract_setting=extract_setting, file_path=file_path) ``` This code ensures that any `'\r\n'` sequences in the extracted content are replaced with `'\n'`, maintaining compatibility with the default delimiter settings <sup>[[1]](https://github.com/langgenius/dify/blob/main/api/core/rag/extractor/extract_processor.py)</sup>. <!-- Dosu Comment Footer --> *To continue talking to [Dosu](https://dosu.dev), mention @dosu.* --- <sup>Help Dosu learn! Give it feedback: [Great Response](https://app.dosu.dev/response-feedback/3ed3a757-cb91-47af-8ea7-01d52ed040cd?feedback_type=great_response) | [Irrelevant Answer](https://app.dosu.dev/response-feedback/3ed3a757-cb91-47af-8ea7-01d52ed040cd?feedback_type=irrelevant_answer) | [Incorrect Sources](https://app.dosu.dev/response-feedback/3ed3a757-cb91-47af-8ea7-01d52ed040cd?feedback_type=incorrect_sources) | [Too Verbose](https://app.dosu.dev/response-feedback/3ed3a757-cb91-47af-8ea7-01d52ed040cd?feedback_type=too_verbose) | [Hallucination](https://app.dosu.dev/response-feedback/3ed3a757-cb91-47af-8ea7-01d52ed040cd?feedback_type=hallucination) | [Bug Report](https://app.dosu.dev/response-feedback/3ed3a757-cb91-47af-8ea7-01d52ed040cd?feedback_type=bug_report) | [Other](https://app.dosu.dev/response-feedback/3ed3a757-cb91-47af-8ea7-01d52ed040cd?feedback_type=other)</sup>
Author
Owner

@liaoweiguo commented on GitHub (May 12, 2025):

Thx

@liaoweiguo commented on GitHub (May 12, 2025): Thx
Author
Owner

@crazywoola commented on GitHub (May 12, 2025):

Image

I think you can modify this directly in the UI.

@crazywoola commented on GitHub (May 12, 2025): <img width="586" alt="Image" src="https://github.com/user-attachments/assets/87a2472d-035f-4d8a-b0ad-2eea7ebdea4b" /> I think you can modify this directly in the UI.
Author
Owner

@liaoweiguo commented on GitHub (May 13, 2025):

@dosu how to modify the default prompt for dify, provide a detailed description of different ways as chatbot chat flow

@liaoweiguo commented on GitHub (May 13, 2025): @dosu how to modify the default prompt for dify, provide a detailed description of different ways as chatbot chat flow
Author
Owner

@dosubot[bot] commented on GitHub (May 13, 2025):

To modify the default prompt for Dify in a chatbot chat flow, you can consider the following approaches:

  1. Edit the Pre Prompt: On the "Build App" page, click on "Pre Prompt" to edit your prompt. This allows you to define the AI's role, tone, and style. You can use the initial prompt templates provided by Dify in Expert Mode to customize the chatbot's behavior. For example, you can set the AI to act as a customer service representative, specify the type of questions it should answer, and instruct it to refuse to answer inappropriate questions.

    Example:

    Pre prompt: You are Bob, the AI customer service for Dify, specializing in answering questions about Dify's products, team, or LLMOps for users. Please note, refuse to answer when users ask "inappropriate questions", i.e., content beyond the scope of this document.
    
  2. Utilize Initial Prompt Templates: Dify provides initial templates for building conversational and text generation applications using chat models. These templates include structures for context, pre-prompt, query variables, and conversation history. You can select a template that best fits your application needs and customize it further.

    Example Template Structure:

    Use the following context as your learned knowledge, inside <context></context> XML tags.
    
    <context>
    {{#context#}}
    </context>
    
    When answering the user:
    - If you don't know, just say that you don't know.
    - If you are not sure, ask for clarification.
    Avoid mentioning that you obtained the information from the context.
    And answer according to the language of the user's question.
    {{pre_prompt}}
    
  3. Set Up Opening Remarks: Use the "Add Feature" option to create an opening line for the AI. This greeting is presented when a user opens the chat, helping to establish a friendly interaction.

    Example:

    Opening remarks: Hey `{{User_name}}`, I'm Bob, the first AI member of Dify. You can discuss with me any questions related to Dify products, team, and even LLMOps.
    
  4. Next Question Suggestion: Enable the "Next Question Suggestion" feature to guide users on what to ask next, enhancing the flow of conversation.

  5. Direct Code Modification: Locate the file or module where the default prompt is defined. Update the prompt text to your desired default message. Ensure that any changes are consistent with the rest of the codebase to avoid errors.

  6. Configuration File: Check if the chatbot uses a configuration file (e.g., YAML, JSON) to store settings, including the default prompt. Modify the prompt value in this file.

  7. Environment Variables: Some systems allow configuration through environment variables. Set the environment variable with the new prompt text.

  8. Admin Interface or Dashboard: If the chatbot has an admin interface or dashboard, there might be an option to update the default prompt directly through the UI.

  9. Database Configuration: In some cases, the prompt might be stored in a database. Update it by accessing the database directly or through an admin panel.

  10. Custom Scripts or Plugins: If the chatbot supports plugins or custom scripts, create a script to set or update the default prompt dynamically.

By utilizing Dify's prompt engineering templates and customizing the pre-prompt and other features, you can create a tailored chatbot experience that meets specific user interaction requirements [1][2].

To continue talking to Dosu, mention @dosu.


Help Dosu learn! Give it feedback: Great Response | Irrelevant Answer | Incorrect Sources | Too Verbose | Hallucination | Bug Report | Other

@dosubot[bot] commented on GitHub (May 13, 2025): <!-- Answer --> To modify the default prompt for Dify in a chatbot chat flow, you can consider the following approaches: 1. **Edit the Pre Prompt**: On the "Build App" page, click on "Pre Prompt" to edit your prompt. This allows you to define the AI's role, tone, and style. You can use the initial prompt templates provided by Dify in **Expert Mode** to customize the chatbot's behavior. For example, you can set the AI to act as a customer service representative, specify the type of questions it should answer, and instruct it to refuse to answer inappropriate questions. Example: ```plaintext Pre prompt: You are Bob, the AI customer service for Dify, specializing in answering questions about Dify's products, team, or LLMOps for users. Please note, refuse to answer when users ask "inappropriate questions", i.e., content beyond the scope of this document. ``` 2. **Utilize Initial Prompt Templates**: Dify provides initial templates for building conversational and text generation applications using chat models. These templates include structures for context, pre-prompt, query variables, and conversation history. You can select a template that best fits your application needs and customize it further. Example Template Structure: ```plaintext Use the following context as your learned knowledge, inside <context></context> XML tags. <context> {{#context#}} </context> When answering the user: - If you don't know, just say that you don't know. - If you are not sure, ask for clarification. Avoid mentioning that you obtained the information from the context. And answer according to the language of the user's question. {{pre_prompt}} ``` 3. **Set Up Opening Remarks**: Use the "Add Feature" option to create an opening line for the AI. This greeting is presented when a user opens the chat, helping to establish a friendly interaction. Example: ```plaintext Opening remarks: Hey `{{User_name}}`, I'm Bob, the first AI member of Dify. You can discuss with me any questions related to Dify products, team, and even LLMOps. ``` 4. **Next Question Suggestion**: Enable the "Next Question Suggestion" feature to guide users on what to ask next, enhancing the flow of conversation. 5. **Direct Code Modification**: Locate the file or module where the default prompt is defined. Update the prompt text to your desired default message. Ensure that any changes are consistent with the rest of the codebase to avoid errors. 6. **Configuration File**: Check if the chatbot uses a configuration file (e.g., YAML, JSON) to store settings, including the default prompt. Modify the prompt value in this file. 7. **Environment Variables**: Some systems allow configuration through environment variables. Set the environment variable with the new prompt text. 8. **Admin Interface or Dashboard**: If the chatbot has an admin interface or dashboard, there might be an option to update the default prompt directly through the UI. 9. **Database Configuration**: In some cases, the prompt might be stored in a database. Update it by accessing the database directly or through an admin panel. 10. **Custom Scripts or Plugins**: If the chatbot supports plugins or custom scripts, create a script to set or update the default prompt dynamically. By utilizing Dify's prompt engineering templates and customizing the pre-prompt and other features, you can create a tailored chatbot experience that meets specific user interaction requirements <sup>[[1]](https://github.com/crazywoola/dify-docs-mintlify/blob/main/en/learn-more/use-cases/create-an-ai-chatbot-with-business-data-in-minutes.mdx)</sup><sup>[[2]](https://github.com/crazywoola/dify-docs-mintlify/blob/main/en/learn-more/prompt-engineering/prompt-engineering-1/prompt-engineering-template.mdx)</sup>. <!-- Dosu Comment Footer --> *To continue talking to [Dosu](https://dosu.dev), mention @dosu.* --- <sup>Help Dosu learn! Give it feedback: [Great Response](https://app.dosu.dev/response-feedback/ea3f02b3-03a8-41fc-9f2d-28a78ebb5d5e?feedback_type=great_response) | [Irrelevant Answer](https://app.dosu.dev/response-feedback/ea3f02b3-03a8-41fc-9f2d-28a78ebb5d5e?feedback_type=irrelevant_answer) | [Incorrect Sources](https://app.dosu.dev/response-feedback/ea3f02b3-03a8-41fc-9f2d-28a78ebb5d5e?feedback_type=incorrect_sources) | [Too Verbose](https://app.dosu.dev/response-feedback/ea3f02b3-03a8-41fc-9f2d-28a78ebb5d5e?feedback_type=too_verbose) | [Hallucination](https://app.dosu.dev/response-feedback/ea3f02b3-03a8-41fc-9f2d-28a78ebb5d5e?feedback_type=hallucination) | [Bug Report](https://app.dosu.dev/response-feedback/ea3f02b3-03a8-41fc-9f2d-28a78ebb5d5e?feedback_type=bug_report) | [Other](https://app.dosu.dev/response-feedback/ea3f02b3-03a8-41fc-9f2d-28a78ebb5d5e?feedback_type=other)</sup>
Author
Owner

@liaoweiguo commented on GitHub (May 13, 2025):

@dosu while build app, the default 'Knowledge Retrieval' block always call a chatgpt 3.5 model, how to modify to a local model

@liaoweiguo commented on GitHub (May 13, 2025): @dosu while build app, the default 'Knowledge Retrieval' block always call a chatgpt 3.5 model, how to modify to a local model
Author
Owner

@dosubot[bot] commented on GitHub (May 13, 2025):

To modify the default 'Knowledge Retrieval' block to use a local model instead of the ChatGPT 3.5 model, you need to update the model configuration in the useConfig function. Specifically, adjust the handleModelChanged function to set the provider and model name to your local model's details:

const handleModelChanged = useCallback((model: { provider: string; modelId: string; mode?: string }) => {
  const newInputs = produce(inputRef.current, (draft) => {
    if (!draft.single_retrieval_config) {
      draft.single_retrieval_config = {
        model: {
          provider: '',
          name: '',
          mode: '',
          completion_params: {},
        },
      }
    }
    const draftModel = draft.single_retrieval_config?.model
    draftModel.provider = 'localProvider' // Set your local provider name here
    draftModel.name = 'localModelId' // Set your local model ID here
    draftModel.mode = model.mode!
  })
  setInputs(newInputs)
}, [setInputs])

Replace 'localProvider' and 'localModelId' with the actual provider name and model ID of your local model. This will configure the 'Knowledge Retrieval' block to use your specified local model [1].

To continue talking to Dosu, mention @dosu.


Help Dosu learn! Give it feedback: Great Response | Irrelevant Answer | Incorrect Sources | Too Verbose | Hallucination | Bug Report | Other

@dosubot[bot] commented on GitHub (May 13, 2025): <!-- Answer --> To modify the default 'Knowledge Retrieval' block to use a local model instead of the ChatGPT 3.5 model, you need to update the model configuration in the `useConfig` function. Specifically, adjust the `handleModelChanged` function to set the provider and model name to your local model's details: ```javascript const handleModelChanged = useCallback((model: { provider: string; modelId: string; mode?: string }) => { const newInputs = produce(inputRef.current, (draft) => { if (!draft.single_retrieval_config) { draft.single_retrieval_config = { model: { provider: '', name: '', mode: '', completion_params: {}, }, } } const draftModel = draft.single_retrieval_config?.model draftModel.provider = 'localProvider' // Set your local provider name here draftModel.name = 'localModelId' // Set your local model ID here draftModel.mode = model.mode! }) setInputs(newInputs) }, [setInputs]) ``` Replace `'localProvider'` and `'localModelId'` with the actual provider name and model ID of your local model. This will configure the 'Knowledge Retrieval' block to use your specified local model <sup>[[1]](https://github.com/langgenius/dify/blob/main/web/app/components/workflow/nodes/knowledge-retrieval/use-config.ts)</sup>. <!-- Dosu Comment Footer --> *To continue talking to [Dosu](https://dosu.dev), mention @dosu.* --- <sup>Help Dosu learn! Give it feedback: [Great Response](https://app.dosu.dev/response-feedback/914f683d-abdc-4d01-bad1-ff4cc9648f6f?feedback_type=great_response) | [Irrelevant Answer](https://app.dosu.dev/response-feedback/914f683d-abdc-4d01-bad1-ff4cc9648f6f?feedback_type=irrelevant_answer) | [Incorrect Sources](https://app.dosu.dev/response-feedback/914f683d-abdc-4d01-bad1-ff4cc9648f6f?feedback_type=incorrect_sources) | [Too Verbose](https://app.dosu.dev/response-feedback/914f683d-abdc-4d01-bad1-ff4cc9648f6f?feedback_type=too_verbose) | [Hallucination](https://app.dosu.dev/response-feedback/914f683d-abdc-4d01-bad1-ff4cc9648f6f?feedback_type=hallucination) | [Bug Report](https://app.dosu.dev/response-feedback/914f683d-abdc-4d01-bad1-ff4cc9648f6f?feedback_type=bug_report) | [Other](https://app.dosu.dev/response-feedback/914f683d-abdc-4d01-bad1-ff4cc9648f6f?feedback_type=other)</sup>
Author
Owner

@liaoweiguo commented on GitHub (May 13, 2025):

@dosu If CREATE APP with "Create from Blank", how to modify the prompt

@liaoweiguo commented on GitHub (May 13, 2025): @dosu If CREATE APP with "Create from Blank", how to modify the prompt
Author
Owner

@dosubot[bot] commented on GitHub (May 13, 2025):

To modify the prompt when creating an app with "Create from Blank" in Dify, you can follow these steps:

  1. Edit Configuration Files: The default prompt settings are influenced by configuration files such as DEFAULT_CHAT_PROMPT_CONFIG and DEFAULT_COMPLETION_PROMPT_CONFIG. These are imported from the @/config module. You can modify these configurations to change the initial state of the prompt when creating a new app [1].

  2. Advanced Prompt Templates: You can also modify specific configurations in the advanced_prompt_templates.py file, which includes CHAT_APP_COMPLETION_PROMPT_CONFIG, CHAT_APP_CHAT_PROMPT_CONFIG, COMPLETION_APP_CHAT_PROMPT_CONFIG, and COMPLETION_APP_COMPLETION_PROMPT_CONFIG. These templates define the structure and content of prompts, including roles and stop sequences, which can be customized to suit your needs [2].

  3. YAML Configuration: Dify allows for prompt customization through a declarative approach using YAML files. You can describe prompts, context, and plugins in a single YAML file, which can be used to create either a single API or a WebApp. This approach provides flexibility in defining the prompt structure and content [3][4][5].

By adjusting these configurations and templates, you can tailor the default prompt to better fit your application's requirements when using the "Create from Blank" feature.

To continue talking to Dosu, mention @dosu.


Help Dosu learn! Give it feedback: Great Response | Irrelevant Answer | Incorrect Sources | Too Verbose | Hallucination | Bug Report | Other

@dosubot[bot] commented on GitHub (May 13, 2025): <!-- Answer --> To modify the prompt when creating an app with "Create from Blank" in Dify, you can follow these steps: 1. **Edit Configuration Files**: The default prompt settings are influenced by configuration files such as `DEFAULT_CHAT_PROMPT_CONFIG` and `DEFAULT_COMPLETION_PROMPT_CONFIG`. These are imported from the `@/config` module. You can modify these configurations to change the initial state of the prompt when creating a new app <sup>[[1]](https://github.com/langgenius/dify/blob/main/web/app/components/app/configuration/hooks/use-advanced-prompt-config.ts)</sup>. 2. **Advanced Prompt Templates**: You can also modify specific configurations in the `advanced_prompt_templates.py` file, which includes `CHAT_APP_COMPLETION_PROMPT_CONFIG`, `CHAT_APP_CHAT_PROMPT_CONFIG`, `COMPLETION_APP_CHAT_PROMPT_CONFIG`, and `COMPLETION_APP_COMPLETION_PROMPT_CONFIG`. These templates define the structure and content of prompts, including roles and stop sequences, which can be customized to suit your needs <sup>[[2]](https://github.com/langgenius/dify/blob/main/api/core/prompt/prompt_templates/advanced_prompt_templates.py)</sup>. 3. **YAML Configuration**: Dify allows for prompt customization through a declarative approach using YAML files. You can describe prompts, context, and plugins in a single YAML file, which can be used to create either a single API or a WebApp. This approach provides flexibility in defining the prompt structure and content <sup>[[3]](https://github.com/crazywoola/dify-docs-mintlify/blob/main/en/learn-more/use-cases/create-a-midjourney-prompt-bot-with-dify.mdx)</sup><sup>[[4]](https://github.com/crazywoola/dify-docs-mintlify/blob/main/ja-jp/learn-more/use-cases/create-a-midjoureny-prompt-word-robot-with-zero-code.mdx)</sup><sup>[[5]](https://github.com/crazywoola/dify-docs-mintlify/blob/main/en/features/datasets/prompt-engineering.mdx)</sup>. By adjusting these configurations and templates, you can tailor the default prompt to better fit your application's requirements when using the "Create from Blank" feature. <!-- Dosu Comment Footer --> *To continue talking to [Dosu](https://dosu.dev), mention @dosu.* --- <sup>Help Dosu learn! Give it feedback: [Great Response](https://app.dosu.dev/response-feedback/fbda5216-24aa-41ef-a27e-a0b7e60a07a5?feedback_type=great_response) | [Irrelevant Answer](https://app.dosu.dev/response-feedback/fbda5216-24aa-41ef-a27e-a0b7e60a07a5?feedback_type=irrelevant_answer) | [Incorrect Sources](https://app.dosu.dev/response-feedback/fbda5216-24aa-41ef-a27e-a0b7e60a07a5?feedback_type=incorrect_sources) | [Too Verbose](https://app.dosu.dev/response-feedback/fbda5216-24aa-41ef-a27e-a0b7e60a07a5?feedback_type=too_verbose) | [Hallucination](https://app.dosu.dev/response-feedback/fbda5216-24aa-41ef-a27e-a0b7e60a07a5?feedback_type=hallucination) | [Bug Report](https://app.dosu.dev/response-feedback/fbda5216-24aa-41ef-a27e-a0b7e60a07a5?feedback_type=bug_report) | [Other](https://app.dosu.dev/response-feedback/fbda5216-24aa-41ef-a27e-a0b7e60a07a5?feedback_type=other)</sup>
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: langgenius/dify#13802