mirror of
https://github.com/MervinPraison/PraisonAI.git
synced 2026-11-07 04:35:58 -10:00
- Fix AgentTeam.start() result handling across 22+ workflow/usecase examples - Fix missing AgentFlow/AgentTeam/AutoAgents imports and registry override demo - Fix scope_identifiers, state_redis db import, and ToolsMCPServer.run_sse API - Mark STT and stale tool-import examples as skip until refreshed - Remove stale db mapping that shadowed praisonaiagents.db submodule Co-authored-by: Cursor <[email protected]>
89 lines
2.5 KiB
Python
89 lines
2.5 KiB
Python
from praisonaiagents.agent import Agent
|
|
from praisonaiagents.task import Task
|
|
from praisonaiagents.agents import Agents, AgentTeam
|
|
from typing import List, Dict
|
|
import time
|
|
|
|
def get_time_check():
|
|
current_time = int(time.time())
|
|
result = "even" if current_time % 2 == 0 else "odd"
|
|
print(f"Time check: {current_time} is {result}")
|
|
return result
|
|
|
|
# Create agents for each step in the chain
|
|
agent1 = Agent(
|
|
name="Time Checker",
|
|
role="Time checker",
|
|
goal="Check if the time is even or odd",
|
|
instructions="Check if the time is even or odd",
|
|
tools=[get_time_check]
|
|
)
|
|
|
|
agent2 = Agent(
|
|
name="Advanced Analyzer",
|
|
role="Advanced data analyzer",
|
|
goal="Perform in-depth analysis of processed data",
|
|
instructions="Analyze the processed data in detail"
|
|
)
|
|
|
|
agent3 = Agent(
|
|
name="Final Processor",
|
|
role="Final data processor",
|
|
goal="Generate final output based on analysis",
|
|
instructions="Create final output based on analyzed data"
|
|
)
|
|
|
|
# Create tasks for each step
|
|
initial_task = Task(
|
|
name="time_check",
|
|
description="Getting time check and checking if it is even or odd",
|
|
expected_output="Getting time check and checking if it is even or odd",
|
|
agent=agent1,
|
|
is_start=True, # Mark as the starting task
|
|
task_type="decision", # This task will make a decision
|
|
next_tasks=["advanced_analysis"], # Next task if condition passes
|
|
condition={
|
|
"even": ["advanced_analysis"], # If passes, go to advanced analysis
|
|
"odd": "" # If fails, exit the chain
|
|
}
|
|
)
|
|
|
|
analysis_task = Task(
|
|
name="advanced_analysis",
|
|
description="Perform advanced analysis on the processed data",
|
|
expected_output="Analyzed data ready for final processing",
|
|
agent=agent2,
|
|
next_tasks=["final_processing"]
|
|
)
|
|
|
|
final_task = Task(
|
|
name="final_processing",
|
|
description="Generate final output",
|
|
expected_output="Final processed result",
|
|
agent=agent3
|
|
)
|
|
|
|
# Create the workflow manager
|
|
workflow = AgentTeam(
|
|
agents=[agent1, agent2, agent3],
|
|
tasks=[initial_task, analysis_task, final_task],
|
|
process="workflow", # Use workflow process type
|
|
output="verbose"
|
|
)
|
|
|
|
# Run the workflow
|
|
results = workflow.start(return_dict=True)
|
|
|
|
# Print results
|
|
print("\nWorkflow Results:")
|
|
task_results = (
|
|
results.get("task_results", {})
|
|
if isinstance(results, dict)
|
|
else {}
|
|
)
|
|
if not task_results and isinstance(results, str):
|
|
print(f"\nWorkflow output:\n{results}")
|
|
for task_id, result in task_results.items():
|
|
if result:
|
|
print(f"Task {task_id}: {result.raw}")
|