mirror of
https://github.com/MervinPraison/PraisonAI.git
synced 2026-11-11 03:31:27 -10:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d3f6eb4096 | ||
|
|
c691b0a4c0 |
No files matched your search
@@ -16,7 +16,7 @@ RUN mkdir -p /root/.praison
|
||||
# Install Python packages (using latest versions)
|
||||
RUN pip install --no-cache-dir \
|
||||
praisonai_tools \
|
||||
"praisonai>=3.5.0" \
|
||||
"praisonai>=3.5.2" \
|
||||
"praisonai[chat]" \
|
||||
"embedchain[github,youtube]"
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ RUN mkdir -p /root/.praison
|
||||
# Install Python packages (using latest versions)
|
||||
RUN pip install --no-cache-dir \
|
||||
praisonai_tools \
|
||||
"praisonai>=3.5.0" \
|
||||
"praisonai>=3.5.2" \
|
||||
"praisonai[ui]" \
|
||||
"praisonai[chat]" \
|
||||
"praisonai[realtime]" \
|
||||
|
||||
@@ -16,7 +16,7 @@ RUN mkdir -p /root/.praison
|
||||
# Install Python packages (using latest versions)
|
||||
RUN pip install --no-cache-dir \
|
||||
praisonai_tools \
|
||||
"praisonai>=3.5.0" \
|
||||
"praisonai>=3.5.2" \
|
||||
"praisonai[ui]" \
|
||||
"praisonai[crewai]"
|
||||
|
||||
|
||||
@@ -17,9 +17,7 @@ manager_agent = Agent(
|
||||
goal="Coordinate hierarchical task execution and manage team workflow",
|
||||
backstory="Experienced manager who excels at breaking down complex projects and coordinating teams",
|
||||
tools=[internet_search],
|
||||
allow_delegation=True,
|
||||
verbose=True
|
||||
)
|
||||
allow_delegation=True)
|
||||
|
||||
# Create specialist agent for execution
|
||||
research_agent = Agent(
|
||||
@@ -27,9 +25,7 @@ research_agent = Agent(
|
||||
role="Market Research Analyst",
|
||||
goal="Conduct thorough market research and analysis",
|
||||
backstory="Expert researcher skilled in market analysis and competitive intelligence",
|
||||
tools=[internet_search],
|
||||
verbose=True
|
||||
)
|
||||
tools=[internet_search])
|
||||
|
||||
# Hierarchical task structure
|
||||
planning_task = Task(
|
||||
@@ -61,8 +57,7 @@ execution_task = Task(
|
||||
agents_system = Agents(
|
||||
agents=[manager_agent, research_agent],
|
||||
tasks=[planning_task, execution_task],
|
||||
process="sequential",
|
||||
verbose=True
|
||||
process="sequential", output="verbose"
|
||||
)
|
||||
|
||||
print("Starting hierarchical agent generation...")
|
||||
|
||||
@@ -87,8 +87,7 @@ def demonstrate_code_agent():
|
||||
workflow = Agents(
|
||||
agents=[code_writer, code_reviewer, code_executor],
|
||||
tasks=[write_task, review_task, execute_task],
|
||||
process="sequential",
|
||||
verbose=True
|
||||
process="sequential", output="verbose"
|
||||
)
|
||||
|
||||
# Run the workflow
|
||||
|
||||
@@ -31,10 +31,8 @@ def demonstrate_basic_context_generation():
|
||||
|
||||
# Create a ContextAgent using the factory function
|
||||
context_agent = create_context_agent(
|
||||
llm="gpt-5-nano",
|
||||
name="Basic Context Engineer",
|
||||
verbose=True
|
||||
)
|
||||
llm="gpt-4o-mini",
|
||||
name="Basic Context Engineer")
|
||||
|
||||
# Example 1: Analyze codebase patterns
|
||||
print("\n📁 Example 1: Analyzing Codebase Patterns")
|
||||
@@ -133,7 +131,7 @@ def demonstrate_context_agent_as_tool():
|
||||
print("=" * 60)
|
||||
|
||||
# Create ContextAgent
|
||||
context_agent = create_context_agent(llm="gpt-5-nano")
|
||||
context_agent = create_context_agent(llm="gpt-4o-mini")
|
||||
|
||||
# Example scenario: Product planning workflow
|
||||
project_path = str(project_root)
|
||||
@@ -186,7 +184,7 @@ def show_context_engineering_benefits():
|
||||
|
||||
# Context Engineering approach
|
||||
print("\n✅ Context Engineering Approach:")
|
||||
context_agent = create_context_agent(llm="gpt-5-nano")
|
||||
context_agent = create_context_agent(llm="gpt-4o-mini")
|
||||
|
||||
# Generate comprehensive context
|
||||
analysis = context_agent.analyze_codebase_patterns(str(project_root))
|
||||
|
||||
@@ -13,7 +13,7 @@ image_agent = Agent(
|
||||
goal="Analyze images and videos to extract meaningful information",
|
||||
backstory="""You are an expert in computer vision and image analysis.
|
||||
You excel at describing images, detecting objects, and understanding visual content.""",
|
||||
llm="gpt-5-nano",
|
||||
llm="gpt-4o-mini",
|
||||
reflection=False
|
||||
)
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ image_agent = Agent(
|
||||
goal="Analyze images and videos to extract meaningful information",
|
||||
backstory="""You are an expert in computer vision and image analysis.
|
||||
You excel at describing images, detecting objects, and understanding visual content.""",
|
||||
llm="gpt-5-nano",
|
||||
llm="gpt-4o-mini",
|
||||
reflection=False
|
||||
)
|
||||
|
||||
|
||||
@@ -126,8 +126,7 @@ def solve_math_problem_workflow():
|
||||
workflow = Agents(
|
||||
agents=[problem_solver_agent, calculation_agent, math_tutor_agent],
|
||||
tasks=[understand_task, solve_task, verify_task],
|
||||
process="sequential",
|
||||
verbose=True
|
||||
process="sequential", output="verbose"
|
||||
)
|
||||
|
||||
return workflow.start()
|
||||
|
||||
@@ -21,9 +21,8 @@ def example_auto_routing():
|
||||
role="Adaptive Research Assistant",
|
||||
goal="Research topics using the most appropriate AI model",
|
||||
backstory="I analyze task complexity and route to the best model",
|
||||
models=["gpt-5-nano", "gpt-5-nano", "claude-3-5-sonnet-20241022"],
|
||||
routing_strategy="auto", # Automatic model selection
|
||||
verbose=True
|
||||
models=["gpt-4o-mini", "gpt-4o-mini", "claude-3-5-sonnet-20241022"],
|
||||
routing_strategy="auto" # Automatic model selection
|
||||
)
|
||||
|
||||
# Create tasks with different complexity levels
|
||||
@@ -52,8 +51,7 @@ def example_auto_routing():
|
||||
agents = Agents(
|
||||
agents=[research_agent],
|
||||
tasks=[simple_task, moderate_task, complex_task],
|
||||
process="sequential",
|
||||
verbose=True
|
||||
process="sequential", output="verbose"
|
||||
)
|
||||
|
||||
results = agents.start()
|
||||
@@ -81,13 +79,11 @@ def example_cost_optimized_workflow():
|
||||
goal="Analyze data efficiently while minimizing costs",
|
||||
models={
|
||||
"gemini/gemini-1.5-flash": {},
|
||||
"gpt-5-nano": {},
|
||||
"gpt-4o-mini": {},
|
||||
"deepseek-chat": {}
|
||||
},
|
||||
model_router=cost_router,
|
||||
routing_strategy="cost-optimized",
|
||||
verbose=True
|
||||
)
|
||||
routing_strategy="cost-optimized")
|
||||
|
||||
writer = RouterAgent(
|
||||
name="Quality Writer",
|
||||
@@ -95,10 +91,9 @@ def example_cost_optimized_workflow():
|
||||
goal="Create high-quality content",
|
||||
models={
|
||||
"claude-3-5-sonnet-20241022": {},
|
||||
"gpt-5-nano": {}
|
||||
"gpt-4o-mini": {}
|
||||
},
|
||||
routing_strategy="performance-optimized", # Prefer better models
|
||||
verbose=True
|
||||
routing_strategy="performance-optimized" # Prefer better models
|
||||
)
|
||||
|
||||
# Create workflow tasks
|
||||
@@ -121,8 +116,7 @@ def example_cost_optimized_workflow():
|
||||
workflow = Agents(
|
||||
agents=[analyzer, writer],
|
||||
tasks=[analysis_task, writing_task],
|
||||
process="sequential",
|
||||
verbose=True
|
||||
process="sequential", output="verbose"
|
||||
)
|
||||
|
||||
results = workflow.start()
|
||||
@@ -144,8 +138,8 @@ def example_auto_agents_multi_provider():
|
||||
auto_agents = AutoAgents(
|
||||
instructions="Create a market research report on electric vehicles. Include data analysis, competitor analysis, and future projections.",
|
||||
max_agents=3,
|
||||
llm="gpt-5-nano", # Default model for agent generation
|
||||
verbose=True
|
||||
llm="gpt-4o-mini", # Default model for agent generation
|
||||
output="verbose"
|
||||
)
|
||||
|
||||
# After agents are created, upgrade them to multi-model agents
|
||||
@@ -158,10 +152,8 @@ def example_auto_agents_multi_provider():
|
||||
goal=agent.goal,
|
||||
backstory=agent.backstory,
|
||||
tools=agent.tools,
|
||||
models=["gpt-5-nano", "gemini/gemini-1.5-flash", "claude-3-haiku-20240307", "gpt-5-nano"],
|
||||
routing_strategy="auto",
|
||||
verbose=True
|
||||
)
|
||||
models=["gpt-4o-mini", "gemini/gemini-1.5-flash", "claude-3-haiku-20240307", "gpt-4o-mini"],
|
||||
routing_strategy="auto")
|
||||
multi_model_agents.append(multi_agent)
|
||||
|
||||
# Update the agents in the AutoAgents instance
|
||||
@@ -192,7 +184,7 @@ def example_custom_routing():
|
||||
# Create custom model profiles for specific use cases
|
||||
custom_models = [
|
||||
ModelProfile(
|
||||
name="gpt-5-nano",
|
||||
name="gpt-4o-mini",
|
||||
provider="openai",
|
||||
complexity_range=(TaskComplexity.SIMPLE, TaskComplexity.VERY_COMPLEX),
|
||||
cost_per_1k_tokens=0.0075,
|
||||
@@ -227,9 +219,7 @@ def example_custom_routing():
|
||||
backstory="I'm an expert coder who knows when to use different AI models",
|
||||
model_router=custom_router,
|
||||
routing_strategy="auto",
|
||||
tools=[search_web],
|
||||
verbose=True
|
||||
)
|
||||
tools=[search_web])
|
||||
|
||||
# Create coding tasks
|
||||
tasks = [
|
||||
@@ -252,8 +242,7 @@ def example_custom_routing():
|
||||
agents = Agents(
|
||||
agents=[coder],
|
||||
tasks=tasks,
|
||||
process="sequential",
|
||||
verbose=True
|
||||
process="sequential", output="verbose"
|
||||
)
|
||||
|
||||
results = agents.start()
|
||||
|
||||
@@ -18,8 +18,8 @@ from praisonaiagents.tools import duckduckgo
|
||||
|
||||
# Define model options with cost considerations
|
||||
# Using different models for different complexity levels
|
||||
cheap_model = "gpt-5-nano" # For simple tasks
|
||||
balanced_model = "gpt-5-nano" # For moderate complexity
|
||||
cheap_model = "gpt-4o-mini" # For simple tasks
|
||||
balanced_model = "gpt-4o-mini" # For moderate complexity
|
||||
premium_model = "claude-3-5-sonnet-20241022" # For complex tasks
|
||||
|
||||
# Create RouterAgent with cost optimization strategy
|
||||
@@ -38,9 +38,7 @@ router = RouterAgent(
|
||||
like writing, analysis, or research, use the balanced model. For complex tasks requiring
|
||||
deep reasoning, creativity, or specialized knowledge, use the premium model.""",
|
||||
|
||||
tools=[duckduckgo],
|
||||
verbose=True
|
||||
)
|
||||
tools=[duckduckgo])
|
||||
|
||||
# Example tasks of varying complexity levels
|
||||
|
||||
@@ -76,7 +74,7 @@ print("\n" + "="*80)
|
||||
print("COST OPTIMIZATION ROUTER DEMONSTRATION COMPLETED")
|
||||
print("="*80)
|
||||
print("The RouterAgent automatically selected appropriate models based on task complexity:")
|
||||
print("- Simple factual questions → Cheaper model (gpt-5-nano)")
|
||||
print("- Moderate analysis tasks → Balanced model (gpt-5-nano)")
|
||||
print("- Simple factual questions → Cheaper model (gpt-4o-mini)")
|
||||
print("- Moderate analysis tasks → Balanced model (gpt-4o-mini)")
|
||||
print("- Complex strategic analysis → Premium model (claude-3-5-sonnet)")
|
||||
print("- This approach optimizes costs while maintaining quality for each task type")
|
||||
@@ -7,7 +7,7 @@ video_agent = Agent(
|
||||
goal="Analyze images and videos to extract meaningful information",
|
||||
backstory="""You are an expert in computer vision and image analysis.
|
||||
You excel at describing images, detecting objects, and understanding visual content.""",
|
||||
llm="gpt-5-nano",
|
||||
llm="gpt-4o-mini",
|
||||
reflection=False
|
||||
)
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ from praisonaiagents import Agent, MCP
|
||||
|
||||
qa_agent = Agent(
|
||||
instructions="""You are a Question Answering Agent.""",
|
||||
llm="openai/gpt-5-nano",
|
||||
llm="openai/gpt-4o-mini",
|
||||
tools=MCP("http://localhost:8080/agents/sse")
|
||||
)
|
||||
|
||||
|
||||
@@ -2,17 +2,17 @@ from praisonaiagents import Agent
|
||||
|
||||
weather_agent = Agent(
|
||||
instructions="""You are a weather agent that can provide weather information for a given city.""",
|
||||
llm="gpt-5-nano"
|
||||
llm="gpt-4o-mini"
|
||||
)
|
||||
|
||||
stock_agent = Agent(
|
||||
instructions="""You are a stock market agent that can provide information about stock prices and market trends.""",
|
||||
llm="gpt-5-nano"
|
||||
llm="gpt-4o-mini"
|
||||
)
|
||||
|
||||
travel_agent = Agent(
|
||||
instructions="""You are a travel agent that can provide recommendations for destinations, hotels, and activities.""",
|
||||
llm="gpt-5-nano"
|
||||
llm="gpt-4o-mini"
|
||||
)
|
||||
|
||||
weather_agent.launch(path="/weather", port=3030)
|
||||
|
||||
@@ -115,8 +115,7 @@ def create_market_research_agents(config: MarketResearchConfig):
|
||||
Analyze market size, trends, growth drivers, and overall market dynamics for
|
||||
{config.industry} in {config.geography}. Provide quantitative data and cite sources.
|
||||
""",
|
||||
tools=[Tools.internet_search],
|
||||
verbose=False
|
||||
tools=[Tools.internet_search], output="minimal"
|
||||
)
|
||||
|
||||
if "competitive_analysis" in config.sections:
|
||||
@@ -128,8 +127,7 @@ def create_market_research_agents(config: MarketResearchConfig):
|
||||
Analyze {config.company}'s competitive position in {config.industry} within {config.geography}.
|
||||
Identify key competitors, market share, and competitive advantages.
|
||||
""",
|
||||
tools=[Tools.internet_search],
|
||||
verbose=False
|
||||
tools=[Tools.internet_search], output="minimal"
|
||||
)
|
||||
|
||||
if "financial_performance" in config.sections:
|
||||
@@ -141,8 +139,7 @@ def create_market_research_agents(config: MarketResearchConfig):
|
||||
Research {config.company}'s financial performance, revenue trends, profitability,
|
||||
and compare with industry benchmarks.
|
||||
""",
|
||||
tools=[Tools.internet_search],
|
||||
verbose=False
|
||||
tools=[Tools.internet_search], output="minimal"
|
||||
)
|
||||
|
||||
if "growth_opportunities" in config.sections:
|
||||
@@ -154,8 +151,7 @@ def create_market_research_agents(config: MarketResearchConfig):
|
||||
Identify emerging opportunities, market gaps, expansion possibilities for {config.company}
|
||||
in {config.industry} within {config.geography}.
|
||||
""",
|
||||
tools=[Tools.internet_search],
|
||||
verbose=False
|
||||
tools=[Tools.internet_search], output="minimal"
|
||||
)
|
||||
|
||||
if "risk_assessment" in config.sections:
|
||||
@@ -167,8 +163,7 @@ def create_market_research_agents(config: MarketResearchConfig):
|
||||
Identify and analyze potential risks, challenges, and threats facing {config.company}
|
||||
in {config.geography}. Consider regulatory, competitive, and market risks.
|
||||
""",
|
||||
tools=[Tools.internet_search],
|
||||
verbose=False
|
||||
tools=[Tools.internet_search], output="minimal"
|
||||
)
|
||||
|
||||
# Always include synthesizer
|
||||
@@ -179,8 +174,7 @@ def create_market_research_agents(config: MarketResearchConfig):
|
||||
instructions=f"""
|
||||
Create a professional secondary market research report for {config.company}
|
||||
in {config.industry} with clear structure, insights, and recommendations.
|
||||
""",
|
||||
verbose=False
|
||||
""", output="minimal"
|
||||
)
|
||||
|
||||
return agents
|
||||
@@ -269,8 +263,7 @@ async def generate_market_research_report(job_id: str, config: MarketResearchCon
|
||||
workflow = Agents(
|
||||
agents=list(agents.values()),
|
||||
tasks=tasks,
|
||||
process="sequential",
|
||||
verbose=False
|
||||
process="sequential", output="minimal"
|
||||
)
|
||||
|
||||
job_status[job_id]["progress"] = 30
|
||||
|
||||
@@ -2,7 +2,7 @@ from praisonaiagents import Agent, MCP
|
||||
|
||||
search_agent = Agent(
|
||||
instructions="""You are a weather agent that can provide weather information for a given city.""",
|
||||
llm="openai/gpt-5-nano",
|
||||
llm="openai/gpt-4o-mini",
|
||||
tools=MCP("http://localhost:8080/sse")
|
||||
)
|
||||
search_agent.launch(path="/weather", port=3030)
|
||||
@@ -1,4 +1,4 @@
|
||||
from praisonaiagents import Agent
|
||||
|
||||
agent = Agent(instructions="""You are a helpful assistant.""", llm="gpt-5-nano")
|
||||
agent = Agent(instructions="""You are a helpful assistant.""", llm="gpt-4o-mini")
|
||||
agent.launch(path="/ask", port=3030)
|
||||
@@ -28,7 +28,7 @@ def capture_and_analyze():
|
||||
role="Camera Feed Analyzer",
|
||||
goal="Analyze camera captures in real-time",
|
||||
backstory="Expert in real-time visual analysis with computer vision skills",
|
||||
llm="gpt-5-nano"
|
||||
llm="gpt-4o-mini"
|
||||
)
|
||||
|
||||
# Initialize camera (0 for default camera)
|
||||
|
||||
@@ -42,7 +42,7 @@ class ContinuousCameraMonitor:
|
||||
role="Security Camera Analyst",
|
||||
goal="Monitor camera feeds for activities and security events",
|
||||
backstory="Expert security analyst with computer vision skills specialized in real-time monitoring",
|
||||
llm="gpt-5-nano"
|
||||
llm="gpt-4o-mini"
|
||||
)
|
||||
|
||||
def capture_frame(self, cap):
|
||||
|
||||
@@ -57,7 +57,7 @@ def analyze_with_multiple_agents():
|
||||
role="Security Specialist",
|
||||
goal="Identify security threats and suspicious activities",
|
||||
backstory="Expert security analyst with years of experience in surveillance and threat detection",
|
||||
llm="gpt-5-nano"
|
||||
llm="gpt-4o-mini"
|
||||
)
|
||||
|
||||
object_detector = Agent(
|
||||
@@ -65,7 +65,7 @@ def analyze_with_multiple_agents():
|
||||
role="Object Recognition Specialist",
|
||||
goal="Identify and catalog all objects in the scene",
|
||||
backstory="Computer vision expert specializing in object detection and classification",
|
||||
llm="gpt-5-nano"
|
||||
llm="gpt-4o-mini"
|
||||
)
|
||||
|
||||
scene_analyst = Agent(
|
||||
@@ -73,7 +73,7 @@ def analyze_with_multiple_agents():
|
||||
role="Scene Understanding Expert",
|
||||
goal="Provide comprehensive scene analysis and context",
|
||||
backstory="Environmental analyst expert in understanding spatial relationships and scene context",
|
||||
llm="gpt-5-nano"
|
||||
llm="gpt-4o-mini"
|
||||
)
|
||||
|
||||
# Create specialized tasks
|
||||
|
||||
@@ -39,7 +39,7 @@ class CameraVideoAnalyzer:
|
||||
role="Video Content Analyzer",
|
||||
goal="Analyze video content for activities, objects, and events",
|
||||
backstory="Expert in video analysis and temporal event detection with computer vision expertise",
|
||||
llm="gpt-5-nano"
|
||||
llm="gpt-4o-mini"
|
||||
)
|
||||
|
||||
def record_video_segment(self, duration_seconds=10):
|
||||
|
||||
@@ -13,7 +13,7 @@ async def main():
|
||||
workspace=".",
|
||||
output_format="json",
|
||||
force=True,
|
||||
model="gpt-5",
|
||||
model="gpt-4o",
|
||||
stream_partial=True
|
||||
)
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@ class ContextEngineeringWorkflow:
|
||||
to achieve higher success rates in AI-driven development tasks.
|
||||
"""
|
||||
|
||||
def __init__(self, project_path: str, llm: str = "gpt-5-nano"):
|
||||
def __init__(self, project_path: str, llm: str = "gpt-4o-mini"):
|
||||
self.project_path = project_path
|
||||
self.llm = llm
|
||||
self.context_data = {}
|
||||
@@ -59,16 +59,12 @@ class ContextEngineeringWorkflow:
|
||||
4. Define success metrics
|
||||
5. Specify technical constraints
|
||||
""",
|
||||
llm=self.llm,
|
||||
verbose=True
|
||||
)
|
||||
llm=self.llm)
|
||||
|
||||
# 2. Context Engineering Agent - Generates comprehensive context
|
||||
self.context_engineer = create_context_agent(
|
||||
llm=self.llm,
|
||||
name="Context Engineering Specialist",
|
||||
verbose=True
|
||||
)
|
||||
name="Context Engineering Specialist")
|
||||
|
||||
# 3. Software Architect Agent - Designs implementation using context
|
||||
self.architect = Agent(
|
||||
@@ -87,9 +83,7 @@ class ContextEngineeringWorkflow:
|
||||
4. Consider security and performance implications
|
||||
5. Document architectural decisions and rationale
|
||||
""",
|
||||
llm=self.llm,
|
||||
verbose=True
|
||||
)
|
||||
llm=self.llm)
|
||||
|
||||
# 4. Senior Developer Agent - Implements using context-enhanced guidance
|
||||
self.developer = Agent(
|
||||
@@ -107,9 +101,7 @@ class ContextEngineeringWorkflow:
|
||||
4. Write clean, maintainable code
|
||||
5. Follow the implementation blueprint exactly
|
||||
""",
|
||||
llm=self.llm,
|
||||
verbose=True
|
||||
)
|
||||
llm=self.llm)
|
||||
|
||||
# 5. QA Engineer Agent - Validates using context-generated criteria
|
||||
self.qa_engineer = Agent(
|
||||
@@ -127,9 +119,7 @@ class ContextEngineeringWorkflow:
|
||||
4. Check for security vulnerabilities
|
||||
5. Validate performance requirements
|
||||
""",
|
||||
llm=self.llm,
|
||||
verbose=True
|
||||
)
|
||||
llm=self.llm)
|
||||
|
||||
def run_context_engineering_workflow(self, feature_request: str):
|
||||
"""
|
||||
@@ -325,8 +315,7 @@ class ContextEngineeringWorkflow:
|
||||
implementation_task,
|
||||
qa_task
|
||||
],
|
||||
process="sequential",
|
||||
verbose=True
|
||||
process="sequential", output="verbose"
|
||||
)
|
||||
|
||||
# Execute workflow
|
||||
@@ -382,7 +371,7 @@ def run_example_workflow():
|
||||
project_path = str(project_root)
|
||||
workflow = ContextEngineeringWorkflow(
|
||||
project_path=project_path,
|
||||
llm="gpt-5-nano"
|
||||
llm="gpt-4o-mini"
|
||||
)
|
||||
|
||||
# Example feature request
|
||||
@@ -446,7 +435,7 @@ if __name__ == "__main__":
|
||||
print("(Note: Full execution requires complete environment setup)")
|
||||
|
||||
project_path = str(project_root)
|
||||
workflow = ContextEngineeringWorkflow(project_path, "gpt-5-nano")
|
||||
workflow = ContextEngineeringWorkflow(project_path, "gpt-4o-mini")
|
||||
|
||||
print(f"\n✅ Workflow Setup Complete:")
|
||||
print(f" • Project path: {project_path}")
|
||||
|
||||
@@ -68,7 +68,7 @@ def method_1_simple_loop():
|
||||
goal="Process each task from the CSV file efficiently",
|
||||
backstory="Expert at handling repetitive tasks from CSV data",
|
||||
instructions="Process each task thoroughly and provide detailed output",
|
||||
llm="gpt-5-nano"
|
||||
llm="gpt-4o-mini"
|
||||
)
|
||||
|
||||
# Create a loop task that will automatically process each CSV row
|
||||
@@ -127,7 +127,7 @@ def method_2_manual_csv():
|
||||
4. Create a summary of the processing results
|
||||
5. Save results to a new CSV file if needed
|
||||
""",
|
||||
llm="gpt-5-nano"
|
||||
llm="gpt-4o-mini"
|
||||
)
|
||||
|
||||
# Create a task for manual CSV processing
|
||||
@@ -187,7 +187,7 @@ def method_3_url_processing():
|
||||
4. Create a detailed analysis report
|
||||
5. Save results with analysis data
|
||||
""",
|
||||
llm="gpt-5-nano"
|
||||
llm="gpt-4o-mini"
|
||||
)
|
||||
|
||||
# Create the URL processing task
|
||||
@@ -264,7 +264,7 @@ def method_4_advanced_processing():
|
||||
4. Create separate files for valid and invalid data
|
||||
5. Provide detailed validation reports
|
||||
""",
|
||||
llm="gpt-5-nano"
|
||||
llm="gpt-4o-mini"
|
||||
)
|
||||
|
||||
# Create a processing agent
|
||||
@@ -281,7 +281,7 @@ def method_4_advanced_processing():
|
||||
3. Generate comprehensive results
|
||||
4. Create detailed output reports
|
||||
""",
|
||||
llm="gpt-5-nano"
|
||||
llm="gpt-4o-mini"
|
||||
)
|
||||
|
||||
# Create validation task
|
||||
|
||||
@@ -24,9 +24,7 @@ knowledge_agent = Agent(
|
||||
goal="Store and retrieve knowledge efficiently",
|
||||
backstory="Expert in managing and utilizing stored knowledge",
|
||||
knowledge=["sample.pdf"],
|
||||
knowledge_config=config,
|
||||
verbose=True
|
||||
)
|
||||
knowledge_config=config)
|
||||
|
||||
# Define a task for the agent
|
||||
knowledge_task = Task(
|
||||
|
||||
@@ -140,7 +140,7 @@ def main():
|
||||
instructions="You are an AI research assistant. Use your knowledge base to answer questions about artificial intelligence topics.",
|
||||
knowledge=sample_documents, # Will use default knowledge config
|
||||
knowledge_config=rerank_config, # Use reranking config
|
||||
llm="gpt-5-nano"
|
||||
llm="gpt-4o-mini"
|
||||
)
|
||||
|
||||
print("7. Agent with reranking knowledge:")
|
||||
|
||||
@@ -16,7 +16,7 @@ rag_agent = Agent(
|
||||
name="RAG Agent",
|
||||
role="Information Specialist",
|
||||
goal="Retrieve knowledge efficiently",
|
||||
llm="gpt-5-nano"
|
||||
llm="gpt-4o-mini"
|
||||
)
|
||||
|
||||
# Define a task for the agent
|
||||
|
||||
@@ -103,8 +103,7 @@ def demonstrate_reasoning_extraction():
|
||||
workflow = Agents(
|
||||
agents=[cot_agent, reasoning_extractor],
|
||||
tasks=[problem_task, extract_task],
|
||||
process="sequential",
|
||||
verbose=True
|
||||
process="sequential", output="verbose"
|
||||
)
|
||||
|
||||
return workflow.start()
|
||||
@@ -187,8 +186,7 @@ def advanced_reasoning_patterns():
|
||||
workflow = Agents(
|
||||
agents=[cot_agent, reasoning_validator],
|
||||
tasks=[deductive_task, inductive_task, abductive_task, validation_task],
|
||||
process="sequential",
|
||||
verbose=True
|
||||
process="sequential", output="verbose"
|
||||
)
|
||||
|
||||
return workflow.start()
|
||||
|
||||
@@ -2,7 +2,7 @@ from praisonaiagents import Agent, Task, Agents
|
||||
|
||||
agent = Agent(
|
||||
instructions="You are a loop agent that creating a loop of tasks.",
|
||||
llm="gpt-5-nano"
|
||||
llm="gpt-4o-mini"
|
||||
)
|
||||
|
||||
task = Task(
|
||||
|
||||
@@ -80,8 +80,7 @@ def conditional_routing_example():
|
||||
workflow = Agents(
|
||||
agents=[analyzer_agent, processor_agent],
|
||||
tasks=[analysis_task, premium_task, standard_task, basic_task],
|
||||
process="workflow",
|
||||
verbose=True
|
||||
process="workflow", output="verbose"
|
||||
)
|
||||
|
||||
return workflow.start()
|
||||
@@ -113,8 +112,7 @@ def loop_pattern_example():
|
||||
workflow = Agents(
|
||||
agents=[processor_agent, validator_agent],
|
||||
tasks=[process_task, finalize_task],
|
||||
process="workflow",
|
||||
verbose=True
|
||||
process="workflow", output="verbose"
|
||||
)
|
||||
|
||||
return workflow.start()
|
||||
@@ -188,8 +186,7 @@ def decision_tree_example():
|
||||
workflow = Agents(
|
||||
agents=[analyzer_agent, processor_agent],
|
||||
tasks=all_tasks,
|
||||
process="workflow",
|
||||
verbose=True
|
||||
process="workflow", output="verbose"
|
||||
)
|
||||
|
||||
return workflow.start()
|
||||
@@ -275,8 +272,7 @@ def dynamic_routing_example():
|
||||
workflow = Agents(
|
||||
agents=[dynamic_router, processor_agent],
|
||||
tasks=[route_task, escalate_task, automate_task, review_task, standard_task],
|
||||
process="workflow",
|
||||
verbose=True
|
||||
process="workflow", output="verbose"
|
||||
)
|
||||
|
||||
return workflow.start()
|
||||
|
||||
@@ -165,8 +165,7 @@ def reflection_workflow_example():
|
||||
workflow = Agents(
|
||||
agents=[creator_agent, reviewer_agent, polisher_agent],
|
||||
tasks=[create_task, review_task, polish_task],
|
||||
process="sequential",
|
||||
verbose=True
|
||||
process="sequential", output="verbose"
|
||||
)
|
||||
|
||||
return workflow.start()
|
||||
|
||||
@@ -17,12 +17,7 @@ reflection_agent = Agent(
|
||||
goal="Demonstrate self-reflection and iterative improvement patterns",
|
||||
backstory="Expert researcher with strong self-reflection and continuous improvement capabilities",
|
||||
tools=[internet_search],
|
||||
reflection=True,
|
||||
|
||||
|
||||
|
||||
verbose=True
|
||||
)
|
||||
reflection=True)
|
||||
|
||||
# Create task that benefits from self-reflection
|
||||
reflection_task = Task(
|
||||
|
||||
@@ -46,7 +46,7 @@ def main():
|
||||
goal="Analyze each URL from the CSV list",
|
||||
backstory="Expert at analyzing websites and URLs",
|
||||
instructions="Analyze each URL and provide insights about the website",
|
||||
llm="gpt-5-nano" # You can change this to any supported model
|
||||
llm="gpt-4o-mini" # You can change this to any supported model
|
||||
)
|
||||
|
||||
# Step 3: Create a task that will loop through the CSV
|
||||
|
||||
@@ -27,7 +27,7 @@ def example_with_tool():
|
||||
role="Information Researcher",
|
||||
goal="Research and provide information",
|
||||
tools=[latency_tracking_tool], # Add our custom tool
|
||||
llm="gpt-5-nano"
|
||||
llm="gpt-4o-mini"
|
||||
)
|
||||
|
||||
# Start tracking manually
|
||||
@@ -60,7 +60,7 @@ def example_with_wrappers():
|
||||
name="Analyst",
|
||||
role="Data Analyst",
|
||||
goal="Analyze data and provide insights",
|
||||
llm="gpt-5-nano",
|
||||
llm="gpt-4o-mini",
|
||||
request_id="request_2" # Unique request ID
|
||||
)
|
||||
|
||||
@@ -83,7 +83,7 @@ def example_with_context_manager():
|
||||
name="Calculator",
|
||||
role="Math Expert",
|
||||
goal="Solve mathematical problems",
|
||||
llm="gpt-5-nano"
|
||||
llm="gpt-4o-mini"
|
||||
)
|
||||
|
||||
request_id = "request_3"
|
||||
@@ -126,7 +126,7 @@ def example_mcp_tracking():
|
||||
name="Assistant",
|
||||
role="MCP Assistant",
|
||||
goal="Handle MCP requests",
|
||||
llm="gpt-5-nano"
|
||||
llm="gpt-4o-mini"
|
||||
)
|
||||
plan = agent.chat("Plan: Search for Python documentation")
|
||||
|
||||
@@ -166,7 +166,7 @@ def example_concurrent_tracking():
|
||||
name=f"Agent_{i}",
|
||||
role="Concurrent Worker",
|
||||
goal="Process requests concurrently",
|
||||
llm="gpt-5-nano"
|
||||
llm="gpt-4o-mini"
|
||||
)
|
||||
|
||||
with tracker.track("processing", request_id):
|
||||
|
||||
@@ -56,7 +56,7 @@ def create_mcp_agent_with_tracking(request_id: str = "mcp_request"):
|
||||
name="MCPAssistant",
|
||||
role="MCP Request Handler",
|
||||
goal="Handle MCP requests with latency tracking",
|
||||
llm="gpt-5-nano"
|
||||
llm="gpt-4o-mini"
|
||||
)
|
||||
|
||||
return agent
|
||||
|
||||
@@ -23,7 +23,7 @@ def handle_mcp_request(query: str, request_id: str = "mcp_1"):
|
||||
name="Assistant",
|
||||
role="MCP Handler",
|
||||
goal="Process requests",
|
||||
llm="gpt-5-nano"
|
||||
llm="gpt-4o-mini"
|
||||
)
|
||||
plan = f"I will search for information about {query}"
|
||||
time.sleep(0.1) # Simulate planning time
|
||||
|
||||
@@ -29,7 +29,7 @@ qa_generator = Agent(
|
||||
role="Question Creator",
|
||||
goal="Create challenging math and logic questions",
|
||||
backstory="Expert in educational content creation",
|
||||
llm="gpt-5-nano",
|
||||
llm="gpt-4o-mini",
|
||||
tools=[write_csv, count_questions]
|
||||
)
|
||||
|
||||
@@ -38,9 +38,8 @@ total_questions_evaluator = Agent(
|
||||
role="Total Questions Evaluator",
|
||||
goal="Evaluate the total number of questions in qa_pairs.csv file",
|
||||
backstory="Expert in evaluating the total number of questions in a file",
|
||||
llm="gpt-5-nano",
|
||||
tools=[count_questions],
|
||||
verbose=False
|
||||
llm="gpt-4o-mini",
|
||||
tools=[count_questions], output="minimal"
|
||||
)
|
||||
|
||||
cot_generator = Agent(
|
||||
@@ -49,8 +48,7 @@ cot_generator = Agent(
|
||||
goal="Generate and manage chain of thought solutions for Q&A pairs",
|
||||
backstory="Expert in breaking down problems and generating detailed solution steps",
|
||||
tools=[cot_save],
|
||||
llm="gpt-5-nano",
|
||||
verbose=False
|
||||
llm="gpt-4o-mini", output="minimal"
|
||||
)
|
||||
|
||||
upload_to_huggingface = Agent(
|
||||
@@ -59,8 +57,7 @@ upload_to_huggingface = Agent(
|
||||
goal="Upload the generated chain of thought solutions to a Huggingface dataset",
|
||||
backstory="Expert in saving data to Huggingface",
|
||||
tools=[cot_upload_to_huggingface],
|
||||
llm="gpt-5-nano",
|
||||
verbose=False
|
||||
llm="gpt-4o-mini", output="minimal"
|
||||
)
|
||||
|
||||
# Define tasks with workflow improvements
|
||||
@@ -135,8 +132,7 @@ agents = Agents(
|
||||
agents=[qa_generator, total_questions_evaluator, cot_generator, upload_to_huggingface],
|
||||
tasks=[generate_task, evaluate_total_questions_task, generate_cot_task, upload_to_huggingface_task],
|
||||
process="workflow",
|
||||
max_iter=30,
|
||||
verbose=False
|
||||
max_iter=30, output="minimal"
|
||||
)
|
||||
|
||||
agents.start()
|
||||
@@ -39,9 +39,7 @@ research_agent = Agent(
|
||||
role="Information Researcher",
|
||||
goal="Research topics and demonstrate callback monitoring",
|
||||
backstory="Expert researcher that demonstrates callback functionality",
|
||||
tools=[internet_search],
|
||||
verbose=True
|
||||
)
|
||||
tools=[internet_search])
|
||||
|
||||
# Create a simple task
|
||||
research_task = Task(
|
||||
|
||||
@@ -99,7 +99,6 @@ sync_agent = Agent(
|
||||
backstory="Expert in sync operations and data organization",
|
||||
tools=[sync_search_tool],
|
||||
reflection=False,
|
||||
verbose=True,
|
||||
markdown=True
|
||||
)
|
||||
|
||||
@@ -110,7 +109,6 @@ async_agent = Agent(
|
||||
backstory="Expert in async operations and data organization",
|
||||
tools=[async_search_tool],
|
||||
reflection=False,
|
||||
verbose=True,
|
||||
markdown=True
|
||||
)
|
||||
|
||||
|
||||
@@ -54,7 +54,6 @@ async_agent = Agent(
|
||||
backstory="Expert in efficient data retrieval and parallel search operations",
|
||||
tools=[async_search_tool],
|
||||
reflection=False,
|
||||
verbose=True,
|
||||
markdown=True
|
||||
)
|
||||
|
||||
@@ -64,7 +63,6 @@ summary_agent = Agent(
|
||||
goal="Create concise summaries from multiple search results",
|
||||
backstory="Expert in analyzing and synthesizing information from multiple sources",
|
||||
reflection=True,
|
||||
verbose=True,
|
||||
markdown=True
|
||||
)
|
||||
|
||||
|
||||
@@ -61,7 +61,6 @@ async_agent = Agent(
|
||||
backstory="Expert in parallel search operations and data retrieval",
|
||||
tools=[async_search_tool],
|
||||
reflection=False,
|
||||
verbose=True,
|
||||
markdown=True
|
||||
)
|
||||
|
||||
@@ -73,7 +72,6 @@ summary_agent = Agent(
|
||||
Skilled at identifying patterns, trends, and connections between different topics.
|
||||
Specializes in creating clear, structured summaries that highlight key insights.""",
|
||||
reflection=True, # Enable self-reflection for better summary quality
|
||||
verbose=True,
|
||||
markdown=True
|
||||
)
|
||||
|
||||
|
||||
@@ -22,7 +22,6 @@ agents = AutoAgents(
|
||||
instructions="Search for information about AI Agents",
|
||||
tools=[duckduckgo],
|
||||
process="sequential", # or "hierarchical"
|
||||
verbose=True,
|
||||
max_agents=3 # Maximum number of agents to create
|
||||
)
|
||||
|
||||
|
||||
@@ -89,8 +89,7 @@ feedback_task = Task(
|
||||
workflow = Agents(
|
||||
agents=[llm_caller, action_agent, feedback_agent],
|
||||
tasks=[monitor_task, action_task, feedback_task],
|
||||
process="workflow",
|
||||
verbose=True
|
||||
process="workflow", output="verbose"
|
||||
)
|
||||
|
||||
def main():
|
||||
|
||||
@@ -23,13 +23,13 @@ def code_interpreter(code: str):
|
||||
|
||||
code_agent = Agent(
|
||||
name="code_agent",
|
||||
llm="gpt-5-nano",
|
||||
llm="gpt-4o-mini",
|
||||
backstory="Expert in writing Python scripts",
|
||||
reflection=False
|
||||
)
|
||||
execution_agent = Agent(
|
||||
name="execution_agent",
|
||||
llm="gpt-5-nano",
|
||||
llm="gpt-4o-mini",
|
||||
backstory="Expert in executing Python scripts",
|
||||
reflection=False,
|
||||
tools=[code_interpreter]
|
||||
|
||||
@@ -56,8 +56,7 @@ evaluate_task = Task(
|
||||
workflow = Agents(
|
||||
agents=[generator, evaluator],
|
||||
tasks=[generate_task, evaluate_task],
|
||||
process="workflow",
|
||||
verbose=True
|
||||
process="workflow", output="verbose"
|
||||
)
|
||||
|
||||
# Run optimization workflow
|
||||
|
||||
@@ -124,10 +124,9 @@ def main():
|
||||
goal="Uncover cutting-edge developments in AI and data science",
|
||||
backstory="""You are an expert at a technology research group,
|
||||
skilled in identifying trends and analyzing complex data.""",
|
||||
verbose=True,
|
||||
allow_delegation=False,
|
||||
tools=[internet_search_tool],
|
||||
llm="gpt-5-nano",
|
||||
llm="gpt-4o-mini",
|
||||
markdown=True,
|
||||
|
||||
|
||||
@@ -140,9 +139,8 @@ def main():
|
||||
goal="Craft compelling content on tech advancements",
|
||||
backstory="""You are a content strategist known for
|
||||
making complex tech topics interesting and easy to understand.""",
|
||||
verbose=True,
|
||||
allow_delegation=True,
|
||||
llm="gpt-5-nano",
|
||||
llm="gpt-4o-mini",
|
||||
tools=[],
|
||||
markdown=True
|
||||
)
|
||||
@@ -193,9 +191,8 @@ def main():
|
||||
agents = Agents(
|
||||
agents=[researcher, writer],
|
||||
tasks=[task1, task2, task3, task4],
|
||||
verbose=True,
|
||||
process="sequential",
|
||||
manager_llm="gpt-5-nano"
|
||||
manager_llm="gpt-4o-mini"
|
||||
)
|
||||
|
||||
agents.start()
|
||||
|
||||
@@ -36,10 +36,9 @@ researcher = Agent(
|
||||
goal="Uncover cutting-edge developments in AI and data science",
|
||||
backstory="""You are an expert at a technology research group,
|
||||
skilled in identifying trends and analyzing complex data.""",
|
||||
verbose=True,
|
||||
allow_delegation=False,
|
||||
tools=[internet_search_tool],
|
||||
llm="gpt-5-nano",
|
||||
llm="gpt-4o-mini",
|
||||
markdown=True,
|
||||
|
||||
|
||||
@@ -51,9 +50,8 @@ writer = Agent(
|
||||
goal="Craft compelling content on tech advancements",
|
||||
backstory="""You are a content strategist known for
|
||||
making complex tech topics interesting and easy to understand.""",
|
||||
verbose=True,
|
||||
allow_delegation=True,
|
||||
llm="gpt-5-nano",
|
||||
llm="gpt-4o-mini",
|
||||
tools=[],
|
||||
markdown=True
|
||||
)
|
||||
@@ -102,9 +100,9 @@ task4 = Task(
|
||||
agents = Agents(
|
||||
agents=[researcher, writer],
|
||||
tasks=[task1, task2, task3, task4],
|
||||
verbose=False,
|
||||
output="minimal",
|
||||
process="sequential", # "sequential" or "hierarchical"
|
||||
manager_llm="gpt-5-nano"
|
||||
manager_llm="gpt-4o-mini"
|
||||
)
|
||||
|
||||
result = agents.start()
|
||||
|
||||
@@ -82,9 +82,7 @@ def main():
|
||||
name="Security Demo Agent",
|
||||
role="System Administrator",
|
||||
goal="Demonstrate human approval for dangerous operations",
|
||||
tools=[python_tools, file_tools, shell_tools],
|
||||
verbose=True
|
||||
)
|
||||
tools=[python_tools, file_tools, shell_tools])
|
||||
|
||||
# Define tasks that will trigger approval prompts
|
||||
tasks = [
|
||||
@@ -113,8 +111,7 @@ def main():
|
||||
# Create and run process
|
||||
process = Agents(
|
||||
agents=[agent],
|
||||
tasks=tasks,
|
||||
verbose=True
|
||||
tasks=tasks, output="verbose"
|
||||
)
|
||||
|
||||
print("\n🚀 Starting process with approval-required operations...")
|
||||
@@ -160,9 +157,7 @@ async def async_demo():
|
||||
name="Async Demo Agent",
|
||||
role="Async Operations Specialist",
|
||||
goal="Demonstrate async approval workflow",
|
||||
tools=[python_tools],
|
||||
verbose=True
|
||||
)
|
||||
tools=[python_tools])
|
||||
|
||||
# This would trigger approval in async context
|
||||
task = Task(
|
||||
@@ -173,8 +168,7 @@ async def async_demo():
|
||||
|
||||
process = Agents(
|
||||
agents=[agent],
|
||||
tasks=[task],
|
||||
verbose=True
|
||||
tasks=[task], output="verbose"
|
||||
)
|
||||
|
||||
try:
|
||||
|
||||
@@ -23,8 +23,7 @@ task = Task(
|
||||
# Create and start the workflow
|
||||
agents = Agents(
|
||||
agents=[agent],
|
||||
tasks=[task],
|
||||
verbose=True
|
||||
tasks=[task], output="verbose"
|
||||
)
|
||||
|
||||
agents.start()
|
||||
@@ -33,14 +33,14 @@ def main():
|
||||
role="Research Analyst",
|
||||
goal="Research and document key information about topics",
|
||||
backstory="Expert at analyzing and storing information in memory",
|
||||
llm="gpt-5-nano"
|
||||
llm="gpt-4o-mini"
|
||||
)
|
||||
|
||||
retriever = Agent(
|
||||
role="Information Retriever",
|
||||
goal="Retrieve and verify stored information from memory",
|
||||
backstory="Specialist in searching and validating information from memory",
|
||||
llm="gpt-5-nano"
|
||||
llm="gpt-4o-mini"
|
||||
)
|
||||
|
||||
# Task 1: Process the facts
|
||||
@@ -103,8 +103,7 @@ def main():
|
||||
# Initialize Agents with memory configuration
|
||||
agents = Agents(
|
||||
agents=[researcher, retriever],
|
||||
tasks=[store_task, verify_task, query_task, query_both_task],
|
||||
verbose=True, # Use same verbose level as memory
|
||||
tasks=[store_task, verify_task, query_task, query_both_task], # Use same verbose level as memory
|
||||
memory=True,
|
||||
embedder={
|
||||
"provider": "openai",
|
||||
@@ -117,7 +116,7 @@ def main():
|
||||
# agents = Agents(
|
||||
# agents=[researcher, retriever],
|
||||
# tasks=[store_task, verify_task, query_task, query_both_task],
|
||||
# verbose=True, # Use same verbose level as memory
|
||||
# # Use same verbose level as memory
|
||||
# memory=True
|
||||
# )
|
||||
|
||||
|
||||
@@ -9,19 +9,19 @@ fact3 = "The year the first Josinga was released is 2007"
|
||||
fact_agent = Agent(
|
||||
name="Fact Agent",
|
||||
instructions="You are a fact agent, you store and retrieve facts in memory",
|
||||
llm="gpt-5-nano"
|
||||
llm="gpt-4o-mini"
|
||||
)
|
||||
|
||||
research_agent = Agent(
|
||||
name="Research Agent",
|
||||
instructions="You are a research analyst, you research and document key points about topics",
|
||||
llm="gpt-5-nano"
|
||||
llm="gpt-4o-mini"
|
||||
)
|
||||
|
||||
blog_agent = Agent(
|
||||
name="Blog Agent",
|
||||
instructions="You are a blog writer, you write a blog post about the research",
|
||||
llm="gpt-5-nano"
|
||||
llm="gpt-4o-mini"
|
||||
)
|
||||
|
||||
fact_task = Task(
|
||||
|
||||
@@ -7,7 +7,7 @@ vision_agent = Agent(
|
||||
goal="Analyze images and videos to extract meaningful information",
|
||||
backstory="""You are an expert in computer vision and image analysis.
|
||||
You excel at describing images, detecting objects, and understanding visual content.""",
|
||||
llm="gpt-5-nano",
|
||||
llm="gpt-4o-mini",
|
||||
reflection=False
|
||||
)
|
||||
|
||||
|
||||
@@ -96,8 +96,7 @@ synthesize_task = Task(
|
||||
workflow = Agents(
|
||||
agents=[router, worker1, worker2, worker3, synthesizer],
|
||||
tasks=[router_task, worker1_task, worker2_task, worker3_task, synthesize_task],
|
||||
process="workflow",
|
||||
verbose=True
|
||||
process="workflow", output="verbose"
|
||||
)
|
||||
|
||||
# Run orchestrated workflow
|
||||
|
||||
@@ -68,7 +68,7 @@ workflow = Agents(
|
||||
agents=[agent1, agent2, agent3],
|
||||
tasks=[initial_task, analysis_task, final_task],
|
||||
process="workflow", # Use workflow process type
|
||||
verbose=True
|
||||
output="verbose"
|
||||
)
|
||||
|
||||
# Run the workflow
|
||||
|
||||
@@ -12,8 +12,7 @@ researcher = Agent(
|
||||
role="Technology Research Analyst",
|
||||
goal="Analyze and structure information about AI developments",
|
||||
backstory="Expert analyst specializing in AI technology trends",
|
||||
verbose=True,
|
||||
llm="gpt-5-nano",
|
||||
llm="gpt-4o-mini",
|
||||
tools=[Tools.internet_search],
|
||||
reflection=False
|
||||
)
|
||||
@@ -24,8 +23,7 @@ analyst = Agent(
|
||||
role="Data Insights Specialist",
|
||||
goal="Structure and analyze research findings",
|
||||
backstory="Senior data analyst with expertise in pattern recognition",
|
||||
verbose=True,
|
||||
llm="gpt-5-nano",
|
||||
llm="gpt-4o-mini",
|
||||
reflection=False
|
||||
)
|
||||
|
||||
@@ -50,7 +48,7 @@ agents = Agents(
|
||||
agents=[researcher, analyst],
|
||||
tasks=[research_task, analysis_task],
|
||||
process="sequential",
|
||||
verbose=True
|
||||
output="verbose"
|
||||
)
|
||||
result = agents.start()
|
||||
print(result)
|
||||
@@ -35,7 +35,7 @@ def get_structured_analysis(query: str, verbose: bool = True) -> AnalysisReport:
|
||||
verbose=verbose,
|
||||
reflection=True, # Enable self-reflection for better quality
|
||||
markdown=True,
|
||||
llm="gpt-5-nano"
|
||||
llm="gpt-4o-mini"
|
||||
)
|
||||
|
||||
# Create the analysis prompt
|
||||
|
||||
@@ -108,8 +108,7 @@ task = Task(
|
||||
# Create and start the workflow
|
||||
agents = Agents(
|
||||
agents=[agent],
|
||||
tasks=[task],
|
||||
verbose=True
|
||||
tasks=[task], output="verbose"
|
||||
)
|
||||
|
||||
agents.start()
|
||||
@@ -183,8 +183,7 @@ llm_guardrail_task = Task(
|
||||
# Execute tasks with guardrails
|
||||
agents = Agents(
|
||||
agents=[email_agent, content_agent, business_agent, research_agent, llm_guardrail_agent],
|
||||
tasks=[email_task, content_task, business_task, research_task, llm_guardrail_task],
|
||||
verbose=True
|
||||
tasks=[email_task, content_task, business_task, research_task, llm_guardrail_task], output="verbose"
|
||||
)
|
||||
|
||||
print("="*80)
|
||||
|
||||
@@ -39,9 +39,7 @@ production_agent = Agent(
|
||||
backstory="Production-ready agent with built-in safety and compliance checks",
|
||||
tools=[internet_search],
|
||||
guardrails=content_guardrail,
|
||||
max_retries=3,
|
||||
verbose=True
|
||||
)
|
||||
max_retries=3)
|
||||
|
||||
# Create secure task with validation
|
||||
secure_task = Task(
|
||||
|
||||
@@ -0,0 +1,182 @@
|
||||
"""
|
||||
Unified Handoff Configuration Example.
|
||||
|
||||
Demonstrates the new HandoffConfig features:
|
||||
- Context policies (full, summary, none, last_n)
|
||||
- Cycle detection
|
||||
- Max depth limiting
|
||||
- Timeout configuration
|
||||
- Programmatic handoff via Agent.handoff_to()
|
||||
"""
|
||||
|
||||
from praisonaiagents import Agent, handoff, HandoffConfig, ContextPolicy
|
||||
|
||||
# Create specialized agents
|
||||
research_agent = Agent(
|
||||
name="Research Agent",
|
||||
role="Research Specialist",
|
||||
goal="Conduct thorough research on topics",
|
||||
backstory="Expert researcher with access to comprehensive knowledge bases."
|
||||
)
|
||||
|
||||
writer_agent = Agent(
|
||||
name="Writer Agent",
|
||||
role="Content Writer",
|
||||
goal="Create well-written content based on research",
|
||||
backstory="Professional writer skilled in creating engaging content."
|
||||
)
|
||||
|
||||
editor_agent = Agent(
|
||||
name="Editor Agent",
|
||||
role="Content Editor",
|
||||
goal="Review and polish written content",
|
||||
backstory="Experienced editor with keen eye for quality and clarity."
|
||||
)
|
||||
|
||||
# Create coordinator with handoffs using new config options
|
||||
coordinator = Agent(
|
||||
name="Coordinator",
|
||||
role="Project Coordinator",
|
||||
goal="Coordinate tasks between specialized agents",
|
||||
backstory="Expert at understanding requirements and delegating to the right specialist.",
|
||||
instructions="""Analyze the request and delegate to the appropriate specialist:
|
||||
- For research tasks, use transfer_to_research_agent
|
||||
- For writing tasks, use transfer_to_writer_agent
|
||||
- For editing tasks, use transfer_to_editor_agent
|
||||
Always explain your delegation decision.""",
|
||||
handoffs=[
|
||||
# Handoff with summary context policy (default - safe)
|
||||
handoff(
|
||||
research_agent,
|
||||
context_policy="summary",
|
||||
timeout_seconds=120,
|
||||
max_depth=5,
|
||||
),
|
||||
# Handoff with full context
|
||||
handoff(
|
||||
writer_agent,
|
||||
context_policy="full",
|
||||
timeout_seconds=180,
|
||||
),
|
||||
# Handoff with custom config
|
||||
handoff(
|
||||
editor_agent,
|
||||
config=HandoffConfig(
|
||||
context_policy=ContextPolicy.LAST_N,
|
||||
max_context_messages=5,
|
||||
detect_cycles=True,
|
||||
max_depth=3,
|
||||
),
|
||||
),
|
||||
]
|
||||
)
|
||||
|
||||
|
||||
def demo_llm_driven_handoff():
|
||||
"""Demonstrate LLM-driven handoff via tool calls."""
|
||||
print("=" * 60)
|
||||
print("Demo 1: LLM-Driven Handoff")
|
||||
print("=" * 60)
|
||||
|
||||
response = coordinator.chat("I need to research the latest trends in AI agents")
|
||||
print(f"\nFinal Response:\n{response}")
|
||||
|
||||
|
||||
def demo_programmatic_handoff():
|
||||
"""Demonstrate programmatic handoff via Agent.handoff_to()."""
|
||||
print("\n" + "=" * 60)
|
||||
print("Demo 2: Programmatic Handoff (Agent.handoff_to)")
|
||||
print("=" * 60)
|
||||
|
||||
# Create a simple agent for programmatic handoff
|
||||
source_agent = Agent(
|
||||
name="Source Agent",
|
||||
role="Task Initiator",
|
||||
goal="Initiate tasks and hand them off",
|
||||
)
|
||||
|
||||
target_agent = Agent(
|
||||
name="Target Agent",
|
||||
role="Task Executor",
|
||||
goal="Execute delegated tasks",
|
||||
)
|
||||
|
||||
# Programmatic handoff with custom config
|
||||
config = HandoffConfig(
|
||||
context_policy=ContextPolicy.SUMMARY,
|
||||
timeout_seconds=60,
|
||||
detect_cycles=True,
|
||||
)
|
||||
|
||||
result = source_agent.handoff_to(
|
||||
target_agent,
|
||||
prompt="Summarize the key benefits of multi-agent systems",
|
||||
config=config,
|
||||
)
|
||||
|
||||
print(f"\nHandoff Result:")
|
||||
print(f" Success: {result.success}")
|
||||
print(f" Target: {result.target_agent}")
|
||||
print(f" Duration: {result.duration_seconds:.2f}s")
|
||||
if result.response:
|
||||
print(f" Response: {result.response[:200]}...")
|
||||
|
||||
|
||||
def demo_handoff_chain():
|
||||
"""Demonstrate a handoff chain with depth tracking."""
|
||||
print("\n" + "=" * 60)
|
||||
print("Demo 3: Handoff Chain")
|
||||
print("=" * 60)
|
||||
|
||||
# Create a chain: Analyst -> Researcher -> Writer
|
||||
analyst = Agent(
|
||||
name="Analyst",
|
||||
role="Requirements Analyst",
|
||||
goal="Analyze requirements and delegate research",
|
||||
)
|
||||
|
||||
researcher = Agent(
|
||||
name="Researcher",
|
||||
role="Research Specialist",
|
||||
goal="Research topics and provide findings",
|
||||
)
|
||||
|
||||
writer = Agent(
|
||||
name="Writer",
|
||||
role="Technical Writer",
|
||||
goal="Write documentation based on research",
|
||||
)
|
||||
|
||||
# Chain: Analyst hands off to Researcher
|
||||
result1 = analyst.handoff_to(
|
||||
researcher,
|
||||
prompt="Research best practices for agent handoffs",
|
||||
config=HandoffConfig(max_depth=5),
|
||||
)
|
||||
print(f"\nStep 1 - Analyst -> Researcher:")
|
||||
print(f" Success: {result1.success}")
|
||||
print(f" Depth: {result1.handoff_depth}")
|
||||
|
||||
# Researcher hands off to Writer
|
||||
if result1.success:
|
||||
result2 = researcher.handoff_to(
|
||||
writer,
|
||||
prompt=f"Write documentation based on: {result1.response[:100] if result1.response else 'research findings'}",
|
||||
config=HandoffConfig(max_depth=5),
|
||||
)
|
||||
print(f"\nStep 2 - Researcher -> Writer:")
|
||||
print(f" Success: {result2.success}")
|
||||
print(f" Depth: {result2.handoff_depth}")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
print("\n🤝 Unified Handoff Configuration Demo\n")
|
||||
|
||||
# Run demos
|
||||
demo_llm_driven_handoff()
|
||||
demo_programmatic_handoff()
|
||||
demo_handoff_chain()
|
||||
|
||||
print("\n" + "=" * 60)
|
||||
print("All demos completed!")
|
||||
print("=" * 60)
|
||||
@@ -16,7 +16,7 @@ class DynamicAgentSystem:
|
||||
def __init__(self):
|
||||
self.user_preferences = {}
|
||||
self.llm_config = {
|
||||
"model": os.getenv("LLM_MODEL", "gpt-5-nano"),
|
||||
"model": os.getenv("LLM_MODEL", "gpt-4o-mini"),
|
||||
"temperature": 0.7
|
||||
}
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ default_topic = os.getenv("RESEARCH_TOPIC", "AI trends")
|
||||
user_topic = input(f"Topic to research [{default_topic}]: ") or default_topic
|
||||
|
||||
# Get other configuration from environment
|
||||
llm_model = os.getenv("LLM_MODEL", "gpt-5-nano")
|
||||
llm_model = os.getenv("LLM_MODEL", "gpt-4o-mini")
|
||||
temperature = float(os.getenv("LLM_TEMPERATURE", "0.7"))
|
||||
max_retries = int(os.getenv("MAX_RETRIES", "3"))
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@ with st.sidebar:
|
||||
# Model selection
|
||||
model = st.selectbox(
|
||||
"Select Model",
|
||||
["gpt-5-nano", "gpt-5-nano", "gpt-3.5-turbo", "claude-3-opus"],
|
||||
["gpt-4o-mini", "gpt-4o-mini", "gpt-3.5-turbo", "claude-3-opus"],
|
||||
index=0
|
||||
)
|
||||
|
||||
|
||||
@@ -105,10 +105,7 @@ knowledge_agent = Agent(
|
||||
instructions="""You are an expert in healthcare AI. Use the knowledge base to provide
|
||||
comprehensive, accurate answers. Always cite specific information from the documents
|
||||
when possible. If the knowledge base doesn't contain sufficient information, clearly
|
||||
state this and provide general guidance based on your training.""",
|
||||
|
||||
verbose=True
|
||||
)
|
||||
state this and provide general guidance based on your training.""")
|
||||
|
||||
# Test advanced knowledge retrieval with various question types
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ from praisonaiagents import Agent, MCP
|
||||
|
||||
search_agent = Agent(
|
||||
instructions="""You help book apartments on Airbnb.""",
|
||||
llm="gpt-5-nano",
|
||||
llm="gpt-4o-mini",
|
||||
tools=MCP("npx -y @openbnb/mcp-server-airbnb --ignore-robots-txt")
|
||||
)
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ aws_region = os.getenv("AWS_REGION")
|
||||
aws_kb_agent = Agent(
|
||||
instructions="""You are a helpful assistant that can interact with AWS Knowledge Base.
|
||||
Use the available tools when relevant to retrieve and process AWS information.""",
|
||||
llm="gpt-5-nano",
|
||||
llm="gpt-4o-mini",
|
||||
tools=MCP("npx -y @modelcontextprotocol/server-aws-kb-retrieval",
|
||||
env={
|
||||
"AWS_ACCESS_KEY_ID": aws_access_key,
|
||||
|
||||
@@ -8,7 +8,7 @@ brave_api_key = os.getenv("BRAVE_API_KEY")
|
||||
search_agent = Agent(
|
||||
instructions="""You are a helpful assistant that can search the web for information.
|
||||
Use the available tools when relevant to answer user questions.""",
|
||||
llm="gpt-5-nano",
|
||||
llm="gpt-4o-mini",
|
||||
tools=MCP("npx -y @modelcontextprotocol/server-brave-search", env={"BRAVE_API_KEY": brave_api_key})
|
||||
)
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ from praisonaiagents import Agent, MCP
|
||||
agent = Agent(
|
||||
instructions="""You are a helpful assistant that can check stock prices and perform other tasks.
|
||||
Use the available tools when relevant to answer user questions.""",
|
||||
llm="gpt-5-nano",
|
||||
llm="gpt-4o-mini",
|
||||
tools = MCP("/Users/praison/miniconda3/envs/mcp/bin/python /Users/praison/stockprice/app.py")
|
||||
)
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ databutton_api_key = os.getenv("DATABUTTON_API_KEY")
|
||||
databutton_agent = Agent(
|
||||
instructions="""You are a helpful assistant that can interact with Databutton.
|
||||
Use the available tools when relevant to answer user questions.""",
|
||||
llm="gpt-5-nano",
|
||||
llm="gpt-4o-mini",
|
||||
tools=MCP("uvx databutton-app-mcp@latest", env={"DATABUTTON_API_KEY": databutton_api_key})
|
||||
)
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ everart_api_key = os.getenv("EVERART_API_KEY")
|
||||
everart_agent = Agent(
|
||||
instructions="""You are a helpful assistant that can interact with Everart.
|
||||
Use the available tools when relevant to generate and manage art.""",
|
||||
llm="gpt-5-nano",
|
||||
llm="gpt-4o-mini",
|
||||
tools=MCP("npx -y @modelcontextprotocol/server-everart",
|
||||
env={"EVERART_API_KEY": everart_api_key})
|
||||
)
|
||||
|
||||
@@ -6,7 +6,7 @@ import os
|
||||
fetch_agent = Agent(
|
||||
instructions="""You are a helpful assistant that can fetch and process web content.
|
||||
Use the available tools when relevant to retrieve and convert web pages to markdown.""",
|
||||
llm="gpt-5-nano",
|
||||
llm="gpt-4o-mini",
|
||||
tools=MCP("python -m mcp_server_fetch")
|
||||
)
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ allowed_dirs = [
|
||||
filesystem_agent = Agent(
|
||||
instructions="""You are a helpful assistant that can interact with the filesystem.
|
||||
Use the available tools when relevant to manage files and directories.""",
|
||||
llm="gpt-5-nano",
|
||||
llm="gpt-4o-mini",
|
||||
tools=MCP("npx -y @modelcontextprotocol/server-filesystem", args=allowed_dirs)
|
||||
)
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ gdrive_credentials = os.getenv("GDRIVE_CREDENTIALS_PATH", "servers/gcp-oauth.key
|
||||
gdrive_agent = Agent(
|
||||
instructions="""You are a helpful assistant that can interact with Google Drive.
|
||||
Use the available tools when relevant to manage files and folders.""",
|
||||
llm="gpt-5-nano",
|
||||
llm="gpt-4o-mini",
|
||||
tools=MCP("npx -y @modelcontextprotocol/server-gdrive",
|
||||
env={"GDRIVE_CREDENTIALS_PATH": gdrive_credentials})
|
||||
)
|
||||
|
||||
@@ -11,7 +11,7 @@ git_token = os.getenv("GIT_TOKEN") # For private repos
|
||||
git_agent = Agent(
|
||||
instructions="""You are a helpful assistant that can perform Git operations.
|
||||
Use the available tools when relevant to manage repositories, commits, and branches.""",
|
||||
llm="gpt-5-nano",
|
||||
llm="gpt-4o-mini",
|
||||
tools=MCP("python -m mcp_server_git",
|
||||
env={
|
||||
"GIT_USERNAME": git_username,
|
||||
|
||||
@@ -8,7 +8,7 @@ github_token = os.getenv("GITHUB_PERSONAL_ACCESS_TOKEN")
|
||||
github_agent = Agent(
|
||||
instructions="""You are a helpful assistant that can interact with GitHub.
|
||||
Use the available tools when relevant to answer user questions.""",
|
||||
llm="gpt-5-nano",
|
||||
llm="gpt-4o-mini",
|
||||
tools=MCP("npx -y @modelcontextprotocol/server-github", env={"GITHUB_PERSONAL_ACCESS_TOKEN": github_token})
|
||||
)
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ gitlab_api_url = os.getenv("GITLAB_API_URL", "https://gitlab.com/api/v4")
|
||||
gitlab_agent = Agent(
|
||||
instructions="""You are a helpful assistant that can interact with GitLab.
|
||||
Use the available tools when relevant to answer user questions.""",
|
||||
llm="gpt-5-nano",
|
||||
llm="gpt-4o-mini",
|
||||
tools=MCP("npx -y @modelcontextprotocol/server-gitlab",
|
||||
env={
|
||||
"GITLAB_PERSONAL_ACCESS_TOKEN": gitlab_token,
|
||||
|
||||
@@ -8,7 +8,7 @@ maps_api_key = os.getenv("GOOGLE_MAPS_API_KEY")
|
||||
maps_agent = Agent(
|
||||
instructions="""You are a helpful assistant that can interact with Google Maps.
|
||||
Use the available tools when relevant to handle location-based queries.""",
|
||||
llm="gpt-5-nano",
|
||||
llm="gpt-4o-mini",
|
||||
tools=MCP("npx -y @modelcontextprotocol/server-google-maps",
|
||||
env={"GOOGLE_MAPS_API_KEY": maps_api_key})
|
||||
)
|
||||
|
||||
@@ -2,7 +2,7 @@ from praisonaiagents import Agent, MCP
|
||||
|
||||
search_agent = Agent(
|
||||
instructions="""You are a weather agent that can provide weather information for a given city.""",
|
||||
llm="openai/gpt-5-nano",
|
||||
llm="openai/gpt-4o-mini",
|
||||
tools=MCP("http://localhost:8080/sse")
|
||||
)
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ memory_file_path = os.getenv("MEMORY_FILE_PATH", "/path/to/custom/memory.json")
|
||||
memory_agent = Agent(
|
||||
instructions="""You are a helpful assistant that can store and retrieve information.
|
||||
Use the available tools when relevant to manage memory operations.""",
|
||||
llm="gpt-5-nano",
|
||||
llm="gpt-4o-mini",
|
||||
tools=MCP("npx -y @modelcontextprotocol/server-memory",
|
||||
env={"MEMORY_FILE_PATH": memory_file_path})
|
||||
)
|
||||
|
||||
@@ -2,7 +2,7 @@ from praisonaiagents import Agent, MCP
|
||||
|
||||
search_agent = Agent(
|
||||
instructions="""You help book apartments on Airbnb.""",
|
||||
llm="gpt-5-nano",
|
||||
llm="gpt-4o-mini",
|
||||
tools=MCP("npx -y @openbnb/mcp-server-airbnb --ignore-robots-txt")
|
||||
)
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ api_key = os.getenv("PERPLEXITY_API_KEY")
|
||||
|
||||
agent = Agent(
|
||||
instructions="You are a helpful assistant that can search the web for information. Use the available tools when relevant to answer user questions.",
|
||||
llm="gpt-5-nano",
|
||||
llm="gpt-4o-mini",
|
||||
tools=MCP("uvx perplexity-mcp",
|
||||
env={"PERPLEXITY_API_KEY": api_key, "PERPLEXITY_MODEL": "sonar" })
|
||||
)
|
||||
|
||||
@@ -2,7 +2,7 @@ from praisonaiagents import Agent, MCP
|
||||
|
||||
search_agent = Agent(
|
||||
instructions="""You help search the web.""",
|
||||
llm="gpt-5-nano",
|
||||
llm="gpt-4o-mini",
|
||||
tools=MCP("http://localhost:8931/sse")
|
||||
)
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ postgres_url = "postgresql://localhost/mydb"
|
||||
postgres_agent = Agent(
|
||||
instructions="""You are a helpful assistant that can interact with PostgreSQL databases.
|
||||
Use the available tools when relevant to manage database operations.""",
|
||||
llm="gpt-5-nano",
|
||||
llm="gpt-4o-mini",
|
||||
tools=MCP("npx -y @modelcontextprotocol/server-postgres", args=[postgres_url])
|
||||
)
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ import os
|
||||
puppeteer_agent = Agent(
|
||||
instructions="""You are a helpful assistant that can automate web browser interactions.
|
||||
Use the available tools when relevant to perform web automation tasks.""",
|
||||
llm="gpt-5-nano",
|
||||
llm="gpt-4o-mini",
|
||||
tools=MCP("npx -y @modelcontextprotocol/server-puppeteer")
|
||||
)
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ redis_url = "redis://localhost:6379"
|
||||
redis_agent = Agent(
|
||||
instructions="""You are a helpful assistant that can interact with Redis.
|
||||
Use the available tools when relevant to manage Redis operations.""",
|
||||
llm="gpt-5-nano",
|
||||
llm="gpt-4o-mini",
|
||||
tools=MCP("npx -y @modelcontextprotocol/server-redis", args=[redis_url])
|
||||
)
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ sentry_token = os.getenv("SENTRY_AUTH_TOKEN")
|
||||
sentry_agent = Agent(
|
||||
instructions="""You are a helpful assistant that can analyze Sentry error reports.
|
||||
Use the available tools when relevant to inspect and debug application issues.""",
|
||||
llm="gpt-5-nano",
|
||||
llm="gpt-4o-mini",
|
||||
tools=MCP("python -m mcp_server_sentry --auth-token", args=[sentry_token])
|
||||
)
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ import os
|
||||
sequential_agent = Agent(
|
||||
instructions="""You are a helpful assistant that can break down complex problems.
|
||||
Use the available tools when relevant to perform step-by-step analysis.""",
|
||||
llm="gpt-5-nano",
|
||||
llm="gpt-4o-mini",
|
||||
tools=MCP("npx -y @modelcontextprotocol/server-sequential-thinking")
|
||||
)
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ slack_team_id = os.getenv("SLACK_TEAM_ID")
|
||||
slack_agent = Agent(
|
||||
instructions="""You are a helpful assistant that can interact with Slack.
|
||||
Use the available tools when relevant to manage Slack communications.""",
|
||||
llm="gpt-5-nano",
|
||||
llm="gpt-4o-mini",
|
||||
tools=MCP("npx -y @modelcontextprotocol/server-slack",
|
||||
env={
|
||||
"SLACK_BOT_TOKEN": slack_token,
|
||||
|
||||
@@ -6,7 +6,7 @@ import os
|
||||
time_agent = Agent(
|
||||
instructions="""You are a helpful assistant that can handle time-related operations.
|
||||
Use the available tools when relevant to manage timezone conversions and time information.""",
|
||||
llm="gpt-5-nano",
|
||||
llm="gpt-4o-mini",
|
||||
tools=MCP("python -m mcp_server_time --local-timezone=America/New_York")
|
||||
)
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ from praisonaiagents import Agent, MCP
|
||||
|
||||
whatsapp_agent = Agent(
|
||||
instructions="Whatsapp Agent",
|
||||
llm="gpt-5-nano",
|
||||
llm="gpt-4o-mini",
|
||||
tools=MCP("python /Users/praison/whatsapp-mcp/whatsapp-mcp-server/main.py")
|
||||
)
|
||||
|
||||
|
||||
@@ -2,13 +2,13 @@ from praisonaiagents import Agent, Agents, MCP
|
||||
|
||||
airbnb_agent = Agent(
|
||||
instructions="""Search for Apartments in Paris for 2 nights on Airbnb. 04/28 - 04/30 for 2 adults""",
|
||||
llm="gpt-5-nano",
|
||||
llm="gpt-4o-mini",
|
||||
tools=MCP("npx -y @openbnb/mcp-server-airbnb --ignore-robots-txt")
|
||||
)
|
||||
|
||||
whatsapp_agent = Agent(
|
||||
instructions="""Send AirBnb Search Result to 'Mervin Praison'""",
|
||||
llm="gpt-5-nano",
|
||||
llm="gpt-4o-mini",
|
||||
tools=MCP("python /Users/praison/whatsapp-mcp/whatsapp-mcp-server/main.py")
|
||||
)
|
||||
|
||||
|
||||
@@ -4,13 +4,13 @@ import gradio as gr
|
||||
def search_airbnb(query):
|
||||
airbnb_agent = Agent(
|
||||
instructions=query+" on Airbnb",
|
||||
llm="gpt-5-nano",
|
||||
llm="gpt-4o-mini",
|
||||
tools=MCP("npx -y @openbnb/mcp-server-airbnb --ignore-robots-txt")
|
||||
)
|
||||
|
||||
whatsapp_agent = Agent(
|
||||
instructions="""Send AirBnb Search Result to 'Mervin Praison'. Don't include Phone Number in Response, but include the AirBnb Search Result""",
|
||||
llm="gpt-5-nano",
|
||||
llm="gpt-4o-mini",
|
||||
tools=MCP("python /Users/praison/whatsapp-mcp/whatsapp-mcp-server/main.py")
|
||||
)
|
||||
|
||||
|
||||
@@ -30,9 +30,7 @@ knowledge_agent = Agent(
|
||||
goal="Build and retrieve from knowledge graphs",
|
||||
backstory="Expert at creating structured knowledge and finding relationships",
|
||||
tools=[internet_search],
|
||||
memory=True,
|
||||
verbose=True
|
||||
)
|
||||
memory=True)
|
||||
|
||||
# Task to build knowledge graph about AI companies
|
||||
build_task = Task(
|
||||
@@ -63,8 +61,7 @@ agents_system = Agents(
|
||||
agents=[knowledge_agent],
|
||||
tasks=[build_task, query_task],
|
||||
memory=True,
|
||||
memory_config=memory_config,
|
||||
verbose=True
|
||||
memory_config=memory_config, output="verbose"
|
||||
)
|
||||
|
||||
print("Starting graph memory demonstration...")
|
||||
|
||||
@@ -30,9 +30,7 @@ research_agent = Agent(
|
||||
goal="Research and demonstrate optimized memory search patterns",
|
||||
backstory="Expert at storing and retrieving information efficiently with memory optimization",
|
||||
tools=[internet_search],
|
||||
memory=True,
|
||||
verbose=True
|
||||
)
|
||||
memory=True)
|
||||
|
||||
# Task to build searchable memory
|
||||
build_memory_task = Task(
|
||||
@@ -64,8 +62,7 @@ agents_system = Agents(
|
||||
agents=[research_agent],
|
||||
tasks=[build_memory_task, search_task],
|
||||
memory=True,
|
||||
memory_config=memory_config,
|
||||
verbose=True
|
||||
memory_config=memory_config, output="verbose"
|
||||
)
|
||||
|
||||
print("Starting memory search optimization demonstration...")
|
||||
|
||||
@@ -39,7 +39,7 @@ def main():
|
||||
role="Information Researcher",
|
||||
goal="Research and store important information about topics",
|
||||
backstory="Expert at analyzing and documenting information with semantic understanding",
|
||||
llm="gpt-5-nano" # Using GPT for chat, Gemini for embeddings
|
||||
llm="gpt-4o-mini" # Using GPT for chat, Gemini for embeddings
|
||||
)
|
||||
|
||||
retriever = Agent(
|
||||
@@ -47,7 +47,7 @@ def main():
|
||||
role="Information Retriever",
|
||||
goal="Retrieve relevant information from memory using semantic search",
|
||||
backstory="Specialist in finding and presenting stored information",
|
||||
llm="gpt-5-nano"
|
||||
llm="gpt-4o-mini"
|
||||
)
|
||||
|
||||
# Task 1: Store information with semantic meaning
|
||||
@@ -85,7 +85,6 @@ def main():
|
||||
agents = Agents(
|
||||
agents=[researcher, retriever],
|
||||
tasks=[store_task, retrieve_task],
|
||||
verbose=True,
|
||||
memory=True,
|
||||
embedder={
|
||||
"provider": "gemini",
|
||||
@@ -101,7 +100,7 @@ def main():
|
||||
# agents = Agents(
|
||||
# agents=[researcher, retriever],
|
||||
# tasks=[store_task, retrieve_task],
|
||||
# verbose=True,
|
||||
#
|
||||
# memory=True,
|
||||
# embedder={
|
||||
# "provider": "gemini",
|
||||
|
||||
@@ -36,7 +36,7 @@ def main():
|
||||
"llm": {
|
||||
"provider": "openai",
|
||||
"config": {
|
||||
"model": "gpt-5-nano"
|
||||
"model": "gpt-4o-mini"
|
||||
}
|
||||
},
|
||||
"embedder": {
|
||||
|
||||
@@ -41,7 +41,7 @@ def main():
|
||||
"llm": {
|
||||
"provider": "openai",
|
||||
"config": {
|
||||
"model": "gpt-5-nano"
|
||||
"model": "gpt-4o-mini"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -69,7 +69,7 @@ def main():
|
||||
"llm": {
|
||||
"provider": "openai",
|
||||
"config": {
|
||||
"model": "gpt-5-nano"
|
||||
"model": "gpt-4o-mini"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -102,7 +102,6 @@ def main():
|
||||
backstory="""You are an expert at identifying relationships between concepts,
|
||||
people, technologies, and ideas. You excel at creating structured knowledge
|
||||
that captures complex interconnections.""",
|
||||
verbose=True,
|
||||
memory=True
|
||||
)
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@ agent = Agent(
|
||||
instructions="You are a helpful Assistant specialized in scientific explanations. "
|
||||
"Provide clear, accurate, and engaging responses.",
|
||||
llm=llm_config, # Pass the detailed configuration
|
||||
verbose=True, # Enable detailed output
|
||||
# Enable detailed output
|
||||
markdown=True, # Format responses in markdown
|
||||
reflection=True # Enable self-reflection
|
||||
)
|
||||
|
||||
@@ -4,9 +4,7 @@ from praisonaiagents import Agent
|
||||
agent = Agent(
|
||||
instructions="You are a helpful assistant",
|
||||
llm="gemini/gemini-1.5-flash-8b",
|
||||
reflection=True,
|
||||
verbose=True
|
||||
)
|
||||
reflection=True)
|
||||
|
||||
# Use achat instead of start/chat for async operation
|
||||
response = asyncio.run(agent.achat("Why sky is Blue in 1000 words?"))
|
||||
@@ -3,8 +3,6 @@ from praisonaiagents import Agent
|
||||
agent = Agent(
|
||||
instructions="You are a helpful assistant",
|
||||
llm="gemini/gemini-1.5-flash-8b",
|
||||
reflection=True,
|
||||
verbose=True
|
||||
)
|
||||
reflection=True)
|
||||
|
||||
agent.start("Why sky is Blue?")
|
||||
Loaded 100 of 231 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user