Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

BUG: Errors produced by Answer nodes and IF nodes #9560

Open
5 tasks done
Hisir0909 opened this issue Oct 21, 2024 · 12 comments · Fixed by #9640
Open
5 tasks done

BUG: Errors produced by Answer nodes and IF nodes #9560

Hisir0909 opened this issue Oct 21, 2024 · 12 comments · Fixed by #9640
Assignees
Labels
🐞 bug Something isn't working

Comments

@Hisir0909
Copy link
Contributor

Hisir0909 commented Oct 21, 2024

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 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.

Dify version

0.11.0 / 0.10.0 / 0.10.0-beta2 / 0.9.2

Cloud or Self Hosted

Self Hosted (Docker)

Steps to reproduce

  1. This is the wrong screenshot.:

image

  1. The ELIF1 template node didn't execute, but the ELIF answer was outputted.:

image

  1. Below is my ChatFlow's DSL file.
app:
  description: ''
  icon: 🤖
  icon_background: '#FFEAD5'
  mode: advanced-chat
  name: '111'
  use_icon_as_answer_icon: false
kind: app
version: 0.1.2
workflow:
  conversation_variables:
  - description: ''
    id: 583cb21a-80ab-4c11-8eb1-e09281747aef
    name: dic
    value: ''
    value_type: string
  - description: ''
    id: 8fe5d4b4-a493-4a1f-85a3-a8842cd90a38
    name: token
    value: ''
    value_type: string
  - description: ''
    id: de8a2f8b-79fe-4d21-abea-570eee2f2ae2
    name: is_first
    value: 'True'
    value_type: string
  environment_variables: []
  features:
    file_upload:
      allowed_file_extensions:
      - .JPG
      - .JPEG
      - .PNG
      - .GIF
      - .WEBP
      - .SVG
      allowed_file_types:
      - image
      allowed_file_upload_methods:
      - local_file
      - remote_url
      enabled: false
      image:
        enabled: false
        number_limits: 3
        transfer_methods:
        - local_file
        - remote_url
      number_limits: 3
    opening_statement: ''
    retriever_resource:
      enabled: true
    sensitive_word_avoidance:
      enabled: false
    speech_to_text:
      enabled: false
    suggested_questions: []
    suggested_questions_after_answer:
      enabled: false
    text_to_speech:
      enabled: false
      language: ''
      voice: ''
  graph:
    edges:
    - data:
        isInIteration: false
        sourceType: if-else
        targetType: answer
      id: 1729502294483-true-answer-target
      source: '1729502294483'
      sourceHandle: 'true'
      target: answer
      targetHandle: target
      type: custom
      zIndex: 0
    - data:
        isInIteration: false
        sourceType: start
        targetType: if-else
      id: 1729502254427-source-1729502770085-target
      source: '1729502254427'
      sourceHandle: source
      target: '1729502770085'
      targetHandle: target
      type: custom
      zIndex: 0
    - data:
        isInIteration: false
        sourceType: if-else
        targetType: template-transform
      id: 1729502770085-true-1729504399874-target
      source: '1729502770085'
      sourceHandle: 'true'
      target: '1729504399874'
      targetHandle: target
      type: custom
      zIndex: 0
    - data:
        isInIteration: false
        sourceType: template-transform
        targetType: if-else
      id: 1729504399874-source-1729504411588-target
      source: '1729504399874'
      sourceHandle: source
      target: '1729504411588'
      targetHandle: target
      type: custom
      zIndex: 0
    - data:
        isInIteration: false
        sourceType: if-else
        targetType: template-transform
      id: 1729502770085-false-1729504464329-target
      source: '1729502770085'
      sourceHandle: 'false'
      target: '1729504464329'
      targetHandle: target
      type: custom
      zIndex: 0
    - data:
        isInIteration: false
        sourceType: template-transform
        targetType: assigner
      id: 1729504464329-source-1729504520147-target
      source: '1729504464329'
      sourceHandle: source
      target: '1729504520147'
      targetHandle: target
      type: custom
      zIndex: 0
    - data:
        isInIteration: false
        sourceType: if-else
        targetType: template-transform
      id: 1729504411588-false-1729504630229-target
      source: '1729504411588'
      sourceHandle: 'false'
      target: '1729504630229'
      targetHandle: target
      type: custom
      zIndex: 0
    - data:
        isInIteration: false
        sourceType: assigner
        targetType: template-transform
      id: 1729504520147-source-1729504630229-target
      source: '1729504520147'
      sourceHandle: source
      target: '1729504630229'
      targetHandle: target
      type: custom
      zIndex: 0
    - data:
        isInIteration: false
        sourceType: if-else
        targetType: if-else
      id: 1729504411588-true-1729502294483-target
      source: '1729504411588'
      sourceHandle: 'true'
      target: '1729502294483'
      targetHandle: target
      type: custom
      zIndex: 0
    - data:
        isInIteration: false
        sourceType: assigner
        targetType: if-else
      id: 1729504563978-source-1729502294483-target
      source: '1729504563978'
      sourceHandle: source
      target: '1729502294483'
      targetHandle: target
      type: custom
      zIndex: 0
    - data:
        isInIteration: false
        sourceType: if-else
        targetType: template-transform
      id: 1729502294483-0ed3cdc3-bc23-4adb-b57c-0fe9af3a579f-1729506714081-target
      source: '1729502294483'
      sourceHandle: 0ed3cdc3-bc23-4adb-b57c-0fe9af3a579f
      target: '1729506714081'
      targetHandle: target
      type: custom
      zIndex: 0
    - data:
        isInIteration: false
        sourceType: template-transform
        targetType: answer
      id: 1729506714081-source-1729502319083-target
      source: '1729506714081'
      sourceHandle: source
      target: '1729502319083'
      targetHandle: target
      type: custom
      zIndex: 0
    - data:
        isInIteration: false
        sourceType: if-else
        targetType: template-transform
      id: 1729502294483-false-1729506731473-target
      source: '1729502294483'
      sourceHandle: 'false'
      target: '1729506731473'
      targetHandle: target
      type: custom
      zIndex: 0
    - data:
        isInIteration: false
        sourceType: template-transform
        targetType: answer
      id: 1729506731473-source-1729502309450-target
      source: '1729506731473'
      sourceHandle: source
      target: '1729502309450'
      targetHandle: target
      type: custom
      zIndex: 0
    - data:
        isInIteration: false
        sourceType: template-transform
        targetType: assigner
      id: 1729504630229-source-1729504563978-target
      source: '1729504630229'
      sourceHandle: source
      target: '1729504563978'
      targetHandle: target
      type: custom
      zIndex: 0
    - data:
        isInIteration: false
        sourceType: if-else
        targetType: template-transform
      id: 1729502294483-7168f49c-982e-4e98-9e98-03958f31a4bc-1729507033350-target
      source: '1729502294483'
      sourceHandle: 7168f49c-982e-4e98-9e98-03958f31a4bc
      target: '1729507033350'
      targetHandle: target
      type: custom
      zIndex: 0
    - data:
        isInIteration: false
        sourceType: template-transform
        targetType: answer
      id: 1729507033350-source-1729507059519-target
      source: '1729507033350'
      sourceHandle: source
      target: '1729507059519'
      targetHandle: target
      type: custom
      zIndex: 0
    nodes:
    - data:
        desc: ''
        selected: false
        title: 开始
        type: start
        variables: []
      height: 54
      id: '1729502254427'
      position:
        x: -459.7505019130671
        y: 215.89131870774037
      positionAbsolute:
        x: -459.7505019130671
        y: 215.89131870774037
      selected: false
      sourcePosition: right
      targetPosition: left
      type: custom
      width: 244
    - data:
        answer: "\nIF: \n"
        desc: ''
        selected: false
        title: IF
        type: answer
        variables: []
      height: 100
      id: answer
      position:
        x: 717.9242034335198
        y: 123.6178681818638
      positionAbsolute:
        x: 717.9242034335198
        y: 123.6178681818638
      selected: false
      sourcePosition: right
      targetPosition: left
      type: custom
      width: 244
    - data:
        cases:
        - case_id: 'true'
          conditions:
          - comparison_operator: contains
            id: 2e881def-629a-406e-b774-c714092ab1cc
            value: 'True'
            varType: string
            variable_selector:
            - conversation
            - is_first
          id: 'true'
          logical_operator: and
        - case_id: 0ed3cdc3-bc23-4adb-b57c-0fe9af3a579f
          conditions:
          - comparison_operator: start with
            id: daf05a31-4a12-476d-936d-8017e9480497
            value: /
            varType: string
            variable_selector:
            - sys
            - query
          id: 0ed3cdc3-bc23-4adb-b57c-0fe9af3a579f
          logical_operator: and
        - case_id: 7168f49c-982e-4e98-9e98-03958f31a4bc
          conditions:
          - comparison_operator: start with
            id: c1e73d03-daf5-4cd0-b484-924e3217d640
            value: a
            varType: string
            variable_selector:
            - sys
            - query
          logical_operator: and
        desc: ''
        selected: false
        title: 条件分支
        type: if-else
      height: 222
      id: '1729502294483'
      position:
        x: 437.0053656957343
        y: 268.1020906963547
      positionAbsolute:
        x: 437.0053656957343
        y: 268.1020906963547
      selected: false
      sourcePosition: right
      targetPosition: left
      type: custom
      width: 244
    - data:
        answer: '

          Else:

          {{#1729506731473.output#}}

          '
        desc: ''
        selected: false
        title: ELse
        type: answer
        variables: []
      height: 103
      id: '1729502309450'
      position:
        x: 975.6351748008005
        y: 529.790737143086
      positionAbsolute:
        x: 975.6351748008005
        y: 529.790737143086
      selected: false
      sourcePosition: right
      targetPosition: left
      type: custom
      width: 244
    - data:
        answer: "\nELIF1: \n{{#1729506714081.output#}}\n"
        desc: ''
        selected: false
        title: ELIF
        type: answer
        variables: []
      height: 103
      id: '1729502319083'
      position:
        x: 980.92420343352
        y: 291.81385056019053
      positionAbsolute:
        x: 980.92420343352
        y: 291.81385056019053
      selected: false
      sourcePosition: right
      targetPosition: left
      type: custom
      width: 244
    - data:
        cases:
        - case_id: 'true'
          conditions:
          - comparison_operator: not empty
            id: 0b3e781c-dd68-4ba8-883b-77aaa3d292ec
            value: ''
            varType: string
            variable_selector:
            - conversation
            - token
          id: 'true'
          logical_operator: and
        desc: ''
        selected: false
        title: Token is empty
        type: if-else
      height: 126
      id: '1729502770085'
      position:
        x: -459.7505019130671
        y: 282
      positionAbsolute:
        x: -459.7505019130671
        y: 282
      selected: false
      sourcePosition: right
      targetPosition: left
      type: custom
      width: 244
    - data:
        desc: ''
        selected: false
        template: Text
        title: STR(text)
        type: template-transform
        variables: []
      height: 54
      id: '1729504399874'
      position:
        x: -150.35486399762755
        y: 164.52451015310336
      positionAbsolute:
        x: -150.35486399762755
        y: 164.52451015310336
      selected: false
      sourcePosition: right
      targetPosition: left
      type: custom
      width: 244
    - data:
        cases:
        - case_id: 'true'
          conditions:
          - comparison_operator: contains
            id: 23e1724b-8583-4b18-90d7-03d849cc3a8c
            value: Text
            varType: string
            variable_selector:
            - '1729504399874'
            - output
          id: 'true'
          logical_operator: and
        desc: ''
        selected: false
        title: STR(Text)_is_Text
        type: if-else
      height: 126
      id: '1729504411588'
      position:
        x: -150.35486399762755
        y: 232.42521596775367
      positionAbsolute:
        x: -150.35486399762755
        y: 232.42521596775367
      selected: false
      sourcePosition: right
      targetPosition: left
      type: custom
      width: 244
    - data:
        desc: ''
        selected: false
        template: '12345'
        title: STR(12345)
        type: template-transform
        variables: []
      height: 54
      id: '1729504464329'
      position:
        x: -150.35486399762755
        y: 414.2400720958687
      positionAbsolute:
        x: -150.35486399762755
        y: 414.2400720958687
      selected: false
      sourcePosition: right
      targetPosition: left
      type: custom
      width: 244
    - data:
        assigned_variable_selector:
        - conversation
        - dic
        desc: ''
        input_variable_selector:
        - '1729504464329'
        - output
        selected: false
        title: set_DIC
        type: assigner
        write_mode: over-write
      height: 132
      id: '1729504520147'
      position:
        x: -150.35486399762755
        y: 488.3916166027999
      positionAbsolute:
        x: -150.35486399762755
        y: 488.3916166027999
      selected: false
      sourcePosition: right
      targetPosition: left
      type: custom
      width: 244
    - data:
        assigned_variable_selector:
        - conversation
        - token
        desc: ''
        input_variable_selector:
        - '1729504630229'
        - output
        selected: false
        title: setToken
        type: assigner
        write_mode: over-write
      height: 132
      id: '1729504563978'
      position:
        x: 148.48056769917014
        y: 483.7907371430862
      positionAbsolute:
        x: 148.48056769917014
        y: 483.7907371430862
      selected: false
      sourcePosition: right
      targetPosition: left
      type: custom
      width: 244
    - data:
        desc: ''
        selected: false
        template: Token
        title: STR(token)
        type: template-transform
        variables: []
      height: 54
      id: '1729504630229'
      position:
        x: 148.48056769917014
        y: 414.2400720958687
      positionAbsolute:
        x: 148.48056769917014
        y: 414.2400720958687
      selected: false
      sourcePosition: right
      targetPosition: left
      type: custom
      width: 244
    - data:
        desc: ''
        selected: true
        template: 执行了ELIF1的模板
        title: ELIF1
        type: template-transform
        variables: []
      height: 54
      id: '1729506714081'
      position:
        x: 717.9242034335198
        y: 291.81385056019053
      positionAbsolute:
        x: 717.9242034335198
        y: 291.81385056019053
      selected: true
      sourcePosition: right
      targetPosition: left
      type: custom
      width: 244
    - data:
        desc: ''
        selected: false
        template: 执行了ELSE的模板
        title: ELSE
        type: template-transform
        variables: []
      height: 54
      id: '1729506731473'
      position:
        x: 707.9242034335198
        y: 529.790737143086
      positionAbsolute:
        x: 707.9242034335198
        y: 529.790737143086
      selected: false
      sourcePosition: right
      targetPosition: left
      type: custom
      width: 244
    - data:
        desc: ''
        selected: false
        template: 执行了ELIF2的模板
        title: ELIF2
        type: template-transform
        variables: []
      height: 54
      id: '1729507033350'
      position:
        x: 707.9242034335198
        y: 407.5947989166603
      positionAbsolute:
        x: 707.9242034335198
        y: 407.5947989166603
      selected: false
      sourcePosition: right
      targetPosition: left
      type: custom
      width: 244
    - data:
        answer: '

          ELIF2:


          {{#1729507033350.output#}}'
        desc: ''
        selected: false
        title: 直接回复 4
        type: answer
        variables: []
      height: 103
      id: '1729507059519'
      position:
        x: 980.92420343352
        y: 407.5947989166603
      positionAbsolute:
        x: 980.92420343352
        y: 407.5947989166603
      selected: false
      sourcePosition: right
      targetPosition: left
      type: custom
      width: 244
    viewport:
      x: -410.9242034335248
      y: 29.88213181813518
      zoom: 1.000000000000006

✔️ Expected Behavior

According to the IF node configuration, only the IF Answer node should be output.

❌ Actual Behavior

Output the content of all Answer nodes in all branches directly (even if the preceding nodes have not been executed).

Copy link

dosubot bot commented Oct 21, 2024

The issue you're experiencing, where all Answer nodes are executed regardless of the preceding nodes' execution, might be related to how the conditions in your IF, ELIF, and ELSE nodes are evaluated or how the workflow is configured. Here are a few things to check and consider:

  1. Condition Evaluation: Ensure that the conditions set in your IF and ELIF nodes are correctly defined and that they logically lead to the expected path. Double-check the conditions and logical operators (AND/OR) to ensure they are set up as intended [1][2].

  2. Node Connections: Verify that the connections between nodes are correctly established. Each node should be connected in a way that reflects the intended flow of logic. Misconfigured connections might lead to unexpected execution paths.

  3. Variable Values: Check the initial values and types of the conversation variables used in the conditions. Ensure they are correctly initialized and updated throughout the workflow. Incorrect variable values might cause conditions to evaluate unexpectedly [3].

  4. Template-Transform Node: If you're using template-transform nodes, ensure that they are correctly processing and transforming data before it reaches the IF or ELIF nodes. Incorrect transformations might affect the condition evaluations [4].

  5. Debugging and Logs: Utilize Dify's debugging and logging features to trace the execution path of your workflow. This can help identify where the logic might be failing or where unexpected executions occur [5].

If these checks do not resolve the issue, it might be beneficial to simplify the workflow to isolate the problem or to review the specific logic in the DSL file for any discrepancies.

To continue talking to Dosu, mention @dosu.

@dosubot dosubot bot added the 🐞 bug Something isn't working label Oct 21, 2024
@crazywoola
Copy link
Member

Not sure if this is existed in latest version. We just released the 0.10.0

@Hisir0909
Copy link
Contributor Author

Hisir0909 commented Oct 21, 2024

Not sure if this is existed in latest version. We just released the 0.10.0不确定最新版本中是否存在此问题。我们刚刚发布了 0.10.0

I'm trying it now.

@crazywoola
Copy link
Member

If this still persists, please update the version in this thread, we will take a look at it later.

@Hisir0909
Copy link
Contributor Author

If this still persists, please update the version in this thread, we will take a look at it later.

It still exists.😢

Copy link

dosubot bot commented Dec 12, 2024

Hi, @Hisir0909. I'm Dosu, and I'm helping the Dify team manage their backlog. I'm marking this issue as stale.

Issue Summary

  • You reported an issue with Answer and IF nodes in a self-hosted Dify setup using Docker.
  • The ELIF1 template node did not execute as expected, but the ELIF answer was still outputted.
  • I suggested troubleshooting steps, including checking condition evaluations and node connections.
  • Crazywoola mentioned version 0.10.0 and asked if the issue persists; you confirmed it still exists after updating.

Next Steps

  • Please let us know if this issue is still relevant to the latest version of the Dify repository. If so, you can keep the discussion open by commenting here.
  • Otherwise, this issue will be automatically closed in 15 days.

Thank you for your understanding and contribution!

@dosubot dosubot bot added the stale Issue has not had recent activity or appears to be solved. Stale issues will be automatically closed label Dec 12, 2024
@laipz8200
Copy link
Member

Hi, can you test #11544?

@dosubot dosubot bot removed the stale Issue has not had recent activity or appears to be solved. Stale issues will be automatically closed label Dec 12, 2024
@GreenerZ
Copy link

GreenerZ commented Dec 13, 2024

#11542 (comment)
image
Adding an empty component here can temporarily avoid this issue.

Do not apply #11544, this is a PR for another bug.

@yihong0618
Copy link
Contributor

#11542 (comment) image Adding an empty component here can temporarily avoid this issue.

Do not apply #11544, this is a PR for another bug.

yes this is for another bug

@Hisir0909
Copy link
Contributor Author

#11542 (comment) image Adding an empty component here can temporarily avoid this issue.在这里添加一个空组件可以暂时避免这个问题。

Do not apply #11544, this is a PR for another bug.不要应用 #11544 ,这是针对另一个错误的 PR。

Yes, I know it

@yihong0618
Copy link
Contributor

yihong0618 commented Dec 13, 2024

will figure out why maybe these days
this is very interesting.

@yihong0618
Copy link
Contributor

Referenc

#11646

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🐞 bug Something isn't working
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants