|
|
@ -1,62 +1,35 @@
|
|
|
|
import os
|
|
|
|
|
|
|
|
from swarms import Agent
|
|
|
|
from swarms import Agent
|
|
|
|
from swarms.tools.mcp_integration import MCPServerSseParams
|
|
|
|
from swarms.tools.mcp_integration import MCPServerSseParams
|
|
|
|
from swarms.prompts.agent_prompts import MATH_AGENT_PROMPT
|
|
|
|
from swarms.prompts.agent_prompts import MATH_AGENT_PROMPT
|
|
|
|
from loguru import logger
|
|
|
|
from loguru import logger
|
|
|
|
|
|
|
|
|
|
|
|
# Set OpenAI API key
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def initialize_math_system():
|
|
|
|
def initialize_math_system():
|
|
|
|
"""Initialize the math agent with MCP server configuration."""
|
|
|
|
"""Initialize the math agent with MCP server configuration."""
|
|
|
|
# Configure MCP server connection with SSE transport
|
|
|
|
|
|
|
|
math_server = MCPServerSseParams(
|
|
|
|
math_server = MCPServerSseParams(
|
|
|
|
url="http://localhost:8000",
|
|
|
|
url="http://0.0.0.0:8000",
|
|
|
|
headers={
|
|
|
|
headers={"Content-Type": "application/json"},
|
|
|
|
"Content-Type": "application/json",
|
|
|
|
|
|
|
|
"Accept": "text/event-stream"
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
timeout=5.0,
|
|
|
|
timeout=5.0,
|
|
|
|
sse_read_timeout=30.0)
|
|
|
|
sse_read_timeout=30.0
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
# Initialize math agent with specific model
|
|
|
|
|
|
|
|
math_agent = Agent(
|
|
|
|
math_agent = Agent(
|
|
|
|
agent_name="Math Agent",
|
|
|
|
agent_name="Math Agent",
|
|
|
|
agent_description="Basic math calculator",
|
|
|
|
agent_description="Basic math calculator",
|
|
|
|
system_prompt=MATH_AGENT_PROMPT,
|
|
|
|
system_prompt=MATH_AGENT_PROMPT,
|
|
|
|
max_loops=1,
|
|
|
|
max_loops=1,
|
|
|
|
mcp_servers=[math_server],
|
|
|
|
mcp_servers=[math_server]
|
|
|
|
streaming_on=False,
|
|
|
|
)
|
|
|
|
model_name="gpt-4o-mini",
|
|
|
|
|
|
|
|
temperature=0.1)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return math_agent
|
|
|
|
return math_agent
|
|
|
|
|
|
|
|
|
|
|
|
def process_query(math_agent, query):
|
|
|
|
|
|
|
|
"""Process a single math query."""
|
|
|
|
|
|
|
|
try:
|
|
|
|
|
|
|
|
result = math_agent.run(query)
|
|
|
|
|
|
|
|
# Clean up the result to show only the number or error message
|
|
|
|
|
|
|
|
if isinstance(result, (int, float)):
|
|
|
|
|
|
|
|
return result
|
|
|
|
|
|
|
|
elif "error" in result.lower():
|
|
|
|
|
|
|
|
return result
|
|
|
|
|
|
|
|
else:
|
|
|
|
|
|
|
|
# Try to extract just the number from the result
|
|
|
|
|
|
|
|
try:
|
|
|
|
|
|
|
|
return float(result)
|
|
|
|
|
|
|
|
except:
|
|
|
|
|
|
|
|
return "Error: Invalid result format"
|
|
|
|
|
|
|
|
except Exception as e:
|
|
|
|
|
|
|
|
return f"Error: {str(e)}"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def main():
|
|
|
|
def main():
|
|
|
|
# Initialize the math system
|
|
|
|
|
|
|
|
math_agent = initialize_math_system()
|
|
|
|
math_agent = initialize_math_system()
|
|
|
|
|
|
|
|
|
|
|
|
print("\nMath Calculator Ready!")
|
|
|
|
print("\nMath Calculator Ready!")
|
|
|
|
print("Available operations: add, multiply, divide")
|
|
|
|
print("Available operations: add, multiply, divide")
|
|
|
|
print("Example: 'add 5 and 3' or 'multiply 4 by 6'")
|
|
|
|
print("Example: 'add 5 and 3' or 'multiply 4 by 6'")
|
|
|
|
print("Type 'exit' to quit\n")
|
|
|
|
print("Type 'exit' to quit\n")
|
|
|
|
|
|
|
|
|
|
|
|
while True:
|
|
|
|
while True:
|
|
|
|
try:
|
|
|
|
try:
|
|
|
|
query = input("Enter math operation: ").strip()
|
|
|
|
query = input("Enter math operation: ").strip()
|
|
|
@ -65,14 +38,14 @@ def main():
|
|
|
|
if query.lower() == 'exit':
|
|
|
|
if query.lower() == 'exit':
|
|
|
|
break
|
|
|
|
break
|
|
|
|
|
|
|
|
|
|
|
|
result = process_query(math_agent, query)
|
|
|
|
result = math_agent.run(query)
|
|
|
|
print(f"Result: {result}")
|
|
|
|
print(f"Result: {result}")
|
|
|
|
|
|
|
|
|
|
|
|
except KeyboardInterrupt:
|
|
|
|
except KeyboardInterrupt:
|
|
|
|
print("\nExiting...")
|
|
|
|
print("\nExiting...")
|
|
|
|
break
|
|
|
|
break
|
|
|
|
except Exception as e:
|
|
|
|
except Exception as e:
|
|
|
|
print(f"Error: {e}")
|
|
|
|
logger.error(f"Error: {e}")
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
if __name__ == "__main__":
|
|
|
|
main()
|
|
|
|
main()
|