Code
filter_expressions.py
Copy
Ask AI
from agno.agent import Agent
from agno.filters import AND, EQ, IN, NOT
from agno.knowledge.knowledge import Knowledge
from agno.utils.media import (
SampleDataFileExtension,
download_knowledge_filters_sample_data,
)
from agno.vectordb.pgvector import PgVector
# Download sample documents
downloaded_csv_paths = download_knowledge_filters_sample_data(
num_files=4, file_extension=SampleDataFileExtension.CSV
)
# Initialize vector database
vector_db = PgVector(
table_name="recipes",
db_url="postgresql+psycopg://ai:ai@localhost:5532/ai",
)
# Create knowledge base with documents and metadata
knowledge = Knowledge(
name="CSV Knowledge Base",
description="A knowledge base for CSV files",
vector_db=vector_db,
)
knowledge.add_contents(
[
{
"path": downloaded_csv_paths[0],
"metadata": {
"data_type": "sales",
"quarter": "Q1",
"year": 2024,
"region": "north_america",
"currency": "USD",
},
},
{
"path": downloaded_csv_paths[1],
"metadata": {
"data_type": "sales",
"year": 2024,
"region": "europe",
"currency": "EUR",
},
},
{
"path": downloaded_csv_paths[2],
"metadata": {
"data_type": "survey",
"survey_type": "customer_satisfaction",
"year": 2024,
"target_demographic": "mixed",
},
},
{
"path": downloaded_csv_paths[3],
"metadata": {
"data_type": "financial",
"sector": "technology",
"year": 2024,
"report_type": "quarterly_earnings",
},
},
],
)
# Create agent with knowledge
sales_agent = Agent(
knowledge=knowledge,
search_knowledge=True,
)
# Example 1: Using IN operator
print("Using IN operator")
sales_agent.print_response(
"Describe revenue performance for the region",
knowledge_filters=[IN("region", ["north_america"])],
markdown=True,
)
# Example 2: Using NOT operator
print("Using NOT operator")
sales_agent.print_response(
"Describe revenue performance for the region",
knowledge_filters=[NOT(IN("region", ["north_america"]))],
markdown=True,
)
# Example 3: Using AND operator
print("Using AND operator")
sales_agent.print_response(
"Describe revenue performance for the region",
knowledge_filters=[
AND(EQ("data_type", "sales"), NOT(EQ("region", "north_america")))
],
markdown=True,
)
filter_expressions_teams.py
Copy
Ask AI
from agno.agent import Agent
from agno.filters import AND, IN, NOT
from agno.knowledge.knowledge import Knowledge
from agno.knowledge.reader.pdf_reader import PDFReader
from agno.models.openai import OpenAIChat
from agno.team.team import Team
from agno.utils.media import (
SampleDataFileExtension,
download_knowledge_filters_sample_data,
)
from agno.vectordb.pgvector import PgVector
# Download sample CVs
downloaded_cv_paths = download_knowledge_filters_sample_data(
num_files=5, file_extension=SampleDataFileExtension.PDF
)
# Initialize vector database
vector_db = PgVector(
table_name="recipes",
db_url="postgresql+psycopg://ai:ai@localhost:5532/ai",
)
# Create knowledge base
knowledge_base = Knowledge(vector_db=vector_db)
# Add documents with metadata
knowledge_base.add_contents(
[
{
"path": downloaded_cv_paths[0],
"metadata": {
"user_id": "jordan_mitchell",
"document_type": "cv",
"year": 2025,
},
},
{
"path": downloaded_cv_paths[1],
"metadata": {
"user_id": "taylor_brooks",
"document_type": "cv",
"year": 2025,
},
},
{
"path": downloaded_cv_paths[2],
"metadata": {
"user_id": "morgan_lee",
"document_type": "cv",
"year": 2025,
},
},
{
"path": downloaded_cv_paths[3],
"metadata": {
"user_id": "casey_jordan",
"document_type": "cv",
"year": 2020,
},
},
{
"path": downloaded_cv_paths[4],
"metadata": {
"user_id": "alex_rivera",
"document_type": "cv",
"year": 2020,
},
},
],
reader=PDFReader(chunk=True),
)
# Create knowledge search agent
web_agent = Agent(
name="Knowledge Search Agent",
role="Handle knowledge search",
knowledge=knowledge_base,
model=OpenAIChat(id="o3-mini"),
)
# Create team with knowledge
team_with_knowledge = Team(
name="Team with Knowledge",
instructions=["Always search the knowledge base for the most relevant information"],
description="A team that provides information about candidates",
members=[web_agent],
model=OpenAIChat(id="o3-mini"),
knowledge=knowledge_base,
show_members_responses=True,
markdown=True,
)
# Example 1: Using IN operator with teams
print("Using IN operator")
team_with_knowledge.print_response(
"Tell me about the candidate's work and experience",
knowledge_filters=[
IN(
"user_id",
[
"jordan_mitchell",
"taylor_brooks",
"morgan_lee",
"casey_jordan",
"alex_rivera",
],
)
],
markdown=True,
)
# Example 2: Using NOT operator with teams
print("Using NOT operator")
team_with_knowledge.print_response(
"Tell me about the candidate's work and experience",
knowledge_filters=[
AND(
IN("user_id", ["jordan_mitchell", "taylor_brooks"]),
NOT(IN("user_id", ["morgan_lee", "casey_jordan", "alex_rivera"])),
)
],
markdown=True,
)
Usage
1
Install libraries
Copy
Ask AI
pip install -U agno openai pgvector psycopg
2
Set environment variables
Copy
Ask AI
export OPENAI_API_KEY=xxx
3
Run the examples
Copy
Ask AI
python cookbook/knowledge/filters/filter_expressions.py
python cookbook/knowledge/filters/filter_expressions_teams.py