dify icon indicating copy to clipboard operation
dify copied to clipboard

BUG: Errors produced by Answer nodes and IF nodes

Open Hisir0909 opened this issue 1 year ago • 5 comments

Self Checks

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

Dify version

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

Hisir0909 avatar Oct 21 '24 10:10 Hisir0909

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[bot] avatar Oct 21 '24 10:10 dosubot[bot]

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

crazywoola avatar Oct 21 '24 10:10 crazywoola

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

I'm trying it now.

Hisir0909 avatar Oct 21 '24 11:10 Hisir0909

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

crazywoola avatar Oct 21 '24 11:10 crazywoola

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

It still exists.😢

Hisir0909 avatar Oct 21 '24 11:10 Hisir0909

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[bot] avatar Dec 12 '24 16:12 dosubot[bot]

Hi, can you test #11544?

laipz8200 avatar Dec 12 '24 16:12 laipz8200

https://github.com/langgenius/dify/issues/11542#issuecomment-2540946671 image Adding an empty component here can temporarily avoid this issue.

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

GreenerZ avatar Dec 13 '24 09:12 GreenerZ

#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

yihong0618 avatar Dec 13 '24 09:12 yihong0618

#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

Hisir0909 avatar Dec 13 '24 09:12 Hisir0909

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

yihong0618 avatar Dec 13 '24 09:12 yihong0618

Referenc

https://github.com/langgenius/dify/pull/11646

yihong0618 avatar Dec 13 '24 15:12 yihong0618