mirror of
https://github.com/microsoft/agent-framework.git
synced 2026-06-16 21:04:09 +08:00
Python: Add declarative workflow runtime (#2815)
* Further support for declarative python workflows * Add tests. Clean up for typing and formatting * Improvements and cleanup * Typing cleanup. Improve docstrings * Proper code in docstrings * Fix malformed code-block directive in docstring * Remove dead links * PR feedback * Address PR feedback * Address PR feedback * Remove sl * Update devui frontend * More cleanup * Fix uv lock * Skip Py 3.14 tests as powerfx doesn't support it * Fix mypy error * Fix for tool calls * Removed stale docstring * Fix lint * Standardize on .NET namespaces. Revert DevUI changes (bring in later) * Implement remaining items for Python declarative support to match dotnet
This commit is contained in:
committed by
GitHub
Unverified
parent
b2893fbc00
commit
9c094573e8
@@ -0,0 +1,3 @@
|
||||
# Copyright (c) Microsoft. All rights reserved.
|
||||
|
||||
"""Declarative workflow sample for DevUI."""
|
||||
@@ -0,0 +1,25 @@
|
||||
# Copyright (c) Microsoft. All rights reserved.
|
||||
|
||||
"""
|
||||
Run the declarative workflow sample with DevUI.
|
||||
|
||||
Demonstrates conditional branching based on age input using YAML-defined workflow.
|
||||
"""
|
||||
|
||||
from pathlib import Path
|
||||
|
||||
from agent_framework.declarative import WorkflowFactory
|
||||
from agent_framework.devui import serve
|
||||
|
||||
factory = WorkflowFactory()
|
||||
workflow_path = Path(__file__).parent / "workflow.yaml"
|
||||
workflow = factory.create_workflow_from_yaml_path(workflow_path)
|
||||
|
||||
|
||||
def main():
|
||||
"""Run the declarative workflow with DevUI."""
|
||||
serve(entities=[workflow], auto_open=True)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -0,0 +1,64 @@
|
||||
name: conditional-workflow
|
||||
description: Demonstrates conditional branching based on user input
|
||||
|
||||
inputs:
|
||||
age:
|
||||
type: integer
|
||||
description: The user's age in years
|
||||
|
||||
actions:
|
||||
- kind: SetValue
|
||||
id: get_age
|
||||
displayName: Get user age
|
||||
path: turn.age
|
||||
value: =inputs.age
|
||||
|
||||
- kind: If
|
||||
id: check_age
|
||||
displayName: Check age category
|
||||
condition: =turn.age < 13
|
||||
then:
|
||||
- kind: SetValue
|
||||
path: turn.category
|
||||
value: child
|
||||
- kind: SendActivity
|
||||
activity:
|
||||
text: "Welcome, young one! Here are some fun activities for kids."
|
||||
else:
|
||||
- kind: If
|
||||
condition: =turn.age < 20
|
||||
then:
|
||||
- kind: SetValue
|
||||
path: turn.category
|
||||
value: teenager
|
||||
- kind: SendActivity
|
||||
activity:
|
||||
text: "Hey there! Check out these cool things for teens."
|
||||
else:
|
||||
- kind: If
|
||||
condition: =turn.age < 65
|
||||
then:
|
||||
- kind: SetValue
|
||||
path: turn.category
|
||||
value: adult
|
||||
- kind: SendActivity
|
||||
activity:
|
||||
text: "Welcome! Here are our professional services."
|
||||
else:
|
||||
- kind: SetValue
|
||||
path: turn.category
|
||||
value: senior
|
||||
- kind: SendActivity
|
||||
activity:
|
||||
text: "Welcome! Enjoy our senior member benefits."
|
||||
|
||||
- kind: SendActivity
|
||||
id: summary
|
||||
displayName: Send category summary
|
||||
activity:
|
||||
text: '=Concat("You have been categorized as: ", turn.category)'
|
||||
|
||||
- kind: SetValue
|
||||
id: set_output
|
||||
path: workflow.outputs.category
|
||||
value: =turn.category
|
||||
Reference in New Issue
Block a user