Agent with Storage

Persist an AzureOpenAI agent's session history to Postgres across runs.

Code

from agno.agent import Agent
from agno.db.postgres import PostgresDb
from agno.models.azure import AzureOpenAI
from agno.tools.websearch import WebSearchTools

# Setup the database
db_url = "postgresql+psycopg://ai:ai@localhost:5532/ai"
db = PostgresDb(db_url=db_url)

agent = Agent(
    model=AzureOpenAI(id="gpt-5.2"),
    db=db,
    tools=[WebSearchTools()],
    add_history_to_context=True,
)
agent.print_response("How many people live in Canada?")
agent.print_response("What is their national anthem called?")

Usage

Create or select a gpt-5.2 chat deployment. Set AZURE_OPENAI_DEPLOYMENT to its actual deployment name, and use the key and resource endpoint for that deployment. You may omit the deployment setting only when an existing deployment is named exactly like id. Keep id aligned with the deployed model family.

Set up your virtual environment

uv venv --python 3.12
source .venv/bin/activate

Set your API key

export AZURE_OPENAI_API_KEY=xxx
export AZURE_OPENAI_ENDPOINT=xxx
export AZURE_OPENAI_DEPLOYMENT="your_chat_deployment"

Install dependencies

uv pip install -U openai ddgs sqlalchemy "psycopg[binary]" agno

Run PgVector

docker run -d \
  -e POSTGRES_DB=ai \
  -e POSTGRES_USER=ai \
  -e POSTGRES_PASSWORD=ai \
  -e PGDATA=/var/lib/postgresql/data/pgdata \
  -v pgvolume:/var/lib/postgresql/data \
  -p 5532:5432 \
  --name pgvector \
  agnohq/pgvector:18

Run Agent

Save the code above as db.py, then run:

python db.py