Skip to content

Commit b3e36ba

Browse files
committed
feat: AI dialogue nodes support historical chat history parameters
1 parent 7b3c1c7 commit b3e36ba

File tree

6 files changed

+17
-9
lines changed

6 files changed

+17
-9
lines changed

apps/application/flow/step_node/ai_chat_step_node/impl/base_chat_node.py

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
from langchain.schema import HumanMessage, SystemMessage
1818
from langchain_core.messages import BaseMessage, AIMessage
1919

20-
2120
from application.flow.i_step_node import NodeResult, INode
2221
from application.flow.step_node.ai_chat_step_node.i_chat_node import IChatNode
2322
from application.flow.tools import Reasoning, mcp_response_generator
@@ -91,7 +90,6 @@ def write_context_stream(node_variable: Dict, workflow_variable: Dict, node: INo
9190
_write_context(node_variable, workflow_variable, node, workflow, answer, reasoning_content)
9291

9392

94-
9593
def write_context(node_variable: Dict, workflow_variable: Dict, node: INode, workflow):
9694
"""
9795
写入上下文数据
@@ -194,12 +192,16 @@ def execute(self, model_id, system, prompt, dialogue_number, history_chat_record
194192
if stream:
195193
r = chat_model.stream(message_list)
196194
return NodeResult({'result': r, 'chat_model': chat_model, 'message_list': message_list,
197-
'history_message': history_message, 'question': question.content}, {},
195+
'history_message': [{'content': message.content, 'role': message.type} for message in
196+
(history_message if history_message is not None else [])],
197+
'question': question.content}, {},
198198
_write_context=write_context_stream)
199199
else:
200200
r = chat_model.invoke(message_list)
201201
return NodeResult({'result': r, 'chat_model': chat_model, 'message_list': message_list,
202-
'history_message': history_message, 'question': question.content}, {},
202+
'history_message': [{'content': message.content, 'role': message.type} for message in
203+
(history_message if history_message is not None else [])],
204+
'question': question.content}, {},
203205
_write_context=write_context)
204206

205207
def _handle_mcp_request(self, mcp_enable, tool_enable, mcp_source, mcp_servers, mcp_tool_id, mcp_tool_ids, tool_ids,
@@ -250,7 +252,9 @@ def _handle_mcp_request(self, mcp_enable, tool_enable, mcp_source, mcp_servers,
250252
r = mcp_response_generator(chat_model, message_list, json.dumps(mcp_servers_config), mcp_output_enable)
251253
return NodeResult(
252254
{'result': r, 'chat_model': chat_model, 'message_list': message_list,
253-
'history_message': history_message, 'question': question.content}, {},
255+
'history_message': [{'content': message.content, 'role': message.type} for message in
256+
(history_message if history_message is not None else [])],
257+
'question': question.content}, {},
254258
_write_context=write_context_stream)
255259

256260
return None
@@ -316,9 +320,7 @@ def get_details(self, index: int, **kwargs):
316320
"index": index,
317321
'run_time': self.context.get('run_time'),
318322
'system': self.context.get('system'),
319-
'history_message': [{'content': message.content, 'role': message.type} for message in
320-
(self.context.get('history_message') if self.context.get(
321-
'history_message') is not None else [])],
323+
'history_message': self.context.get('history_message'),
322324
'question': self.context.get('question'),
323325
'answer': self.context.get('answer'),
324326
'reasoning_content': self.context.get('reasoning_content'),

ui/src/locales/lang/en-US/views/application-workflow.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,7 @@ export default {
125125
},
126126
defaultPrompt: 'Known Information',
127127
think: 'Thinking Process',
128+
historyMessage: 'Historical chat records',
128129
},
129130
searchKnowledgeNode: {
130131
label: 'Knowledge Retrieval',

ui/src/locales/lang/zh-CN/views/application-workflow.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@ export default {
128128
},
129129
defaultPrompt: '已知信息',
130130
think: '思考过程',
131+
historyMessage: '历史聊天记录',
131132
},
132133
searchKnowledgeNode: {
133134
label: '知识库检索',

ui/src/locales/lang/zh-Hant/views/application-workflow.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,7 @@ export default {
126126
},
127127
defaultPrompt: '已知信息',
128128
think: '思考過程',
129+
historyMessage: '歷史聊天記錄',
129130
},
130131
searchKnowledgeNode: {
131132
label: '知識庫檢索',

ui/src/workflow/common/data.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,10 @@ export const aiChatNode = {
8282
label: t('views.applicationWorkflow.nodes.aiChatNode.think'),
8383
value: 'reasoning_content',
8484
},
85+
{
86+
label: t('views.applicationWorkflow.nodes.aiChatNode.historyMessage'),
87+
value: 'history_message',
88+
},
8589
],
8690
},
8791
},

ui/src/workflow/nodes/ai-chat-node/index.vue

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -463,7 +463,6 @@ const openGeneratePromptDialog = (modelId: string) => {
463463
}
464464
}
465465
const replace = (v: any) => {
466-
console.log(props.nodeModel.properties.node_data.model_setting)
467466
set(props.nodeModel.properties.node_data, 'system', v)
468467
}
469468
const openReasoningParamSettingDialog = () => {

0 commit comments

Comments
 (0)