from dataclasses import dataclass, field
from typing import Optional
from agno.agent import Agent
from agno.db.postgres import PostgresDb
from agno.learn import LearningMachine, UserProfileConfig
from agno.learn.schemas import UserProfile
from agno.models.openai import OpenAIResponses
@dataclass
class SupportProfile(UserProfile):
company: Optional[str] = field(default=None, metadata={"description": "Company name"})
plan: Optional[str] = field(default=None, metadata={"description": "Subscription plan"})
expertise: Optional[str] = field(default=None, metadata={"description": "Technical expertise level"})
agent = Agent(
model=OpenAIResponses(id="gpt-5.2"),
db=PostgresDb(db_url="postgresql+psycopg://ai:ai@localhost:5532/ai"),
learning=LearningMachine(
user_profile=UserProfileConfig(schema=SupportProfile),
),
instructions="You are a helpful support agent. Use the user's profile to personalize responses.",
)
# Profile is learned and recalled across sessions
agent.print_response(
"Hi, I'm John from TechCorp, we're on the enterprise plan.",
user_id="[email protected]",
)