Refactor workflow routing and greeting management in Brain classes
- Update WorkflowBrain to handle greeting playback more effectively, ensuring that the initial greeting completes before transitioning to the first node. - Introduce new methods for managing greeting states and conditions, enhancing the interaction flow for user turns. - Refactor WorkflowLLMRouter to improve routing logic and ensure proper handling of conditional paths. - Enhance tests to verify the correct behavior of greeting management and routing under various scenarios, including waiting for audio playback to finish. - Update frontend components to reflect changes in edge handling and improve user experience in workflow configurations.
This commit is contained in:
@@ -152,6 +152,20 @@ class WorkflowEngine:
|
||||
def greeting(self, store: DynamicVariableStore) -> str:
|
||||
return store.render(str(self.data(self.start_id).get("greeting") or ""))
|
||||
|
||||
def routing_prompt(self, node_id: str, store: DynamicVariableStore) -> str:
|
||||
"""Describe the current node to the small LLM edge router."""
|
||||
if self.node_type(node_id) == "agent":
|
||||
return self.prompt_for(node_id, store)
|
||||
data = self.data(node_id)
|
||||
details = (
|
||||
data.get("greeting")
|
||||
or data.get("message")
|
||||
or data.get("target")
|
||||
or ""
|
||||
)
|
||||
rendered = store.render(str(details)).strip()
|
||||
return f"{self.node_type(node_id) or 'workflow'} 节点:{rendered or self.name(node_id)}"
|
||||
|
||||
def expression_matches(self, expression: dict, values: dict[str, Any]) -> bool:
|
||||
results = []
|
||||
for rule in expression.get("rules") or []:
|
||||
|
||||
Reference in New Issue
Block a user