From 9938a4cbb67291bec26cd769df58238d8064d187 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A9=E6=B5=B7=E8=92=BC=E7=81=86?= Date: Wed, 4 Jun 2025 14:39:04 +0800 Subject: [PATCH] Feat: Allow update conversation parameters and persist to database in completion (#8039) ### What problem does this PR solve? This PR updates the completion function to allow parameter updates when a session_id exists. It also ensures changes are saved back to the database via API4ConversationService. ### Type of change - [x] New Feature (non-breaking change which adds functionality) --- api/db/services/canvas_service.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/api/db/services/canvas_service.py b/api/db/services/canvas_service.py index bca6a6be9..5d98878fc 100644 --- a/api/db/services/canvas_service.py +++ b/api/db/services/canvas_service.py @@ -173,6 +173,19 @@ def completion(tenant_id, agent_id, question, session_id=None, stream=True, **kw conv.reference = [] conv.reference.append({"chunks": [], "doc_aggs": []}) + kwargs_changed = False + if kwargs: + query = canvas.get_preset_param() + if query: + for ele in query: + if ele["key"] in kwargs: + if ele["value"] != kwargs[ele["key"]]: + ele["value"] = kwargs[ele["key"]] + kwargs_changed = True + if kwargs_changed: + conv.dsl = json.loads(str(canvas)) + API4ConversationService.update_by_id(session_id, {"dsl": conv.dsl}) + final_ans = {"reference": [], "content": ""} if stream: try: