Merge 4d32b3156b
into 234138c75d
commit
c1b2276d3a
@ -0,0 +1,97 @@
|
|||||||
|
from swarms.agents.reasoning_duo import ReasoningDuo
|
||||||
|
from loguru import logger
|
||||||
|
import time
|
||||||
|
from dotenv import load_dotenv
|
||||||
|
|
||||||
|
|
||||||
|
# Load environment variables from .env file
|
||||||
|
load_dotenv()
|
||||||
|
|
||||||
|
# Configure loguru to display more detailed information
|
||||||
|
logger.remove()
|
||||||
|
logger.add(lambda msg: print(msg), level="DEBUG")
|
||||||
|
|
||||||
|
print("===== agent pool mechanism demonstration (Claude model) =====")
|
||||||
|
|
||||||
|
# Example 1: When creating a agent for the first time, a new agent instance will be created and added to the pool
|
||||||
|
print("\n[example1]: Creating the first ReasoningDuo instance (Configuration A)")
|
||||||
|
duo_a1 = ReasoningDuo(
|
||||||
|
system_prompt="You are a helpful assistant that can answer questions and help with tasks.",
|
||||||
|
model_names=["claude-3-5-haiku-20241022", "claude-3-7-sonnet-20250219"],
|
||||||
|
reasoning_model_name="claude-3-5-haiku-20241022",
|
||||||
|
agent_name="finance-agent"
|
||||||
|
)
|
||||||
|
|
||||||
|
# use first agent to run a task
|
||||||
|
print("\n[Example 1] Run a task using the first agent:")
|
||||||
|
result = duo_a1.run(
|
||||||
|
"What is the best possible financial strategy to maximize returns but minimize risk? Give a list of etfs to invest in and the percentage of the portfolio to allocate to each etf."
|
||||||
|
)
|
||||||
|
|
||||||
|
# example2: Create a second instance of the same configuration while the first instance is still in use
|
||||||
|
print("\n[example2]: Creating the second ReasoningDuo instance (Configuration A)")
|
||||||
|
duo_a2 = ReasoningDuo(
|
||||||
|
system_prompt="You are a helpful assistant that can answer questions and help with tasks.",
|
||||||
|
model_names=["claude-3-5-haiku-20241022", "claude-3-7-sonnet-20250219"],
|
||||||
|
reasoning_model_name="claude-3-5-haiku-20241022",
|
||||||
|
agent_name="finance-agent"
|
||||||
|
)
|
||||||
|
|
||||||
|
# example3: Create a third instance with a different configuration, which will create a new agent
|
||||||
|
print("\n[example3]: Creating a ReasoningDuo instance with a different configuration:")
|
||||||
|
duo_b = ReasoningDuo(
|
||||||
|
system_prompt="You are an expert financial advisor helping with investment strategies.",
|
||||||
|
model_names=["claude-3-5-haiku-20241022", "claude-3-5-sonnet-20241022"], # 不同的模型组合
|
||||||
|
reasoning_model_name="claude-3-5-haiku-20241022",
|
||||||
|
agent_name="expert-finance-agent"
|
||||||
|
)
|
||||||
|
|
||||||
|
# example4: Disable agent pool reuse
|
||||||
|
print("\n[example4]: Creating a ReasoningDuo instance with agent reuse disabled:")
|
||||||
|
duo_c = ReasoningDuo(
|
||||||
|
system_prompt="You are a helpful assistant that can answer questions and help with tasks.",
|
||||||
|
model_names=["claude-3-5-haiku-20241022", "claude-3-7-sonnet-20250219"],
|
||||||
|
reasoning_model_name="claude-3-5-haiku-20241022",
|
||||||
|
agent_name="finance-agent",
|
||||||
|
reuse_agents=False # Disable agent reuse
|
||||||
|
)
|
||||||
|
|
||||||
|
# Release the first instance's agent back to the pool
|
||||||
|
print("\n[example5]: Releasing the first instance's agent back to the pool:")
|
||||||
|
del duo_a1 # This will trigger the __del__ method and release the agent back to the pool
|
||||||
|
|
||||||
|
# Wait for a second to ensure cleanup is complete
|
||||||
|
time.sleep(1)
|
||||||
|
|
||||||
|
# Example 6: Create a new instance with the same configuration as the first one, which should reuse the agent from the pool
|
||||||
|
print("\n[example6]: Creating a new instance with the same configuration as the first one, which should reuse the agent from the pool:")
|
||||||
|
duo_a3 = ReasoningDuo(
|
||||||
|
system_prompt="You are a helpful assistant that can answer questions and help with tasks.",
|
||||||
|
model_names=["claude-3-5-haiku-20241022", "claude-3-7-sonnet-20250219"],
|
||||||
|
reasoning_model_name="claude-3-5-haiku-20241022",
|
||||||
|
agent_name="finance-agent"
|
||||||
|
)
|
||||||
|
|
||||||
|
# use batched_run to execute tasks
|
||||||
|
print("\n[example7]: Using the reused agent to run batched tasks:")
|
||||||
|
results = duo_a3.batched_run(
|
||||||
|
[
|
||||||
|
"What is the best possible financial strategy for a conservative investor nearing retirement?",
|
||||||
|
"What is the best possible financial strategy for a young investor with high risk tolerance?"
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
# Configure pool parameters
|
||||||
|
print("\n[example8]: Configuring agent pool parameters:")
|
||||||
|
ReasoningDuo.configure_pool(cleanup_interval=180, max_idle_time=600)
|
||||||
|
|
||||||
|
# Display current pool status
|
||||||
|
print("\n[example9]: Displaying current pool status:")
|
||||||
|
print(f"Reasoning agent pool size: {len(ReasoningDuo._reasoning_agent_pool)}")
|
||||||
|
print(f"Main agent pool size: {len(ReasoningDuo._main_agent_pool)}")
|
||||||
|
|
||||||
|
# Clear all pools
|
||||||
|
print("\n[example10]: Clearing all agent pools:")
|
||||||
|
ReasoningDuo.clear_pools()
|
||||||
|
print(f"Reasoning agent pool size after clearing: {len(ReasoningDuo._reasoning_agent_pool)}")
|
||||||
|
print(f"Main agent pool size after clearing: {len(ReasoningDuo._main_agent_pool)}")
|
Loading…
Reference in new issue