from pydantic import BaseModel, Field
from typing import Optional, List
from upsonic import Agent, Task
from upsonic.storage.memory import Memory
from upsonic.storage.sqlite import SqliteStorage
class CustomerProfile(BaseModel):
name: Optional[str] = Field(None, description="Customer name")
company: Optional[str] = Field(None, description="Company name")
role: Optional[str] = Field(None, description="Job role")
interests: Optional[List[str]] = Field(None, description="Areas of interest")
storage = SqliteStorage(db_file="customer.db")
memory = Memory(
storage=storage,
session_id="session_001",
user_id="customer_456",
user_analysis_memory=True,
user_profile_schema=CustomerProfile,
model="openai/gpt-4o"
)
agent = Agent("openai/gpt-4o", memory=memory)
result = agent.do(Task("I'm John from Acme Corp, working as a data engineer"))
print(result)