feat: 工作流画布支持草稿试运行(target=draft 执行当前草稿图)
This commit is contained in:
1 parent
3384f2e51c
commit
222595d6c4
7 files changed
+198
-32
No files matched your search
+11
-5
@@ -131,6 +131,7 @@ class _AgentInvocation:
|
||||
response_schema: dict[str, Any],
|
||||
thread_mode: str,
|
||||
failure_code: str,
|
||||
model_name: str = "",
|
||||
) -> NodeResult:
|
||||
run_agent = require_dep(ctx.deps.run_agent, node=node, what="智能体执行")
|
||||
coalescer = _DeltaCoalescer(ctx, node.id)
|
||||
@@ -176,6 +177,7 @@ class _AgentInvocation:
|
||||
prompt=prompt,
|
||||
skill_names=skill_names,
|
||||
thread_mode=thread_mode,
|
||||
model_name=model_name or None,
|
||||
cancel=ctx.cancel,
|
||||
on_delta=on_delta,
|
||||
on_tool=on_tool,
|
||||
@@ -251,9 +253,10 @@ class _AgentInvocation:
|
||||
|
||||
class AgentNodeExecutor(_AgentInvocation):
|
||||
async def execute(self, node: WorkflowNode, ctx: RunContext) -> NodeResult:
|
||||
agent_id = str(node.config.get("agentId") or node.config.get("agent_id") or "")
|
||||
if not agent_id:
|
||||
raise WorkflowError("WORKFLOW_AGENT_FAILED", "智能体节点未选择智能体", node_id=node.id)
|
||||
# Empty agentId falls back to the runtime's built-in default agent —
|
||||
# canvas nodes may only pick a model and a prompt.
|
||||
agent_id = str(node.config.get("agentId") or node.config.get("agent_id") or "") or "default"
|
||||
model_name = str(node.config.get("modelName") or node.config.get("model_name") or "")
|
||||
template = str(node.config.get("promptTemplate") or node.config.get("prompt_template") or "")
|
||||
prompt = render_template(template, ctx.state()).strip()
|
||||
if not prompt:
|
||||
@@ -264,6 +267,7 @@ class AgentNodeExecutor(_AgentInvocation):
|
||||
ctx,
|
||||
agent_id=agent_id,
|
||||
prompt=prompt,
|
||||
model_name=model_name,
|
||||
skill_names=[str(s) for s in (node.config.get("skillNames") or node.config.get("skill_names") or [])],
|
||||
response_mode=str(node.config.get("responseMode") or node.config.get("response_mode") or "text"),
|
||||
response_schema=schema if isinstance(schema, dict) else {},
|
||||
@@ -285,9 +289,10 @@ class SkillNodeExecutor(_AgentInvocation):
|
||||
node_id=node.id,
|
||||
details={"mode": mode},
|
||||
)
|
||||
agent_id = str(node.config.get("agentId") or node.config.get("agent_id") or "")
|
||||
agent_id = str(node.config.get("agentId") or node.config.get("agent_id") or "") or "default"
|
||||
model_name = str(node.config.get("modelName") or node.config.get("model_name") or "")
|
||||
skill_names = [str(s) for s in (node.config.get("skillNames") or node.config.get("skill_names") or [])]
|
||||
if not agent_id or not skill_names:
|
||||
if not skill_names:
|
||||
raise WorkflowError("WORKFLOW_SKILL_FAILED", "技能节点需要同时指定智能体与技能", node_id=node.id)
|
||||
template = str(node.config.get("promptTemplate") or node.config.get("prompt_template") or "")
|
||||
prompt = render_template(template, ctx.state()).strip() or f"请使用技能 {skill_names[0]} 完成任务。"
|
||||
@@ -296,6 +301,7 @@ class SkillNodeExecutor(_AgentInvocation):
|
||||
ctx,
|
||||
agent_id=agent_id,
|
||||
prompt=prompt,
|
||||
model_name=model_name,
|
||||
skill_names=skill_names,
|
||||
response_mode="text",
|
||||
response_schema={},
|
||||
|
||||
Reference in new issue
Block a user