agno 2.1.2__py3-none-any.whl → 2.3.13__py3-none-any.whl
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/agent/agent.py +5540 -2273
- agno/api/api.py +2 -0
- agno/api/os.py +1 -1
- agno/compression/__init__.py +3 -0
- agno/compression/manager.py +247 -0
- agno/culture/__init__.py +3 -0
- agno/culture/manager.py +956 -0
- agno/db/async_postgres/__init__.py +3 -0
- agno/db/base.py +689 -6
- agno/db/dynamo/dynamo.py +933 -37
- agno/db/dynamo/schemas.py +174 -10
- agno/db/dynamo/utils.py +63 -4
- agno/db/firestore/firestore.py +831 -9
- agno/db/firestore/schemas.py +51 -0
- agno/db/firestore/utils.py +102 -4
- agno/db/gcs_json/gcs_json_db.py +660 -12
- agno/db/gcs_json/utils.py +60 -26
- agno/db/in_memory/in_memory_db.py +287 -14
- agno/db/in_memory/utils.py +60 -2
- agno/db/json/json_db.py +590 -14
- agno/db/json/utils.py +60 -26
- agno/db/migrations/manager.py +199 -0
- agno/db/migrations/v1_to_v2.py +43 -13
- agno/db/migrations/versions/__init__.py +0 -0
- agno/db/migrations/versions/v2_3_0.py +938 -0
- agno/db/mongo/__init__.py +15 -1
- agno/db/mongo/async_mongo.py +2760 -0
- agno/db/mongo/mongo.py +879 -11
- agno/db/mongo/schemas.py +42 -0
- agno/db/mongo/utils.py +80 -8
- agno/db/mysql/__init__.py +2 -1
- agno/db/mysql/async_mysql.py +2912 -0
- agno/db/mysql/mysql.py +946 -68
- agno/db/mysql/schemas.py +72 -10
- agno/db/mysql/utils.py +198 -7
- agno/db/postgres/__init__.py +2 -1
- agno/db/postgres/async_postgres.py +2579 -0
- agno/db/postgres/postgres.py +942 -57
- agno/db/postgres/schemas.py +81 -18
- agno/db/postgres/utils.py +164 -2
- agno/db/redis/redis.py +671 -7
- agno/db/redis/schemas.py +50 -0
- agno/db/redis/utils.py +65 -7
- agno/db/schemas/__init__.py +2 -1
- agno/db/schemas/culture.py +120 -0
- agno/db/schemas/evals.py +1 -0
- agno/db/schemas/memory.py +17 -2
- agno/db/singlestore/schemas.py +63 -0
- agno/db/singlestore/singlestore.py +949 -83
- agno/db/singlestore/utils.py +60 -2
- agno/db/sqlite/__init__.py +2 -1
- agno/db/sqlite/async_sqlite.py +2911 -0
- agno/db/sqlite/schemas.py +62 -0
- agno/db/sqlite/sqlite.py +965 -46
- agno/db/sqlite/utils.py +169 -8
- agno/db/surrealdb/__init__.py +3 -0
- agno/db/surrealdb/metrics.py +292 -0
- agno/db/surrealdb/models.py +334 -0
- agno/db/surrealdb/queries.py +71 -0
- agno/db/surrealdb/surrealdb.py +1908 -0
- agno/db/surrealdb/utils.py +147 -0
- agno/db/utils.py +2 -0
- agno/eval/__init__.py +10 -0
- agno/eval/accuracy.py +75 -55
- agno/eval/agent_as_judge.py +861 -0
- agno/eval/base.py +29 -0
- agno/eval/performance.py +16 -7
- agno/eval/reliability.py +28 -16
- agno/eval/utils.py +35 -17
- agno/exceptions.py +27 -2
- agno/filters.py +354 -0
- agno/guardrails/prompt_injection.py +1 -0
- agno/hooks/__init__.py +3 -0
- agno/hooks/decorator.py +164 -0
- agno/integrations/discord/client.py +1 -1
- agno/knowledge/chunking/agentic.py +13 -10
- agno/knowledge/chunking/fixed.py +4 -1
- agno/knowledge/chunking/semantic.py +9 -4
- agno/knowledge/chunking/strategy.py +59 -15
- agno/knowledge/embedder/fastembed.py +1 -1
- agno/knowledge/embedder/nebius.py +1 -1
- agno/knowledge/embedder/ollama.py +8 -0
- agno/knowledge/embedder/openai.py +8 -8
- agno/knowledge/embedder/sentence_transformer.py +6 -2
- agno/knowledge/embedder/vllm.py +262 -0
- agno/knowledge/knowledge.py +1618 -318
- agno/knowledge/reader/base.py +6 -2
- agno/knowledge/reader/csv_reader.py +8 -10
- agno/knowledge/reader/docx_reader.py +5 -6
- agno/knowledge/reader/field_labeled_csv_reader.py +16 -20
- agno/knowledge/reader/json_reader.py +5 -4
- agno/knowledge/reader/markdown_reader.py +8 -8
- agno/knowledge/reader/pdf_reader.py +17 -19
- agno/knowledge/reader/pptx_reader.py +101 -0
- agno/knowledge/reader/reader_factory.py +32 -3
- agno/knowledge/reader/s3_reader.py +3 -3
- agno/knowledge/reader/tavily_reader.py +193 -0
- agno/knowledge/reader/text_reader.py +22 -10
- agno/knowledge/reader/web_search_reader.py +1 -48
- agno/knowledge/reader/website_reader.py +10 -10
- agno/knowledge/reader/wikipedia_reader.py +33 -1
- agno/knowledge/types.py +1 -0
- agno/knowledge/utils.py +72 -7
- agno/media.py +22 -6
- agno/memory/__init__.py +14 -1
- agno/memory/manager.py +544 -83
- agno/memory/strategies/__init__.py +15 -0
- agno/memory/strategies/base.py +66 -0
- agno/memory/strategies/summarize.py +196 -0
- agno/memory/strategies/types.py +37 -0
- agno/models/aimlapi/aimlapi.py +17 -0
- agno/models/anthropic/claude.py +515 -40
- agno/models/aws/bedrock.py +102 -21
- agno/models/aws/claude.py +131 -274
- agno/models/azure/ai_foundry.py +41 -19
- agno/models/azure/openai_chat.py +39 -8
- agno/models/base.py +1249 -525
- agno/models/cerebras/cerebras.py +91 -21
- agno/models/cerebras/cerebras_openai.py +21 -2
- agno/models/cohere/chat.py +40 -6
- agno/models/cometapi/cometapi.py +18 -1
- agno/models/dashscope/dashscope.py +2 -3
- agno/models/deepinfra/deepinfra.py +18 -1
- agno/models/deepseek/deepseek.py +69 -3
- agno/models/fireworks/fireworks.py +18 -1
- agno/models/google/gemini.py +877 -80
- agno/models/google/utils.py +22 -0
- agno/models/groq/groq.py +51 -18
- agno/models/huggingface/huggingface.py +17 -6
- agno/models/ibm/watsonx.py +16 -6
- agno/models/internlm/internlm.py +18 -1
- agno/models/langdb/langdb.py +13 -1
- agno/models/litellm/chat.py +44 -9
- agno/models/litellm/litellm_openai.py +18 -1
- agno/models/message.py +28 -5
- agno/models/meta/llama.py +47 -14
- agno/models/meta/llama_openai.py +22 -17
- agno/models/mistral/mistral.py +8 -4
- agno/models/nebius/nebius.py +6 -7
- agno/models/nvidia/nvidia.py +20 -3
- agno/models/ollama/chat.py +24 -8
- agno/models/openai/chat.py +104 -29
- agno/models/openai/responses.py +101 -81
- agno/models/openrouter/openrouter.py +60 -3
- agno/models/perplexity/perplexity.py +17 -1
- agno/models/portkey/portkey.py +7 -6
- agno/models/requesty/requesty.py +24 -4
- agno/models/response.py +73 -2
- agno/models/sambanova/sambanova.py +20 -3
- agno/models/siliconflow/siliconflow.py +19 -2
- agno/models/together/together.py +20 -3
- agno/models/utils.py +254 -8
- agno/models/vercel/v0.py +20 -3
- agno/models/vertexai/__init__.py +0 -0
- agno/models/vertexai/claude.py +190 -0
- agno/models/vllm/vllm.py +19 -14
- agno/models/xai/xai.py +19 -2
- agno/os/app.py +549 -152
- agno/os/auth.py +190 -3
- agno/os/config.py +23 -0
- agno/os/interfaces/a2a/router.py +8 -11
- agno/os/interfaces/a2a/utils.py +1 -1
- agno/os/interfaces/agui/router.py +18 -3
- agno/os/interfaces/agui/utils.py +152 -39
- agno/os/interfaces/slack/router.py +55 -37
- agno/os/interfaces/slack/slack.py +9 -1
- agno/os/interfaces/whatsapp/router.py +0 -1
- agno/os/interfaces/whatsapp/security.py +3 -1
- agno/os/mcp.py +110 -52
- agno/os/middleware/__init__.py +2 -0
- agno/os/middleware/jwt.py +676 -112
- agno/os/router.py +40 -1478
- agno/os/routers/agents/__init__.py +3 -0
- agno/os/routers/agents/router.py +599 -0
- agno/os/routers/agents/schema.py +261 -0
- agno/os/routers/evals/evals.py +96 -39
- agno/os/routers/evals/schemas.py +65 -33
- agno/os/routers/evals/utils.py +80 -10
- agno/os/routers/health.py +10 -4
- agno/os/routers/knowledge/knowledge.py +196 -38
- agno/os/routers/knowledge/schemas.py +82 -22
- agno/os/routers/memory/memory.py +279 -52
- agno/os/routers/memory/schemas.py +46 -17
- agno/os/routers/metrics/metrics.py +20 -8
- agno/os/routers/metrics/schemas.py +16 -16
- agno/os/routers/session/session.py +462 -34
- agno/os/routers/teams/__init__.py +3 -0
- agno/os/routers/teams/router.py +512 -0
- agno/os/routers/teams/schema.py +257 -0
- agno/os/routers/traces/__init__.py +3 -0
- agno/os/routers/traces/schemas.py +414 -0
- agno/os/routers/traces/traces.py +499 -0
- agno/os/routers/workflows/__init__.py +3 -0
- agno/os/routers/workflows/router.py +624 -0
- agno/os/routers/workflows/schema.py +75 -0
- agno/os/schema.py +256 -693
- agno/os/scopes.py +469 -0
- agno/os/utils.py +514 -36
- agno/reasoning/anthropic.py +80 -0
- agno/reasoning/gemini.py +73 -0
- agno/reasoning/openai.py +5 -0
- agno/reasoning/vertexai.py +76 -0
- agno/run/__init__.py +6 -0
- agno/run/agent.py +155 -32
- agno/run/base.py +55 -3
- agno/run/requirement.py +181 -0
- agno/run/team.py +125 -38
- agno/run/workflow.py +72 -18
- agno/session/agent.py +102 -89
- agno/session/summary.py +56 -15
- agno/session/team.py +164 -90
- agno/session/workflow.py +405 -40
- agno/table.py +10 -0
- agno/team/team.py +3974 -1903
- agno/tools/dalle.py +2 -4
- agno/tools/eleven_labs.py +23 -25
- agno/tools/exa.py +21 -16
- agno/tools/file.py +153 -23
- agno/tools/file_generation.py +16 -10
- agno/tools/firecrawl.py +15 -7
- agno/tools/function.py +193 -38
- agno/tools/gmail.py +238 -14
- agno/tools/google_drive.py +271 -0
- agno/tools/googlecalendar.py +36 -8
- agno/tools/googlesheets.py +20 -5
- agno/tools/jira.py +20 -0
- agno/tools/mcp/__init__.py +10 -0
- agno/tools/mcp/mcp.py +331 -0
- agno/tools/mcp/multi_mcp.py +347 -0
- agno/tools/mcp/params.py +24 -0
- agno/tools/mcp_toolbox.py +3 -3
- agno/tools/models/nebius.py +5 -5
- agno/tools/models_labs.py +20 -10
- agno/tools/nano_banana.py +151 -0
- agno/tools/notion.py +204 -0
- agno/tools/parallel.py +314 -0
- agno/tools/postgres.py +76 -36
- agno/tools/redshift.py +406 -0
- agno/tools/scrapegraph.py +1 -1
- agno/tools/shopify.py +1519 -0
- agno/tools/slack.py +18 -3
- agno/tools/spotify.py +919 -0
- agno/tools/tavily.py +146 -0
- agno/tools/toolkit.py +25 -0
- agno/tools/workflow.py +8 -1
- agno/tools/yfinance.py +12 -11
- agno/tracing/__init__.py +12 -0
- agno/tracing/exporter.py +157 -0
- agno/tracing/schemas.py +276 -0
- agno/tracing/setup.py +111 -0
- agno/utils/agent.py +938 -0
- agno/utils/cryptography.py +22 -0
- agno/utils/dttm.py +33 -0
- agno/utils/events.py +151 -3
- agno/utils/gemini.py +15 -5
- agno/utils/hooks.py +118 -4
- agno/utils/http.py +113 -2
- agno/utils/knowledge.py +12 -5
- agno/utils/log.py +1 -0
- agno/utils/mcp.py +92 -2
- agno/utils/media.py +187 -1
- agno/utils/merge_dict.py +3 -3
- agno/utils/message.py +60 -0
- agno/utils/models/ai_foundry.py +9 -2
- agno/utils/models/claude.py +49 -14
- agno/utils/models/cohere.py +9 -2
- agno/utils/models/llama.py +9 -2
- agno/utils/models/mistral.py +4 -2
- agno/utils/print_response/agent.py +109 -16
- agno/utils/print_response/team.py +223 -30
- agno/utils/print_response/workflow.py +251 -34
- agno/utils/streamlit.py +1 -1
- agno/utils/team.py +98 -9
- agno/utils/tokens.py +657 -0
- agno/vectordb/base.py +39 -7
- agno/vectordb/cassandra/cassandra.py +21 -5
- agno/vectordb/chroma/chromadb.py +43 -12
- agno/vectordb/clickhouse/clickhousedb.py +21 -5
- agno/vectordb/couchbase/couchbase.py +29 -5
- agno/vectordb/lancedb/lance_db.py +92 -181
- agno/vectordb/langchaindb/langchaindb.py +24 -4
- agno/vectordb/lightrag/lightrag.py +17 -3
- agno/vectordb/llamaindex/llamaindexdb.py +25 -5
- agno/vectordb/milvus/milvus.py +50 -37
- agno/vectordb/mongodb/__init__.py +7 -1
- agno/vectordb/mongodb/mongodb.py +36 -30
- agno/vectordb/pgvector/pgvector.py +201 -77
- agno/vectordb/pineconedb/pineconedb.py +41 -23
- agno/vectordb/qdrant/qdrant.py +67 -54
- agno/vectordb/redis/__init__.py +9 -0
- agno/vectordb/redis/redisdb.py +682 -0
- agno/vectordb/singlestore/singlestore.py +50 -29
- agno/vectordb/surrealdb/surrealdb.py +31 -41
- agno/vectordb/upstashdb/upstashdb.py +34 -6
- agno/vectordb/weaviate/weaviate.py +53 -14
- agno/workflow/__init__.py +2 -0
- agno/workflow/agent.py +299 -0
- agno/workflow/condition.py +120 -18
- agno/workflow/loop.py +77 -10
- agno/workflow/parallel.py +231 -143
- agno/workflow/router.py +118 -17
- agno/workflow/step.py +609 -170
- agno/workflow/steps.py +73 -6
- agno/workflow/types.py +96 -21
- agno/workflow/workflow.py +2039 -262
- {agno-2.1.2.dist-info → agno-2.3.13.dist-info}/METADATA +201 -66
- agno-2.3.13.dist-info/RECORD +613 -0
- agno/tools/googlesearch.py +0 -98
- agno/tools/mcp.py +0 -679
- agno/tools/memori.py +0 -339
- agno-2.1.2.dist-info/RECORD +0 -543
- {agno-2.1.2.dist-info → agno-2.3.13.dist-info}/WHEEL +0 -0
- {agno-2.1.2.dist-info → agno-2.3.13.dist-info}/licenses/LICENSE +0 -0
- {agno-2.1.2.dist-info → agno-2.3.13.dist-info}/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agno
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.3.13
|
|
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
|
|
@@ -24,7 +24,7 @@ License-File: LICENSE
|
|
|
24
24
|
Requires-Dist: docstring-parser
|
|
25
25
|
Requires-Dist: gitpython
|
|
26
26
|
Requires-Dist: h11>=0.16.0
|
|
27
|
-
Requires-Dist: httpx
|
|
27
|
+
Requires-Dist: httpx[http2]
|
|
28
28
|
Requires-Dist: packaging
|
|
29
29
|
Requires-Dist: pydantic-settings
|
|
30
30
|
Requires-Dist: pydantic
|
|
@@ -35,27 +35,24 @@ Requires-Dist: rich
|
|
|
35
35
|
Requires-Dist: typer
|
|
36
36
|
Requires-Dist: typing-extensions
|
|
37
37
|
Provides-Extra: dev
|
|
38
|
-
Requires-Dist: mypy; extra == "dev"
|
|
38
|
+
Requires-Dist: mypy==1.18.2; extra == "dev"
|
|
39
|
+
Requires-Dist: ruff==0.14.3; extra == "dev"
|
|
39
40
|
Requires-Dist: pytest; extra == "dev"
|
|
40
41
|
Requires-Dist: pytest-asyncio; extra == "dev"
|
|
41
42
|
Requires-Dist: pytest-cov; extra == "dev"
|
|
42
43
|
Requires-Dist: pytest-mock; extra == "dev"
|
|
43
|
-
Requires-Dist: ruff; extra == "dev"
|
|
44
44
|
Requires-Dist: timeout-decorator; extra == "dev"
|
|
45
45
|
Requires-Dist: types-pyyaml; extra == "dev"
|
|
46
46
|
Requires-Dist: types-aiofiles; extra == "dev"
|
|
47
47
|
Requires-Dist: fastapi; extra == "dev"
|
|
48
48
|
Requires-Dist: uvicorn; extra == "dev"
|
|
49
|
+
Requires-Dist: PyJWT; extra == "dev"
|
|
50
|
+
Requires-Dist: mcp; extra == "dev"
|
|
51
|
+
Requires-Dist: openai; extra == "dev"
|
|
49
52
|
Provides-Extra: os
|
|
50
53
|
Requires-Dist: fastapi; extra == "os"
|
|
51
54
|
Requires-Dist: uvicorn; extra == "os"
|
|
52
55
|
Requires-Dist: PyJWT; extra == "os"
|
|
53
|
-
Provides-Extra: integration-tests
|
|
54
|
-
Requires-Dist: exa_py; extra == "integration-tests"
|
|
55
|
-
Requires-Dist: ddgs; extra == "integration-tests"
|
|
56
|
-
Requires-Dist: yfinance; extra == "integration-tests"
|
|
57
|
-
Requires-Dist: sqlalchemy; extra == "integration-tests"
|
|
58
|
-
Requires-Dist: Pillow; extra == "integration-tests"
|
|
59
56
|
Provides-Extra: opentelemetry
|
|
60
57
|
Requires-Dist: opentelemetry-sdk; extra == "opentelemetry"
|
|
61
58
|
Requires-Dist: opentelemetry-exporter-otlp; extra == "opentelemetry"
|
|
@@ -86,7 +83,7 @@ Requires-Dist: cohere; extra == "cohere"
|
|
|
86
83
|
Provides-Extra: infinity
|
|
87
84
|
Requires-Dist: infinity_client; extra == "infinity"
|
|
88
85
|
Provides-Extra: google
|
|
89
|
-
Requires-Dist: google-genai; extra == "google"
|
|
86
|
+
Requires-Dist: google-genai>=1.52.0; extra == "google"
|
|
90
87
|
Provides-Extra: groq
|
|
91
88
|
Requires-Dist: groq; extra == "groq"
|
|
92
89
|
Provides-Extra: ibm
|
|
@@ -105,6 +102,9 @@ Provides-Extra: openai
|
|
|
105
102
|
Requires-Dist: openai; extra == "openai"
|
|
106
103
|
Provides-Extra: portkey
|
|
107
104
|
Requires-Dist: portkey-ai; extra == "portkey"
|
|
105
|
+
Provides-Extra: tokenizers
|
|
106
|
+
Requires-Dist: tiktoken; extra == "tokenizers"
|
|
107
|
+
Requires-Dist: tokenizers; extra == "tokenizers"
|
|
108
108
|
Provides-Extra: agentql
|
|
109
109
|
Requires-Dist: agentql; extra == "agentql"
|
|
110
110
|
Provides-Extra: apify
|
|
@@ -133,9 +133,11 @@ Requires-Dist: exa_py; extra == "exa"
|
|
|
133
133
|
Provides-Extra: fal
|
|
134
134
|
Requires-Dist: fal_client; extra == "fal"
|
|
135
135
|
Provides-Extra: firecrawl
|
|
136
|
-
Requires-Dist: firecrawl-py; extra == "firecrawl"
|
|
136
|
+
Requires-Dist: firecrawl-py==3.4.0; extra == "firecrawl"
|
|
137
|
+
Provides-Extra: tavily
|
|
138
|
+
Requires-Dist: tavily-python; extra == "tavily"
|
|
137
139
|
Provides-Extra: crawl4ai
|
|
138
|
-
Requires-Dist: crawl4ai; extra == "crawl4ai"
|
|
140
|
+
Requires-Dist: crawl4ai>=0.6.3; extra == "crawl4ai"
|
|
139
141
|
Provides-Extra: github
|
|
140
142
|
Requires-Dist: PyGithub; extra == "github"
|
|
141
143
|
Provides-Extra: gmail
|
|
@@ -150,19 +152,25 @@ Requires-Dist: google-maps-places; extra == "googlemaps"
|
|
|
150
152
|
Provides-Extra: matplotlib
|
|
151
153
|
Requires-Dist: matplotlib; extra == "matplotlib"
|
|
152
154
|
Provides-Extra: mcp
|
|
153
|
-
Requires-Dist: mcp; extra == "mcp"
|
|
155
|
+
Requires-Dist: mcp>=1.9.2; extra == "mcp"
|
|
154
156
|
Provides-Extra: mem0
|
|
155
157
|
Requires-Dist: mem0ai; extra == "mem0"
|
|
156
158
|
Provides-Extra: memori
|
|
157
|
-
Requires-Dist: memorisdk; extra == "memori"
|
|
159
|
+
Requires-Dist: memorisdk==3.0.5; extra == "memori"
|
|
158
160
|
Provides-Extra: newspaper
|
|
159
161
|
Requires-Dist: newspaper4k; extra == "newspaper"
|
|
160
162
|
Requires-Dist: lxml_html_clean; extra == "newspaper"
|
|
163
|
+
Provides-Extra: notion
|
|
164
|
+
Requires-Dist: notion-client; extra == "notion"
|
|
161
165
|
Provides-Extra: opencv
|
|
162
166
|
Requires-Dist: opencv-python; extra == "opencv"
|
|
167
|
+
Provides-Extra: parallel
|
|
168
|
+
Requires-Dist: parallel-web; extra == "parallel"
|
|
163
169
|
Provides-Extra: psycopg
|
|
164
170
|
Requires-Dist: psycopg-binary; extra == "psycopg"
|
|
165
171
|
Requires-Dist: psycopg; extra == "psycopg"
|
|
172
|
+
Provides-Extra: redshift
|
|
173
|
+
Requires-Dist: redshift-connector; extra == "redshift"
|
|
166
174
|
Provides-Extra: reportlab
|
|
167
175
|
Requires-Dist: reportlab; extra == "reportlab"
|
|
168
176
|
Provides-Extra: scrapegraph
|
|
@@ -191,6 +199,11 @@ Provides-Extra: sql
|
|
|
191
199
|
Requires-Dist: sqlalchemy; extra == "sql"
|
|
192
200
|
Provides-Extra: postgres
|
|
193
201
|
Requires-Dist: psycopg-binary; extra == "postgres"
|
|
202
|
+
Provides-Extra: async-postgres
|
|
203
|
+
Requires-Dist: asyncpg; extra == "async-postgres"
|
|
204
|
+
Provides-Extra: async-mongo
|
|
205
|
+
Requires-Dist: pymongo>=4.9; extra == "async-mongo"
|
|
206
|
+
Requires-Dist: motor; extra == "async-mongo"
|
|
194
207
|
Provides-Extra: sqlite
|
|
195
208
|
Requires-Dist: sqlalchemy; extra == "sqlite"
|
|
196
209
|
Provides-Extra: gcs
|
|
@@ -199,12 +212,16 @@ Provides-Extra: firestore
|
|
|
199
212
|
Requires-Dist: google-cloud-firestore; extra == "firestore"
|
|
200
213
|
Provides-Extra: redis
|
|
201
214
|
Requires-Dist: redis; extra == "redis"
|
|
215
|
+
Requires-Dist: redisvl; extra == "redis"
|
|
216
|
+
Provides-Extra: mysql
|
|
217
|
+
Requires-Dist: pymysql; extra == "mysql"
|
|
218
|
+
Requires-Dist: asyncmy; extra == "mysql"
|
|
202
219
|
Provides-Extra: pgvector
|
|
203
220
|
Requires-Dist: pgvector; extra == "pgvector"
|
|
204
221
|
Provides-Extra: chromadb
|
|
205
222
|
Requires-Dist: chromadb; extra == "chromadb"
|
|
206
223
|
Provides-Extra: lancedb
|
|
207
|
-
Requires-Dist: lancedb
|
|
224
|
+
Requires-Dist: lancedb==0.24.0; extra == "lancedb"
|
|
208
225
|
Requires-Dist: tantivy; extra == "lancedb"
|
|
209
226
|
Provides-Extra: pylance
|
|
210
227
|
Requires-Dist: pylance; extra == "pylance"
|
|
@@ -235,6 +252,8 @@ Requires-Dist: pypdf; extra == "pdf"
|
|
|
235
252
|
Requires-Dist: rapidocr_onnxruntime; extra == "pdf"
|
|
236
253
|
Provides-Extra: docx
|
|
237
254
|
Requires-Dist: python-docx; extra == "docx"
|
|
255
|
+
Provides-Extra: pptx
|
|
256
|
+
Requires-Dist: python-pptx; extra == "pptx"
|
|
238
257
|
Provides-Extra: text
|
|
239
258
|
Requires-Dist: aiofiles; extra == "text"
|
|
240
259
|
Provides-Extra: csv
|
|
@@ -273,7 +292,6 @@ Requires-Dist: agno[cohere]; extra == "models"
|
|
|
273
292
|
Requires-Dist: agno[google]; extra == "models"
|
|
274
293
|
Requires-Dist: agno[groq]; extra == "models"
|
|
275
294
|
Requires-Dist: agno[ibm]; extra == "models"
|
|
276
|
-
Requires-Dist: agno[infinity]; extra == "models"
|
|
277
295
|
Requires-Dist: agno[litellm]; extra == "models"
|
|
278
296
|
Requires-Dist: agno[meta]; extra == "models"
|
|
279
297
|
Requires-Dist: agno[mistral]; extra == "models"
|
|
@@ -283,7 +301,6 @@ Requires-Dist: agno[portkey]; extra == "models"
|
|
|
283
301
|
Provides-Extra: tools
|
|
284
302
|
Requires-Dist: agno[apify]; extra == "tools"
|
|
285
303
|
Requires-Dist: agno[arxiv]; extra == "tools"
|
|
286
|
-
Requires-Dist: agno[brave]; extra == "tools"
|
|
287
304
|
Requires-Dist: agno[exa]; extra == "tools"
|
|
288
305
|
Requires-Dist: agno[cartesia]; extra == "tools"
|
|
289
306
|
Requires-Dist: agno[ddg]; extra == "tools"
|
|
@@ -291,6 +308,7 @@ Requires-Dist: agno[duckdb]; extra == "tools"
|
|
|
291
308
|
Requires-Dist: agno[newspaper]; extra == "tools"
|
|
292
309
|
Requires-Dist: agno[youtube]; extra == "tools"
|
|
293
310
|
Requires-Dist: agno[firecrawl]; extra == "tools"
|
|
311
|
+
Requires-Dist: agno[tavily]; extra == "tools"
|
|
294
312
|
Requires-Dist: agno[crawl4ai]; extra == "tools"
|
|
295
313
|
Requires-Dist: agno[github]; extra == "tools"
|
|
296
314
|
Requires-Dist: agno[gmail]; extra == "tools"
|
|
@@ -305,21 +323,27 @@ Requires-Dist: agno[mcp]; extra == "tools"
|
|
|
305
323
|
Requires-Dist: agno[browserbase]; extra == "tools"
|
|
306
324
|
Requires-Dist: agno[agentql]; extra == "tools"
|
|
307
325
|
Requires-Dist: agno[opencv]; extra == "tools"
|
|
326
|
+
Requires-Dist: agno[parallel]; extra == "tools"
|
|
308
327
|
Requires-Dist: agno[scrapegraph]; extra == "tools"
|
|
309
328
|
Requires-Dist: agno[valyu]; extra == "tools"
|
|
329
|
+
Requires-Dist: agno[yfinance]; extra == "tools"
|
|
310
330
|
Requires-Dist: agno[confluence]; extra == "tools"
|
|
331
|
+
Requires-Dist: agno[notion]; extra == "tools"
|
|
311
332
|
Requires-Dist: agno[oxylabs]; extra == "tools"
|
|
312
333
|
Requires-Dist: agno[zep]; extra == "tools"
|
|
313
334
|
Requires-Dist: agno[mem0]; extra == "tools"
|
|
314
335
|
Requires-Dist: agno[memori]; extra == "tools"
|
|
315
336
|
Requires-Dist: agno[google_bigquery]; extra == "tools"
|
|
316
337
|
Requires-Dist: agno[psycopg]; extra == "tools"
|
|
338
|
+
Requires-Dist: agno[redshift]; extra == "tools"
|
|
317
339
|
Requires-Dist: agno[reportlab]; extra == "tools"
|
|
318
340
|
Requires-Dist: agno[trafilatura]; extra == "tools"
|
|
319
341
|
Requires-Dist: agno[neo4j]; extra == "tools"
|
|
320
342
|
Provides-Extra: storage
|
|
321
343
|
Requires-Dist: agno[sql]; extra == "storage"
|
|
322
344
|
Requires-Dist: agno[postgres]; extra == "storage"
|
|
345
|
+
Requires-Dist: agno[async_postgres]; extra == "storage"
|
|
346
|
+
Requires-Dist: agno[async_mongo]; extra == "storage"
|
|
323
347
|
Requires-Dist: agno[sqlite]; extra == "storage"
|
|
324
348
|
Requires-Dist: agno[gcs]; extra == "storage"
|
|
325
349
|
Requires-Dist: agno[firestore]; extra == "storage"
|
|
@@ -339,16 +363,20 @@ Requires-Dist: agno[clickhouse]; extra == "vectordbs"
|
|
|
339
363
|
Requires-Dist: agno[pinecone]; extra == "vectordbs"
|
|
340
364
|
Requires-Dist: agno[surrealdb]; extra == "vectordbs"
|
|
341
365
|
Requires-Dist: agno[upstash]; extra == "vectordbs"
|
|
366
|
+
Requires-Dist: agno[pylance]; extra == "vectordbs"
|
|
342
367
|
Provides-Extra: knowledge
|
|
343
368
|
Requires-Dist: agno[pdf]; extra == "knowledge"
|
|
344
369
|
Requires-Dist: agno[docx]; extra == "knowledge"
|
|
370
|
+
Requires-Dist: agno[pptx]; extra == "knowledge"
|
|
345
371
|
Requires-Dist: agno[text]; extra == "knowledge"
|
|
346
372
|
Requires-Dist: agno[csv]; extra == "knowledge"
|
|
347
373
|
Requires-Dist: agno[markdown]; extra == "knowledge"
|
|
348
374
|
Requires-Dist: agno[chonkie]; extra == "knowledge"
|
|
349
375
|
Provides-Extra: embedders
|
|
350
376
|
Requires-Dist: agno[huggingface]; extra == "embedders"
|
|
377
|
+
Requires-Dist: agno[vllm]; extra == "embedders"
|
|
351
378
|
Provides-Extra: tests
|
|
379
|
+
Requires-Dist: agno[a2a]; extra == "tests"
|
|
352
380
|
Requires-Dist: agno[dev]; extra == "tests"
|
|
353
381
|
Requires-Dist: agno[models]; extra == "tests"
|
|
354
382
|
Requires-Dist: agno[tools]; extra == "tests"
|
|
@@ -359,12 +387,21 @@ Requires-Dist: agno[embedders]; extra == "tests"
|
|
|
359
387
|
Requires-Dist: agno[performance]; extra == "tests"
|
|
360
388
|
Requires-Dist: agno[cookbooks]; extra == "tests"
|
|
361
389
|
Requires-Dist: agno[agui]; extra == "tests"
|
|
390
|
+
Requires-Dist: agno[integration-tests]; extra == "tests"
|
|
362
391
|
Requires-Dist: twine; extra == "tests"
|
|
363
392
|
Requires-Dist: build; extra == "tests"
|
|
393
|
+
Requires-Dist: grpcio==1.74.0; extra == "tests"
|
|
394
|
+
Provides-Extra: integration-tests
|
|
395
|
+
Requires-Dist: exa_py; extra == "integration-tests"
|
|
396
|
+
Requires-Dist: ddgs; extra == "integration-tests"
|
|
397
|
+
Requires-Dist: yfinance; extra == "integration-tests"
|
|
398
|
+
Requires-Dist: sqlalchemy; extra == "integration-tests"
|
|
399
|
+
Requires-Dist: Pillow; extra == "integration-tests"
|
|
400
|
+
Requires-Dist: fastmcp; extra == "integration-tests"
|
|
364
401
|
Dynamic: license-file
|
|
365
402
|
|
|
366
403
|
<div align="center" id="top">
|
|
367
|
-
<a href="https://
|
|
404
|
+
<a href="https://agno.com">
|
|
368
405
|
<picture>
|
|
369
406
|
<source media="(prefers-color-scheme: dark)" srcset="https://agno-public.s3.us-east-1.amazonaws.com/assets/logo-dark.svg">
|
|
370
407
|
<source media="(prefers-color-scheme: light)" srcset="https://agno-public.s3.us-east-1.amazonaws.com/assets/logo-light.svg">
|
|
@@ -372,62 +409,137 @@ Dynamic: license-file
|
|
|
372
409
|
</picture>
|
|
373
410
|
</a>
|
|
374
411
|
</div>
|
|
412
|
+
|
|
375
413
|
<div align="center">
|
|
376
|
-
<a href="https://docs.agno.com"
|
|
377
|
-
<
|
|
378
|
-
<a href="https://
|
|
379
|
-
<
|
|
414
|
+
<a href="https://docs.agno.com">Documentation</a>
|
|
415
|
+
<span> • </span>
|
|
416
|
+
<a href="https://docs.agno.com/examples/use-cases/agents/overview">Examples</a>
|
|
417
|
+
<span> • </span>
|
|
418
|
+
<a href="https://www.agno.com/?utm_source=github&utm_medium=readme&utm_campaign=agno-github">Website</a>
|
|
419
|
+
<br />
|
|
380
420
|
</div>
|
|
381
421
|
|
|
382
422
|
## What is Agno?
|
|
383
423
|
|
|
384
|
-
|
|
424
|
+
Agno is an incredibly fast multi-agent framework, runtime and control plane.
|
|
425
|
+
|
|
426
|
+
Companies want to build AI products, run them as a secure containerized service in their cloud, and monitor, test, and manage their agentic system with a beautiful UI. Doing this takes far more than calling an LLM API in a loop, it requires a thoughtfully designed agentic platform.
|
|
385
427
|
|
|
386
|
-
Agno
|
|
428
|
+
Agno provides the unified stack for building, running and managing multi-agent systems:
|
|
429
|
+
|
|
430
|
+
- **Framework**: Build agents, multi-agent teams and workflows with memory, knowledge, state, guardrails, HITL, context compression, MCP, A2A and 100+ toolkits.
|
|
431
|
+
- **AgentOS Runtime**: Run your multi-agent system in production with a secure, stateless runtime and ready to use integration endpoints.
|
|
432
|
+
- **AgentOS Control Plane**: Test, monitor and manage AgentOS deployments across environments with full operational visibility.
|
|
433
|
+
|
|
434
|
+
Checkout the full list of features [here](#features).
|
|
435
|
+
|
|
436
|
+
## Getting started
|
|
437
|
+
|
|
438
|
+
If you're new to Agno, follow our [quickstart](https://docs.agno.com/get-started/quickstart) to build your first Agent and chat with it using the AgentOS UI.
|
|
439
|
+
|
|
440
|
+
After that, checkout the [examples gallery](https://docs.agno.com/examples/use-cases/agents/overview) and build real-world applications with Agno.
|
|
441
|
+
|
|
442
|
+
## Documentation, Community & More Examples
|
|
443
|
+
|
|
444
|
+
- Docs: <a href="https://docs.agno.com" target="_blank" rel="noopener noreferrer">docs.agno.com</a>
|
|
445
|
+
- Cookbook: <a href="https://github.com/agno-agi/agno/tree/main/cookbook" target="_blank" rel="noopener noreferrer">Cookbook</a>
|
|
446
|
+
- Community forum: <a href="https://community.agno.com/" target="_blank" rel="noopener noreferrer">community.agno.com</a>
|
|
447
|
+
- Discord: <a href="https://discord.gg/4MtYHHrgA8" target="_blank" rel="noopener noreferrer">discord</a>
|
|
387
448
|
|
|
388
|
-
|
|
449
|
+
## Example
|
|
389
450
|
|
|
390
|
-
|
|
451
|
+
Here's an example of an Agent that connects to an MCP server, manages conversation state in a database, is served using a FastAPI application that you can chat with using the [AgentOS UI](https://os.agno.com).
|
|
452
|
+
|
|
453
|
+
```python agno_agent.py
|
|
391
454
|
from agno.agent import Agent
|
|
455
|
+
from agno.db.sqlite import SqliteDb
|
|
392
456
|
from agno.models.anthropic import Claude
|
|
393
|
-
from agno.
|
|
457
|
+
from agno.os import AgentOS
|
|
458
|
+
from agno.tools.mcp import MCPTools
|
|
394
459
|
|
|
395
|
-
|
|
460
|
+
# ************* Create Agent *************
|
|
461
|
+
agno_agent = Agent(
|
|
462
|
+
name="Agno Agent",
|
|
396
463
|
model=Claude(id="claude-sonnet-4-5"),
|
|
397
|
-
|
|
464
|
+
# Add a database to the Agent
|
|
465
|
+
db=SqliteDb(db_file="agno.db"),
|
|
466
|
+
# Add the Agno MCP server to the Agent
|
|
467
|
+
tools=[MCPTools(transport="streamable-http", url="https://docs.agno.com/mcp")],
|
|
468
|
+
# Add the previous session history to the context
|
|
469
|
+
add_history_to_context=True,
|
|
398
470
|
markdown=True,
|
|
399
471
|
)
|
|
400
|
-
|
|
472
|
+
|
|
473
|
+
|
|
474
|
+
# ************* Create AgentOS *************
|
|
475
|
+
agent_os = AgentOS(agents=[agno_agent])
|
|
476
|
+
# Get the FastAPI app for the AgentOS
|
|
477
|
+
app = agent_os.get_app()
|
|
478
|
+
|
|
479
|
+
# ************* Run AgentOS *************
|
|
480
|
+
if __name__ == "__main__":
|
|
481
|
+
agent_os.serve(app="agno_agent:app", reload=True)
|
|
401
482
|
```
|
|
402
483
|
|
|
403
|
-
|
|
484
|
+
## AgentOS - Production Runtime for Multi-Agent Systems
|
|
404
485
|
|
|
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.
|
|
486
|
+
Building Agents is easy, running them as a secure, scalable service is hard. AgentOS solves this by providing a high performance runtime for serving multi-agent systems in production. Key features include:
|
|
408
487
|
|
|
409
|
-
|
|
488
|
+
1. **Pre-built FastAPI app**: AgentOS includes a ready-to-use FastAPI app for running your agents, teams and workflows. This gives you a significant head start when building an AI product.
|
|
410
489
|
|
|
411
|
-
|
|
490
|
+
2. **Integrated Control Plane**: The [AgentOS UI](https://os.agno.com) connects directly to your runtime, so you can test, monitor and manage your system in real time with full operational visibility.
|
|
412
491
|
|
|
413
|
-
|
|
492
|
+
3. **Private by Design**: AgentOS runs entirely in your cloud, ensuring complete data privacy. No data leaves your environment, making it ideal for security conscious enterprises..
|
|
414
493
|
|
|
415
|
-
|
|
494
|
+
When you run the example script shared above, you get a FastAPI app that you can connect to the [AgentOS UI](https://os.agno.com). Here's what it looks like in action:
|
|
416
495
|
|
|
417
|
-
|
|
496
|
+
https://github.com/user-attachments/assets/feb23db8-15cc-4e88-be7c-01a21a03ebf6
|
|
418
497
|
|
|
419
|
-
##
|
|
498
|
+
## The Complete Agentic Solution
|
|
420
499
|
|
|
421
|
-
|
|
422
|
-
- Cookbook: <a href="https://github.com/agno-agi/agno/tree/main/cookbook" target="_blank" rel="noopener noreferrer">Cookbook</a>
|
|
423
|
-
- Community forum: <a href="https://community.agno.com/" target="_blank" rel="noopener noreferrer">community.agno.com</a>
|
|
424
|
-
- Discord: <a href="https://discord.gg/4MtYHHrgA8" target="_blank" rel="noopener noreferrer">discord</a>
|
|
500
|
+
Agno provides the complete solution for companies building agentic systems:
|
|
425
501
|
|
|
426
|
-
|
|
502
|
+
- The fastest framework for building agents, multi-agent teams and agentic workflows.
|
|
503
|
+
- A ready-to-use FastAPI app that gets you building AI products on day one.
|
|
504
|
+
- A control plane for testing, monitoring and managing your system.
|
|
505
|
+
|
|
506
|
+
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.
|
|
507
|
+
|
|
508
|
+
## Features
|
|
427
509
|
|
|
428
|
-
|
|
510
|
+
Agno is an incredibly feature-rich framework purpose-built for Agent Engineering. Here are some key features:
|
|
429
511
|
|
|
430
|
-
|
|
512
|
+
| **Category** | **Feature** | **Description** |
|
|
513
|
+
| -------------------------------------- | ------------------------------- | ------------------------------------------------------------------------------------------------------------------------- |
|
|
514
|
+
| **Foundational Principles** | **Model Agnostic** | Supports all model providers so you can choose the best model for your use case |
|
|
515
|
+
| | **Type Safe** | Enforces structured I/O through input_schema and output_schema for predictable and composable agent behavior. |
|
|
516
|
+
| | **Dynamic Context** | Inject variables, state, and retrieved data at runtime into context. Compress, summarize and filter context to keep your Agents focused and efficient. |
|
|
517
|
+
| | **Designed for Scale** | Designed around async execution and long-running tasks for high throughput agent workloads. |
|
|
518
|
+
| **Memory, Knowledge, and Persistence** | **Persistent Storage** | Give your Agents, Teams, and Workflows a database to persist session history, state, and messages. |
|
|
519
|
+
| | **User Memory** | Built in memory layer that helps agents recall user specific context across sessions. |
|
|
520
|
+
| | **Agentic RAG** | Connect to 20+ vector stores (called **Knowledge**) with hybrid search, reranking, and chunking out of the box. |
|
|
521
|
+
| | **Culture** | Shared long term collective memory that compounds across agents and time. |
|
|
522
|
+
| | **Ephemeral Context** | In memory scratchpad for short lived reasoning without polluting long term state. |
|
|
523
|
+
| **Execution & Control** | **Human-in-the-Loop** | Native support for confirmations, approvals, manual overrides, and external actions. |
|
|
524
|
+
| | **Guardrails** | Built-in safeguards for validation, security, and prompt protection. |
|
|
525
|
+
| | **Agent Lifecycle Hooks** | Pre and post hooks to validate, enrich, or transform inputs and outputs. |
|
|
526
|
+
| | **MCP Integration** | First-class support for the Model Context Protocol (MCP) to connect Agents with external systems. |
|
|
527
|
+
| | **A2A Integration** | First-class support for the Agent to Agent communication protocol (A2A). |
|
|
528
|
+
| | **Toolkits** | 100+ built in toolkits with thousands of tools covering data, code, web, and enterprise APIs. |
|
|
529
|
+
| **Runtime & Evaluation** | **Runtime** | Prebuilt FastAPI runtime with SSE compatible endpoints. Production ready from day one. |
|
|
530
|
+
| | **Control Plane (UI)** | Integrated interface to test, observe, and debug your agents, teams, and workflows in real time. |
|
|
531
|
+
| | **Natively Multimodal** | Agents can process and generate text, images, audio, video, and files. |
|
|
532
|
+
| | **Evals** | Measure Accuracy, Performance, Latency, and Reliability across agents and workflows. |
|
|
533
|
+
| | **Durable Execution** | Built in support for long running, resumable workflows. |
|
|
534
|
+
| **Security & Privacy** | **Private by Design** | Runs entirely in your cloud. The UI connects directly to your AgentOS from your browser, no data is ever sent externally. |
|
|
535
|
+
| | **Data Governance** | Your data lives securely in your Agent database, no external data sharing or vendor lock-in. |
|
|
536
|
+
| | **Access Control** | Role-based access (RBAC) and per-agent permissions to protect sensitive contexts and tools. |
|
|
537
|
+
|
|
538
|
+
Every part of Agno is built for real-world deployment — where developer experience meets production performance.
|
|
539
|
+
|
|
540
|
+
## Setup Your Coding Agent to Use Agno
|
|
541
|
+
|
|
542
|
+
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
543
|
|
|
432
544
|
### IDE Integration
|
|
433
545
|
|
|
@@ -442,42 +554,52 @@ Now, Cursor will have access to the Agno documentation. You can do the same with
|
|
|
442
554
|
|
|
443
555
|
## Performance
|
|
444
556
|
|
|
445
|
-
|
|
557
|
+
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.
|
|
558
|
+
|
|
559
|
+
At Agno, we optimize performance across 3 dimensions:
|
|
560
|
+
|
|
561
|
+
1. **Agent performance:** We optimize static operations (instantiation, memory footprint) and runtime operations (tool calls, memory updates, history management).
|
|
562
|
+
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.
|
|
563
|
+
3. **Agent reliability and accuracy:** Monitored through evals, which we'll explore later.
|
|
564
|
+
|
|
565
|
+
### Agent Performance
|
|
446
566
|
|
|
447
|
-
|
|
448
|
-
- Memory footprint: ~6.5Kib on average
|
|
567
|
+
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):
|
|
449
568
|
|
|
450
|
-
|
|
569
|
+
- **Agent instantiation:** ~3μs on average
|
|
570
|
+
- **Memory footprint:** ~6.6Kib on average
|
|
451
571
|
|
|
452
|
-
|
|
572
|
+
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**.
|
|
573
|
+
|
|
574
|
+
> [!NOTE]
|
|
575
|
+
> 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
576
|
|
|
454
577
|
### Instantiation Time
|
|
455
578
|
|
|
456
|
-
Let's measure
|
|
579
|
+
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
580
|
|
|
458
|
-
|
|
581
|
+
> [!NOTE]
|
|
582
|
+
> 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
583
|
|
|
460
584
|
```shell
|
|
461
585
|
# Setup virtual environment
|
|
462
586
|
./scripts/perf_setup.sh
|
|
463
587
|
source .venvs/perfenv/bin/activate
|
|
464
|
-
# OR Install dependencies manually
|
|
465
|
-
# pip install openai agno langgraph langchain_openai
|
|
466
588
|
|
|
467
589
|
# Agno
|
|
468
590
|
python cookbook/evals/performance/instantiate_agent_with_tool.py
|
|
469
591
|
|
|
470
592
|
# LangGraph
|
|
471
593
|
python cookbook/evals/performance/comparison/langgraph_instantiation.py
|
|
594
|
+
# CrewAI
|
|
595
|
+
python cookbook/evals/performance/comparison/crewai_instantiation.py
|
|
596
|
+
# Pydantic AI
|
|
597
|
+
python cookbook/evals/performance/comparison/pydantic_ai_instantiation.py
|
|
472
598
|
```
|
|
473
599
|
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
LangGraph is on the right, **let's start it first and give it a head start**.
|
|
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.
|
|
600
|
+
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.
|
|
479
601
|
|
|
480
|
-
https://github.com/user-attachments/assets/
|
|
602
|
+
https://github.com/user-attachments/assets/54b98576-1859-4880-9f2d-15e1a426719d
|
|
481
603
|
|
|
482
604
|
### Memory Usage
|
|
483
605
|
|
|
@@ -485,11 +607,24 @@ To measure memory usage, we use the `tracemalloc` library. We first calculate a
|
|
|
485
607
|
|
|
486
608
|
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
609
|
|
|
488
|
-
###
|
|
610
|
+
### Results
|
|
611
|
+
|
|
612
|
+
Taking Agno as the baseline, we can see that:
|
|
613
|
+
|
|
614
|
+
| Metric | Agno | Langgraph | PydanticAI | CrewAI |
|
|
615
|
+
| ------------------ | ---- | ----------- | ---------- | ---------- |
|
|
616
|
+
| **Time (seconds)** | 1× | 529× slower | 57× slower | 70× slower |
|
|
617
|
+
| **Memory (MiB)** | 1× | 24× higher | 4× higher | 10× higher |
|
|
618
|
+
|
|
619
|
+
Exact numbers from the benchmark:
|
|
489
620
|
|
|
490
|
-
|
|
621
|
+
| Metric | Agno | Langgraph | PydanticAI | CrewAI |
|
|
622
|
+
| ------------------ | -------- | --------- | ---------- | -------- |
|
|
623
|
+
| **Time (seconds)** | 0.000003 | 0.001587 | 0.000170 | 0.000210 |
|
|
624
|
+
| **Memory (MiB)** | 0.006642 | 0.161435 | 0.028712 | 0.065652 |
|
|
491
625
|
|
|
492
|
-
|
|
626
|
+
> [!NOTE]
|
|
627
|
+
> 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
628
|
|
|
494
629
|
## Contributions
|
|
495
630
|
|