Explorar el Código

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.
tags/v0.17.1
hy89 hace 7 meses
padre
commit
8ba1e6c183
No account linked to committer's email address
Se han modificado 2 ficheros con 15 adiciones y 0 borrados
  1. 12
    0
      api/apps/sdk/session.py
  2. 3
    0
      docs/references/http_api_reference.md

+ 12
- 0
api/apps/sdk/session.py Ver fichero

@@ -365,6 +365,18 @@ def agent_completions(tenant_id, agent_id):
conv = API4ConversationService.query(id=req["session_id"], dialog_id=agent_id)
if not conv:
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:
req["question"] = ""
if req.get("stream", True):

+ 3
- 0
docs/references/http_api_reference.md Ver fichero

@@ -2513,6 +2513,7 @@ Asks a specified agent a question to start an AI-powered conversation.
- `"stream"`: `boolean`
- `"session_id"`: `string`
- `"user_id"`: `string`(optional)
- `"sync_dsl"`: `boolean` (optional)
- other parameters: `string`
##### Request example
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.
- `"user_id"`: (*Body parameter*), `string`
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*)
Parameters specified in the **Begin** component.


Cargando…
Cancelar
Guardar