Code
custom_fastapi.py
Copy
Ask AI
from agno.agent import Agent
from agno.db.postgres import PostgresDb
from agno.models.anthropic import Claude
from agno.os import AgentOS
from agno.tools.duckduckgo import DuckDuckGoTools
from fastapi import FastAPI
# Setup the database
db = PostgresDb(db_url="postgresql+psycopg://ai:ai@localhost:5532/ai")
web_research_agent = Agent(
id="web-research-agent",
name="Web Research Agent",
model=Claude(id="claude-sonnet-4-0"),
db=db,
tools=[DuckDuckGoTools()],
add_history_to_context=True,
num_history_runs=3,
add_datetime_to_context=True,
markdown=True,
)
# Custom FastAPI app
app: FastAPI = FastAPI(
title="Custom FastAPI App",
version="1.0.0",
)
# Add your own routes
@app.post("/customers")
async def get_customers():
return [
{
"id": 1,
"name": "John Doe",
"email": "john.doe@example.com",
},
{
"id": 2,
"name": "Jane Doe",
"email": "jane.doe@example.com",
},
]
# Setup our AgentOS app by passing your FastAPI app
# Use route_prefix to avoid conflicts with your custom routes
agent_os = AgentOS(
description="Example app with custom routers",
agents=[web_research_agent],
base_app=app,
)
# Alternatively, add all routes from AgentOS app to the current app
# for route in agent_os.get_routes():
# app.router.routes.append(route)
app = agent_os.get_app()
if __name__ == "__main__":
"""Run your AgentOS.
With this setup:
- API docs: http://localhost:7777/docs
"""
agent_os.serve(app="custom_fastapi:app", reload=True)
Usage
1
Create a virtual environment
Open the
Terminal
and create a python virtual environment.Copy
Ask AI
python3 -m venv .venv
source .venv/bin/activate
2
Set Environment Variables
Copy
Ask AI
export ANTHROPIC_API_KEY=your_anthropic_api_key
3
Install libraries
Copy
Ask AI
pip install -U agno anthropic ddgs fastapi uvicorn sqlalchemy pgvector psycopg
4
Setup PostgreSQL Database
Copy
Ask AI
# Using Docker
docker run -d \
--name agno-postgres \
-e POSTGRES_DB=ai \
-e POSTGRES_USER=ai \
-e POSTGRES_PASSWORD=ai \
-p 5532:5432 \
pgvector/pgvector:pg17
5
Run Example
Copy
Ask AI
python custom_fastapi.py