mirror of https://github.com/dapr/dapr-agents.git
updated cookbook notebooks to show sync and async with workflow monitoring
This commit is contained in:
parent
41f234ca33
commit
e8d96e186d
|
|
@ -1,6 +1,7 @@
|
|||
import logging
|
||||
|
||||
from dapr_agents.workflow import WorkflowApp, workflow, task
|
||||
from dapr_agents.types import DaprWorkflowContext
|
||||
import logging
|
||||
|
||||
@workflow(name='random_workflow')
|
||||
def task_chain_workflow(ctx:DaprWorkflowContext, input: int):
|
||||
|
|
@ -32,6 +33,6 @@ if __name__ == '__main__':
|
|||
|
||||
wfapp = WorkflowApp()
|
||||
|
||||
results = wfapp.run_and_monitor_workflow(task_chain_workflow, input=10)
|
||||
results = wfapp.run_and_monitor_workflow_sync(task_chain_workflow, input=10)
|
||||
|
||||
print(f"Results: {results}")
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
import asyncio
|
||||
import logging
|
||||
|
||||
from dapr_agents.workflow import WorkflowApp, workflow, task
|
||||
from dapr_agents.types import DaprWorkflowContext
|
||||
|
||||
@workflow(name="random_workflow")
|
||||
def task_chain_workflow(ctx: DaprWorkflowContext, input: int):
|
||||
result1 = yield ctx.call_activity(step1, input=input)
|
||||
result2 = yield ctx.call_activity(step2, input=result1)
|
||||
result3 = yield ctx.call_activity(step3, input=result2)
|
||||
return [result1, result2, result3]
|
||||
|
||||
@task
|
||||
def step1(activity_input: int) -> int:
|
||||
print(f"Step 1: Received input: {activity_input}.")
|
||||
return activity_input + 1
|
||||
|
||||
@task
|
||||
def step2(activity_input: int) -> int:
|
||||
print(f"Step 2: Received input: {activity_input}.")
|
||||
return activity_input * 2
|
||||
|
||||
@task
|
||||
def step3(activity_input: int) -> int:
|
||||
print(f"Step 3: Received input: {activity_input}.")
|
||||
return activity_input ^ 2
|
||||
|
||||
async def main():
|
||||
logging.basicConfig(level=logging.INFO)
|
||||
wfapp = WorkflowApp()
|
||||
|
||||
result = await wfapp.run_and_monitor_workflow_async(
|
||||
task_chain_workflow,
|
||||
input=10
|
||||
)
|
||||
print(f"Results: {result}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
asyncio.run(main())
|
||||
|
|
@ -31,5 +31,5 @@ if __name__ == '__main__':
|
|||
wfapp = WorkflowApp()
|
||||
|
||||
# Run workflow
|
||||
results = wfapp.run_and_monitor_workflow(task_chain_workflow)
|
||||
results = wfapp.run_and_monitor_workflow_sync(task_chain_workflow)
|
||||
print(results)
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
import asyncio
|
||||
import logging
|
||||
|
||||
from dapr_agents.workflow import WorkflowApp, workflow, task
|
||||
from dapr_agents.types import DaprWorkflowContext
|
||||
from dotenv import load_dotenv
|
||||
|
||||
# Define Workflow logic
|
||||
@workflow(name='lotr_workflow')
|
||||
def task_chain_workflow(ctx: DaprWorkflowContext):
|
||||
result1 = yield ctx.call_activity(get_character)
|
||||
result2 = yield ctx.call_activity(get_line, input={"character": result1})
|
||||
return result2
|
||||
|
||||
@task(description="""
|
||||
Pick a random character from The Lord of the Rings\n
|
||||
and respond with the character's name ONLY
|
||||
""")
|
||||
def get_character() -> str:
|
||||
pass
|
||||
|
||||
@task(description="What is a famous line by {character}",)
|
||||
def get_line(character: str) -> str:
|
||||
pass
|
||||
|
||||
async def main():
|
||||
logging.basicConfig(level=logging.INFO)
|
||||
|
||||
# Load environment variables
|
||||
load_dotenv()
|
||||
|
||||
# Initialize the WorkflowApp
|
||||
wfapp = WorkflowApp()
|
||||
|
||||
# Run workflow
|
||||
result = await wfapp.run_and_monitor_workflow_async(task_chain_workflow)
|
||||
print(f"Results: {result}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
asyncio.run(main())
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
import logging
|
||||
from dapr_agents.workflow import WorkflowApp, workflow, task
|
||||
from dapr_agents.types import DaprWorkflowContext
|
||||
from pydantic import BaseModel
|
||||
from dotenv import load_dotenv
|
||||
import logging
|
||||
|
||||
@workflow
|
||||
def question(ctx:DaprWorkflowContext, input:int):
|
||||
|
|
@ -25,5 +25,9 @@ if __name__ == '__main__':
|
|||
|
||||
wfapp = WorkflowApp()
|
||||
|
||||
results = wfapp.run_and_monitor_workflow(workflow=question, input="Scooby Doo")
|
||||
results = wfapp.run_and_monitor_workflow_sync(
|
||||
workflow=question,
|
||||
input="Scooby Doo"
|
||||
)
|
||||
|
||||
print(results)
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
import asyncio
|
||||
import logging
|
||||
|
||||
from dapr_agents.workflow import WorkflowApp, workflow, task
|
||||
from dapr_agents.types import DaprWorkflowContext
|
||||
from pydantic import BaseModel
|
||||
from dotenv import load_dotenv
|
||||
|
||||
@workflow
|
||||
def question(ctx:DaprWorkflowContext, input:int):
|
||||
step1 = yield ctx.call_activity(ask, input=input)
|
||||
return step1
|
||||
|
||||
class Dog(BaseModel):
|
||||
name: str
|
||||
bio: str
|
||||
breed: str
|
||||
|
||||
@task("Who was {name}?")
|
||||
def ask(name:str) -> Dog:
|
||||
pass
|
||||
|
||||
async def main():
|
||||
logging.basicConfig(level=logging.INFO)
|
||||
|
||||
# Load environment variables
|
||||
load_dotenv()
|
||||
|
||||
# Initialize the WorkflowApp
|
||||
wfapp = WorkflowApp()
|
||||
|
||||
# Run workflow
|
||||
result = await wfapp.run_and_monitor_workflow_async(
|
||||
workflow=question,
|
||||
input="Scooby Doo"
|
||||
)
|
||||
print(f"Results: {result}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
asyncio.run(main())
|
||||
|
|
@ -358,4 +358,4 @@ if __name__ == '__main__':
|
|||
raise ValueError("PDF URL must be provided via CLI or config file.")
|
||||
|
||||
# Run the workflow
|
||||
wfapp.run_and_monitor_workflow(workflow=doc2podcast, input=user_input)
|
||||
wfapp.run_and_monitor_workflow_sync(workflow=doc2podcast, input=user_input)
|
||||
|
|
@ -54,7 +54,7 @@ if __name__ == '__main__':
|
|||
|
||||
wfapp = WorkflowApp()
|
||||
|
||||
results = wfapp.run_and_monitor_workflow(workflow=test_workflow)
|
||||
results = wfapp.run_and_monitor_workflow_sync(workflow=test_workflow)
|
||||
|
||||
logging.info("Workflow results: %s", results)
|
||||
logging.info("Workflow completed successfully.")
|
||||
Loading…
Reference in New Issue