fix(api): allow canvas_type in agent create and update APIs (#15201)

### What problem does this PR solve?

Creating or updating an agent via `POST /api/v1/agents` and `PUT
/api/v1/agents/{agent_id}` did not persist `canvas_type` because the
handler `req` dict never assigned the field before
`UserCanvasService.save` / `update_by_id`.


### Type of change

- [x] Bug Fix (non-breaking change which fixes an issue)
- [ ] New Feature (non-breaking change which adds functionality)
- [ ] Documentation Update
- [ ] Refactoring
- [ ] Performance Improvement
- [ ] Other (please describe):

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
天海蒼灆
2026-05-26 11:31:46 +08:00
committed by GitHub
parent 3dbd874a79
commit 0d2a17254c
3 changed files with 27 additions and 2 deletions

View File

@@ -257,19 +257,35 @@ class RAGFlow:
return Agent(self, res["data"])
raise Exception(res["message"])
def create_agent(self, title: str, dsl: dict, description: str | None = None) -> None:
def create_agent(
self,
title: str,
dsl: dict,
description: str | None = None,
canvas_type: str | None = None,
) -> None:
req = {"title": title, "dsl": dsl}
if description is not None:
req["description"] = description
if canvas_type is not None:
req["canvas_type"] = canvas_type
res = self.post("/agents", req)
res = res.json()
if res.get("code") != 0:
raise Exception(res["message"])
def update_agent(self, agent_id: str, title: str | None = None, description: str | None = None, dsl: dict | None = None) -> None:
def update_agent(
self,
agent_id: str,
title: str | None = None,
description: str | None = None,
dsl: dict | None = None,
canvas_type: str | None = None,
) -> None:
req = {}
if title is not None:
@@ -281,6 +297,9 @@ class RAGFlow:
if dsl is not None:
req["dsl"] = dsl
if canvas_type is not None:
req["canvas_type"] = canvas_type
res = self.put(f"/agents/{agent_id}", req)
res = res.json()