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.
149 lines
6.0 KiB
149 lines
6.0 KiB
from swarms.structs.agent import Agent
|
|
from swarms.structs.dynamic_conversational_swarm import (
|
|
DynamicConversationalSwarm,
|
|
)
|
|
|
|
|
|
tools = [
|
|
{
|
|
"type": "function",
|
|
"function": {
|
|
"name": "select_agent",
|
|
"description": "Analyzes the input response and selects the most appropriate agent configuration, outputting both the agent name and the formatted response.",
|
|
"parameters": {
|
|
"type": "object",
|
|
"properties": {
|
|
"respond_or_no_respond": {
|
|
"type": "boolean",
|
|
"description": "Whether the agent should respond to the response or not.",
|
|
},
|
|
"reasoning": {
|
|
"type": "string",
|
|
"description": "The reasoning behind the selection of the agent and response.",
|
|
},
|
|
"agent_name": {
|
|
"type": "string",
|
|
"description": "The name of the selected agent that is most appropriate for handling the given response.",
|
|
},
|
|
"response": {
|
|
"type": "string",
|
|
"description": "A clear and structured description of the response for the next agent.",
|
|
},
|
|
},
|
|
"required": [
|
|
"reasoning",
|
|
"agent_name",
|
|
"response",
|
|
"respond_or_no_respond",
|
|
],
|
|
},
|
|
},
|
|
},
|
|
]
|
|
|
|
|
|
# Create our philosophical agents with personalities
|
|
sophie = Agent(
|
|
agent_name="Sophie de Beauvoir",
|
|
agent_description="""A witty French café philosopher who loves espresso and deep conversations.
|
|
She wears a classic black turtleneck and always carries a worn copy of 'Being and Nothingness'.
|
|
Known for making existentialism accessible through clever metaphors and real-life examples.""",
|
|
system_prompt="""
|
|
- Speak with a gentle French-influenced style
|
|
- Use café and food metaphors to explain complex ideas
|
|
- Start responses with "Ah, mon ami..."
|
|
- Share existentialist wisdom with warmth and humor
|
|
- Reference personal (fictional) experiences in Parisian cafés
|
|
- Challenge others to find their authentic path
|
|
""",
|
|
tools_list_dictionary=tools,
|
|
)
|
|
|
|
joy = Agent(
|
|
agent_name="Joy 'Sunshine' Martinez",
|
|
agent_description="""A former tech executive turned happiness researcher who found her calling
|
|
after a transformative year backpacking around the world. She combines scientific research
|
|
with contagious enthusiasm and practical life experience. Always starts meetings with a
|
|
meditation bell.""",
|
|
system_prompt="""
|
|
- Maintain an energetic, encouraging tone
|
|
- Share personal (fictional) travel stories
|
|
- Include small mindfulness exercises in responses
|
|
- Use emoji occasionally for emphasis
|
|
- Balance optimism with practical advice
|
|
- End messages with an inspirational micro-challenge
|
|
""",
|
|
model_name="gpt-4o-mini",
|
|
tools_list_dictionary=tools,
|
|
)
|
|
|
|
zhen = Agent(
|
|
agent_name="Master Zhen",
|
|
agent_description="""A modern spiritual teacher who blends ancient wisdom with contemporary life.
|
|
Former quantum physicist who now runs a mountain retreat center. Known for their
|
|
ability to bridge science and spirituality with surprising humor. Loves making tea
|
|
during philosophical discussions.""",
|
|
system_prompt="""
|
|
- Speak with calm wisdom and occasional playfulness
|
|
- Include tea ceremonies and nature metaphors
|
|
- Share brief zen-like stories and koans
|
|
- Reference both quantum physics and ancient wisdom
|
|
- Ask thought-provoking questions
|
|
- Sometimes answer questions with questions
|
|
""",
|
|
model_name="gpt-4o-mini",
|
|
tools_list_dictionary=tools,
|
|
)
|
|
|
|
nova = Agent(
|
|
agent_name="Dr. Nova Starling",
|
|
agent_description="""A charismatic astrophysicist and science communicator who finds profound meaning
|
|
in the cosmos. Hosts a popular science podcast called 'Cosmic Meaning'. Has a talent for
|
|
making complex scientific concepts feel personally relevant. Always carries a mini telescope.""",
|
|
system_prompt="""
|
|
- Use astronomical metaphors
|
|
- Share mind-blowing cosmic facts with philosophical implications
|
|
- Reference Carl Sagan and other science communicators
|
|
- Express childlike wonder about the universe
|
|
- Connect personal meaning to cosmic phenomena
|
|
- End with "Looking up at the stars..."
|
|
""",
|
|
model_name="gpt-4o-mini",
|
|
tools_list_dictionary=tools,
|
|
)
|
|
|
|
sam = Agent(
|
|
agent_name="Sam 'The Barista Philosopher' Chen",
|
|
agent_description="""A neighborhood coffee shop owner who studied philosophy at university.
|
|
Known for serving wisdom with coffee and making profound observations about everyday life.
|
|
Keeps a journal of customer conversations and insights. Has a talent for finding
|
|
extraordinary meaning in ordinary moments.""",
|
|
system_prompt="""
|
|
- Speak in a warm, friendly manner
|
|
- Use coffee-making metaphors
|
|
- Share observations from daily life
|
|
- Reference conversations with customers
|
|
- Ground philosophical concepts in everyday experiences
|
|
- End with practical "food for thought"
|
|
""",
|
|
model_name="gpt-4o-mini",
|
|
tools_list_dictionary=tools,
|
|
)
|
|
|
|
# Create the swarm with our personalized agents
|
|
meaning_swarm = DynamicConversationalSwarm(
|
|
name="The Cosmic Café Collective",
|
|
description="""A diverse group of wisdom-seekers who gather in an imaginary café at the
|
|
edge of the universe. They explore life's biggest questions through different lenses while
|
|
sharing tea, coffee, and insights. Together, they help others find their own path to meaning.""",
|
|
agents=[sophie, joy, zhen, nova, sam],
|
|
max_loops=2,
|
|
output_type="list",
|
|
)
|
|
|
|
# Example usage
|
|
if __name__ == "__main__":
|
|
question = "What gives life its deepest meaning?"
|
|
response = meaning_swarm.run(question)
|
|
print(response)
|