Skip to content

Commit c098e0f

Browse files
committed
fix: add chat_id parameter to MCP request handling functions
1 parent 0949854 commit c098e0f

File tree

3 files changed

+24
-18
lines changed

3 files changed

+24
-18
lines changed

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

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,8 @@ def reset_message_list(message_list: List[BaseMessage], answer_text):
228228
return result
229229

230230
def _handle_mcp_request(self, mcp_source, mcp_servers, mcp_tool_ids, tool_ids,
231-
application_ids, skill_tool_ids, mcp_output_enable, chat_model, message_list, agent_id):
231+
application_ids, skill_tool_ids, mcp_output_enable, chat_model, message_list, agent_id,
232+
chat_id):
232233

233234
mcp_servers_config = {}
234235

@@ -314,8 +315,10 @@ def _handle_mcp_request(self, mcp_source, mcp_servers, mcp_tool_ids, tool_ids,
314315
if len(mcp_servers_config) > 0:
315316
source_id = agent_id
316317
source_type = 'APPLICATION'
317-
return mcp_response_generator(chat_model, message_list, json.dumps(mcp_servers_config), mcp_output_enable,
318-
tool_init_params, source_id, source_type)
318+
return mcp_response_generator(
319+
chat_model, message_list, json.dumps(mcp_servers_config), mcp_output_enable,
320+
tool_init_params, source_id, source_type, chat_id
321+
)
319322

320323
return None
321324

@@ -331,7 +334,8 @@ def get_stream_result(self, message_list: List[BaseMessage],
331334
application_ids=None,
332335
skill_tool_ids=None,
333336
mcp_output_enable=True,
334-
agent_id=None
337+
agent_id=None,
338+
chat_id=None
335339
):
336340
if paragraph_list is None:
337341
paragraph_list = []
@@ -352,7 +356,7 @@ def get_stream_result(self, message_list: List[BaseMessage],
352356
mcp_result = self._handle_mcp_request(
353357
mcp_source, mcp_servers, mcp_tool_ids, tool_ids,
354358
application_ids, skill_tool_ids, mcp_output_enable, chat_model,
355-
message_list, agent_id
359+
message_list, agent_id, chat_id
356360
)
357361
if mcp_result:
358362
return mcp_result, True
@@ -380,7 +384,8 @@ def execute_stream(self, message_list: List[BaseMessage],
380384
no_references_setting, problem_text, mcp_tool_ids,
381385
mcp_servers, mcp_source, tool_ids,
382386
application_ids, skill_tool_ids,
383-
mcp_output_enable, manage.context.get('application_id'))
387+
mcp_output_enable, manage.context.get('application_id'),
388+
chat_id)
384389
chat_record_id = self.context.get('step_args', {}).get('chat_record_id') if self.context.get('step_args',
385390
{}).get(
386391
'chat_record_id') else uuid.uuid7()
@@ -406,7 +411,8 @@ def get_block_result(self, message_list: List[BaseMessage],
406411
application_ids=None,
407412
skill_tool_ids=None,
408413
mcp_output_enable=True,
409-
application_id=None
414+
application_id=None,
415+
chat_id=None
410416
):
411417
if paragraph_list is None:
412418
paragraph_list = []
@@ -426,7 +432,7 @@ def get_block_result(self, message_list: List[BaseMessage],
426432
mcp_result = self._handle_mcp_request(
427433
mcp_source, mcp_servers, mcp_tool_ids, tool_ids,
428434
application_ids, skill_tool_ids, mcp_output_enable,
429-
chat_model, message_list, application_id
435+
chat_model, message_list, application_id, chat_id
430436
)
431437
if mcp_result:
432438
return mcp_result, True
@@ -461,7 +467,8 @@ def execute_block(self, message_list: List[BaseMessage],
461467
no_references_setting, problem_text,
462468
mcp_tool_ids, mcp_servers, mcp_source,
463469
tool_ids, application_ids, skill_tool_ids,
464-
mcp_output_enable, manage.context.get('application_id'))
470+
mcp_output_enable, manage.context.get('application_id'),
471+
chat_id)
465472
if is_ai_chat:
466473
request_token = chat_model.get_num_tokens_from_messages(message_list)
467474
response_token = chat_model.get_num_tokens(chat_result.content)

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

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,17 +12,16 @@
1212
from functools import reduce
1313
from typing import List, Dict
1414

15-
from django.db.models import QuerySet
16-
from django.utils.translation import gettext as _
17-
from langchain_core.messages import BaseMessage, AIMessage, HumanMessage, SystemMessage
18-
1915
from application.flow.i_step_node import NodeResult, INode
2016
from application.flow.step_node.ai_chat_step_node.i_chat_node import IChatNode
2117
from application.flow.tools import Reasoning, mcp_response_generator
2218
from application.models import Application, ApplicationApiKey, ApplicationAccessToken
2319
from common.exception.app_exception import AppApiException
2420
from common.utils.rsa_util import rsa_long_decrypt
2521
from common.utils.tool_code import ToolExecutor
22+
from django.db.models import QuerySet
23+
from django.utils.translation import gettext as _
24+
from langchain_core.messages import BaseMessage, AIMessage, HumanMessage, SystemMessage
2625
from models_provider.models import Model
2726
from models_provider.tools import get_model_credential, get_model_instance_by_model_workspace_id
2827
from tools.models import Tool
@@ -189,7 +188,7 @@ def execute(self, model_id, system, prompt, dialogue_number, history_chat_record
189188
mcp_result = self._handle_mcp_request(
190189
mcp_source, mcp_servers, mcp_tool_id, mcp_tool_ids, tool_ids,
191190
application_ids, skill_tool_ids, mcp_output_enable,
192-
chat_model, message_list, history_message, question
191+
chat_model, message_list, history_message, question, chat_id
193192
)
194193
if mcp_result:
195194
return mcp_result
@@ -209,7 +208,7 @@ def execute(self, model_id, system, prompt, dialogue_number, history_chat_record
209208

210209
def _handle_mcp_request(self, mcp_source, mcp_servers, mcp_tool_id, mcp_tool_ids, tool_ids,
211210
application_ids, skill_tool_ids,
212-
mcp_output_enable, chat_model, message_list, history_message, question):
211+
mcp_output_enable, chat_model, message_list, history_message, question, chat_id):
213212

214213
mcp_servers_config = {}
215214

@@ -306,7 +305,7 @@ def _handle_mcp_request(self, mcp_source, mcp_servers, mcp_tool_id, mcp_tool_ids
306305
source_id = application_id or knowledge_id
307306
source_type = 'APPLICATION' if application_id else 'KNOWLEDGE'
308307
r = mcp_response_generator(chat_model, message_list, json.dumps(mcp_servers_config), mcp_output_enable,
309-
tool_init_params, source_id, source_type)
308+
tool_init_params, source_id, source_type, chat_id)
310309
return NodeResult(
311310
{'result': r, 'chat_model': chat_model, 'message_list': message_list,
312311
'history_message': [{'content': message.content, 'role': message.type} for message in

apps/application/flow/tools.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -525,12 +525,12 @@ async def save_tool_record(tool_id, tool_info, tool_result, source_id, source_ty
525525

526526

527527
def mcp_response_generator(chat_model, message_list, mcp_servers, mcp_output_enable=True, tool_init_params={},
528-
source_id=None, source_type=None):
528+
source_id=None, source_type=None, chat_id=None):
529529
"""使用全局事件循环,不创建新实例"""
530530
result_queue = queue.Queue()
531531
loop = get_global_loop() # 使用共享循环
532532
# 创建临时文件夹
533-
temp_dir = tempfile.mkdtemp(dir='/tmp')
533+
temp_dir = os.path.join('/tmp', chat_id[:8])
534534
skills_dir = os.path.join(temp_dir, 'skills')
535535
os.makedirs(skills_dir, exist_ok=True)
536536

0 commit comments

Comments
 (0)