You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
swarms/new_features_examples/spike/agent_rearrange_test.py

239 lines
7.9 KiB

"""
Todo
- You send structured data to the swarm through the users form they make
- then connect rag for every agent using llama index to remember all the students data
- structured outputs
"""
import os
from dotenv import load_dotenv
from swarms import Agent, AgentRearrange
from swarm_models import OpenAIChat, OpenAIFunctionCaller
from pydantic import BaseModel
from typing import List
class CollegeLog(BaseModel):
college_name: str
college_description: str
college_admission_requirements: str
class CollegesRecommendation(BaseModel):
colleges: List[CollegeLog]
reasoning: str
load_dotenv()
# Get the API key from environment variable
api_key = os.getenv("GROQ_API_KEY")
# Initialize the model
model = OpenAIChat(
openai_api_base="https://api.groq.com/openai/v1",
openai_api_key=api_key,
model_name="llama-3.1-70b-versatile",
temperature=0.1,
)
FINAL_AGENT_PROMPT = """
You are a college selection final decision maker. Your role is to:
1. Synthesize all previous analyses and discussions
2. Weigh competing factors and trade-offs
3. Create a final ranked list of recommended colleges
4. Provide clear rationale for each recommendation
5. Include specific action items for each selected school
6. Outline next steps in the application process
Focus on creating actionable, well-reasoned final recommendations that
balance all relevant factors and stakeholder input.
"""
function_caller = OpenAIFunctionCaller(
system_prompt=FINAL_AGENT_PROMPT,
openai_api_key=os.getenv("OPENAI_API_KEY"),
base_model=CollegesRecommendation,
parallel_tool_calls=True,
)
# Student Profile Analyzer Agent
profile_analyzer_agent = Agent(
agent_name="Student-Profile-Analyzer",
system_prompt="""You are an expert student profile analyzer. Your role is to:
1. Analyze academic performance, test scores, and extracurricular activities
2. Identify student's strengths, weaknesses, and unique qualities
3. Evaluate personal statements and essays
4. Assess leadership experiences and community involvement
5. Determine student's preferences for college environment, location, and programs
6. Create a comprehensive student profile summary
Always consider both quantitative metrics (GPA, test scores) and qualitative aspects
(personal growth, challenges overcome, unique perspectives).""",
llm=model,
max_loops=1,
verbose=True,
dynamic_temperature_enabled=True,
saved_state_path="profile_analyzer_agent.json",
user_name="student",
context_length=200000,
output_type="string",
)
# College Research Agent
college_research_agent = Agent(
agent_name="College-Research-Specialist",
system_prompt="""You are a college research specialist. Your role is to:
1. Maintain updated knowledge of college admission requirements
2. Research academic programs, campus culture, and student life
3. Analyze admission statistics and trends
4. Evaluate college-specific opportunities and resources
5. Consider financial aid availability and scholarship opportunities
6. Track historical admission data and acceptance rates
Focus on providing accurate, comprehensive information about each institution
while considering both academic and cultural fit factors.""",
llm=model,
max_loops=1,
verbose=True,
dynamic_temperature_enabled=True,
saved_state_path="college_research_agent.json",
user_name="researcher",
context_length=200000,
output_type="string",
)
# College Match Agent
college_match_agent = Agent(
agent_name="College-Match-Maker",
system_prompt="""You are a college matching specialist. Your role is to:
1. Compare student profiles with college requirements
2. Evaluate fit based on academic, social, and cultural factors
3. Consider geographic preferences and constraints
4. Assess financial fit and aid opportunities
5. Create tiered lists of reach, target, and safety schools
6. Explain the reasoning behind each match
Always provide a balanced list with realistic expectations while
considering both student preferences and admission probability.""",
llm=model,
max_loops=1,
verbose=True,
dynamic_temperature_enabled=True,
saved_state_path="college_match_agent.json",
user_name="matcher",
context_length=200000,
output_type="string",
)
# Debate Moderator Agent
debate_moderator_agent = Agent(
agent_name="Debate-Moderator",
system_prompt="""You are a college selection debate moderator. Your role is to:
1. Facilitate discussions between different perspectives
2. Ensure all relevant factors are considered
3. Challenge assumptions and biases
4. Synthesize different viewpoints
5. Guide the group toward consensus
6. Document key points of agreement and disagreement
Maintain objectivity while ensuring all important factors are thoroughly discussed
and evaluated.""",
llm=model,
max_loops=1,
verbose=True,
dynamic_temperature_enabled=True,
saved_state_path="debate_moderator_agent.json",
user_name="moderator",
context_length=200000,
output_type="string",
)
# Critique Agent
critique_agent = Agent(
agent_name="College-Selection-Critic",
system_prompt="""You are a college selection critic. Your role is to:
1. Evaluate the strength of college matches
2. Identify potential overlooked factors
3. Challenge assumptions in the selection process
4. Assess risks and potential drawbacks
5. Provide constructive feedback on selections
6. Suggest alternative options when appropriate
Focus on constructive criticism that helps improve the final college list
while maintaining realistic expectations.""",
llm=model,
max_loops=1,
verbose=True,
dynamic_temperature_enabled=True,
saved_state_path="critique_agent.json",
user_name="critic",
context_length=200000,
output_type="string",
)
# Final Decision Agent
final_decision_agent = Agent(
agent_name="Final-Decision-Maker",
system_prompt="""
You are a college selection final decision maker. Your role is to:
1. Synthesize all previous analyses and discussions
2. Weigh competing factors and trade-offs
3. Create a final ranked list of recommended colleges
4. Provide clear rationale for each recommendation
5. Include specific action items for each selected school
6. Outline next steps in the application process
Focus on creating actionable, well-reasoned final recommendations that
balance all relevant factors and stakeholder input.
""",
llm=model,
max_loops=1,
verbose=True,
dynamic_temperature_enabled=True,
saved_state_path="final_decision_agent.json",
user_name="decision_maker",
context_length=200000,
output_type="string",
)
# Initialize the Sequential Workflow
college_selection_workflow = AgentRearrange(
name="college-selection-swarm",
description="Comprehensive college selection and analysis system",
max_loops=1,
agents=[
profile_analyzer_agent,
college_research_agent,
college_match_agent,
debate_moderator_agent,
critique_agent,
final_decision_agent,
],
output_type="all",
flow=f"{profile_analyzer_agent.name} -> {college_research_agent.name} -> {college_match_agent.name} -> {debate_moderator_agent.name} -> {critique_agent.name} -> {final_decision_agent.name}",
)
# Example usage
if __name__ == "__main__":
# Example student profile input
student_profile = """
Student Profile:
- GPA: 3.8
- SAT: 1450
- Interests: Computer Science, Robotics
- Location Preference: East Coast
- Extracurriculars: Robotics Club President, Math Team
- Budget: Need financial aid
- Preferred Environment: Medium-sized urban campus
"""
# Run the comprehensive college selection analysis
result = college_selection_workflow.run(
student_profile,
no_use_clusterops=True,
)
print(result)