mirror of
https://git.mirrors.martin98.com/https://github.com/infiniflow/ragflow.git
synced 2025-08-15 17:55:58 +08:00
Feat: add sync_dsl
parameter to support synchronizing modifications to existing sessions (#5843)
When accessing the /api/v1/agents/{agent_id}/completions API, sessions created before agent modifications retain the old DSL data. To use the latest agent configuration (like new prompts) in historical sessions, I added the sync_dsl parameter. It defaults to False to maintain existing behavior and only synchronizes when set to True. If needed, a manual synchronization API can be created to trigger the sync explicitly.
This commit is contained in:
parent
d4f84f0b54
commit
8ba1e6c183
@ -365,6 +365,18 @@ def agent_completions(tenant_id, agent_id):
|
|||||||
conv = API4ConversationService.query(id=req["session_id"], dialog_id=agent_id)
|
conv = API4ConversationService.query(id=req["session_id"], dialog_id=agent_id)
|
||||||
if not conv:
|
if not conv:
|
||||||
return get_error_data_result(f"You don't own the session {req['session_id']}")
|
return get_error_data_result(f"You don't own the session {req['session_id']}")
|
||||||
|
# If an update to UserCanvas is detected, update the API4Conversation.dsl
|
||||||
|
sync_dsl = req.get("sync_dsl", False)
|
||||||
|
if sync_dsl is True and cvs[0].update_time > conv[0].update_time:
|
||||||
|
current_dsl = conv[0].dsl
|
||||||
|
new_dsl = json.loads(dsl)
|
||||||
|
state_fields = ["history", "messages", "path", "reference"]
|
||||||
|
states = {field: current_dsl.get(field, []) for field in state_fields}
|
||||||
|
current_dsl.update(new_dsl)
|
||||||
|
current_dsl.update(states)
|
||||||
|
API4ConversationService.update_by_id(req["session_id"], {
|
||||||
|
"dsl": current_dsl
|
||||||
|
})
|
||||||
else:
|
else:
|
||||||
req["question"] = ""
|
req["question"] = ""
|
||||||
if req.get("stream", True):
|
if req.get("stream", True):
|
||||||
|
@ -2513,6 +2513,7 @@ Asks a specified agent a question to start an AI-powered conversation.
|
|||||||
- `"stream"`: `boolean`
|
- `"stream"`: `boolean`
|
||||||
- `"session_id"`: `string`
|
- `"session_id"`: `string`
|
||||||
- `"user_id"`: `string`(optional)
|
- `"user_id"`: `string`(optional)
|
||||||
|
- `"sync_dsl"`: `boolean` (optional)
|
||||||
- other parameters: `string`
|
- other parameters: `string`
|
||||||
##### Request example
|
##### Request example
|
||||||
If the **Begin** component does not take parameters, the following code will create a session.
|
If the **Begin** component does not take parameters, the following code will create a session.
|
||||||
@ -2565,6 +2566,8 @@ curl --request POST \
|
|||||||
The ID of the session. If it is not provided, a new session will be generated.
|
The ID of the session. If it is not provided, a new session will be generated.
|
||||||
- `"user_id"`: (*Body parameter*), `string`
|
- `"user_id"`: (*Body parameter*), `string`
|
||||||
The optional user-defined ID. Valid *only* when no `session_id` is provided.
|
The optional user-defined ID. Valid *only* when no `session_id` is provided.
|
||||||
|
- `"sync_dsl"`: (*Body parameter*), `boolean`
|
||||||
|
Whether to synchronize the changes to existing sessions when an agent is modified, defaults to `false`.
|
||||||
- Other parameters: (*Body Parameter*)
|
- Other parameters: (*Body Parameter*)
|
||||||
Parameters specified in the **Begin** component.
|
Parameters specified in the **Begin** component.
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user