CSV

The CsvTools toolkit enables an Agent to read and query CSV files.

CsvTools enable an Agent to read and query CSV files.

Prerequisites

The following example requires the duckdb and openai libraries. Without duckdb, the query_csv_file function is disabled.

uv pip install agno -U duckdb openai

The Agent model uses an OpenAI key, separately from any toolkit provider credentials.

Set OpenAI Key

Set your OPENAI_API_KEY as an environment variable. You can get one from OpenAI.

export OPENAI_API_KEY=sk-***

Example

The following agent will download the IMDB csv file and analyze it.

cookbook/91_tools/csv_tools.py
from pathlib import Path

import httpx
from agno.agent import Agent
from agno.tools.csv_toolkit import CsvTools

url = "https://agno-public.s3.amazonaws.com/demo_data/IMDB-Movie-Data.csv"
response = httpx.get(url)

imdb_csv = Path(__file__).parent.joinpath("imdb.csv")
imdb_csv.parent.mkdir(parents=True, exist_ok=True)
imdb_csv.write_bytes(response.content)

agent = Agent(
    tools=[CsvTools(csvs=[imdb_csv])],
    description="You are a comprehensive CSV data analyst with all processing capabilities.",
    instructions=[
        "Help users with complete CSV data analysis and processing",
        "First always get the list of files",
        "Then check the columns in the file",
        "Run queries and provide detailed analysis",
        "Support all CSV operations and transformations",
    ],
    markdown=True,
)

agent.print_response(
    "Analyze the IMDB movie dataset. Show me the top 10 highest-rated movies and their directors.",
    markdown=True,
)

Toolkit Params

ParameterTypeDefaultDescription
csvsList[Union[str, Path]]NoneA list of CSV files or paths to be processed or read.
row_limitintNoneThe maximum number of rows to process from each CSV file.
duckdb_connectionAnyNoneSpecifies a connection instance for DuckDB database operations.
duckdb_kwargsDict[str, Any]NoneA dictionary of keyword arguments for configuring DuckDB operations.
enable_read_csv_fileboolTrueEnables the functionality to read data from specified CSV files.
enable_list_csv_filesboolTrueEnables the functionality to list all available CSV files.
enable_get_columnsboolTrueEnables the functionality to read the column names from CSV files.
enable_query_csv_fileboolTrueEnables the functionality to execute queries on data within CSV files.
allboolFalseEnables all functionality when set to True.

Toolkit Functions

FunctionDescription
list_csv_filesLists all available CSV files.
read_csv_fileThis function reads the contents of a csv file
get_columnsThis function returns the columns of a csv file
query_csv_fileThis function queries the contents of a csv file

Developer Resources