Compare commits

...
2 Commits
Author SHA1 Message Date
Mervin Praison d3f6eb4096 Release v3.5.2 2026-01-08 21:14:45 +00:00
Mervin Praison c691b0a4c0 Release v3.5.1 2026-01-08 20:12:14 +00:00
231 changed files with 1910 additions and 838 deletions

No files matched your search

+1 -1
View File
@@ -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]"
+1 -1
View File
@@ -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]" \
+1 -1
View File
@@ -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...")
+1 -2
View File
@@ -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
+4 -6
View File
@@ -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))
+1 -1
View File
@@ -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
)
+1 -2
View File
@@ -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()
+15 -26
View File
@@ -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")
+1 -1
View File
@@ -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
)
+1 -1
View File
@@ -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")
)
+3 -3
View File
@@ -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
+1 -1
View File
@@ -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 -1
View File
@@ -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)
+1 -1
View File
@@ -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)
+1 -1
View File
@@ -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):
+3 -3
View File
@@ -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):
+1 -1
View File
@@ -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:")
+1 -1
View File
@@ -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(
+4 -8
View File
@@ -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
+6 -10
View File
@@ -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(
-2
View File
@@ -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
)
+1 -2
View File
@@ -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
+3 -6
View File
@@ -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:
+1 -2
View File
@@ -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()
+4 -5
View File
@@ -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
# )
+3 -3
View File
@@ -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(
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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
+1 -2
View File
@@ -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"))
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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")
)
+1 -1
View File
@@ -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,
+1 -1
View File
@@ -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})
)
+1 -1
View File
@@ -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")
)
+1 -1
View File
@@ -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})
)
+1 -1
View File
@@ -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})
)
+1 -1
View File
@@ -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")
)
+1 -1
View File
@@ -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)
)
+1 -1
View File
@@ -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})
)
+1 -1
View File
@@ -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,
+1 -1
View File
@@ -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})
)
+1 -1
View File
@@ -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,
+1 -1
View File
@@ -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})
)
+1 -1
View File
@@ -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")
)
+1 -1
View File
@@ -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})
)
+1 -1
View File
@@ -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")
)
+1 -1
View File
@@ -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" })
)
+1 -1
View File
@@ -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")
)
+1 -1
View File
@@ -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])
)
+1 -1
View File
@@ -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")
)
+1 -1
View File
@@ -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])
)
+1 -1
View File
@@ -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")
)
+1 -1
View File
@@ -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,
+1 -1
View File
@@ -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")
)
+1 -1
View File
@@ -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")
)
+2 -2
View File
@@ -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": {
+2 -3
View File
@@ -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