瀏覽代碼

Feat(api): Add dsl parameters to control whether dsl fields are included (#5769)

1. **Issue**: When calling `list_agent_session` via the HTTP API, users
may only need to display conversation messages, and do not want to see
the associated dsl, which can be very large. Therefore, consider adding
a control option to determine whether the DSL should be returned, with
the default being to return it.

2. **Documentation Discrepancy**: In the HTTP API documentation, under
"List agent sessions," the "Response" section states that the "data"
field is a dictionary when "success" is returned. However, the actual
returned data is a list. This discrepancy has been corrected.
tags/v0.17.1
hy89 7 月之前
父節點
當前提交
66938e0b68
沒有連結到貢獻者的電子郵件帳戶。
共有 3 個檔案被更改,包括 16 行新增7 行删除
  1. 4
    1
      api/apps/sdk/session.py
  2. 6
    2
      api/db/services/api_service.py
  3. 6
    4
      docs/references/http_api_reference.md

+ 4
- 1
api/apps/sdk/session.py 查看文件

@@ -448,7 +448,10 @@ def list_agent_session(tenant_id, agent_id):
desc = False
else:
desc = True
convs = API4ConversationService.get_list(agent_id, tenant_id, page_number, items_per_page, orderby, desc, id, user_id)
# dsl defaults to True in all cases except for False and false
include_dsl = request.args.get("dsl") != "False" and request.args.get("dsl") != "false"
convs = API4ConversationService.get_list(agent_id, tenant_id, page_number, items_per_page, orderby, desc, id,
user_id, include_dsl)
if not convs:
return get_result(data=[])
for conv in convs:

+ 6
- 2
api/db/services/api_service.py 查看文件

@@ -43,8 +43,12 @@ class API4ConversationService(CommonService):
@DB.connection_context()
def get_list(cls, dialog_id, tenant_id,
page_number, items_per_page,
orderby, desc, id, user_id=None):
sessions = cls.model.select().where(cls.model.dialog_id == dialog_id)
orderby, desc, id, user_id=None, include_dsl=True):
if include_dsl:
sessions = cls.model.select().where(cls.model.dialog_id == dialog_id)
else:
fields = [field for field in cls.model._meta.fields.values() if field.name != 'dsl']
sessions = cls.model.select(*fields).where(cls.model.dialog_id == dialog_id)
if id:
sessions = sessions.where(cls.model.id == id)
if user_id:

+ 6
- 4
docs/references/http_api_reference.md 查看文件

@@ -2716,7 +2716,7 @@ Failure:

### List agent sessions

**GET** `/api/v1/agents/{agent_id}/sessions?page={page}&page_size={page_size}&orderby={orderby}&desc={desc}&id={session_id}&user_id={user_id}`
**GET** `/api/v1/agents/{agent_id}/sessions?page={page}&page_size={page_size}&orderby={orderby}&desc={desc}&id={session_id}&user_id={user_id}&dsl={dsl}`

Lists sessions associated with a specified agent.

@@ -2753,7 +2753,9 @@ curl --request GET \
The ID of the agent session to retrieve.
- `user_id`: (*Filter parameter*), `string`
The optional user-defined ID passed in when creating session.
- `dsl`: (*Filter parameter*), `boolean`
Indicates whether to include the dsl field of the sessions in the response. Defaults to `true`.

#### Response

Success:
@@ -2761,7 +2763,7 @@ Success:
```json
{
"code": 0,
"data": {
"data": [{
"agent_id": "e9e2b9c2b2f911ef801d0242ac120006",
"dsl": {
"answer": [],
@@ -2893,7 +2895,7 @@ Success:
],
"source": "agent",
"user_id": ""
}
}]
}
```


Loading…
取消
儲存