Skip to content

Commit 10d1e8e

Browse files
Merge remote-tracking branch 'upstream/v2' into PR/fix-6
2 parents 90211af + f75a527 commit 10d1e8e

61 files changed

Lines changed: 391 additions & 407 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

apps/application/chat_pipeline/step/chat_step/impl/base_chat_step.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,8 @@ def event_content(response,
150150
all_text = 'Exception:' + str(e)
151151
write_context(step, manage, 0, 0, all_text)
152152
post_response_handler.handler(chat_id, chat_record_id, paragraph_list, problem_text,
153-
all_text, manage, step, padding_problem_text, reasoning_content='')
153+
all_text, manage, step, padding_problem_text,
154+
reasoning_content=reasoning_content if reasoning_content_enable else '')
154155
if not manage.debug:
155156
add_access_num(chat_user_id, chat_user_type, manage.context.get('application_id'))
156157
yield manage.get_base_to_response().to_stream_chunk_response(chat_id, str(chat_record_id), 'ai-chat-node',
@@ -214,8 +215,13 @@ def execute(self, message_list: List[BaseMessage],
214215

215216
def get_details(self, manage, **kwargs):
216217
# 提取长期记忆
217-
extract_long_term_memory.delay(
218-
manage.context.get('workspace_id'), manage.context.get('application_id'), manage.context.get('chat_user_id')
218+
extract_long_term_memory.apply_async(
219+
args=(
220+
manage.context.get('workspace_id'),
221+
manage.context.get('application_id'),
222+
manage.context.get('chat_user_id'),
223+
),
224+
countdown=1,
219225
)
220226
return {
221227
'status': self.status,
@@ -387,6 +393,7 @@ def get_stream_result(self, message_list: List[BaseMessage],
387393
if isinstance(msg, SystemMessage):
388394
if isinstance(msg.content, str):
389395
user_system_prompt = msg.content.replace('{memory}', memory)
396+
msg.content = user_system_prompt
390397
elif isinstance(msg.content, list):
391398
user_system_prompt = ''.join(
392399
item.get('text', '') if isinstance(item, dict) else str(item)

apps/application/flow/compare/__init__.py

Lines changed: 67 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -6,31 +6,78 @@
66
@date:2024/6/7 14:43
77
@desc:
88
"""
9+
from typing import List
910

10-
from .contain_compare import *
11+
from .contain_compare import ContainCompare
1112
from .end_with import EndWithCompare
12-
from .equal_compare import *
13-
from .ge_compare import *
14-
from .gt_compare import *
15-
from .is_not_null_compare import *
13+
from .equal_compare import EqualCompare
14+
from .ge_compare import GECompare
15+
from .gt_compare import GTCompare
16+
from .is_not_null_compare import IsNotNullCompare
1617
from .is_not_true import IsNotTrueCompare
17-
from .is_null_compare import *
18+
from .is_null_compare import IsNullCompare
1819
from .is_true import IsTrueCompare
19-
from .le_compare import *
20-
from .len_equal_compare import *
21-
from .len_ge_compare import *
22-
from .len_gt_compare import *
23-
from .len_le_compare import *
24-
from .len_lt_compare import *
25-
from .lt_compare import *
26-
from .not_contain_compare import *
27-
from .not_equal_compare import *
20+
from .le_compare import LECompare
21+
from .len_equal_compare import LenEqualCompare
22+
from .len_ge_compare import LenGECompare
23+
from .len_gt_compare import LenGTCompare
24+
from .len_le_compare import LenLECompare
25+
from .len_lt_compare import LenLTCompare
26+
from .lt_compare import LTCompare
27+
from .not_contain_compare import NotContainCompare
28+
from .not_equal_compare import NotEqualCompare
2829
from .regex_compare import RegexCompare
2930
from .start_with import StartWithCompare
3031
from .wildcard_compare import WildcardCompare
3132

32-
compare_handle_list = [GECompare(), GTCompare(), ContainCompare(), EqualCompare(), LTCompare(), LECompare(),
33-
LenLECompare(), LenGECompare(), LenEqualCompare(), LenGTCompare(), LenLTCompare(),
34-
IsNullCompare(),
35-
IsNotNullCompare(), NotContainCompare(), NotEqualCompare(), IsTrueCompare(), IsNotTrueCompare(), StartWithCompare(),
36-
EndWithCompare(), RegexCompare(), WildcardCompare()]
33+
_compare_handler_dict = {
34+
'is_null': IsNullCompare(),
35+
'is_not_null': IsNotNullCompare(),
36+
'contain': ContainCompare(),
37+
'not_contain': NotContainCompare(),
38+
'eq': EqualCompare(),
39+
'not_eq': NotEqualCompare(),
40+
'ge': GECompare(),
41+
'gt': GTCompare(),
42+
'le': LECompare(),
43+
'lt': LTCompare(),
44+
'len_eq': LenEqualCompare(),
45+
'len_ge': LenGECompare(),
46+
'len_gt': LenGTCompare(),
47+
'len_le': LenLECompare(),
48+
'len_lt': LenLTCompare(),
49+
'is_true': IsTrueCompare(),
50+
'is_not_true': IsNotTrueCompare(),
51+
'start_with': StartWithCompare(),
52+
'end_with': EndWithCompare(),
53+
'regex': RegexCompare(),
54+
'wildcard': WildcardCompare(),
55+
}
56+
57+
58+
def _compare(source_value, compare, target_value):
59+
compare_handler = _compare_handler_dict.get(compare)
60+
if compare_handler is None:
61+
raise RuntimeError(f"Unknown compare handler '{compare}'")
62+
return compare_handler.compare(source_value, compare, target_value)
63+
64+
65+
def _assertion(workflow_manage, field_list: List[str], compare: str, value):
66+
try:
67+
value = workflow_manage.generate_prompt(value)
68+
except Exception:
69+
pass
70+
field_value = None
71+
try:
72+
field_value = workflow_manage.get_reference_field(field_list[0], field_list[1:])
73+
except Exception:
74+
pass
75+
return _compare(field_value, compare, value)
76+
77+
78+
def do_assertion(workflow_manage, condition, condition_list):
79+
b = False if condition == 'and' else True
80+
for row in condition_list:
81+
if _assertion(workflow_manage, row.get('field'), row.get('compare'), row.get('value')) is b:
82+
return b
83+
return not b

apps/application/flow/compare/compare.py

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,8 @@
77
@desc:
88
"""
99
from abc import abstractmethod
10-
from typing import List
11-
1210

1311
class Compare:
14-
@abstractmethod
15-
def support(self, node_id, fields: List[str], source_value, compare, target_value):
16-
pass
1712

1813
@abstractmethod
1914
def compare(self, source_value, compare, target_value):

apps/application/flow/compare/contain_compare.py

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,11 @@
66
@date:2024/6/11 10:02
77
@desc:
88
"""
9-
from typing import List
10-
11-
from application.flow.compare.compare import Compare
9+
from .compare import Compare
1210

1311

1412
class ContainCompare(Compare):
1513

16-
def support(self, node_id, fields: List[str], source_value, compare, target_value):
17-
if compare == 'contain':
18-
return True
19-
2014
def compare(self, source_value, compare, target_value):
2115
target_value = str(target_value)
2216

apps/application/flow/compare/end_with.py

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,11 @@
66
@date:2025/10/20 10:37
77
@desc:
88
"""
9-
from typing import List
10-
11-
from application.flow.compare import Compare
9+
from .compare import Compare
1210

1311

1412
class EndWithCompare(Compare):
1513

16-
def support(self, node_id, fields: List[str], source_value, compare, target_value):
17-
if compare == 'end_with':
18-
return True
19-
2014
def compare(self, source_value, compare, target_value):
2115
source_value = str(source_value)
2216
return source_value.endswith(str(target_value))

apps/application/flow/compare/equal_compare.py

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,10 @@
66
@date:2024/6/7 14:44
77
@desc:
88
"""
9-
from typing import List
10-
11-
from application.flow.compare import Compare
9+
from .compare import Compare
1210

1311

1412
class EqualCompare(Compare):
1513

16-
def support(self, node_id, fields: List[str], source_value, compare, target_value):
17-
if compare == 'eq':
18-
return True
19-
2014
def compare(self, source_value, compare, target_value):
2115
return str(source_value) == str(target_value)

apps/application/flow/compare/ge_compare.py

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,23 +6,17 @@
66
@date:2024/6/11 9:52
77
@desc: 大于比较器
88
"""
9-
from typing import List
10-
11-
from application.flow.compare import Compare
9+
from .compare import Compare
1210

1311

1412
class GECompare(Compare):
1513

16-
def support(self, node_id, fields: List[str], source_value, compare, target_value):
17-
if compare == 'ge':
18-
return True
19-
2014
def compare(self, source_value, compare, target_value):
2115
try:
2216
return float(source_value) >= float(target_value)
23-
except Exception as e:
17+
except Exception:
2418
try:
2519
return str(source_value) >= str(target_value)
26-
except Exception as _:
20+
except Exception:
2721
pass
2822
return False

apps/application/flow/compare/gt_compare.py

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,23 +6,17 @@
66
@date:2024/6/11 9:52
77
@desc: 大于比较器
88
"""
9-
from typing import List
10-
11-
from application.flow.compare import Compare
9+
from .compare import Compare
1210

1311

1412
class GTCompare(Compare):
1513

16-
def support(self, node_id, fields: List[str], source_value, compare, target_value):
17-
if compare == 'gt':
18-
return True
19-
2014
def compare(self, source_value, compare, target_value):
2115
try:
2216
return float(source_value) > float(target_value)
23-
except Exception as e:
17+
except Exception:
2418
try:
2519
return str(source_value) > str(target_value)
26-
except Exception as _:
20+
except Exception:
2721
pass
2822
return False

apps/application/flow/compare/is_not_null_compare.py

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,11 @@
66
@date:2024/6/28 10:45
77
@desc:
88
"""
9-
from typing import List
10-
11-
from application.flow.compare import Compare
9+
from .compare import Compare
1210

1311

1412
class IsNotNullCompare(Compare):
1513

16-
def support(self, node_id, fields: List[str], source_value, compare, target_value):
17-
if compare == 'is_not_null':
18-
return True
19-
2014
def compare(self, source_value, compare, target_value):
2115
try:
2216
return source_value is not None and len(source_value) > 0

apps/application/flow/compare/is_not_true.py

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,13 @@
66
@date:2025/4/7 13:44
77
@desc:
88
"""
9-
from typing import List
10-
11-
from application.flow.compare import Compare
9+
from .compare import Compare
1210

1311

1412
class IsNotTrueCompare(Compare):
1513

16-
def support(self, node_id, fields: List[str], source_value, compare, target_value):
17-
if compare == 'is_not_true':
18-
return True
19-
2014
def compare(self, source_value, compare, target_value):
2115
try:
2216
return source_value is False
23-
except Exception as e:
17+
except Exception:
2418
return False

0 commit comments

Comments
 (0)