agno 2.1.4__tar.gz → 2.1.6__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {agno-2.1.4 → agno-2.1.6}/PKG-INFO +100 -41
- agno-2.1.6/README.md +195 -0
- {agno-2.1.4 → agno-2.1.6}/agno/agent/agent.py +1775 -538
- agno-2.1.6/agno/db/async_postgres/__init__.py +3 -0
- agno-2.1.6/agno/db/async_postgres/async_postgres.py +1668 -0
- agno-2.1.6/agno/db/async_postgres/schemas.py +124 -0
- agno-2.1.6/agno/db/async_postgres/utils.py +289 -0
- {agno-2.1.4 → agno-2.1.6}/agno/db/base.py +237 -2
- {agno-2.1.4 → agno-2.1.6}/agno/db/dynamo/dynamo.py +2 -2
- {agno-2.1.4 → agno-2.1.6}/agno/db/firestore/firestore.py +2 -2
- {agno-2.1.4 → agno-2.1.6}/agno/db/firestore/utils.py +4 -2
- {agno-2.1.4 → agno-2.1.6}/agno/db/gcs_json/gcs_json_db.py +2 -2
- {agno-2.1.4 → agno-2.1.6}/agno/db/in_memory/in_memory_db.py +2 -2
- {agno-2.1.4 → agno-2.1.6}/agno/db/json/json_db.py +2 -2
- {agno-2.1.4 → agno-2.1.6}/agno/db/migrations/v1_to_v2.py +43 -13
- {agno-2.1.4 → agno-2.1.6}/agno/db/mongo/mongo.py +14 -6
- {agno-2.1.4 → agno-2.1.6}/agno/db/mongo/utils.py +0 -4
- {agno-2.1.4 → agno-2.1.6}/agno/db/mysql/mysql.py +23 -13
- {agno-2.1.4 → agno-2.1.6}/agno/db/postgres/postgres.py +17 -6
- {agno-2.1.4 → agno-2.1.6}/agno/db/redis/redis.py +2 -2
- {agno-2.1.4 → agno-2.1.6}/agno/db/singlestore/singlestore.py +19 -10
- {agno-2.1.4 → agno-2.1.6}/agno/db/sqlite/sqlite.py +22 -12
- {agno-2.1.4 → agno-2.1.6}/agno/db/sqlite/utils.py +8 -3
- agno-2.1.6/agno/db/surrealdb/__init__.py +3 -0
- agno-2.1.6/agno/db/surrealdb/metrics.py +292 -0
- agno-2.1.6/agno/db/surrealdb/models.py +259 -0
- agno-2.1.6/agno/db/surrealdb/queries.py +71 -0
- agno-2.1.6/agno/db/surrealdb/surrealdb.py +1193 -0
- agno-2.1.6/agno/db/surrealdb/utils.py +87 -0
- {agno-2.1.4 → agno-2.1.6}/agno/eval/accuracy.py +50 -43
- {agno-2.1.4 → agno-2.1.6}/agno/eval/performance.py +6 -3
- {agno-2.1.4 → agno-2.1.6}/agno/eval/reliability.py +6 -3
- {agno-2.1.4 → agno-2.1.6}/agno/eval/utils.py +33 -16
- {agno-2.1.4 → agno-2.1.6}/agno/exceptions.py +8 -2
- {agno-2.1.4 → agno-2.1.6}/agno/knowledge/knowledge.py +260 -46
- {agno-2.1.4 → agno-2.1.6}/agno/knowledge/reader/pdf_reader.py +4 -6
- {agno-2.1.4 → agno-2.1.6}/agno/knowledge/reader/reader_factory.py +2 -3
- {agno-2.1.4 → agno-2.1.6}/agno/memory/manager.py +254 -46
- {agno-2.1.4 → agno-2.1.6}/agno/models/anthropic/claude.py +37 -0
- {agno-2.1.4 → agno-2.1.6}/agno/os/app.py +8 -7
- {agno-2.1.4 → agno-2.1.6}/agno/os/interfaces/a2a/router.py +3 -5
- {agno-2.1.4 → agno-2.1.6}/agno/os/interfaces/agui/router.py +4 -1
- {agno-2.1.4 → agno-2.1.6}/agno/os/interfaces/agui/utils.py +27 -6
- {agno-2.1.4 → agno-2.1.6}/agno/os/interfaces/slack/router.py +2 -4
- {agno-2.1.4 → agno-2.1.6}/agno/os/mcp.py +98 -41
- {agno-2.1.4 → agno-2.1.6}/agno/os/router.py +23 -0
- {agno-2.1.4 → agno-2.1.6}/agno/os/routers/evals/evals.py +52 -20
- {agno-2.1.4 → agno-2.1.6}/agno/os/routers/evals/utils.py +14 -14
- {agno-2.1.4 → agno-2.1.6}/agno/os/routers/knowledge/knowledge.py +130 -9
- {agno-2.1.4 → agno-2.1.6}/agno/os/routers/knowledge/schemas.py +57 -0
- {agno-2.1.4 → agno-2.1.6}/agno/os/routers/memory/memory.py +116 -44
- {agno-2.1.4 → agno-2.1.6}/agno/os/routers/metrics/metrics.py +16 -6
- {agno-2.1.4 → agno-2.1.6}/agno/os/routers/session/session.py +65 -22
- {agno-2.1.4 → agno-2.1.6}/agno/os/schema.py +36 -0
- {agno-2.1.4 → agno-2.1.6}/agno/os/utils.py +64 -11
- agno-2.1.6/agno/reasoning/anthropic.py +80 -0
- agno-2.1.6/agno/reasoning/gemini.py +73 -0
- {agno-2.1.4 → agno-2.1.6}/agno/reasoning/openai.py +5 -0
- agno-2.1.6/agno/reasoning/vertexai.py +76 -0
- {agno-2.1.4 → agno-2.1.6}/agno/session/workflow.py +3 -3
- {agno-2.1.4 → agno-2.1.6}/agno/team/team.py +968 -179
- {agno-2.1.4 → agno-2.1.6}/agno/tools/googlesheets.py +20 -5
- {agno-2.1.4 → agno-2.1.6}/agno/tools/mcp_toolbox.py +3 -3
- {agno-2.1.4 → agno-2.1.6}/agno/tools/scrapegraph.py +1 -1
- {agno-2.1.4 → agno-2.1.6}/agno/utils/models/claude.py +3 -1
- {agno-2.1.4 → agno-2.1.6}/agno/utils/streamlit.py +1 -1
- {agno-2.1.4 → agno-2.1.6}/agno/vectordb/base.py +22 -1
- {agno-2.1.4 → agno-2.1.6}/agno/vectordb/cassandra/cassandra.py +9 -0
- {agno-2.1.4 → agno-2.1.6}/agno/vectordb/chroma/chromadb.py +26 -6
- {agno-2.1.4 → agno-2.1.6}/agno/vectordb/clickhouse/clickhousedb.py +9 -1
- {agno-2.1.4 → agno-2.1.6}/agno/vectordb/couchbase/couchbase.py +11 -0
- {agno-2.1.4 → agno-2.1.6}/agno/vectordb/lancedb/lance_db.py +20 -0
- {agno-2.1.4 → agno-2.1.6}/agno/vectordb/langchaindb/langchaindb.py +11 -0
- {agno-2.1.4 → agno-2.1.6}/agno/vectordb/lightrag/lightrag.py +9 -0
- {agno-2.1.4 → agno-2.1.6}/agno/vectordb/llamaindex/llamaindexdb.py +15 -1
- {agno-2.1.4 → agno-2.1.6}/agno/vectordb/milvus/milvus.py +23 -0
- {agno-2.1.4 → agno-2.1.6}/agno/vectordb/mongodb/mongodb.py +22 -0
- {agno-2.1.4 → agno-2.1.6}/agno/vectordb/pgvector/pgvector.py +19 -0
- {agno-2.1.4 → agno-2.1.6}/agno/vectordb/pineconedb/pineconedb.py +35 -4
- {agno-2.1.4 → agno-2.1.6}/agno/vectordb/qdrant/qdrant.py +24 -0
- {agno-2.1.4 → agno-2.1.6}/agno/vectordb/singlestore/singlestore.py +25 -17
- {agno-2.1.4 → agno-2.1.6}/agno/vectordb/surrealdb/surrealdb.py +18 -2
- {agno-2.1.4 → agno-2.1.6}/agno/vectordb/upstashdb/upstashdb.py +26 -1
- {agno-2.1.4 → agno-2.1.6}/agno/vectordb/weaviate/weaviate.py +18 -0
- {agno-2.1.4 → agno-2.1.6}/agno/workflow/condition.py +4 -0
- {agno-2.1.4 → agno-2.1.6}/agno/workflow/loop.py +4 -0
- {agno-2.1.4 → agno-2.1.6}/agno/workflow/parallel.py +4 -0
- {agno-2.1.4 → agno-2.1.6}/agno/workflow/router.py +4 -0
- {agno-2.1.4 → agno-2.1.6}/agno/workflow/step.py +30 -14
- {agno-2.1.4 → agno-2.1.6}/agno/workflow/steps.py +4 -0
- {agno-2.1.4 → agno-2.1.6}/agno/workflow/types.py +2 -2
- {agno-2.1.4 → agno-2.1.6}/agno/workflow/workflow.py +328 -61
- {agno-2.1.4 → agno-2.1.6}/agno.egg-info/PKG-INFO +100 -41
- {agno-2.1.4 → agno-2.1.6}/agno.egg-info/SOURCES.txt +13 -0
- {agno-2.1.4 → agno-2.1.6}/agno.egg-info/requires.txt +4 -0
- {agno-2.1.4 → agno-2.1.6}/pyproject.toml +3 -1
- agno-2.1.4/README.md +0 -139
- {agno-2.1.4 → agno-2.1.6}/LICENSE +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/agent/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/api/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/api/agent.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/api/api.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/api/evals.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/api/os.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/api/routes.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/api/schemas/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/api/schemas/agent.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/api/schemas/evals.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/api/schemas/os.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/api/schemas/response.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/api/schemas/team.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/api/schemas/utils.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/api/schemas/workflows.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/api/settings.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/api/team.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/api/workflow.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/cloud/aws/base.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/cloud/aws/s3/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/cloud/aws/s3/api_client.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/cloud/aws/s3/bucket.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/cloud/aws/s3/object.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/db/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/db/dynamo/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/db/dynamo/schemas.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/db/dynamo/utils.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/db/firestore/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/db/firestore/schemas.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/db/gcs_json/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/db/gcs_json/utils.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/db/in_memory/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/db/in_memory/utils.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/db/json/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/db/json/utils.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/db/migrations/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/db/mongo/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/db/mongo/schemas.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/db/mysql/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/db/mysql/schemas.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/db/mysql/utils.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/db/postgres/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/db/postgres/schemas.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/db/postgres/utils.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/db/redis/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/db/redis/schemas.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/db/redis/utils.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/db/schemas/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/db/schemas/evals.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/db/schemas/knowledge.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/db/schemas/memory.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/db/schemas/metrics.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/db/singlestore/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/db/singlestore/schemas.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/db/singlestore/utils.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/db/sqlite/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/db/sqlite/schemas.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/db/utils.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/debug.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/eval/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/guardrails/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/guardrails/base.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/guardrails/openai.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/guardrails/pii.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/guardrails/prompt_injection.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/integrations/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/integrations/discord/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/integrations/discord/client.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/knowledge/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/knowledge/chunking/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/knowledge/chunking/agentic.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/knowledge/chunking/document.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/knowledge/chunking/fixed.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/knowledge/chunking/markdown.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/knowledge/chunking/recursive.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/knowledge/chunking/row.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/knowledge/chunking/semantic.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/knowledge/chunking/strategy.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/knowledge/content.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/knowledge/document/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/knowledge/document/base.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/knowledge/embedder/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/knowledge/embedder/aws_bedrock.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/knowledge/embedder/azure_openai.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/knowledge/embedder/base.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/knowledge/embedder/cohere.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/knowledge/embedder/fastembed.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/knowledge/embedder/fireworks.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/knowledge/embedder/google.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/knowledge/embedder/huggingface.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/knowledge/embedder/jina.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/knowledge/embedder/langdb.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/knowledge/embedder/mistral.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/knowledge/embedder/nebius.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/knowledge/embedder/ollama.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/knowledge/embedder/openai.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/knowledge/embedder/sentence_transformer.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/knowledge/embedder/together.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/knowledge/embedder/voyageai.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/knowledge/reader/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/knowledge/reader/arxiv_reader.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/knowledge/reader/base.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/knowledge/reader/csv_reader.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/knowledge/reader/docx_reader.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/knowledge/reader/field_labeled_csv_reader.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/knowledge/reader/firecrawl_reader.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/knowledge/reader/json_reader.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/knowledge/reader/markdown_reader.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/knowledge/reader/s3_reader.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/knowledge/reader/text_reader.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/knowledge/reader/web_search_reader.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/knowledge/reader/website_reader.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/knowledge/reader/wikipedia_reader.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/knowledge/reader/youtube_reader.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/knowledge/remote_content/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/knowledge/remote_content/remote_content.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/knowledge/reranker/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/knowledge/reranker/base.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/knowledge/reranker/cohere.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/knowledge/reranker/infinity.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/knowledge/reranker/sentence_transformer.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/knowledge/types.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/knowledge/utils.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/media.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/memory/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/aimlapi/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/aimlapi/aimlapi.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/anthropic/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/aws/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/aws/bedrock.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/aws/claude.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/azure/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/azure/ai_foundry.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/azure/openai_chat.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/base.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/cerebras/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/cerebras/cerebras.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/cerebras/cerebras_openai.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/cohere/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/cohere/chat.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/cometapi/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/cometapi/cometapi.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/dashscope/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/dashscope/dashscope.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/deepinfra/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/deepinfra/deepinfra.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/deepseek/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/deepseek/deepseek.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/defaults.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/fireworks/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/fireworks/fireworks.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/google/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/google/gemini.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/groq/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/groq/groq.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/huggingface/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/huggingface/huggingface.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/ibm/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/ibm/watsonx.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/internlm/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/internlm/internlm.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/langdb/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/langdb/langdb.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/litellm/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/litellm/chat.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/litellm/litellm_openai.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/llama_cpp/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/llama_cpp/llama_cpp.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/lmstudio/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/lmstudio/lmstudio.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/message.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/meta/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/meta/llama.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/meta/llama_openai.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/metrics.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/mistral/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/mistral/mistral.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/nebius/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/nebius/nebius.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/nexus/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/nexus/nexus.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/nvidia/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/nvidia/nvidia.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/ollama/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/ollama/chat.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/openai/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/openai/chat.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/openai/like.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/openai/responses.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/openrouter/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/openrouter/openrouter.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/perplexity/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/perplexity/perplexity.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/portkey/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/portkey/portkey.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/requesty/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/requesty/requesty.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/response.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/sambanova/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/sambanova/sambanova.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/siliconflow/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/siliconflow/siliconflow.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/together/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/together/together.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/utils.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/vercel/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/vercel/v0.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/vertexai/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/vertexai/claude.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/vllm/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/vllm/vllm.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/xai/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/models/xai/xai.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/os/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/os/auth.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/os/config.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/os/interfaces/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/os/interfaces/a2a/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/os/interfaces/a2a/a2a.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/os/interfaces/a2a/utils.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/os/interfaces/agui/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/os/interfaces/agui/agui.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/os/interfaces/base.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/os/interfaces/slack/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/os/interfaces/slack/security.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/os/interfaces/slack/slack.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/os/interfaces/whatsapp/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/os/interfaces/whatsapp/router.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/os/interfaces/whatsapp/security.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/os/interfaces/whatsapp/whatsapp.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/os/middleware/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/os/middleware/jwt.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/os/routers/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/os/routers/evals/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/os/routers/evals/schemas.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/os/routers/health.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/os/routers/home.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/os/routers/knowledge/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/os/routers/memory/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/os/routers/memory/schemas.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/os/routers/metrics/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/os/routers/metrics/schemas.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/os/routers/session/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/os/settings.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/py.typed +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/reasoning/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/reasoning/azure_ai_foundry.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/reasoning/deepseek.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/reasoning/default.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/reasoning/groq.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/reasoning/helpers.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/reasoning/ollama.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/reasoning/step.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/run/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/run/agent.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/run/base.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/run/cancel.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/run/messages.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/run/team.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/run/workflow.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/session/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/session/agent.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/session/summary.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/session/team.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/team/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/agentql.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/airflow.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/api.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/apify.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/arxiv.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/aws_lambda.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/aws_ses.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/baidusearch.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/bitbucket.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/brandfetch.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/bravesearch.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/brightdata.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/browserbase.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/calcom.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/calculator.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/cartesia.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/clickup.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/confluence.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/crawl4ai.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/csv_toolkit.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/dalle.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/daytona.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/decorator.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/desi_vocal.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/discord.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/docker.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/duckdb.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/duckduckgo.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/e2b.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/eleven_labs.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/email.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/evm.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/exa.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/fal.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/file.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/file_generation.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/financial_datasets.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/firecrawl.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/function.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/giphy.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/github.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/gmail.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/google_bigquery.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/google_drive.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/google_maps.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/googlecalendar.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/googlesearch.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/hackernews.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/jina.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/jira.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/knowledge.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/linear.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/linkup.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/local_file_system.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/lumalab.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/mcp.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/mem0.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/memori.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/memory.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/mlx_transcribe.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/models/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/models/azure_openai.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/models/gemini.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/models/groq.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/models/morph.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/models/nebius.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/models_labs.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/moviepy_video.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/neo4j.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/newspaper.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/newspaper4k.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/openai.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/openbb.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/opencv.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/openweather.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/oxylabs.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/pandas.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/postgres.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/pubmed.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/python.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/reasoning.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/reddit.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/replicate.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/resend.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/searxng.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/serpapi.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/serper.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/shell.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/slack.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/sleep.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/spider.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/sql.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/streamlit/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/streamlit/components.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/tavily.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/telegram.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/todoist.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/tool_registry.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/toolkit.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/trafilatura.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/trello.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/twilio.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/user_control_flow.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/valyu.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/visualization.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/webbrowser.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/webex.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/website.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/webtools.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/whatsapp.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/wikipedia.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/workflow.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/x.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/yfinance.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/youtube.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/zendesk.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/zep.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/tools/zoom.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/utils/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/utils/audio.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/utils/certs.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/utils/code_execution.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/utils/common.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/utils/dttm.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/utils/enum.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/utils/env.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/utils/events.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/utils/format_str.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/utils/functions.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/utils/gemini.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/utils/hooks.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/utils/http.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/utils/json_schema.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/utils/knowledge.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/utils/location.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/utils/log.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/utils/mcp.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/utils/media.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/utils/merge_dict.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/utils/message.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/utils/models/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/utils/models/ai_foundry.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/utils/models/cohere.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/utils/models/llama.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/utils/models/mistral.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/utils/models/openai_responses.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/utils/models/schema_utils.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/utils/models/watsonx.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/utils/openai.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/utils/pickle.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/utils/pprint.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/utils/print_response/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/utils/print_response/agent.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/utils/print_response/team.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/utils/print_response/workflow.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/utils/prompts.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/utils/reasoning.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/utils/response.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/utils/response_iterator.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/utils/safe_formatter.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/utils/serialize.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/utils/shell.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/utils/string.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/utils/team.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/utils/timer.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/utils/tools.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/utils/web.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/utils/whatsapp.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/utils/yaml_io.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/vectordb/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/vectordb/cassandra/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/vectordb/cassandra/extra_param_mixin.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/vectordb/cassandra/index.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/vectordb/chroma/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/vectordb/clickhouse/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/vectordb/clickhouse/index.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/vectordb/couchbase/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/vectordb/distance.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/vectordb/lancedb/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/vectordb/langchaindb/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/vectordb/lightrag/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/vectordb/llamaindex/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/vectordb/milvus/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/vectordb/mongodb/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/vectordb/pgvector/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/vectordb/pgvector/index.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/vectordb/pineconedb/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/vectordb/qdrant/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/vectordb/search.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/vectordb/singlestore/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/vectordb/singlestore/index.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/vectordb/surrealdb/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/vectordb/upstashdb/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/vectordb/weaviate/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/vectordb/weaviate/index.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno/workflow/__init__.py +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno.egg-info/dependency_links.txt +0 -0
- {agno-2.1.4 → agno-2.1.6}/agno.egg-info/top_level.txt +0 -0
- {agno-2.1.4 → agno-2.1.6}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agno
|
|
3
|
-
Version: 2.1.
|
|
3
|
+
Version: 2.1.6
|
|
4
4
|
Summary: Agno: a lightweight library for building Multi-Agent Systems
|
|
5
5
|
Author-email: Ashpreet Bedi <ashpreet@agno.com>
|
|
6
6
|
Project-URL: homepage, https://agno.com
|
|
@@ -191,6 +191,8 @@ Provides-Extra: sql
|
|
|
191
191
|
Requires-Dist: sqlalchemy; extra == "sql"
|
|
192
192
|
Provides-Extra: postgres
|
|
193
193
|
Requires-Dist: psycopg-binary; extra == "postgres"
|
|
194
|
+
Provides-Extra: async-postgres
|
|
195
|
+
Requires-Dist: asyncpg; extra == "async-postgres"
|
|
194
196
|
Provides-Extra: sqlite
|
|
195
197
|
Requires-Dist: sqlalchemy; extra == "sqlite"
|
|
196
198
|
Provides-Extra: gcs
|
|
@@ -320,6 +322,7 @@ Requires-Dist: agno[neo4j]; extra == "tools"
|
|
|
320
322
|
Provides-Extra: storage
|
|
321
323
|
Requires-Dist: agno[sql]; extra == "storage"
|
|
322
324
|
Requires-Dist: agno[postgres]; extra == "storage"
|
|
325
|
+
Requires-Dist: agno[async_postgres]; extra == "storage"
|
|
323
326
|
Requires-Dist: agno[sqlite]; extra == "storage"
|
|
324
327
|
Requires-Dist: agno[gcs]; extra == "storage"
|
|
325
328
|
Requires-Dist: agno[firestore]; extra == "storage"
|
|
@@ -364,7 +367,7 @@ Requires-Dist: build; extra == "tests"
|
|
|
364
367
|
Dynamic: license-file
|
|
365
368
|
|
|
366
369
|
<div align="center" id="top">
|
|
367
|
-
<a href="https://
|
|
370
|
+
<a href="https://agno.com">
|
|
368
371
|
<picture>
|
|
369
372
|
<source media="(prefers-color-scheme: dark)" srcset="https://agno-public.s3.us-east-1.amazonaws.com/assets/logo-dark.svg">
|
|
370
373
|
<source media="(prefers-color-scheme: light)" srcset="https://agno-public.s3.us-east-1.amazonaws.com/assets/logo-light.svg">
|
|
@@ -372,43 +375,78 @@ Dynamic: license-file
|
|
|
372
375
|
</picture>
|
|
373
376
|
</a>
|
|
374
377
|
</div>
|
|
378
|
+
|
|
375
379
|
<div align="center">
|
|
376
|
-
<a href="https://docs.agno.com"
|
|
377
|
-
<
|
|
378
|
-
<a href="https://
|
|
379
|
-
<
|
|
380
|
+
<a href="https://docs.agno.com">Documentation</a>
|
|
381
|
+
<span> • </span>
|
|
382
|
+
<a href="https://docs.agno.com/examples/introduction">Examples</a>
|
|
383
|
+
<span> • </span>
|
|
384
|
+
<a href="https://www.agno.com/?utm_source=github&utm_medium=readme&utm_campaign=agno-github">Website</a>
|
|
385
|
+
<br />
|
|
380
386
|
</div>
|
|
381
387
|
|
|
382
388
|
## What is Agno?
|
|
383
389
|
|
|
384
|
-
|
|
390
|
+
Agno is the multi-agent framework, runtime and UI built for speed.
|
|
385
391
|
|
|
386
|
-
|
|
392
|
+
Use it to build multi-agent systems with memory, knowledge, human in the loop and MCP support. You can orchestrate agents as multi-agent teams (more autonomy) or step-based agentic workflows (more control).
|
|
387
393
|
|
|
388
|
-
|
|
394
|
+
Here’s an example of an Agent that connects to an MCP server, manages conversation state in a database, and is served using a FastAPI application that you can interact with using the [AgentOS UI](https://os.agno.com).
|
|
389
395
|
|
|
390
|
-
```python
|
|
396
|
+
```python agno_agent.py
|
|
391
397
|
from agno.agent import Agent
|
|
398
|
+
from agno.db.sqlite import SqliteDb
|
|
392
399
|
from agno.models.anthropic import Claude
|
|
393
|
-
from agno.
|
|
400
|
+
from agno.os import AgentOS
|
|
401
|
+
from agno.tools.mcp import MCPTools
|
|
394
402
|
|
|
395
|
-
|
|
403
|
+
# ************* Create Agent *************
|
|
404
|
+
agno_agent = Agent(
|
|
405
|
+
name="Agno Agent",
|
|
396
406
|
model=Claude(id="claude-sonnet-4-5"),
|
|
397
|
-
|
|
407
|
+
# Add a database to the Agent
|
|
408
|
+
db=SqliteDb(db_file="agno.db"),
|
|
409
|
+
# Add the Agno MCP server to the Agent
|
|
410
|
+
tools=[MCPTools(transport="streamable-http", url="https://docs.agno.com/mcp")],
|
|
411
|
+
# Add the previous session history to the context
|
|
412
|
+
add_history_to_context=True,
|
|
398
413
|
markdown=True,
|
|
399
414
|
)
|
|
400
|
-
|
|
415
|
+
|
|
416
|
+
|
|
417
|
+
# ************* Create AgentOS *************
|
|
418
|
+
agent_os = AgentOS(agents=[agno_agent])
|
|
419
|
+
# Get the FastAPI app for the AgentOS
|
|
420
|
+
app = agent_os.get_app()
|
|
421
|
+
|
|
422
|
+
# ************* Run AgentOS *************
|
|
423
|
+
if __name__ == "__main__":
|
|
424
|
+
agent_os.serve(app="agno_agent:app", reload=True)
|
|
401
425
|
```
|
|
402
426
|
|
|
403
|
-
|
|
427
|
+
## What is the AgentOS?
|
|
428
|
+
|
|
429
|
+
AgentOS is a high-performance runtime for multi-agent systems. Key features include:
|
|
430
|
+
|
|
431
|
+
1. **Pre-built FastAPI runtime**: AgentOS ships with a ready-to-use FastAPI app for running your agents, teams, and workflows. This gives you a major head start in building your AI product.
|
|
432
|
+
|
|
433
|
+
2. **Integrated UI**: The [AgentOS UI](https://os.agno.com) connects directly to your runtime, letting you test, monitor, and manage your system in real time. This gives you unmatched visibility and control over your system.
|
|
434
|
+
|
|
435
|
+
3. **Private by design**: AgentOS runs entirely in your cloud, ensuring complete data privacy. No data ever leaves your system. This is ideal for security-conscious enterprises.
|
|
436
|
+
|
|
437
|
+
Here's what the [AgentOS UI](https://os.agno.com) looks like:
|
|
438
|
+
|
|
439
|
+
https://github.com/user-attachments/assets/feb23db8-15cc-4e88-be7c-01a21a03ebf6
|
|
440
|
+
|
|
441
|
+
## The Complete Agentic Solution
|
|
404
442
|
|
|
405
|
-
|
|
406
|
-
2. You also get a UI that connects directly to the pre-built FastAPI app. Use it to test, monitor and manage your system. This gives you unmatched visibility and control.
|
|
407
|
-
3. Your AgentOS runs in your cloud and you get complete privacy because no data ever leaves your system. This is incredible for security conscious enterprises that can't send data to external services.
|
|
443
|
+
For companies building agents, Agno provides the complete solution:
|
|
408
444
|
|
|
409
|
-
|
|
445
|
+
- The fastest framework for building agents, multi-agent teams and agentic workflows.
|
|
446
|
+
- A ready-to-use FastAPI app that gets you building AI products on day one.
|
|
447
|
+
- A control plane for testing, monitoring and managing your system.
|
|
410
448
|
|
|
411
|
-
|
|
449
|
+
Agno brings a novel architecture that no other framework provides, your AgentOS runs securely in your cloud, and the control plane connects directly to it from your browser. You don't need to send data to any external services or pay retention costs, you get complete privacy and control.
|
|
412
450
|
|
|
413
451
|
## Getting started
|
|
414
452
|
|
|
@@ -425,9 +463,7 @@ After that, checkout the [examples gallery](https://docs.agno.com/examples/intro
|
|
|
425
463
|
|
|
426
464
|
## Setup Your Coding Agent to Use Agno
|
|
427
465
|
|
|
428
|
-
For LLMs and AI assistants to understand and navigate Agno's documentation, we provide an [llms.txt](https://docs.agno.com/llms.txt) or [llms-full.txt](https://docs.agno.com/llms-full.txt) file.
|
|
429
|
-
|
|
430
|
-
This file is built for AI systems to efficiently parse and reference our documentation.
|
|
466
|
+
For LLMs and AI assistants to understand and navigate Agno's documentation, we provide an [llms.txt](https://docs.agno.com/llms.txt) or [llms-full.txt](https://docs.agno.com/llms-full.txt) file. This file is built for AI systems to efficiently parse and reference our documentation.
|
|
431
467
|
|
|
432
468
|
### IDE Integration
|
|
433
469
|
|
|
@@ -442,42 +478,52 @@ Now, Cursor will have access to the Agno documentation. You can do the same with
|
|
|
442
478
|
|
|
443
479
|
## Performance
|
|
444
480
|
|
|
445
|
-
|
|
481
|
+
If you're building with Agno, you're guaranteed best-in-class performance by default. Our obsession with performance is necessary because even simple AI workflows can spawn hundreds of Agents and because many tasks are long-running -- stateless, horizontal scalability is key for success.
|
|
482
|
+
|
|
483
|
+
At Agno, we optimize performance across 3 dimensions:
|
|
484
|
+
|
|
485
|
+
1. **Agent performance:** We optimize static operations (instantiation, memory footprint) and runtime operations (tool calls, memory updates, history management).
|
|
486
|
+
2. **System performance:** The AgentOS API is async by default and has a minimal memory footprint. The system is stateless and horizontally scalable, with a focus on preventing memory leaks. It handles parallel and batch embedding generation during knowledge ingestion, metrics collection in background tasks, and other system-level optimizations.
|
|
487
|
+
3. **Agent reliability and accuracy:** Monitored through evals, which we’ll explore later.
|
|
488
|
+
|
|
489
|
+
### Agent Performance
|
|
490
|
+
|
|
491
|
+
Let's measure the time it takes to instantiate an Agent and the memory footprint of an Agent. Here are the numbers (last measured in Oct 2025, on an Apple M4 MacBook Pro):
|
|
446
492
|
|
|
447
|
-
- Agent instantiation
|
|
448
|
-
- Memory footprint
|
|
493
|
+
- **Agent instantiation:** ~3μs on average
|
|
494
|
+
- **Memory footprint:** ~6.6Kib on average
|
|
449
495
|
|
|
450
|
-
|
|
496
|
+
We'll show below that Agno Agents instantiate **529× faster than Langgraph**, **57× faster than PydanticAI**, and **70× faster than CrewAI**. Agno Agents also use **24× lower memory than Langgraph**, **4× lower than PydanticAI**, and **10× lower than CrewAI**.
|
|
451
497
|
|
|
452
|
-
|
|
498
|
+
> [!NOTE]
|
|
499
|
+
> Run time performance is bottlenecked by inference and hard to benchmark accurately, so we focus on minimizing overhead, reducing memory usage, and parallelizing tool calls.
|
|
453
500
|
|
|
454
501
|
### Instantiation Time
|
|
455
502
|
|
|
456
|
-
Let's measure
|
|
503
|
+
Let's measure instantiation time for an Agent with 1 tool. We'll run the evaluation 1000 times to get a baseline measurement. We'll compare Agno to LangGraph, CrewAI and Pydantic AI.
|
|
457
504
|
|
|
458
|
-
|
|
505
|
+
> [!NOTE]
|
|
506
|
+
> The code for this benchmark is available [here](https://github.com/agno-agi/agno/tree/main/cookbook/evals/performance). You should run the evaluation yourself on your own machine, please, do not take these results at face value.
|
|
459
507
|
|
|
460
508
|
```shell
|
|
461
509
|
# Setup virtual environment
|
|
462
510
|
./scripts/perf_setup.sh
|
|
463
511
|
source .venvs/perfenv/bin/activate
|
|
464
|
-
# OR Install dependencies manually
|
|
465
|
-
# pip install openai agno langgraph langchain_openai
|
|
466
512
|
|
|
467
513
|
# Agno
|
|
468
514
|
python cookbook/evals/performance/instantiate_agent_with_tool.py
|
|
469
515
|
|
|
470
516
|
# LangGraph
|
|
471
517
|
python cookbook/evals/performance/comparison/langgraph_instantiation.py
|
|
518
|
+
# CrewAI
|
|
519
|
+
python cookbook/evals/performance/comparison/crewai_instantiation.py
|
|
520
|
+
# Pydantic AI
|
|
521
|
+
python cookbook/evals/performance/comparison/pydantic_ai_instantiation.py
|
|
472
522
|
```
|
|
473
523
|
|
|
474
|
-
|
|
524
|
+
LangGraph is on the right, **let's start it first and give it a head start**. Then CrewAI and Pydantic AI follow, and finally Agno. Agno obviously finishes first, but let's see by how much.
|
|
475
525
|
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
Agno is on the left, notice how it finishes before LangGraph gets 1/2 way through the runtime measurement, and hasn't even started the memory measurement. That's how fast Agno is.
|
|
479
|
-
|
|
480
|
-
https://github.com/user-attachments/assets/ba466d45-75dd-45ac-917b-0a56c5742e23
|
|
526
|
+
https://github.com/user-attachments/assets/54b98576-1859-4880-9f2d-15e1a426719d
|
|
481
527
|
|
|
482
528
|
### Memory Usage
|
|
483
529
|
|
|
@@ -485,11 +531,24 @@ To measure memory usage, we use the `tracemalloc` library. We first calculate a
|
|
|
485
531
|
|
|
486
532
|
We recommend running the evaluation yourself on your own machine, and digging into the code to see how it works. If we've made a mistake, please let us know.
|
|
487
533
|
|
|
488
|
-
###
|
|
534
|
+
### Results
|
|
535
|
+
|
|
536
|
+
Taking Agno as the baseline, we can see that:
|
|
537
|
+
|
|
538
|
+
| Metric | Agno | Langgraph | PydanticAI | CrewAI |
|
|
539
|
+
| ------------------ | ---- | ----------- | ---------- | ---------- |
|
|
540
|
+
| **Time (seconds)** | 1× | 529× slower | 57× slower | 70× slower |
|
|
541
|
+
| **Memory (MiB)** | 1× | 24× higher | 4× higher | 10× higher |
|
|
542
|
+
|
|
543
|
+
Exact numbers from the benchmark:
|
|
489
544
|
|
|
490
|
-
|
|
545
|
+
| Metric | Agno | Langgraph | PydanticAI | CrewAI |
|
|
546
|
+
| ------------------ | -------- | --------- | ---------- | -------- |
|
|
547
|
+
| **Time (seconds)** | 0.000003 | 0.001587 | 0.000170 | 0.000210 |
|
|
548
|
+
| **Memory (MiB)** | 0.006642 | 0.161435 | 0.028712 | 0.065652 |
|
|
491
549
|
|
|
492
|
-
|
|
550
|
+
> [!NOTE]
|
|
551
|
+
> Agno agents are designed for performance and while we share benchmarks against other frameworks, we should be mindful that accuracy and reliability are more important than speed.
|
|
493
552
|
|
|
494
553
|
## Contributions
|
|
495
554
|
|
agno-2.1.6/README.md
ADDED
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
<div align="center" id="top">
|
|
2
|
+
<a href="https://agno.com">
|
|
3
|
+
<picture>
|
|
4
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://agno-public.s3.us-east-1.amazonaws.com/assets/logo-dark.svg">
|
|
5
|
+
<source media="(prefers-color-scheme: light)" srcset="https://agno-public.s3.us-east-1.amazonaws.com/assets/logo-light.svg">
|
|
6
|
+
<img src="https://agno-public.s3.us-east-1.amazonaws.com/assets/logo-light.svg" alt="Agno">
|
|
7
|
+
</picture>
|
|
8
|
+
</a>
|
|
9
|
+
</div>
|
|
10
|
+
|
|
11
|
+
<div align="center">
|
|
12
|
+
<a href="https://docs.agno.com">Documentation</a>
|
|
13
|
+
<span> • </span>
|
|
14
|
+
<a href="https://docs.agno.com/examples/introduction">Examples</a>
|
|
15
|
+
<span> • </span>
|
|
16
|
+
<a href="https://www.agno.com/?utm_source=github&utm_medium=readme&utm_campaign=agno-github">Website</a>
|
|
17
|
+
<br />
|
|
18
|
+
</div>
|
|
19
|
+
|
|
20
|
+
## What is Agno?
|
|
21
|
+
|
|
22
|
+
Agno is the multi-agent framework, runtime and UI built for speed.
|
|
23
|
+
|
|
24
|
+
Use it to build multi-agent systems with memory, knowledge, human in the loop and MCP support. You can orchestrate agents as multi-agent teams (more autonomy) or step-based agentic workflows (more control).
|
|
25
|
+
|
|
26
|
+
Here’s an example of an Agent that connects to an MCP server, manages conversation state in a database, and is served using a FastAPI application that you can interact with using the [AgentOS UI](https://os.agno.com).
|
|
27
|
+
|
|
28
|
+
```python agno_agent.py
|
|
29
|
+
from agno.agent import Agent
|
|
30
|
+
from agno.db.sqlite import SqliteDb
|
|
31
|
+
from agno.models.anthropic import Claude
|
|
32
|
+
from agno.os import AgentOS
|
|
33
|
+
from agno.tools.mcp import MCPTools
|
|
34
|
+
|
|
35
|
+
# ************* Create Agent *************
|
|
36
|
+
agno_agent = Agent(
|
|
37
|
+
name="Agno Agent",
|
|
38
|
+
model=Claude(id="claude-sonnet-4-5"),
|
|
39
|
+
# Add a database to the Agent
|
|
40
|
+
db=SqliteDb(db_file="agno.db"),
|
|
41
|
+
# Add the Agno MCP server to the Agent
|
|
42
|
+
tools=[MCPTools(transport="streamable-http", url="https://docs.agno.com/mcp")],
|
|
43
|
+
# Add the previous session history to the context
|
|
44
|
+
add_history_to_context=True,
|
|
45
|
+
markdown=True,
|
|
46
|
+
)
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
# ************* Create AgentOS *************
|
|
50
|
+
agent_os = AgentOS(agents=[agno_agent])
|
|
51
|
+
# Get the FastAPI app for the AgentOS
|
|
52
|
+
app = agent_os.get_app()
|
|
53
|
+
|
|
54
|
+
# ************* Run AgentOS *************
|
|
55
|
+
if __name__ == "__main__":
|
|
56
|
+
agent_os.serve(app="agno_agent:app", reload=True)
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## What is the AgentOS?
|
|
60
|
+
|
|
61
|
+
AgentOS is a high-performance runtime for multi-agent systems. Key features include:
|
|
62
|
+
|
|
63
|
+
1. **Pre-built FastAPI runtime**: AgentOS ships with a ready-to-use FastAPI app for running your agents, teams, and workflows. This gives you a major head start in building your AI product.
|
|
64
|
+
|
|
65
|
+
2. **Integrated UI**: The [AgentOS UI](https://os.agno.com) connects directly to your runtime, letting you test, monitor, and manage your system in real time. This gives you unmatched visibility and control over your system.
|
|
66
|
+
|
|
67
|
+
3. **Private by design**: AgentOS runs entirely in your cloud, ensuring complete data privacy. No data ever leaves your system. This is ideal for security-conscious enterprises.
|
|
68
|
+
|
|
69
|
+
Here's what the [AgentOS UI](https://os.agno.com) looks like:
|
|
70
|
+
|
|
71
|
+
https://github.com/user-attachments/assets/feb23db8-15cc-4e88-be7c-01a21a03ebf6
|
|
72
|
+
|
|
73
|
+
## The Complete Agentic Solution
|
|
74
|
+
|
|
75
|
+
For companies building agents, Agno provides the complete solution:
|
|
76
|
+
|
|
77
|
+
- The fastest framework for building agents, multi-agent teams and agentic workflows.
|
|
78
|
+
- A ready-to-use FastAPI app that gets you building AI products on day one.
|
|
79
|
+
- A control plane for testing, monitoring and managing your system.
|
|
80
|
+
|
|
81
|
+
Agno brings a novel architecture that no other framework provides, your AgentOS runs securely in your cloud, and the control plane connects directly to it from your browser. You don't need to send data to any external services or pay retention costs, you get complete privacy and control.
|
|
82
|
+
|
|
83
|
+
## Getting started
|
|
84
|
+
|
|
85
|
+
If you're new to Agno, follow our [quickstart](https://docs.agno.com/introduction/quickstart) to build your first Agent and run it using the AgentOS.
|
|
86
|
+
|
|
87
|
+
After that, checkout the [examples gallery](https://docs.agno.com/examples/introduction) and build real-world applications with Agno.
|
|
88
|
+
|
|
89
|
+
## Documentation, Community & More Examples
|
|
90
|
+
|
|
91
|
+
- Docs: <a href="https://docs.agno.com" target="_blank" rel="noopener noreferrer">docs.agno.com</a>
|
|
92
|
+
- Cookbook: <a href="https://github.com/agno-agi/agno/tree/main/cookbook" target="_blank" rel="noopener noreferrer">Cookbook</a>
|
|
93
|
+
- Community forum: <a href="https://community.agno.com/" target="_blank" rel="noopener noreferrer">community.agno.com</a>
|
|
94
|
+
- Discord: <a href="https://discord.gg/4MtYHHrgA8" target="_blank" rel="noopener noreferrer">discord</a>
|
|
95
|
+
|
|
96
|
+
## Setup Your Coding Agent to Use Agno
|
|
97
|
+
|
|
98
|
+
For LLMs and AI assistants to understand and navigate Agno's documentation, we provide an [llms.txt](https://docs.agno.com/llms.txt) or [llms-full.txt](https://docs.agno.com/llms-full.txt) file. This file is built for AI systems to efficiently parse and reference our documentation.
|
|
99
|
+
|
|
100
|
+
### IDE Integration
|
|
101
|
+
|
|
102
|
+
When building Agno agents, using Agno documentation as a source in your IDE is a great way to speed up your development. Here's how to integrate with Cursor:
|
|
103
|
+
|
|
104
|
+
1. In Cursor, go to the "Cursor Settings" menu.
|
|
105
|
+
2. Find the "Indexing & Docs" section.
|
|
106
|
+
3. Add `https://docs.agno.com/llms-full.txt` to the list of documentation URLs.
|
|
107
|
+
4. Save the changes.
|
|
108
|
+
|
|
109
|
+
Now, Cursor will have access to the Agno documentation. You can do the same with other IDEs like VSCode, Windsurf etc.
|
|
110
|
+
|
|
111
|
+
## Performance
|
|
112
|
+
|
|
113
|
+
If you're building with Agno, you're guaranteed best-in-class performance by default. Our obsession with performance is necessary because even simple AI workflows can spawn hundreds of Agents and because many tasks are long-running -- stateless, horizontal scalability is key for success.
|
|
114
|
+
|
|
115
|
+
At Agno, we optimize performance across 3 dimensions:
|
|
116
|
+
|
|
117
|
+
1. **Agent performance:** We optimize static operations (instantiation, memory footprint) and runtime operations (tool calls, memory updates, history management).
|
|
118
|
+
2. **System performance:** The AgentOS API is async by default and has a minimal memory footprint. The system is stateless and horizontally scalable, with a focus on preventing memory leaks. It handles parallel and batch embedding generation during knowledge ingestion, metrics collection in background tasks, and other system-level optimizations.
|
|
119
|
+
3. **Agent reliability and accuracy:** Monitored through evals, which we’ll explore later.
|
|
120
|
+
|
|
121
|
+
### Agent Performance
|
|
122
|
+
|
|
123
|
+
Let's measure the time it takes to instantiate an Agent and the memory footprint of an Agent. Here are the numbers (last measured in Oct 2025, on an Apple M4 MacBook Pro):
|
|
124
|
+
|
|
125
|
+
- **Agent instantiation:** ~3μs on average
|
|
126
|
+
- **Memory footprint:** ~6.6Kib on average
|
|
127
|
+
|
|
128
|
+
We'll show below that Agno Agents instantiate **529× faster than Langgraph**, **57× faster than PydanticAI**, and **70× faster than CrewAI**. Agno Agents also use **24× lower memory than Langgraph**, **4× lower than PydanticAI**, and **10× lower than CrewAI**.
|
|
129
|
+
|
|
130
|
+
> [!NOTE]
|
|
131
|
+
> Run time performance is bottlenecked by inference and hard to benchmark accurately, so we focus on minimizing overhead, reducing memory usage, and parallelizing tool calls.
|
|
132
|
+
|
|
133
|
+
### Instantiation Time
|
|
134
|
+
|
|
135
|
+
Let's measure instantiation time for an Agent with 1 tool. We'll run the evaluation 1000 times to get a baseline measurement. We'll compare Agno to LangGraph, CrewAI and Pydantic AI.
|
|
136
|
+
|
|
137
|
+
> [!NOTE]
|
|
138
|
+
> The code for this benchmark is available [here](https://github.com/agno-agi/agno/tree/main/cookbook/evals/performance). You should run the evaluation yourself on your own machine, please, do not take these results at face value.
|
|
139
|
+
|
|
140
|
+
```shell
|
|
141
|
+
# Setup virtual environment
|
|
142
|
+
./scripts/perf_setup.sh
|
|
143
|
+
source .venvs/perfenv/bin/activate
|
|
144
|
+
|
|
145
|
+
# Agno
|
|
146
|
+
python cookbook/evals/performance/instantiate_agent_with_tool.py
|
|
147
|
+
|
|
148
|
+
# LangGraph
|
|
149
|
+
python cookbook/evals/performance/comparison/langgraph_instantiation.py
|
|
150
|
+
# CrewAI
|
|
151
|
+
python cookbook/evals/performance/comparison/crewai_instantiation.py
|
|
152
|
+
# Pydantic AI
|
|
153
|
+
python cookbook/evals/performance/comparison/pydantic_ai_instantiation.py
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
LangGraph is on the right, **let's start it first and give it a head start**. Then CrewAI and Pydantic AI follow, and finally Agno. Agno obviously finishes first, but let's see by how much.
|
|
157
|
+
|
|
158
|
+
https://github.com/user-attachments/assets/54b98576-1859-4880-9f2d-15e1a426719d
|
|
159
|
+
|
|
160
|
+
### Memory Usage
|
|
161
|
+
|
|
162
|
+
To measure memory usage, we use the `tracemalloc` library. We first calculate a baseline memory usage by running an empty function, then run the Agent 1000x times and calculate the difference. This gives a (reasonably) isolated measurement of the memory usage of the Agent.
|
|
163
|
+
|
|
164
|
+
We recommend running the evaluation yourself on your own machine, and digging into the code to see how it works. If we've made a mistake, please let us know.
|
|
165
|
+
|
|
166
|
+
### Results
|
|
167
|
+
|
|
168
|
+
Taking Agno as the baseline, we can see that:
|
|
169
|
+
|
|
170
|
+
| Metric | Agno | Langgraph | PydanticAI | CrewAI |
|
|
171
|
+
| ------------------ | ---- | ----------- | ---------- | ---------- |
|
|
172
|
+
| **Time (seconds)** | 1× | 529× slower | 57× slower | 70× slower |
|
|
173
|
+
| **Memory (MiB)** | 1× | 24× higher | 4× higher | 10× higher |
|
|
174
|
+
|
|
175
|
+
Exact numbers from the benchmark:
|
|
176
|
+
|
|
177
|
+
| Metric | Agno | Langgraph | PydanticAI | CrewAI |
|
|
178
|
+
| ------------------ | -------- | --------- | ---------- | -------- |
|
|
179
|
+
| **Time (seconds)** | 0.000003 | 0.001587 | 0.000170 | 0.000210 |
|
|
180
|
+
| **Memory (MiB)** | 0.006642 | 0.161435 | 0.028712 | 0.065652 |
|
|
181
|
+
|
|
182
|
+
> [!NOTE]
|
|
183
|
+
> Agno agents are designed for performance and while we share benchmarks against other frameworks, we should be mindful that accuracy and reliability are more important than speed.
|
|
184
|
+
|
|
185
|
+
## Contributions
|
|
186
|
+
|
|
187
|
+
We welcome contributions, read our [contributing guide](https://github.com/agno-agi/agno/blob/v2.0/CONTRIBUTING.md) to get started.
|
|
188
|
+
|
|
189
|
+
## Telemetry
|
|
190
|
+
|
|
191
|
+
Agno logs which model an agent used so we can prioritize updates to the most popular providers. You can disable this by setting `AGNO_TELEMETRY=false` in your environment.
|
|
192
|
+
|
|
193
|
+
<p align="left">
|
|
194
|
+
<a href="#top">⬆️ Back to Top</a>
|
|
195
|
+
</p>
|