from praisonaiagents import Agent, Task, Agents, Session
from praisonaiagents.tools import get_stock_price, get_stock_info, get_historical_data
from pydantic import BaseModel
# Structured output schema
class StockAnalysis(BaseModel):
symbol: str
current_price: float
recommendation: str
key_metrics: list[str]
risk_factors: list[str]
# Create session for portfolio tracking
session = Session(session_id="portfolio-001", user_id="user-1")
# Agent with memory and tools
agent = Agent(
name="FinanceAnalyst",
instructions="Analyze stocks and return structured investment reports.",
tools=[get_stock_price, get_stock_info, get_historical_data],
memory=True
)
# Task with structured output
task = Task(
description="Analyze Apple (AAPL) stock with buy/sell recommendation",
expected_output="Structured stock analysis",
agent=agent,
output_pydantic=StockAnalysis
)
# Run with SQLite persistence
agents = Agents(
agents=[agent],
tasks=[task],
memory=True,
memory_config={"provider": "sqlite", "db_path": "finance.db"},
verbose=1
)
result = agents.start()
print(result)
# Resume later for portfolio review
session2 = Session(session_id="portfolio-001", user_id="user-1")
history = session2.search_memory("AAPL")