agno 2.0.1__py3-none-any.whl → 2.3.0__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 +6015 -2823
- agno/api/api.py +2 -0
- agno/api/os.py +1 -1
- agno/culture/__init__.py +3 -0
- agno/culture/manager.py +956 -0
- agno/db/async_postgres/__init__.py +3 -0
- agno/db/base.py +385 -6
- agno/db/dynamo/dynamo.py +388 -81
- agno/db/dynamo/schemas.py +47 -10
- agno/db/dynamo/utils.py +63 -4
- agno/db/firestore/firestore.py +435 -64
- agno/db/firestore/schemas.py +11 -0
- agno/db/firestore/utils.py +102 -4
- agno/db/gcs_json/gcs_json_db.py +384 -42
- agno/db/gcs_json/utils.py +60 -26
- agno/db/in_memory/in_memory_db.py +351 -66
- agno/db/in_memory/utils.py +60 -2
- agno/db/json/json_db.py +339 -48
- agno/db/json/utils.py +60 -26
- agno/db/migrations/manager.py +199 -0
- agno/db/migrations/v1_to_v2.py +510 -37
- 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 +2036 -0
- agno/db/mongo/mongo.py +653 -76
- agno/db/mongo/schemas.py +13 -0
- agno/db/mongo/utils.py +80 -8
- agno/db/mysql/mysql.py +687 -25
- agno/db/mysql/schemas.py +61 -37
- agno/db/mysql/utils.py +60 -2
- agno/db/postgres/__init__.py +2 -1
- agno/db/postgres/async_postgres.py +2001 -0
- agno/db/postgres/postgres.py +676 -57
- agno/db/postgres/schemas.py +43 -18
- agno/db/postgres/utils.py +164 -2
- agno/db/redis/redis.py +344 -38
- agno/db/redis/schemas.py +18 -0
- agno/db/redis/utils.py +60 -2
- agno/db/schemas/__init__.py +2 -1
- agno/db/schemas/culture.py +120 -0
- agno/db/schemas/memory.py +13 -0
- agno/db/singlestore/schemas.py +26 -1
- agno/db/singlestore/singlestore.py +687 -53
- agno/db/singlestore/utils.py +60 -2
- agno/db/sqlite/__init__.py +2 -1
- agno/db/sqlite/async_sqlite.py +2371 -0
- agno/db/sqlite/schemas.py +24 -0
- agno/db/sqlite/sqlite.py +774 -85
- agno/db/sqlite/utils.py +168 -5
- agno/db/surrealdb/__init__.py +3 -0
- agno/db/surrealdb/metrics.py +292 -0
- agno/db/surrealdb/models.py +309 -0
- agno/db/surrealdb/queries.py +71 -0
- agno/db/surrealdb/surrealdb.py +1361 -0
- agno/db/surrealdb/utils.py +147 -0
- agno/db/utils.py +50 -22
- agno/eval/accuracy.py +50 -43
- agno/eval/performance.py +6 -3
- agno/eval/reliability.py +6 -3
- agno/eval/utils.py +33 -16
- agno/exceptions.py +68 -1
- agno/filters.py +354 -0
- agno/guardrails/__init__.py +6 -0
- agno/guardrails/base.py +19 -0
- agno/guardrails/openai.py +144 -0
- agno/guardrails/pii.py +94 -0
- agno/guardrails/prompt_injection.py +52 -0
- agno/integrations/discord/client.py +1 -0
- agno/knowledge/chunking/agentic.py +13 -10
- agno/knowledge/chunking/fixed.py +1 -1
- agno/knowledge/chunking/semantic.py +40 -8
- agno/knowledge/chunking/strategy.py +59 -15
- agno/knowledge/embedder/aws_bedrock.py +9 -4
- agno/knowledge/embedder/azure_openai.py +54 -0
- agno/knowledge/embedder/base.py +2 -0
- agno/knowledge/embedder/cohere.py +184 -5
- agno/knowledge/embedder/fastembed.py +1 -1
- agno/knowledge/embedder/google.py +79 -1
- agno/knowledge/embedder/huggingface.py +9 -4
- agno/knowledge/embedder/jina.py +63 -0
- agno/knowledge/embedder/mistral.py +78 -11
- agno/knowledge/embedder/nebius.py +1 -1
- agno/knowledge/embedder/ollama.py +13 -0
- agno/knowledge/embedder/openai.py +37 -65
- agno/knowledge/embedder/sentence_transformer.py +8 -4
- agno/knowledge/embedder/vllm.py +262 -0
- agno/knowledge/embedder/voyageai.py +69 -16
- agno/knowledge/knowledge.py +594 -186
- agno/knowledge/reader/base.py +9 -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 +290 -0
- agno/knowledge/reader/json_reader.py +6 -5
- agno/knowledge/reader/markdown_reader.py +13 -13
- agno/knowledge/reader/pdf_reader.py +43 -68
- agno/knowledge/reader/pptx_reader.py +101 -0
- agno/knowledge/reader/reader_factory.py +51 -6
- agno/knowledge/reader/s3_reader.py +3 -15
- agno/knowledge/reader/tavily_reader.py +194 -0
- agno/knowledge/reader/text_reader.py +13 -13
- agno/knowledge/reader/web_search_reader.py +2 -43
- agno/knowledge/reader/website_reader.py +43 -25
- agno/knowledge/reranker/__init__.py +2 -8
- agno/knowledge/types.py +9 -0
- agno/knowledge/utils.py +20 -0
- agno/media.py +72 -0
- agno/memory/manager.py +336 -82
- agno/models/aimlapi/aimlapi.py +2 -2
- agno/models/anthropic/claude.py +183 -37
- agno/models/aws/bedrock.py +52 -112
- agno/models/aws/claude.py +33 -1
- agno/models/azure/ai_foundry.py +33 -15
- agno/models/azure/openai_chat.py +25 -8
- agno/models/base.py +999 -519
- agno/models/cerebras/cerebras.py +19 -13
- agno/models/cerebras/cerebras_openai.py +8 -5
- agno/models/cohere/chat.py +27 -1
- agno/models/cometapi/__init__.py +5 -0
- agno/models/cometapi/cometapi.py +57 -0
- agno/models/dashscope/dashscope.py +1 -0
- agno/models/deepinfra/deepinfra.py +2 -2
- agno/models/deepseek/deepseek.py +2 -2
- agno/models/fireworks/fireworks.py +2 -2
- agno/models/google/gemini.py +103 -31
- agno/models/groq/groq.py +28 -11
- agno/models/huggingface/huggingface.py +2 -1
- agno/models/internlm/internlm.py +2 -2
- agno/models/langdb/langdb.py +4 -4
- agno/models/litellm/chat.py +18 -1
- agno/models/litellm/litellm_openai.py +2 -2
- agno/models/llama_cpp/__init__.py +5 -0
- agno/models/llama_cpp/llama_cpp.py +22 -0
- agno/models/message.py +139 -0
- agno/models/meta/llama.py +27 -10
- agno/models/meta/llama_openai.py +5 -17
- agno/models/nebius/nebius.py +6 -6
- agno/models/nexus/__init__.py +3 -0
- agno/models/nexus/nexus.py +22 -0
- agno/models/nvidia/nvidia.py +2 -2
- agno/models/ollama/chat.py +59 -5
- agno/models/openai/chat.py +69 -29
- agno/models/openai/responses.py +103 -106
- agno/models/openrouter/openrouter.py +41 -3
- agno/models/perplexity/perplexity.py +4 -5
- agno/models/portkey/portkey.py +3 -3
- agno/models/requesty/__init__.py +5 -0
- agno/models/requesty/requesty.py +52 -0
- agno/models/response.py +77 -1
- agno/models/sambanova/sambanova.py +2 -2
- agno/models/siliconflow/__init__.py +5 -0
- agno/models/siliconflow/siliconflow.py +25 -0
- agno/models/together/together.py +2 -2
- agno/models/utils.py +254 -8
- agno/models/vercel/v0.py +2 -2
- agno/models/vertexai/__init__.py +0 -0
- agno/models/vertexai/claude.py +96 -0
- agno/models/vllm/vllm.py +1 -0
- agno/models/xai/xai.py +3 -2
- agno/os/app.py +543 -178
- agno/os/auth.py +24 -14
- agno/os/config.py +1 -0
- agno/os/interfaces/__init__.py +1 -0
- agno/os/interfaces/a2a/__init__.py +3 -0
- agno/os/interfaces/a2a/a2a.py +42 -0
- agno/os/interfaces/a2a/router.py +250 -0
- agno/os/interfaces/a2a/utils.py +924 -0
- agno/os/interfaces/agui/agui.py +23 -7
- agno/os/interfaces/agui/router.py +27 -3
- agno/os/interfaces/agui/utils.py +242 -142
- agno/os/interfaces/base.py +6 -2
- agno/os/interfaces/slack/router.py +81 -23
- agno/os/interfaces/slack/slack.py +29 -14
- agno/os/interfaces/whatsapp/router.py +11 -4
- agno/os/interfaces/whatsapp/whatsapp.py +14 -7
- agno/os/mcp.py +111 -54
- agno/os/middleware/__init__.py +7 -0
- agno/os/middleware/jwt.py +233 -0
- agno/os/router.py +556 -139
- agno/os/routers/evals/evals.py +71 -34
- agno/os/routers/evals/schemas.py +31 -31
- agno/os/routers/evals/utils.py +6 -5
- agno/os/routers/health.py +31 -0
- agno/os/routers/home.py +52 -0
- agno/os/routers/knowledge/knowledge.py +185 -38
- agno/os/routers/knowledge/schemas.py +82 -22
- agno/os/routers/memory/memory.py +158 -53
- agno/os/routers/memory/schemas.py +20 -16
- agno/os/routers/metrics/metrics.py +20 -8
- agno/os/routers/metrics/schemas.py +16 -16
- agno/os/routers/session/session.py +499 -38
- agno/os/schema.py +308 -198
- agno/os/utils.py +401 -41
- agno/reasoning/anthropic.py +80 -0
- agno/reasoning/azure_ai_foundry.py +2 -2
- agno/reasoning/deepseek.py +2 -2
- agno/reasoning/default.py +3 -1
- agno/reasoning/gemini.py +73 -0
- agno/reasoning/groq.py +2 -2
- agno/reasoning/ollama.py +2 -2
- agno/reasoning/openai.py +7 -2
- agno/reasoning/vertexai.py +76 -0
- agno/run/__init__.py +6 -0
- agno/run/agent.py +248 -94
- agno/run/base.py +44 -5
- agno/run/team.py +238 -97
- agno/run/workflow.py +144 -33
- agno/session/agent.py +105 -89
- agno/session/summary.py +65 -25
- agno/session/team.py +176 -96
- agno/session/workflow.py +406 -40
- agno/team/team.py +3854 -1610
- agno/tools/dalle.py +2 -4
- agno/tools/decorator.py +4 -2
- agno/tools/duckduckgo.py +15 -11
- agno/tools/e2b.py +14 -7
- agno/tools/eleven_labs.py +23 -25
- agno/tools/exa.py +21 -16
- agno/tools/file.py +153 -23
- agno/tools/file_generation.py +350 -0
- agno/tools/firecrawl.py +4 -4
- agno/tools/function.py +250 -30
- agno/tools/gmail.py +238 -14
- agno/tools/google_drive.py +270 -0
- agno/tools/googlecalendar.py +36 -8
- agno/tools/googlesheets.py +20 -5
- agno/tools/jira.py +20 -0
- agno/tools/knowledge.py +3 -3
- 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 +284 -0
- agno/tools/mem0.py +11 -17
- agno/tools/memori.py +1 -53
- agno/tools/memory.py +419 -0
- agno/tools/models/nebius.py +5 -5
- agno/tools/models_labs.py +20 -10
- agno/tools/notion.py +204 -0
- agno/tools/parallel.py +314 -0
- agno/tools/scrapegraph.py +58 -31
- agno/tools/searxng.py +2 -2
- agno/tools/serper.py +2 -2
- agno/tools/slack.py +18 -3
- agno/tools/spider.py +2 -2
- agno/tools/tavily.py +146 -0
- agno/tools/whatsapp.py +1 -1
- agno/tools/workflow.py +278 -0
- agno/tools/yfinance.py +12 -11
- agno/utils/agent.py +820 -0
- agno/utils/audio.py +27 -0
- agno/utils/common.py +90 -1
- agno/utils/events.py +217 -2
- agno/utils/gemini.py +180 -22
- agno/utils/hooks.py +57 -0
- agno/utils/http.py +111 -0
- agno/utils/knowledge.py +12 -5
- agno/utils/log.py +1 -0
- agno/utils/mcp.py +92 -2
- agno/utils/media.py +188 -10
- agno/utils/merge_dict.py +22 -1
- agno/utils/message.py +60 -0
- agno/utils/models/claude.py +40 -11
- agno/utils/print_response/agent.py +105 -21
- agno/utils/print_response/team.py +103 -38
- agno/utils/print_response/workflow.py +251 -34
- agno/utils/reasoning.py +22 -1
- agno/utils/serialize.py +32 -0
- agno/utils/streamlit.py +16 -10
- agno/utils/string.py +41 -0
- agno/utils/team.py +98 -9
- agno/utils/tools.py +1 -1
- agno/vectordb/base.py +23 -4
- agno/vectordb/cassandra/cassandra.py +65 -9
- agno/vectordb/chroma/chromadb.py +182 -38
- agno/vectordb/clickhouse/clickhousedb.py +64 -11
- agno/vectordb/couchbase/couchbase.py +105 -10
- agno/vectordb/lancedb/lance_db.py +124 -133
- agno/vectordb/langchaindb/langchaindb.py +25 -7
- agno/vectordb/lightrag/lightrag.py +17 -3
- agno/vectordb/llamaindex/__init__.py +3 -0
- agno/vectordb/llamaindex/llamaindexdb.py +46 -7
- agno/vectordb/milvus/milvus.py +126 -9
- agno/vectordb/mongodb/__init__.py +7 -1
- agno/vectordb/mongodb/mongodb.py +112 -7
- agno/vectordb/pgvector/pgvector.py +142 -21
- agno/vectordb/pineconedb/pineconedb.py +80 -8
- agno/vectordb/qdrant/qdrant.py +125 -39
- agno/vectordb/redis/__init__.py +9 -0
- agno/vectordb/redis/redisdb.py +694 -0
- agno/vectordb/singlestore/singlestore.py +111 -25
- agno/vectordb/surrealdb/surrealdb.py +31 -5
- agno/vectordb/upstashdb/upstashdb.py +76 -8
- agno/vectordb/weaviate/weaviate.py +86 -15
- agno/workflow/__init__.py +2 -0
- agno/workflow/agent.py +299 -0
- agno/workflow/condition.py +112 -18
- agno/workflow/loop.py +69 -10
- agno/workflow/parallel.py +266 -118
- agno/workflow/router.py +110 -17
- agno/workflow/step.py +638 -129
- agno/workflow/steps.py +65 -6
- agno/workflow/types.py +61 -23
- agno/workflow/workflow.py +2085 -272
- {agno-2.0.1.dist-info → agno-2.3.0.dist-info}/METADATA +182 -58
- agno-2.3.0.dist-info/RECORD +577 -0
- agno/knowledge/reader/url_reader.py +0 -128
- agno/tools/googlesearch.py +0 -98
- agno/tools/mcp.py +0 -610
- agno/utils/models/aws_claude.py +0 -170
- agno-2.0.1.dist-info/RECORD +0 -515
- {agno-2.0.1.dist-info → agno-2.3.0.dist-info}/WHEEL +0 -0
- {agno-2.0.1.dist-info → agno-2.3.0.dist-info}/licenses/LICENSE +0 -0
- {agno-2.0.1.dist-info → agno-2.3.0.dist-info}/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agno
|
|
3
|
-
Version: 2.0
|
|
3
|
+
Version: 2.3.0
|
|
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
|
|
@@ -23,7 +23,8 @@ Description-Content-Type: text/markdown
|
|
|
23
23
|
License-File: LICENSE
|
|
24
24
|
Requires-Dist: docstring-parser
|
|
25
25
|
Requires-Dist: gitpython
|
|
26
|
-
Requires-Dist:
|
|
26
|
+
Requires-Dist: h11>=0.16.0
|
|
27
|
+
Requires-Dist: httpx[http2]
|
|
27
28
|
Requires-Dist: packaging
|
|
28
29
|
Requires-Dist: pydantic-settings
|
|
29
30
|
Requires-Dist: pydantic
|
|
@@ -34,12 +35,12 @@ Requires-Dist: rich
|
|
|
34
35
|
Requires-Dist: typer
|
|
35
36
|
Requires-Dist: typing-extensions
|
|
36
37
|
Provides-Extra: dev
|
|
37
|
-
Requires-Dist: mypy; extra == "dev"
|
|
38
|
+
Requires-Dist: mypy==1.18.2; extra == "dev"
|
|
39
|
+
Requires-Dist: ruff==0.14.3; extra == "dev"
|
|
38
40
|
Requires-Dist: pytest; extra == "dev"
|
|
39
41
|
Requires-Dist: pytest-asyncio; extra == "dev"
|
|
40
42
|
Requires-Dist: pytest-cov; extra == "dev"
|
|
41
43
|
Requires-Dist: pytest-mock; extra == "dev"
|
|
42
|
-
Requires-Dist: ruff; extra == "dev"
|
|
43
44
|
Requires-Dist: timeout-decorator; extra == "dev"
|
|
44
45
|
Requires-Dist: types-pyyaml; extra == "dev"
|
|
45
46
|
Requires-Dist: types-aiofiles; extra == "dev"
|
|
@@ -48,12 +49,14 @@ Requires-Dist: uvicorn; extra == "dev"
|
|
|
48
49
|
Provides-Extra: os
|
|
49
50
|
Requires-Dist: fastapi; extra == "os"
|
|
50
51
|
Requires-Dist: uvicorn; extra == "os"
|
|
52
|
+
Requires-Dist: PyJWT; extra == "os"
|
|
51
53
|
Provides-Extra: integration-tests
|
|
52
54
|
Requires-Dist: exa_py; extra == "integration-tests"
|
|
53
55
|
Requires-Dist: ddgs; extra == "integration-tests"
|
|
54
56
|
Requires-Dist: yfinance; extra == "integration-tests"
|
|
55
57
|
Requires-Dist: sqlalchemy; extra == "integration-tests"
|
|
56
58
|
Requires-Dist: Pillow; extra == "integration-tests"
|
|
59
|
+
Requires-Dist: fastmcp; extra == "integration-tests"
|
|
57
60
|
Provides-Extra: opentelemetry
|
|
58
61
|
Requires-Dist: opentelemetry-sdk; extra == "opentelemetry"
|
|
59
62
|
Requires-Dist: opentelemetry-exporter-otlp; extra == "opentelemetry"
|
|
@@ -132,6 +135,8 @@ Provides-Extra: fal
|
|
|
132
135
|
Requires-Dist: fal_client; extra == "fal"
|
|
133
136
|
Provides-Extra: firecrawl
|
|
134
137
|
Requires-Dist: firecrawl-py; extra == "firecrawl"
|
|
138
|
+
Provides-Extra: tavily
|
|
139
|
+
Requires-Dist: tavily-python; extra == "tavily"
|
|
135
140
|
Provides-Extra: crawl4ai
|
|
136
141
|
Requires-Dist: crawl4ai; extra == "crawl4ai"
|
|
137
142
|
Provides-Extra: github
|
|
@@ -156,11 +161,19 @@ Requires-Dist: memorisdk; extra == "memori"
|
|
|
156
161
|
Provides-Extra: newspaper
|
|
157
162
|
Requires-Dist: newspaper4k; extra == "newspaper"
|
|
158
163
|
Requires-Dist: lxml_html_clean; extra == "newspaper"
|
|
164
|
+
Provides-Extra: notion
|
|
165
|
+
Requires-Dist: notion-client; extra == "notion"
|
|
159
166
|
Provides-Extra: opencv
|
|
160
167
|
Requires-Dist: opencv-python; extra == "opencv"
|
|
168
|
+
Provides-Extra: parallel
|
|
169
|
+
Requires-Dist: parallel-web; extra == "parallel"
|
|
161
170
|
Provides-Extra: psycopg
|
|
162
171
|
Requires-Dist: psycopg-binary; extra == "psycopg"
|
|
163
172
|
Requires-Dist: psycopg; extra == "psycopg"
|
|
173
|
+
Provides-Extra: reportlab
|
|
174
|
+
Requires-Dist: reportlab; extra == "reportlab"
|
|
175
|
+
Provides-Extra: scrapegraph
|
|
176
|
+
Requires-Dist: scrapegraph-py; extra == "scrapegraph"
|
|
164
177
|
Provides-Extra: todoist
|
|
165
178
|
Requires-Dist: todoist-api-python; extra == "todoist"
|
|
166
179
|
Provides-Extra: valyu
|
|
@@ -185,6 +198,11 @@ Provides-Extra: sql
|
|
|
185
198
|
Requires-Dist: sqlalchemy; extra == "sql"
|
|
186
199
|
Provides-Extra: postgres
|
|
187
200
|
Requires-Dist: psycopg-binary; extra == "postgres"
|
|
201
|
+
Provides-Extra: async-postgres
|
|
202
|
+
Requires-Dist: asyncpg; extra == "async-postgres"
|
|
203
|
+
Provides-Extra: async-mongo
|
|
204
|
+
Requires-Dist: pymongo; extra == "async-mongo"
|
|
205
|
+
Requires-Dist: motor; extra == "async-mongo"
|
|
188
206
|
Provides-Extra: sqlite
|
|
189
207
|
Requires-Dist: sqlalchemy; extra == "sqlite"
|
|
190
208
|
Provides-Extra: gcs
|
|
@@ -193,6 +211,7 @@ Provides-Extra: firestore
|
|
|
193
211
|
Requires-Dist: google-cloud-firestore; extra == "firestore"
|
|
194
212
|
Provides-Extra: redis
|
|
195
213
|
Requires-Dist: redis; extra == "redis"
|
|
214
|
+
Requires-Dist: redisvl; extra == "redis"
|
|
196
215
|
Provides-Extra: pgvector
|
|
197
216
|
Requires-Dist: pgvector; extra == "pgvector"
|
|
198
217
|
Provides-Extra: chromadb
|
|
@@ -229,6 +248,8 @@ Requires-Dist: pypdf; extra == "pdf"
|
|
|
229
248
|
Requires-Dist: rapidocr_onnxruntime; extra == "pdf"
|
|
230
249
|
Provides-Extra: docx
|
|
231
250
|
Requires-Dist: python-docx; extra == "docx"
|
|
251
|
+
Provides-Extra: pptx
|
|
252
|
+
Requires-Dist: python-pptx; extra == "pptx"
|
|
232
253
|
Provides-Extra: text
|
|
233
254
|
Requires-Dist: aiofiles; extra == "text"
|
|
234
255
|
Provides-Extra: csv
|
|
@@ -242,6 +263,8 @@ Requires-Dist: chonkie[st]; extra == "chonkie"
|
|
|
242
263
|
Requires-Dist: chonkie; extra == "chonkie"
|
|
243
264
|
Provides-Extra: agui
|
|
244
265
|
Requires-Dist: ag-ui-protocol; extra == "agui"
|
|
266
|
+
Provides-Extra: a2a
|
|
267
|
+
Requires-Dist: a2a-sdk; extra == "a2a"
|
|
245
268
|
Provides-Extra: huggingface
|
|
246
269
|
Requires-Dist: huggingface-hub; extra == "huggingface"
|
|
247
270
|
Provides-Extra: performance
|
|
@@ -262,7 +285,6 @@ Requires-Dist: agno[anthropic]; extra == "models"
|
|
|
262
285
|
Requires-Dist: agno[azure]; extra == "models"
|
|
263
286
|
Requires-Dist: agno[cerebras]; extra == "models"
|
|
264
287
|
Requires-Dist: agno[cohere]; extra == "models"
|
|
265
|
-
Requires-Dist: agno[infinity]; extra == "models"
|
|
266
288
|
Requires-Dist: agno[google]; extra == "models"
|
|
267
289
|
Requires-Dist: agno[groq]; extra == "models"
|
|
268
290
|
Requires-Dist: agno[ibm]; extra == "models"
|
|
@@ -284,6 +306,7 @@ Requires-Dist: agno[duckdb]; extra == "tools"
|
|
|
284
306
|
Requires-Dist: agno[newspaper]; extra == "tools"
|
|
285
307
|
Requires-Dist: agno[youtube]; extra == "tools"
|
|
286
308
|
Requires-Dist: agno[firecrawl]; extra == "tools"
|
|
309
|
+
Requires-Dist: agno[tavily]; extra == "tools"
|
|
287
310
|
Requires-Dist: agno[crawl4ai]; extra == "tools"
|
|
288
311
|
Requires-Dist: agno[github]; extra == "tools"
|
|
289
312
|
Requires-Dist: agno[gmail]; extra == "tools"
|
|
@@ -298,19 +321,25 @@ Requires-Dist: agno[mcp]; extra == "tools"
|
|
|
298
321
|
Requires-Dist: agno[browserbase]; extra == "tools"
|
|
299
322
|
Requires-Dist: agno[agentql]; extra == "tools"
|
|
300
323
|
Requires-Dist: agno[opencv]; extra == "tools"
|
|
324
|
+
Requires-Dist: agno[parallel]; extra == "tools"
|
|
325
|
+
Requires-Dist: agno[scrapegraph]; extra == "tools"
|
|
301
326
|
Requires-Dist: agno[valyu]; extra == "tools"
|
|
302
327
|
Requires-Dist: agno[confluence]; extra == "tools"
|
|
328
|
+
Requires-Dist: agno[notion]; extra == "tools"
|
|
303
329
|
Requires-Dist: agno[oxylabs]; extra == "tools"
|
|
304
330
|
Requires-Dist: agno[zep]; extra == "tools"
|
|
305
331
|
Requires-Dist: agno[mem0]; extra == "tools"
|
|
306
332
|
Requires-Dist: agno[memori]; extra == "tools"
|
|
307
333
|
Requires-Dist: agno[google_bigquery]; extra == "tools"
|
|
308
334
|
Requires-Dist: agno[psycopg]; extra == "tools"
|
|
335
|
+
Requires-Dist: agno[reportlab]; extra == "tools"
|
|
309
336
|
Requires-Dist: agno[trafilatura]; extra == "tools"
|
|
310
337
|
Requires-Dist: agno[neo4j]; extra == "tools"
|
|
311
338
|
Provides-Extra: storage
|
|
312
339
|
Requires-Dist: agno[sql]; extra == "storage"
|
|
313
340
|
Requires-Dist: agno[postgres]; extra == "storage"
|
|
341
|
+
Requires-Dist: agno[async_postgres]; extra == "storage"
|
|
342
|
+
Requires-Dist: agno[async_mongo]; extra == "storage"
|
|
314
343
|
Requires-Dist: agno[sqlite]; extra == "storage"
|
|
315
344
|
Requires-Dist: agno[gcs]; extra == "storage"
|
|
316
345
|
Requires-Dist: agno[firestore]; extra == "storage"
|
|
@@ -333,12 +362,14 @@ Requires-Dist: agno[upstash]; extra == "vectordbs"
|
|
|
333
362
|
Provides-Extra: knowledge
|
|
334
363
|
Requires-Dist: agno[pdf]; extra == "knowledge"
|
|
335
364
|
Requires-Dist: agno[docx]; extra == "knowledge"
|
|
365
|
+
Requires-Dist: agno[pptx]; extra == "knowledge"
|
|
336
366
|
Requires-Dist: agno[text]; extra == "knowledge"
|
|
337
367
|
Requires-Dist: agno[csv]; extra == "knowledge"
|
|
338
368
|
Requires-Dist: agno[markdown]; extra == "knowledge"
|
|
339
369
|
Requires-Dist: agno[chonkie]; extra == "knowledge"
|
|
340
370
|
Provides-Extra: embedders
|
|
341
371
|
Requires-Dist: agno[huggingface]; extra == "embedders"
|
|
372
|
+
Requires-Dist: agno[vllm]; extra == "embedders"
|
|
342
373
|
Provides-Extra: tests
|
|
343
374
|
Requires-Dist: agno[dev]; extra == "tests"
|
|
344
375
|
Requires-Dist: agno[models]; extra == "tests"
|
|
@@ -355,7 +386,7 @@ Requires-Dist: build; extra == "tests"
|
|
|
355
386
|
Dynamic: license-file
|
|
356
387
|
|
|
357
388
|
<div align="center" id="top">
|
|
358
|
-
<a href="https://
|
|
389
|
+
<a href="https://agno.com">
|
|
359
390
|
<picture>
|
|
360
391
|
<source media="(prefers-color-scheme: dark)" srcset="https://agno-public.s3.us-east-1.amazonaws.com/assets/logo-dark.svg">
|
|
361
392
|
<source media="(prefers-color-scheme: light)" srcset="https://agno-public.s3.us-east-1.amazonaws.com/assets/logo-light.svg">
|
|
@@ -363,61 +394,131 @@ Dynamic: license-file
|
|
|
363
394
|
</picture>
|
|
364
395
|
</a>
|
|
365
396
|
</div>
|
|
397
|
+
|
|
366
398
|
<div align="center">
|
|
367
|
-
<a href="https://docs.agno.com"
|
|
368
|
-
<
|
|
369
|
-
<a href="https://
|
|
399
|
+
<a href="https://docs.agno.com">Documentation</a>
|
|
400
|
+
<span> • </span>
|
|
401
|
+
<a href="https://docs.agno.com/examples/introduction">Examples</a>
|
|
402
|
+
<span> • </span>
|
|
403
|
+
<a href="https://www.agno.com/?utm_source=github&utm_medium=readme&utm_campaign=agno-github">Website</a>
|
|
404
|
+
<br />
|
|
370
405
|
</div>
|
|
371
406
|
|
|
372
407
|
## What is Agno?
|
|
373
408
|
|
|
374
|
-
|
|
409
|
+
Agno is a multi-agent framework, runtime and control plane. Built for speed, privacy, and scale.
|
|
410
|
+
|
|
411
|
+
It provides a rich set of tools for building:
|
|
412
|
+
|
|
413
|
+
- **Agents** with memory, knowledge, session management, and advanced features like human-in-the-loop, guardrails, dynamic context management and best-in-class MCP support.
|
|
414
|
+
- **Multi-Agent Teams** that operate autonomously under a team leader that maintains shared state and context. Perfect for use cases where the scope exceeds beyond a single agent.
|
|
415
|
+
- **Step-based Workflows** for controlled, deterministic execution. Steps can be Agents, Teams, or regular python functions that run sequentially, in parallel, in loops, branches, or conditionally.
|
|
416
|
+
|
|
417
|
+
Agno also provides a ready-to-use FastAPI app (called the AgentOS) for serving your agents, teams and workflows in production. Stateless, horizontally scalable and designed for scale, the AgentOS gives you major head start in building your AI product.
|
|
418
|
+
|
|
419
|
+
## Getting started
|
|
420
|
+
|
|
421
|
+
If you're new to Agno, follow our [quickstart](https://docs.agno.com/introduction/quickstart) to build your first Agent and chat with it using the AgentOS UI.
|
|
422
|
+
|
|
423
|
+
After that, checkout the [examples gallery](https://docs.agno.com/examples/introduction) and build real-world applications with Agno.
|
|
424
|
+
|
|
425
|
+
## Documentation, Community & More Examples
|
|
426
|
+
|
|
427
|
+
- Docs: <a href="https://docs.agno.com" target="_blank" rel="noopener noreferrer">docs.agno.com</a>
|
|
428
|
+
- Cookbook: <a href="https://github.com/agno-agi/agno/tree/main/cookbook" target="_blank" rel="noopener noreferrer">Cookbook</a>
|
|
429
|
+
- Community forum: <a href="https://community.agno.com/" target="_blank" rel="noopener noreferrer">community.agno.com</a>
|
|
430
|
+
- Discord: <a href="https://discord.gg/4MtYHHrgA8" target="_blank" rel="noopener noreferrer">discord</a>
|
|
375
431
|
|
|
376
|
-
|
|
432
|
+
## Example
|
|
377
433
|
|
|
378
|
-
|
|
434
|
+
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).
|
|
379
435
|
|
|
380
|
-
```python
|
|
436
|
+
```python agno_agent.py
|
|
381
437
|
from agno.agent import Agent
|
|
438
|
+
from agno.db.sqlite import SqliteDb
|
|
382
439
|
from agno.models.anthropic import Claude
|
|
383
|
-
from agno.
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
440
|
+
from agno.os import AgentOS
|
|
441
|
+
from agno.tools.mcp import MCPTools
|
|
442
|
+
|
|
443
|
+
# ************* Create Agent *************
|
|
444
|
+
agno_agent = Agent(
|
|
445
|
+
name="Agno Agent",
|
|
446
|
+
model=Claude(id="claude-sonnet-4-5"),
|
|
447
|
+
# Add a database to the Agent
|
|
448
|
+
db=SqliteDb(db_file="agno.db"),
|
|
449
|
+
# Add the Agno MCP server to the Agent
|
|
450
|
+
tools=[MCPTools(transport="streamable-http", url="https://docs.agno.com/mcp")],
|
|
451
|
+
# Add the previous session history to the context
|
|
452
|
+
add_history_to_context=True,
|
|
388
453
|
markdown=True,
|
|
389
454
|
)
|
|
390
|
-
|
|
455
|
+
|
|
456
|
+
|
|
457
|
+
# ************* Create AgentOS *************
|
|
458
|
+
agent_os = AgentOS(agents=[agno_agent])
|
|
459
|
+
# Get the FastAPI app for the AgentOS
|
|
460
|
+
app = agent_os.get_app()
|
|
461
|
+
|
|
462
|
+
# ************* Run AgentOS *************
|
|
463
|
+
if __name__ == "__main__":
|
|
464
|
+
agent_os.serve(app="agno_agent:app", reload=True)
|
|
391
465
|
```
|
|
392
466
|
|
|
393
|
-
|
|
467
|
+
## AgentOS - Production Runtime for Multi-Agent Systems
|
|
394
468
|
|
|
395
|
-
|
|
396
|
-
2. You also get a control plane which connects directly to your AgentOS for testing, monitoring and managing your system. This gives you unmatched visibility and control over your system.
|
|
397
|
-
3. Your AgentOS runs in your cloud and you get complete data privacy because no data ever leaves your system. This is incredible for security conscious enterprises that can't send traces to external services.
|
|
469
|
+
Building Agents is easy, running them is hard, and that's where the AgentOS comes in. AgentOS is a high-performance runtime for serving multi-agent systems in production. Key features include:
|
|
398
470
|
|
|
399
|
-
|
|
471
|
+
1. **Pre-built FastAPI app**: AgentOS ships with a ready-to-use FastAPI app for orchestrating your agents, teams, and workflows. This gives you a major head start in building your AI product.
|
|
400
472
|
|
|
401
|
-
|
|
473
|
+
2. **Integrated Control Plane**: The [AgentOS UI](https://os.agno.com) connects directly to your runtime, letting you test, monitor, and manage your system in real time, giving you unmatched control over your system.
|
|
402
474
|
|
|
403
|
-
|
|
475
|
+
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.
|
|
404
476
|
|
|
405
|
-
|
|
477
|
+
Here's what the [AgentOS UI](https://os.agno.com) looks like in action:
|
|
406
478
|
|
|
407
|
-
|
|
479
|
+
https://github.com/user-attachments/assets/feb23db8-15cc-4e88-be7c-01a21a03ebf6
|
|
408
480
|
|
|
409
|
-
##
|
|
481
|
+
## The Complete Agentic Solution
|
|
410
482
|
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
-
|
|
414
|
-
-
|
|
483
|
+
For companies building agents, Agno provides the complete agentic solution:
|
|
484
|
+
|
|
485
|
+
- The fastest framework for building agents, multi-agent teams and agentic workflows.
|
|
486
|
+
- A ready-to-use FastAPI app that gets you building AI products on day one.
|
|
487
|
+
- A control plane for testing, monitoring and managing your system.
|
|
488
|
+
|
|
489
|
+
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.
|
|
490
|
+
|
|
491
|
+
## Designed for Agent Engineering
|
|
492
|
+
|
|
493
|
+
Agno is an incredibly feature-rich framework, designed for Agent Engineering. Here are some key features:
|
|
415
494
|
|
|
416
|
-
|
|
495
|
+
| **Category** | **Feature** | **Description** |
|
|
496
|
+
|---------------|-------------|-----------------|
|
|
497
|
+
| **Core Intelligence** | **Model Agnostic** | Works with any model provider so you can use your favorite LLMs. |
|
|
498
|
+
| | **Type Safe** | Enforce structured I/O through `input_schema` and `output_schema` for predictable, composable behavior. |
|
|
499
|
+
| | **Dynamic Context Engineering** | Inject variables, state, and retrieved data on the fly into context. Perfect for dependency-driven agents. |
|
|
500
|
+
| **Memory, Knowledge, and Persistence** | **Persistent Storage** | Give your Agents, Teams, and Workflows a database to persist session history, state, and messages. |
|
|
501
|
+
| | **User Memory** | Built-in memory system that allows Agents to recall user-specific context across sessions. |
|
|
502
|
+
| | **Agentic RAG** | Connect to 20+ vector stores (called **Knowledge** in Agno) with hybrid search + reranking out of the box. |
|
|
503
|
+
| | **Culture (Collective Memory)** | Shared knowledge that compounds across agents and time. |
|
|
504
|
+
| **Execution & Control** | **Human-in-the-Loop** | Native support for confirmations, manual overrides, and external tool execution. |
|
|
505
|
+
| | **Guardrails** | Built-in safeguards for validation, security, and prompt protection. |
|
|
506
|
+
| | **Agent Lifecycle Hooks** | Pre- and post-hooks to validate or transform inputs and outputs. |
|
|
507
|
+
| | **MCP Integration** | First-class support for the Model Context Protocol (MCP) to connect Agents with external systems. |
|
|
508
|
+
| | **Toolkits** | 100+ built-in toolkits with thousands of tools, ready for use across data, code, web, and enterprise APIs. |
|
|
509
|
+
| **Runtime & Evaluation** | **Runtime** | Pre-built FastAPI based runtime with SSE compatible endpoints, ready for production on day 1. |
|
|
510
|
+
| | **Control Plane (UI)** | Integrated interface to visualize, monitor, and debug agent activity in real time. |
|
|
511
|
+
| | **Natively Multimodal** | Agents can process and generate text, images, audio, video, and files. |
|
|
512
|
+
| | **Evals** | Measure your Agents' Accuracy, Performance, and Reliability. |
|
|
513
|
+
| **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. |
|
|
514
|
+
| | **Data Governance** | Your data lives securely in your Agent database, no external data sharing or vendor lock-in. |
|
|
515
|
+
| | **Access Control** | Role-based access (RBAC) and per-agent permissions to protect sensitive contexts and tools. |
|
|
417
516
|
|
|
418
|
-
|
|
517
|
+
Every part of Agno is built for real-world deployment — where developer experience meets production performance.
|
|
419
518
|
|
|
420
|
-
|
|
519
|
+
## Setup Your Coding Agent to Use Agno
|
|
520
|
+
|
|
521
|
+
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.
|
|
421
522
|
|
|
422
523
|
### IDE Integration
|
|
423
524
|
|
|
@@ -432,54 +533,77 @@ Now, Cursor will have access to the Agno documentation. You can do the same with
|
|
|
432
533
|
|
|
433
534
|
## Performance
|
|
434
535
|
|
|
435
|
-
|
|
536
|
+
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.
|
|
537
|
+
|
|
538
|
+
At Agno, we optimize performance across 3 dimensions:
|
|
539
|
+
|
|
540
|
+
1. **Agent performance:** We optimize static operations (instantiation, memory footprint) and runtime operations (tool calls, memory updates, history management).
|
|
541
|
+
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.
|
|
542
|
+
3. **Agent reliability and accuracy:** Monitored through evals, which we’ll explore later.
|
|
543
|
+
|
|
544
|
+
### Agent Performance
|
|
545
|
+
|
|
546
|
+
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):
|
|
436
547
|
|
|
437
|
-
- Agent instantiation
|
|
438
|
-
- Memory footprint
|
|
548
|
+
- **Agent instantiation:** ~3μs on average
|
|
549
|
+
- **Memory footprint:** ~6.6Kib on average
|
|
439
550
|
|
|
440
|
-
|
|
551
|
+
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**.
|
|
441
552
|
|
|
442
|
-
|
|
553
|
+
> [!NOTE]
|
|
554
|
+
> 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.
|
|
443
555
|
|
|
444
|
-
### Instantiation
|
|
556
|
+
### Instantiation Time
|
|
445
557
|
|
|
446
|
-
Let's measure
|
|
558
|
+
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.
|
|
447
559
|
|
|
448
|
-
|
|
560
|
+
> [!NOTE]
|
|
561
|
+
> 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.
|
|
449
562
|
|
|
450
563
|
```shell
|
|
451
564
|
# Setup virtual environment
|
|
452
565
|
./scripts/perf_setup.sh
|
|
453
566
|
source .venvs/perfenv/bin/activate
|
|
454
|
-
# OR Install dependencies manually
|
|
455
|
-
# pip install openai agno langgraph langchain_openai
|
|
456
567
|
|
|
457
568
|
# Agno
|
|
458
|
-
python evals/performance/
|
|
569
|
+
python cookbook/evals/performance/instantiate_agent_with_tool.py
|
|
459
570
|
|
|
460
571
|
# LangGraph
|
|
461
|
-
python evals/performance/
|
|
572
|
+
python cookbook/evals/performance/comparison/langgraph_instantiation.py
|
|
573
|
+
# CrewAI
|
|
574
|
+
python cookbook/evals/performance/comparison/crewai_instantiation.py
|
|
575
|
+
# Pydantic AI
|
|
576
|
+
python cookbook/evals/performance/comparison/pydantic_ai_instantiation.py
|
|
462
577
|
```
|
|
463
578
|
|
|
464
|
-
|
|
579
|
+
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.
|
|
465
580
|
|
|
466
|
-
|
|
581
|
+
https://github.com/user-attachments/assets/54b98576-1859-4880-9f2d-15e1a426719d
|
|
467
582
|
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
https://github.com/user-attachments/assets/ba466d45-75dd-45ac-917b-0a56c5742e23
|
|
471
|
-
|
|
472
|
-
### Memory usage
|
|
583
|
+
### Memory Usage
|
|
473
584
|
|
|
474
585
|
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.
|
|
475
586
|
|
|
476
587
|
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.
|
|
477
588
|
|
|
478
|
-
###
|
|
589
|
+
### Results
|
|
590
|
+
|
|
591
|
+
Taking Agno as the baseline, we can see that:
|
|
592
|
+
|
|
593
|
+
| Metric | Agno | Langgraph | PydanticAI | CrewAI |
|
|
594
|
+
| ------------------ | ---- | ----------- | ---------- | ---------- |
|
|
595
|
+
| **Time (seconds)** | 1× | 529× slower | 57× slower | 70× slower |
|
|
596
|
+
| **Memory (MiB)** | 1× | 24× higher | 4× higher | 10× higher |
|
|
597
|
+
|
|
598
|
+
Exact numbers from the benchmark:
|
|
479
599
|
|
|
480
|
-
|
|
600
|
+
| Metric | Agno | Langgraph | PydanticAI | CrewAI |
|
|
601
|
+
| ------------------ | -------- | --------- | ---------- | -------- |
|
|
602
|
+
| **Time (seconds)** | 0.000003 | 0.001587 | 0.000170 | 0.000210 |
|
|
603
|
+
| **Memory (MiB)** | 0.006642 | 0.161435 | 0.028712 | 0.065652 |
|
|
481
604
|
|
|
482
|
-
|
|
605
|
+
> [!NOTE]
|
|
606
|
+
> 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.
|
|
483
607
|
|
|
484
608
|
## Contributions
|
|
485
609
|
|