agno 1.8.1__py3-none-any.whl → 2.0.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.
Files changed (590) hide show
  1. agno/__init__.py +8 -0
  2. agno/agent/__init__.py +19 -27
  3. agno/agent/agent.py +3143 -4170
  4. agno/api/agent.py +11 -67
  5. agno/api/api.py +5 -46
  6. agno/api/evals.py +8 -19
  7. agno/api/os.py +17 -0
  8. agno/api/routes.py +6 -41
  9. agno/api/schemas/__init__.py +9 -0
  10. agno/api/schemas/agent.py +5 -21
  11. agno/api/schemas/evals.py +7 -16
  12. agno/api/schemas/os.py +14 -0
  13. agno/api/schemas/team.py +5 -21
  14. agno/api/schemas/utils.py +21 -0
  15. agno/api/schemas/workflows.py +11 -7
  16. agno/api/settings.py +53 -0
  17. agno/api/team.py +11 -66
  18. agno/api/workflow.py +28 -0
  19. agno/cloud/aws/base.py +214 -0
  20. agno/cloud/aws/s3/__init__.py +2 -0
  21. agno/cloud/aws/s3/api_client.py +43 -0
  22. agno/cloud/aws/s3/bucket.py +195 -0
  23. agno/cloud/aws/s3/object.py +57 -0
  24. agno/db/__init__.py +24 -0
  25. agno/db/base.py +245 -0
  26. agno/db/dynamo/__init__.py +3 -0
  27. agno/db/dynamo/dynamo.py +1743 -0
  28. agno/db/dynamo/schemas.py +278 -0
  29. agno/db/dynamo/utils.py +684 -0
  30. agno/db/firestore/__init__.py +3 -0
  31. agno/db/firestore/firestore.py +1432 -0
  32. agno/db/firestore/schemas.py +130 -0
  33. agno/db/firestore/utils.py +278 -0
  34. agno/db/gcs_json/__init__.py +3 -0
  35. agno/db/gcs_json/gcs_json_db.py +1001 -0
  36. agno/db/gcs_json/utils.py +194 -0
  37. agno/db/in_memory/__init__.py +3 -0
  38. agno/db/in_memory/in_memory_db.py +882 -0
  39. agno/db/in_memory/utils.py +172 -0
  40. agno/db/json/__init__.py +3 -0
  41. agno/db/json/json_db.py +1045 -0
  42. agno/db/json/utils.py +196 -0
  43. agno/db/migrations/v1_to_v2.py +162 -0
  44. agno/db/mongo/__init__.py +3 -0
  45. agno/db/mongo/mongo.py +1416 -0
  46. agno/db/mongo/schemas.py +77 -0
  47. agno/db/mongo/utils.py +204 -0
  48. agno/db/mysql/__init__.py +3 -0
  49. agno/db/mysql/mysql.py +1719 -0
  50. agno/db/mysql/schemas.py +124 -0
  51. agno/db/mysql/utils.py +297 -0
  52. agno/db/postgres/__init__.py +3 -0
  53. agno/db/postgres/postgres.py +1710 -0
  54. agno/db/postgres/schemas.py +124 -0
  55. agno/db/postgres/utils.py +280 -0
  56. agno/db/redis/__init__.py +3 -0
  57. agno/db/redis/redis.py +1367 -0
  58. agno/db/redis/schemas.py +109 -0
  59. agno/db/redis/utils.py +288 -0
  60. agno/db/schemas/__init__.py +3 -0
  61. agno/db/schemas/evals.py +33 -0
  62. agno/db/schemas/knowledge.py +40 -0
  63. agno/db/schemas/memory.py +46 -0
  64. agno/db/singlestore/__init__.py +3 -0
  65. agno/db/singlestore/schemas.py +116 -0
  66. agno/db/singlestore/singlestore.py +1712 -0
  67. agno/db/singlestore/utils.py +326 -0
  68. agno/db/sqlite/__init__.py +3 -0
  69. agno/db/sqlite/schemas.py +119 -0
  70. agno/db/sqlite/sqlite.py +1676 -0
  71. agno/db/sqlite/utils.py +268 -0
  72. agno/db/utils.py +88 -0
  73. agno/eval/__init__.py +14 -0
  74. agno/eval/accuracy.py +154 -48
  75. agno/eval/performance.py +88 -23
  76. agno/eval/reliability.py +73 -20
  77. agno/eval/utils.py +23 -13
  78. agno/integrations/discord/__init__.py +3 -0
  79. agno/{app → integrations}/discord/client.py +15 -11
  80. agno/knowledge/__init__.py +2 -2
  81. agno/{document → knowledge}/chunking/agentic.py +2 -2
  82. agno/{document → knowledge}/chunking/document.py +2 -2
  83. agno/{document → knowledge}/chunking/fixed.py +3 -3
  84. agno/{document → knowledge}/chunking/markdown.py +2 -2
  85. agno/{document → knowledge}/chunking/recursive.py +2 -2
  86. agno/{document → knowledge}/chunking/row.py +2 -2
  87. agno/knowledge/chunking/semantic.py +59 -0
  88. agno/knowledge/chunking/strategy.py +121 -0
  89. agno/knowledge/content.py +74 -0
  90. agno/knowledge/document/__init__.py +5 -0
  91. agno/{document → knowledge/document}/base.py +12 -2
  92. agno/knowledge/embedder/__init__.py +5 -0
  93. agno/{embedder → knowledge/embedder}/aws_bedrock.py +127 -1
  94. agno/{embedder → knowledge/embedder}/azure_openai.py +65 -1
  95. agno/{embedder → knowledge/embedder}/base.py +6 -0
  96. agno/{embedder → knowledge/embedder}/cohere.py +72 -1
  97. agno/{embedder → knowledge/embedder}/fastembed.py +17 -1
  98. agno/{embedder → knowledge/embedder}/fireworks.py +1 -1
  99. agno/{embedder → knowledge/embedder}/google.py +74 -1
  100. agno/{embedder → knowledge/embedder}/huggingface.py +36 -2
  101. agno/{embedder → knowledge/embedder}/jina.py +48 -2
  102. agno/knowledge/embedder/langdb.py +22 -0
  103. agno/knowledge/embedder/mistral.py +139 -0
  104. agno/{embedder → knowledge/embedder}/nebius.py +1 -1
  105. agno/{embedder → knowledge/embedder}/ollama.py +54 -3
  106. agno/knowledge/embedder/openai.py +223 -0
  107. agno/{embedder → knowledge/embedder}/sentence_transformer.py +16 -1
  108. agno/{embedder → knowledge/embedder}/together.py +1 -1
  109. agno/{embedder → knowledge/embedder}/voyageai.py +49 -1
  110. agno/knowledge/knowledge.py +1551 -0
  111. agno/knowledge/reader/__init__.py +7 -0
  112. agno/{document → knowledge}/reader/arxiv_reader.py +32 -4
  113. agno/knowledge/reader/base.py +88 -0
  114. agno/{document → knowledge}/reader/csv_reader.py +47 -65
  115. agno/knowledge/reader/docx_reader.py +83 -0
  116. agno/{document → knowledge}/reader/firecrawl_reader.py +42 -21
  117. agno/{document → knowledge}/reader/json_reader.py +30 -9
  118. agno/{document → knowledge}/reader/markdown_reader.py +58 -9
  119. agno/{document → knowledge}/reader/pdf_reader.py +71 -126
  120. agno/knowledge/reader/reader_factory.py +268 -0
  121. agno/knowledge/reader/s3_reader.py +101 -0
  122. agno/{document → knowledge}/reader/text_reader.py +31 -10
  123. agno/knowledge/reader/url_reader.py +128 -0
  124. agno/knowledge/reader/web_search_reader.py +366 -0
  125. agno/{document → knowledge}/reader/website_reader.py +37 -10
  126. agno/knowledge/reader/wikipedia_reader.py +59 -0
  127. agno/knowledge/reader/youtube_reader.py +78 -0
  128. agno/knowledge/remote_content/remote_content.py +88 -0
  129. agno/{reranker → knowledge/reranker}/base.py +1 -1
  130. agno/{reranker → knowledge/reranker}/cohere.py +2 -2
  131. agno/{reranker → knowledge/reranker}/infinity.py +2 -2
  132. agno/{reranker → knowledge/reranker}/sentence_transformer.py +2 -2
  133. agno/knowledge/types.py +30 -0
  134. agno/knowledge/utils.py +169 -0
  135. agno/media.py +269 -268
  136. agno/memory/__init__.py +2 -10
  137. agno/memory/manager.py +1003 -148
  138. agno/models/aimlapi/__init__.py +2 -2
  139. agno/models/aimlapi/aimlapi.py +6 -6
  140. agno/models/anthropic/claude.py +131 -131
  141. agno/models/aws/bedrock.py +110 -182
  142. agno/models/aws/claude.py +64 -18
  143. agno/models/azure/ai_foundry.py +73 -23
  144. agno/models/base.py +346 -290
  145. agno/models/cerebras/cerebras.py +84 -27
  146. agno/models/cohere/chat.py +106 -98
  147. agno/models/google/gemini.py +105 -46
  148. agno/models/groq/groq.py +97 -35
  149. agno/models/huggingface/huggingface.py +92 -27
  150. agno/models/ibm/watsonx.py +72 -13
  151. agno/models/litellm/chat.py +85 -13
  152. agno/models/message.py +46 -151
  153. agno/models/meta/llama.py +85 -49
  154. agno/models/metrics.py +120 -0
  155. agno/models/mistral/mistral.py +90 -21
  156. agno/models/ollama/__init__.py +0 -2
  157. agno/models/ollama/chat.py +85 -47
  158. agno/models/openai/chat.py +154 -37
  159. agno/models/openai/responses.py +178 -105
  160. agno/models/perplexity/perplexity.py +26 -2
  161. agno/models/portkey/portkey.py +0 -7
  162. agno/models/response.py +15 -9
  163. agno/models/utils.py +20 -0
  164. agno/models/vercel/__init__.py +2 -2
  165. agno/models/vercel/v0.py +1 -1
  166. agno/models/vllm/__init__.py +2 -2
  167. agno/models/vllm/vllm.py +3 -3
  168. agno/models/xai/xai.py +10 -10
  169. agno/os/__init__.py +3 -0
  170. agno/os/app.py +497 -0
  171. agno/os/auth.py +47 -0
  172. agno/os/config.py +103 -0
  173. agno/os/interfaces/agui/__init__.py +3 -0
  174. agno/os/interfaces/agui/agui.py +31 -0
  175. agno/{app/agui/async_router.py → os/interfaces/agui/router.py} +16 -16
  176. agno/{app → os/interfaces}/agui/utils.py +77 -33
  177. agno/os/interfaces/base.py +21 -0
  178. agno/os/interfaces/slack/__init__.py +3 -0
  179. agno/{app/slack/async_router.py → os/interfaces/slack/router.py} +3 -5
  180. agno/os/interfaces/slack/slack.py +32 -0
  181. agno/os/interfaces/whatsapp/__init__.py +3 -0
  182. agno/{app/whatsapp/async_router.py → os/interfaces/whatsapp/router.py} +4 -7
  183. agno/os/interfaces/whatsapp/whatsapp.py +29 -0
  184. agno/os/mcp.py +235 -0
  185. agno/os/router.py +1400 -0
  186. agno/os/routers/__init__.py +3 -0
  187. agno/os/routers/evals/__init__.py +3 -0
  188. agno/os/routers/evals/evals.py +393 -0
  189. agno/os/routers/evals/schemas.py +142 -0
  190. agno/os/routers/evals/utils.py +161 -0
  191. agno/os/routers/knowledge/__init__.py +3 -0
  192. agno/os/routers/knowledge/knowledge.py +850 -0
  193. agno/os/routers/knowledge/schemas.py +118 -0
  194. agno/os/routers/memory/__init__.py +3 -0
  195. agno/os/routers/memory/memory.py +410 -0
  196. agno/os/routers/memory/schemas.py +58 -0
  197. agno/os/routers/metrics/__init__.py +3 -0
  198. agno/os/routers/metrics/metrics.py +178 -0
  199. agno/os/routers/metrics/schemas.py +47 -0
  200. agno/os/routers/session/__init__.py +3 -0
  201. agno/os/routers/session/session.py +536 -0
  202. agno/os/schema.py +945 -0
  203. agno/{app/playground → os}/settings.py +7 -15
  204. agno/os/utils.py +270 -0
  205. agno/reasoning/azure_ai_foundry.py +4 -4
  206. agno/reasoning/deepseek.py +4 -4
  207. agno/reasoning/default.py +6 -11
  208. agno/reasoning/groq.py +4 -4
  209. agno/reasoning/helpers.py +4 -6
  210. agno/reasoning/ollama.py +4 -4
  211. agno/reasoning/openai.py +4 -4
  212. agno/run/agent.py +633 -0
  213. agno/run/base.py +53 -77
  214. agno/run/cancel.py +81 -0
  215. agno/run/team.py +243 -96
  216. agno/run/workflow.py +550 -12
  217. agno/session/__init__.py +10 -0
  218. agno/session/agent.py +244 -0
  219. agno/session/summary.py +225 -0
  220. agno/session/team.py +262 -0
  221. agno/{storage/session/v2 → session}/workflow.py +47 -24
  222. agno/team/__init__.py +15 -16
  223. agno/team/team.py +3260 -4824
  224. agno/tools/agentql.py +14 -5
  225. agno/tools/airflow.py +9 -4
  226. agno/tools/api.py +7 -3
  227. agno/tools/apify.py +2 -46
  228. agno/tools/arxiv.py +8 -3
  229. agno/tools/aws_lambda.py +7 -5
  230. agno/tools/aws_ses.py +7 -1
  231. agno/tools/baidusearch.py +4 -1
  232. agno/tools/bitbucket.py +4 -4
  233. agno/tools/brandfetch.py +14 -11
  234. agno/tools/bravesearch.py +4 -1
  235. agno/tools/brightdata.py +43 -23
  236. agno/tools/browserbase.py +13 -4
  237. agno/tools/calcom.py +12 -10
  238. agno/tools/calculator.py +10 -27
  239. agno/tools/cartesia.py +20 -17
  240. agno/tools/{clickup_tool.py → clickup.py} +12 -25
  241. agno/tools/confluence.py +8 -8
  242. agno/tools/crawl4ai.py +7 -1
  243. agno/tools/csv_toolkit.py +9 -8
  244. agno/tools/dalle.py +22 -12
  245. agno/tools/daytona.py +13 -16
  246. agno/tools/decorator.py +6 -3
  247. agno/tools/desi_vocal.py +17 -8
  248. agno/tools/discord.py +11 -8
  249. agno/tools/docker.py +30 -42
  250. agno/tools/duckdb.py +34 -53
  251. agno/tools/duckduckgo.py +8 -7
  252. agno/tools/e2b.py +62 -62
  253. agno/tools/eleven_labs.py +36 -29
  254. agno/tools/email.py +4 -1
  255. agno/tools/evm.py +7 -1
  256. agno/tools/exa.py +19 -14
  257. agno/tools/fal.py +30 -30
  258. agno/tools/file.py +9 -8
  259. agno/tools/financial_datasets.py +25 -44
  260. agno/tools/firecrawl.py +22 -22
  261. agno/tools/function.py +127 -18
  262. agno/tools/giphy.py +23 -11
  263. agno/tools/github.py +48 -126
  264. agno/tools/gmail.py +45 -61
  265. agno/tools/google_bigquery.py +7 -6
  266. agno/tools/google_maps.py +11 -26
  267. agno/tools/googlesearch.py +7 -2
  268. agno/tools/googlesheets.py +21 -17
  269. agno/tools/hackernews.py +9 -5
  270. agno/tools/jina.py +5 -4
  271. agno/tools/jira.py +18 -9
  272. agno/tools/knowledge.py +31 -32
  273. agno/tools/linear.py +19 -34
  274. agno/tools/linkup.py +5 -1
  275. agno/tools/local_file_system.py +8 -5
  276. agno/tools/lumalab.py +32 -20
  277. agno/tools/mcp.py +1 -2
  278. agno/tools/mem0.py +18 -12
  279. agno/tools/memori.py +14 -10
  280. agno/tools/mlx_transcribe.py +3 -2
  281. agno/tools/models/azure_openai.py +33 -15
  282. agno/tools/models/gemini.py +59 -32
  283. agno/tools/models/groq.py +30 -23
  284. agno/tools/models/nebius.py +28 -12
  285. agno/tools/models_labs.py +40 -16
  286. agno/tools/moviepy_video.py +7 -6
  287. agno/tools/neo4j.py +10 -8
  288. agno/tools/newspaper.py +7 -2
  289. agno/tools/newspaper4k.py +8 -3
  290. agno/tools/openai.py +58 -32
  291. agno/tools/openbb.py +12 -11
  292. agno/tools/opencv.py +63 -47
  293. agno/tools/openweather.py +14 -12
  294. agno/tools/pandas.py +11 -3
  295. agno/tools/postgres.py +4 -12
  296. agno/tools/pubmed.py +4 -1
  297. agno/tools/python.py +9 -22
  298. agno/tools/reasoning.py +35 -27
  299. agno/tools/reddit.py +11 -26
  300. agno/tools/replicate.py +55 -42
  301. agno/tools/resend.py +4 -1
  302. agno/tools/scrapegraph.py +15 -14
  303. agno/tools/searxng.py +10 -23
  304. agno/tools/serpapi.py +6 -3
  305. agno/tools/serper.py +13 -4
  306. agno/tools/shell.py +9 -2
  307. agno/tools/slack.py +12 -11
  308. agno/tools/sleep.py +3 -2
  309. agno/tools/spider.py +24 -4
  310. agno/tools/sql.py +7 -6
  311. agno/tools/tavily.py +6 -4
  312. agno/tools/telegram.py +12 -4
  313. agno/tools/todoist.py +11 -31
  314. agno/tools/toolkit.py +1 -1
  315. agno/tools/trafilatura.py +22 -6
  316. agno/tools/trello.py +9 -22
  317. agno/tools/twilio.py +10 -3
  318. agno/tools/user_control_flow.py +6 -1
  319. agno/tools/valyu.py +34 -5
  320. agno/tools/visualization.py +19 -28
  321. agno/tools/webbrowser.py +4 -3
  322. agno/tools/webex.py +11 -7
  323. agno/tools/website.py +15 -46
  324. agno/tools/webtools.py +12 -4
  325. agno/tools/whatsapp.py +5 -9
  326. agno/tools/wikipedia.py +20 -13
  327. agno/tools/x.py +14 -13
  328. agno/tools/yfinance.py +13 -40
  329. agno/tools/youtube.py +26 -20
  330. agno/tools/zendesk.py +7 -2
  331. agno/tools/zep.py +10 -7
  332. agno/tools/zoom.py +10 -9
  333. agno/utils/common.py +1 -19
  334. agno/utils/events.py +100 -123
  335. agno/utils/gemini.py +32 -2
  336. agno/utils/knowledge.py +29 -0
  337. agno/utils/log.py +54 -4
  338. agno/utils/mcp.py +68 -10
  339. agno/utils/media.py +39 -0
  340. agno/utils/message.py +12 -1
  341. agno/utils/models/aws_claude.py +1 -1
  342. agno/utils/models/claude.py +47 -4
  343. agno/utils/models/cohere.py +1 -1
  344. agno/utils/models/mistral.py +8 -7
  345. agno/utils/models/schema_utils.py +3 -3
  346. agno/utils/models/watsonx.py +1 -1
  347. agno/utils/openai.py +1 -1
  348. agno/utils/pprint.py +33 -32
  349. agno/utils/print_response/agent.py +779 -0
  350. agno/utils/print_response/team.py +1669 -0
  351. agno/utils/print_response/workflow.py +1451 -0
  352. agno/utils/prompts.py +14 -14
  353. agno/utils/reasoning.py +87 -0
  354. agno/utils/response.py +42 -42
  355. agno/utils/streamlit.py +481 -0
  356. agno/utils/string.py +8 -22
  357. agno/utils/team.py +50 -0
  358. agno/utils/timer.py +2 -2
  359. agno/vectordb/base.py +33 -21
  360. agno/vectordb/cassandra/cassandra.py +287 -23
  361. agno/vectordb/chroma/chromadb.py +482 -59
  362. agno/vectordb/clickhouse/clickhousedb.py +270 -63
  363. agno/vectordb/couchbase/couchbase.py +309 -29
  364. agno/vectordb/lancedb/lance_db.py +360 -21
  365. agno/vectordb/langchaindb/__init__.py +5 -0
  366. agno/vectordb/langchaindb/langchaindb.py +145 -0
  367. agno/vectordb/lightrag/__init__.py +5 -0
  368. agno/vectordb/lightrag/lightrag.py +374 -0
  369. agno/vectordb/llamaindex/llamaindexdb.py +127 -0
  370. agno/vectordb/milvus/milvus.py +242 -32
  371. agno/vectordb/mongodb/mongodb.py +200 -24
  372. agno/vectordb/pgvector/pgvector.py +319 -37
  373. agno/vectordb/pineconedb/pineconedb.py +221 -27
  374. agno/vectordb/qdrant/qdrant.py +334 -14
  375. agno/vectordb/singlestore/singlestore.py +286 -29
  376. agno/vectordb/surrealdb/surrealdb.py +187 -7
  377. agno/vectordb/upstashdb/upstashdb.py +342 -26
  378. agno/vectordb/weaviate/weaviate.py +227 -165
  379. agno/workflow/__init__.py +17 -13
  380. agno/workflow/{v2/condition.py → condition.py} +135 -32
  381. agno/workflow/{v2/loop.py → loop.py} +115 -28
  382. agno/workflow/{v2/parallel.py → parallel.py} +138 -108
  383. agno/workflow/{v2/router.py → router.py} +133 -32
  384. agno/workflow/{v2/step.py → step.py} +207 -49
  385. agno/workflow/{v2/steps.py → steps.py} +147 -66
  386. agno/workflow/types.py +482 -0
  387. agno/workflow/workflow.py +2410 -696
  388. agno-2.0.0.dist-info/METADATA +494 -0
  389. agno-2.0.0.dist-info/RECORD +515 -0
  390. agno-2.0.0.dist-info/licenses/LICENSE +201 -0
  391. agno/agent/metrics.py +0 -107
  392. agno/api/app.py +0 -35
  393. agno/api/playground.py +0 -92
  394. agno/api/schemas/app.py +0 -12
  395. agno/api/schemas/playground.py +0 -22
  396. agno/api/schemas/user.py +0 -35
  397. agno/api/schemas/workspace.py +0 -46
  398. agno/api/user.py +0 -160
  399. agno/api/workflows.py +0 -33
  400. agno/api/workspace.py +0 -175
  401. agno/app/agui/__init__.py +0 -3
  402. agno/app/agui/app.py +0 -17
  403. agno/app/agui/sync_router.py +0 -120
  404. agno/app/base.py +0 -186
  405. agno/app/discord/__init__.py +0 -3
  406. agno/app/fastapi/__init__.py +0 -3
  407. agno/app/fastapi/app.py +0 -107
  408. agno/app/fastapi/async_router.py +0 -457
  409. agno/app/fastapi/sync_router.py +0 -448
  410. agno/app/playground/app.py +0 -228
  411. agno/app/playground/async_router.py +0 -1050
  412. agno/app/playground/deploy.py +0 -249
  413. agno/app/playground/operator.py +0 -183
  414. agno/app/playground/schemas.py +0 -220
  415. agno/app/playground/serve.py +0 -55
  416. agno/app/playground/sync_router.py +0 -1042
  417. agno/app/playground/utils.py +0 -46
  418. agno/app/settings.py +0 -15
  419. agno/app/slack/__init__.py +0 -3
  420. agno/app/slack/app.py +0 -19
  421. agno/app/slack/sync_router.py +0 -92
  422. agno/app/utils.py +0 -54
  423. agno/app/whatsapp/__init__.py +0 -3
  424. agno/app/whatsapp/app.py +0 -15
  425. agno/app/whatsapp/sync_router.py +0 -197
  426. agno/cli/auth_server.py +0 -249
  427. agno/cli/config.py +0 -274
  428. agno/cli/console.py +0 -88
  429. agno/cli/credentials.py +0 -23
  430. agno/cli/entrypoint.py +0 -571
  431. agno/cli/operator.py +0 -357
  432. agno/cli/settings.py +0 -96
  433. agno/cli/ws/ws_cli.py +0 -817
  434. agno/constants.py +0 -13
  435. agno/document/__init__.py +0 -5
  436. agno/document/chunking/semantic.py +0 -45
  437. agno/document/chunking/strategy.py +0 -31
  438. agno/document/reader/__init__.py +0 -5
  439. agno/document/reader/base.py +0 -47
  440. agno/document/reader/docx_reader.py +0 -60
  441. agno/document/reader/gcs/pdf_reader.py +0 -44
  442. agno/document/reader/s3/pdf_reader.py +0 -59
  443. agno/document/reader/s3/text_reader.py +0 -63
  444. agno/document/reader/url_reader.py +0 -59
  445. agno/document/reader/youtube_reader.py +0 -58
  446. agno/embedder/__init__.py +0 -5
  447. agno/embedder/langdb.py +0 -80
  448. agno/embedder/mistral.py +0 -82
  449. agno/embedder/openai.py +0 -78
  450. agno/file/__init__.py +0 -5
  451. agno/file/file.py +0 -16
  452. agno/file/local/csv.py +0 -32
  453. agno/file/local/txt.py +0 -19
  454. agno/infra/app.py +0 -240
  455. agno/infra/base.py +0 -144
  456. agno/infra/context.py +0 -20
  457. agno/infra/db_app.py +0 -52
  458. agno/infra/resource.py +0 -205
  459. agno/infra/resources.py +0 -55
  460. agno/knowledge/agent.py +0 -702
  461. agno/knowledge/arxiv.py +0 -33
  462. agno/knowledge/combined.py +0 -36
  463. agno/knowledge/csv.py +0 -144
  464. agno/knowledge/csv_url.py +0 -124
  465. agno/knowledge/document.py +0 -223
  466. agno/knowledge/docx.py +0 -137
  467. agno/knowledge/firecrawl.py +0 -34
  468. agno/knowledge/gcs/__init__.py +0 -0
  469. agno/knowledge/gcs/base.py +0 -39
  470. agno/knowledge/gcs/pdf.py +0 -125
  471. agno/knowledge/json.py +0 -137
  472. agno/knowledge/langchain.py +0 -71
  473. agno/knowledge/light_rag.py +0 -273
  474. agno/knowledge/llamaindex.py +0 -66
  475. agno/knowledge/markdown.py +0 -154
  476. agno/knowledge/pdf.py +0 -164
  477. agno/knowledge/pdf_bytes.py +0 -42
  478. agno/knowledge/pdf_url.py +0 -148
  479. agno/knowledge/s3/__init__.py +0 -0
  480. agno/knowledge/s3/base.py +0 -64
  481. agno/knowledge/s3/pdf.py +0 -33
  482. agno/knowledge/s3/text.py +0 -34
  483. agno/knowledge/text.py +0 -141
  484. agno/knowledge/url.py +0 -46
  485. agno/knowledge/website.py +0 -179
  486. agno/knowledge/wikipedia.py +0 -32
  487. agno/knowledge/youtube.py +0 -35
  488. agno/memory/agent.py +0 -423
  489. agno/memory/classifier.py +0 -104
  490. agno/memory/db/__init__.py +0 -5
  491. agno/memory/db/base.py +0 -42
  492. agno/memory/db/mongodb.py +0 -189
  493. agno/memory/db/postgres.py +0 -203
  494. agno/memory/db/sqlite.py +0 -193
  495. agno/memory/memory.py +0 -22
  496. agno/memory/row.py +0 -36
  497. agno/memory/summarizer.py +0 -201
  498. agno/memory/summary.py +0 -19
  499. agno/memory/team.py +0 -415
  500. agno/memory/v2/__init__.py +0 -2
  501. agno/memory/v2/db/__init__.py +0 -1
  502. agno/memory/v2/db/base.py +0 -42
  503. agno/memory/v2/db/firestore.py +0 -339
  504. agno/memory/v2/db/mongodb.py +0 -196
  505. agno/memory/v2/db/postgres.py +0 -214
  506. agno/memory/v2/db/redis.py +0 -187
  507. agno/memory/v2/db/schema.py +0 -54
  508. agno/memory/v2/db/sqlite.py +0 -209
  509. agno/memory/v2/manager.py +0 -437
  510. agno/memory/v2/memory.py +0 -1097
  511. agno/memory/v2/schema.py +0 -55
  512. agno/memory/v2/summarizer.py +0 -215
  513. agno/memory/workflow.py +0 -38
  514. agno/models/ollama/tools.py +0 -430
  515. agno/models/qwen/__init__.py +0 -5
  516. agno/playground/__init__.py +0 -10
  517. agno/playground/deploy.py +0 -3
  518. agno/playground/playground.py +0 -3
  519. agno/playground/serve.py +0 -3
  520. agno/playground/settings.py +0 -3
  521. agno/reranker/__init__.py +0 -0
  522. agno/run/response.py +0 -467
  523. agno/run/v2/__init__.py +0 -0
  524. agno/run/v2/workflow.py +0 -567
  525. agno/storage/__init__.py +0 -0
  526. agno/storage/agent/__init__.py +0 -0
  527. agno/storage/agent/dynamodb.py +0 -1
  528. agno/storage/agent/json.py +0 -1
  529. agno/storage/agent/mongodb.py +0 -1
  530. agno/storage/agent/postgres.py +0 -1
  531. agno/storage/agent/singlestore.py +0 -1
  532. agno/storage/agent/sqlite.py +0 -1
  533. agno/storage/agent/yaml.py +0 -1
  534. agno/storage/base.py +0 -60
  535. agno/storage/dynamodb.py +0 -673
  536. agno/storage/firestore.py +0 -297
  537. agno/storage/gcs_json.py +0 -261
  538. agno/storage/in_memory.py +0 -234
  539. agno/storage/json.py +0 -237
  540. agno/storage/mongodb.py +0 -328
  541. agno/storage/mysql.py +0 -685
  542. agno/storage/postgres.py +0 -682
  543. agno/storage/redis.py +0 -336
  544. agno/storage/session/__init__.py +0 -16
  545. agno/storage/session/agent.py +0 -64
  546. agno/storage/session/team.py +0 -63
  547. agno/storage/session/v2/__init__.py +0 -5
  548. agno/storage/session/workflow.py +0 -61
  549. agno/storage/singlestore.py +0 -606
  550. agno/storage/sqlite.py +0 -646
  551. agno/storage/workflow/__init__.py +0 -0
  552. agno/storage/workflow/mongodb.py +0 -1
  553. agno/storage/workflow/postgres.py +0 -1
  554. agno/storage/workflow/sqlite.py +0 -1
  555. agno/storage/yaml.py +0 -241
  556. agno/tools/thinking.py +0 -73
  557. agno/utils/defaults.py +0 -57
  558. agno/utils/filesystem.py +0 -39
  559. agno/utils/git.py +0 -52
  560. agno/utils/json_io.py +0 -30
  561. agno/utils/load_env.py +0 -19
  562. agno/utils/py_io.py +0 -19
  563. agno/utils/pyproject.py +0 -18
  564. agno/utils/resource_filter.py +0 -31
  565. agno/workflow/v2/__init__.py +0 -21
  566. agno/workflow/v2/types.py +0 -357
  567. agno/workflow/v2/workflow.py +0 -3312
  568. agno/workspace/__init__.py +0 -0
  569. agno/workspace/config.py +0 -325
  570. agno/workspace/enums.py +0 -6
  571. agno/workspace/helpers.py +0 -52
  572. agno/workspace/operator.py +0 -757
  573. agno/workspace/settings.py +0 -158
  574. agno-1.8.1.dist-info/METADATA +0 -982
  575. agno-1.8.1.dist-info/RECORD +0 -566
  576. agno-1.8.1.dist-info/entry_points.txt +0 -3
  577. agno-1.8.1.dist-info/licenses/LICENSE +0 -375
  578. /agno/{app → db/migrations}/__init__.py +0 -0
  579. /agno/{app/playground/__init__.py → db/schemas/metrics.py} +0 -0
  580. /agno/{cli → integrations}/__init__.py +0 -0
  581. /agno/{cli/ws → knowledge/chunking}/__init__.py +0 -0
  582. /agno/{document/chunking → knowledge/remote_content}/__init__.py +0 -0
  583. /agno/{document/reader/gcs → knowledge/reranker}/__init__.py +0 -0
  584. /agno/{document/reader/s3 → os/interfaces}/__init__.py +0 -0
  585. /agno/{app → os/interfaces}/slack/security.py +0 -0
  586. /agno/{app → os/interfaces}/whatsapp/security.py +0 -0
  587. /agno/{file/local → utils/print_response}/__init__.py +0 -0
  588. /agno/{infra → vectordb/llamaindex}/__init__.py +0 -0
  589. {agno-1.8.1.dist-info → agno-2.0.0.dist-info}/WHEEL +0 -0
  590. {agno-1.8.1.dist-info → agno-2.0.0.dist-info}/top_level.txt +0 -0
@@ -1,982 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: agno
3
- Version: 1.8.1
4
- Summary: Agno: a lightweight library for building Multi-Agent Systems
5
- Author-email: Ashpreet Bedi <ashpreet@agno.com>
6
- License: Copyright (c) Agno, Inc.
7
-
8
- Mozilla Public License Version 2.0
9
- ==================================
10
-
11
- 1. Definitions
12
- --------------
13
-
14
- 1.1. "Contributor"
15
- means each individual or legal entity that creates, contributes to
16
- the creation of, or owns Covered Software.
17
-
18
- 1.2. "Contributor Version"
19
- means the combination of the Contributions of others (if any) used
20
- by a Contributor and that particular Contributor's Contribution.
21
-
22
- 1.3. "Contribution"
23
- means Covered Software of a particular Contributor.
24
-
25
- 1.4. "Covered Software"
26
- means Source Code Form to which the initial Contributor has attached
27
- the notice in Exhibit A, the Executable Form of such Source Code
28
- Form, and Modifications of such Source Code Form, in each case
29
- including portions thereof.
30
-
31
- 1.5. "Incompatible With Secondary Licenses"
32
- means
33
-
34
- (a) that the initial Contributor has attached the notice described
35
- in Exhibit B to the Covered Software; or
36
-
37
- (b) that the Covered Software was made available under the terms of
38
- version 1.1 or earlier of the License, but not also under the
39
- terms of a Secondary License.
40
-
41
- 1.6. "Executable Form"
42
- means any form of the work other than Source Code Form.
43
-
44
- 1.7. "Larger Work"
45
- means a work that combines Covered Software with other material, in
46
- a separate file or files, that is not Covered Software.
47
-
48
- 1.8. "License"
49
- means this document.
50
-
51
- 1.9. "Licensable"
52
- means having the right to grant, to the maximum extent possible,
53
- whether at the time of the initial grant or subsequently, any and
54
- all of the rights conveyed by this License.
55
-
56
- 1.10. "Modifications"
57
- means any of the following:
58
-
59
- (a) any file in Source Code Form that results from an addition to,
60
- deletion from, or modification of the contents of Covered
61
- Software; or
62
-
63
- (b) any new file in Source Code Form that contains any Covered
64
- Software.
65
-
66
- 1.11. "Patent Claims" of a Contributor
67
- means any patent claim(s), including without limitation, method,
68
- process, and apparatus claims, in any patent Licensable by such
69
- Contributor that would be infringed, but for the grant of the
70
- License, by the making, using, selling, offering for sale, having
71
- made, import, or transfer of either its Contributions or its
72
- Contributor Version.
73
-
74
- 1.12. "Secondary License"
75
- means either the GNU General Public License, Version 2.0, the GNU
76
- Lesser General Public License, Version 2.1, the GNU Affero General
77
- Public License, Version 3.0, or any later versions of those
78
- licenses.
79
-
80
- 1.13. "Source Code Form"
81
- means the form of the work preferred for making modifications.
82
-
83
- 1.14. "You" (or "Your")
84
- means an individual or a legal entity exercising rights under this
85
- License. For legal entities, "You" includes any entity that
86
- controls, is controlled by, or is under common control with You. For
87
- purposes of this definition, "control" means (a) the power, direct
88
- or indirect, to cause the direction or management of such entity,
89
- whether by contract or otherwise, or (b) ownership of more than
90
- fifty percent (50%) of the outstanding shares or beneficial
91
- ownership of such entity.
92
-
93
- 2. License Grants and Conditions
94
- --------------------------------
95
-
96
- 2.1. Grants
97
-
98
- Each Contributor hereby grants You a world-wide, royalty-free,
99
- non-exclusive license:
100
-
101
- (a) under intellectual property rights (other than patent or trademark)
102
- Licensable by such Contributor to use, reproduce, make available,
103
- modify, display, perform, distribute, and otherwise exploit its
104
- Contributions, either on an unmodified basis, with Modifications, or
105
- as part of a Larger Work; and
106
-
107
- (b) under Patent Claims of such Contributor to make, use, sell, offer
108
- for sale, have made, import, and otherwise transfer either its
109
- Contributions or its Contributor Version.
110
-
111
- 2.2. Effective Date
112
-
113
- The licenses granted in Section 2.1 with respect to any Contribution
114
- become effective for each Contribution on the date the Contributor first
115
- distributes such Contribution.
116
-
117
- 2.3. Limitations on Grant Scope
118
-
119
- The licenses granted in this Section 2 are the only rights granted under
120
- this License. No additional rights or licenses will be implied from the
121
- distribution or licensing of Covered Software under this License.
122
- Notwithstanding Section 2.1(b) above, no patent license is granted by a
123
- Contributor:
124
-
125
- (a) for any code that a Contributor has removed from Covered Software;
126
- or
127
-
128
- (b) for infringements caused by: (i) Your and any other third party's
129
- modifications of Covered Software, or (ii) the combination of its
130
- Contributions with other software (except as part of its Contributor
131
- Version); or
132
-
133
- (c) under Patent Claims infringed by Covered Software in the absence of
134
- its Contributions.
135
-
136
- This License does not grant any rights in the trademarks, service marks,
137
- or logos of any Contributor (except as may be necessary to comply with
138
- the notice requirements in Section 3.4).
139
-
140
- 2.4. Subsequent Licenses
141
-
142
- No Contributor makes additional grants as a result of Your choice to
143
- distribute the Covered Software under a subsequent version of this
144
- License (see Section 10.2) or under the terms of a Secondary License (if
145
- permitted under the terms of Section 3.3).
146
-
147
- 2.5. Representation
148
-
149
- Each Contributor represents that the Contributor believes its
150
- Contributions are its original creation(s) or it has sufficient rights
151
- to grant the rights to its Contributions conveyed by this License.
152
-
153
- 2.6. Fair Use
154
-
155
- This License is not intended to limit any rights You have under
156
- applicable copyright doctrines of fair use, fair dealing, or other
157
- equivalents.
158
-
159
- 2.7. Conditions
160
-
161
- Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
162
- in Section 2.1.
163
-
164
- 3. Responsibilities
165
- -------------------
166
-
167
- 3.1. Distribution of Source Form
168
-
169
- All distribution of Covered Software in Source Code Form, including any
170
- Modifications that You create or to which You contribute, must be under
171
- the terms of this License. You must inform recipients that the Source
172
- Code Form of the Covered Software is governed by the terms of this
173
- License, and how they can obtain a copy of this License. You may not
174
- attempt to alter or restrict the recipients' rights in the Source Code
175
- Form.
176
-
177
- 3.2. Distribution of Executable Form
178
-
179
- If You distribute Covered Software in Executable Form then:
180
-
181
- (a) such Covered Software must also be made available in Source Code
182
- Form, as described in Section 3.1, and You must inform recipients of
183
- the Executable Form how they can obtain a copy of such Source Code
184
- Form by reasonable means in a timely manner, at a charge no more
185
- than the cost of distribution to the recipient; and
186
-
187
- (b) You may distribute such Executable Form under the terms of this
188
- License, or sublicense it under different terms, provided that the
189
- license for the Executable Form does not attempt to limit or alter
190
- the recipients' rights in the Source Code Form under this License.
191
-
192
- 3.3. Distribution of a Larger Work
193
-
194
- You may create and distribute a Larger Work under terms of Your choice,
195
- provided that You also comply with the requirements of this License for
196
- the Covered Software. If the Larger Work is a combination of Covered
197
- Software with a work governed by one or more Secondary Licenses, and the
198
- Covered Software is not Incompatible With Secondary Licenses, this
199
- License permits You to additionally distribute such Covered Software
200
- under the terms of such Secondary License(s), so that the recipient of
201
- the Larger Work may, at their option, further distribute the Covered
202
- Software under the terms of either this License or such Secondary
203
- License(s).
204
-
205
- 3.4. Notices
206
-
207
- You may not remove or alter the substance of any license notices
208
- (including copyright notices, patent notices, disclaimers of warranty,
209
- or limitations of liability) contained within the Source Code Form of
210
- the Covered Software, except that You may alter any license notices to
211
- the extent required to remedy known factual inaccuracies.
212
-
213
- 3.5. Application of Additional Terms
214
-
215
- You may choose to offer, and to charge a fee for, warranty, support,
216
- indemnity or liability obligations to one or more recipients of Covered
217
- Software. However, You may do so only on Your own behalf, and not on
218
- behalf of any Contributor. You must make it absolutely clear that any
219
- such warranty, support, indemnity, or liability obligation is offered by
220
- You alone, and You hereby agree to indemnify every Contributor for any
221
- liability incurred by such Contributor as a result of warranty, support,
222
- indemnity or liability terms You offer. You may include additional
223
- disclaimers of warranty and limitations of liability specific to any
224
- jurisdiction.
225
-
226
- 4. Inability to Comply Due to Statute or Regulation
227
- ---------------------------------------------------
228
-
229
- If it is impossible for You to comply with any of the terms of this
230
- License with respect to some or all of the Covered Software due to
231
- statute, judicial order, or regulation then You must: (a) comply with
232
- the terms of this License to the maximum extent possible; and (b)
233
- describe the limitations and the code they affect. Such description must
234
- be placed in a text file included with all distributions of the Covered
235
- Software under this License. Except to the extent prohibited by statute
236
- or regulation, such description must be sufficiently detailed for a
237
- recipient of ordinary skill to be able to understand it.
238
-
239
- 5. Termination
240
- --------------
241
-
242
- 5.1. The rights granted under this License will terminate automatically
243
- if You fail to comply with any of its terms. However, if You become
244
- compliant, then the rights granted under this License from a particular
245
- Contributor are reinstated (a) provisionally, unless and until such
246
- Contributor explicitly and finally terminates Your grants, and (b) on an
247
- ongoing basis, if such Contributor fails to notify You of the
248
- non-compliance by some reasonable means prior to 60 days after You have
249
- come back into compliance. Moreover, Your grants from a particular
250
- Contributor are reinstated on an ongoing basis if such Contributor
251
- notifies You of the non-compliance by some reasonable means, this is the
252
- first time You have received notice of non-compliance with this License
253
- from such Contributor, and You become compliant prior to 30 days after
254
- Your receipt of the notice.
255
-
256
- 5.2. If You initiate litigation against any entity by asserting a patent
257
- infringement claim (excluding declaratory judgment actions,
258
- counter-claims, and cross-claims) alleging that a Contributor Version
259
- directly or indirectly infringes any patent, then the rights granted to
260
- You by any and all Contributors for the Covered Software under Section
261
- 2.1 of this License shall terminate.
262
-
263
- 5.3. In the event of termination under Sections 5.1 or 5.2 above, all
264
- end user license agreements (excluding distributors and resellers) which
265
- have been validly granted by You or Your distributors under this License
266
- prior to termination shall survive termination.
267
-
268
- ************************************************************************
269
- * *
270
- * 6. Disclaimer of Warranty *
271
- * ------------------------- *
272
- * *
273
- * Covered Software is provided under this License on an "as is" *
274
- * basis, without warranty of any kind, either expressed, implied, or *
275
- * statutory, including, without limitation, warranties that the *
276
- * Covered Software is free of defects, merchantable, fit for a *
277
- * particular purpose or non-infringing. The entire risk as to the *
278
- * quality and performance of the Covered Software is with You. *
279
- * Should any Covered Software prove defective in any respect, You *
280
- * (not any Contributor) assume the cost of any necessary servicing, *
281
- * repair, or correction. This disclaimer of warranty constitutes an *
282
- * essential part of this License. No use of any Covered Software is *
283
- * authorized under this License except under this disclaimer. *
284
- * *
285
- ************************************************************************
286
-
287
- ************************************************************************
288
- * *
289
- * 7. Limitation of Liability *
290
- * -------------------------- *
291
- * *
292
- * Under no circumstances and under no legal theory, whether tort *
293
- * (including negligence), contract, or otherwise, shall any *
294
- * Contributor, or anyone who distributes Covered Software as *
295
- * permitted above, be liable to You for any direct, indirect, *
296
- * special, incidental, or consequential damages of any character *
297
- * including, without limitation, damages for lost profits, loss of *
298
- * goodwill, work stoppage, computer failure or malfunction, or any *
299
- * and all other commercial damages or losses, even if such party *
300
- * shall have been informed of the possibility of such damages. This *
301
- * limitation of liability shall not apply to liability for death or *
302
- * personal injury resulting from such party's negligence to the *
303
- * extent applicable law prohibits such limitation. Some *
304
- * jurisdictions do not allow the exclusion or limitation of *
305
- * incidental or consequential damages, so this exclusion and *
306
- * limitation may not apply to You. *
307
- * *
308
- ************************************************************************
309
-
310
- 8. Litigation
311
- -------------
312
-
313
- Any litigation relating to this License may be brought only in the
314
- courts of a jurisdiction where the defendant maintains its principal
315
- place of business and such litigation shall be governed by laws of that
316
- jurisdiction, without reference to its conflict-of-law provisions.
317
- Nothing in this Section shall prevent a party's ability to bring
318
- cross-claims or counter-claims.
319
-
320
- 9. Miscellaneous
321
- ----------------
322
-
323
- This License represents the complete agreement concerning the subject
324
- matter hereof. If any provision of this License is held to be
325
- unenforceable, such provision shall be reformed only to the extent
326
- necessary to make it enforceable. Any law or regulation which provides
327
- that the language of a contract shall be construed against the drafter
328
- shall not be used to construe this License against a Contributor.
329
-
330
- 10. Versions of the License
331
- ---------------------------
332
-
333
- 10.1. New Versions
334
-
335
- Mozilla Foundation is the license steward. Except as provided in Section
336
- 10.3, no one other than the license steward has the right to modify or
337
- publish new versions of this License. Each version will be given a
338
- distinguishing version number.
339
-
340
- 10.2. Effect of New Versions
341
-
342
- You may distribute the Covered Software under the terms of the version
343
- of the License under which You originally received the Covered Software,
344
- or under the terms of any subsequent version published by the license
345
- steward.
346
-
347
- 10.3. Modified Versions
348
-
349
- If you create software not governed by this License, and you want to
350
- create a new license for such software, you may create and use a
351
- modified version of this License if you rename the license and remove
352
- any references to the name of the license steward (except to note that
353
- such modified license differs from this License).
354
-
355
- 10.4. Distributing Source Code Form that is Incompatible With Secondary
356
- Licenses
357
-
358
- If You choose to distribute Source Code Form that is Incompatible With
359
- Secondary Licenses under the terms of this version of the License, the
360
- notice described in Exhibit B of this License must be attached.
361
-
362
- Exhibit A - Source Code Form License Notice
363
- -------------------------------------------
364
-
365
- This Source Code Form is subject to the terms of the Mozilla Public
366
- License, v. 2.0. If a copy of the MPL was not distributed with this
367
- file, You can obtain one at http://mozilla.org/MPL/2.0/.
368
-
369
- If it is not possible or desirable to put the notice in a particular
370
- file, then You may include the notice in a location (such as a LICENSE
371
- file in a relevant directory) where a recipient would be likely to look
372
- for such a notice.
373
-
374
- You may add additional accurate notices of copyright ownership.
375
-
376
- Exhibit B - "Incompatible With Secondary Licenses" Notice
377
- ---------------------------------------------------------
378
-
379
- This Source Code Form is "Incompatible With Secondary Licenses", as
380
- defined by the Mozilla Public License, v. 2.0.
381
-
382
- Project-URL: homepage, https://agno.com
383
- Project-URL: documentation, https://docs.agno.com
384
- Keywords: agent,reasoning,llm,large-language-model,framework
385
- Classifier: Development Status :: 5 - Production/Stable
386
- Classifier: Intended Audience :: Developers
387
- Classifier: License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)
388
- Classifier: Programming Language :: Python :: 3
389
- Classifier: Programming Language :: Python :: 3.7
390
- Classifier: Programming Language :: Python :: 3.8
391
- Classifier: Programming Language :: Python :: 3.9
392
- Classifier: Programming Language :: Python :: 3.10
393
- Classifier: Programming Language :: Python :: 3.11
394
- Classifier: Programming Language :: Python :: 3.12
395
- Classifier: Operating System :: OS Independent
396
- Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
397
- Requires-Python: <4,>=3.7
398
- Description-Content-Type: text/markdown
399
- License-File: LICENSE
400
- Requires-Dist: docstring-parser
401
- Requires-Dist: gitpython
402
- Requires-Dist: httpx
403
- Requires-Dist: packaging
404
- Requires-Dist: pydantic-settings
405
- Requires-Dist: pydantic
406
- Requires-Dist: python-dotenv
407
- Requires-Dist: python-multipart
408
- Requires-Dist: pyyaml
409
- Requires-Dist: rich
410
- Requires-Dist: tomli
411
- Requires-Dist: typer
412
- Requires-Dist: typing-extensions
413
- Provides-Extra: dev
414
- Requires-Dist: mypy; extra == "dev"
415
- Requires-Dist: pytest; extra == "dev"
416
- Requires-Dist: pytest-asyncio; extra == "dev"
417
- Requires-Dist: pytest-cov; extra == "dev"
418
- Requires-Dist: pytest-mock; extra == "dev"
419
- Requires-Dist: ruff; extra == "dev"
420
- Requires-Dist: timeout-decorator; extra == "dev"
421
- Requires-Dist: types-pyyaml; extra == "dev"
422
- Requires-Dist: types-aiofiles; extra == "dev"
423
- Requires-Dist: fastapi; extra == "dev"
424
- Requires-Dist: uvicorn; extra == "dev"
425
- Provides-Extra: integration-tests
426
- Requires-Dist: exa_py; extra == "integration-tests"
427
- Requires-Dist: ddgs; extra == "integration-tests"
428
- Requires-Dist: yfinance; extra == "integration-tests"
429
- Requires-Dist: sqlalchemy; extra == "integration-tests"
430
- Requires-Dist: Pillow; extra == "integration-tests"
431
- Provides-Extra: opentelemetry
432
- Requires-Dist: opentelemetry-sdk; extra == "opentelemetry"
433
- Requires-Dist: opentelemetry-exporter-otlp; extra == "opentelemetry"
434
- Provides-Extra: weave
435
- Requires-Dist: weave; extra == "weave"
436
- Provides-Extra: openlit
437
- Requires-Dist: openlit; extra == "openlit"
438
- Requires-Dist: agno[opentelemetry]; extra == "openlit"
439
- Provides-Extra: arize
440
- Requires-Dist: arize-phoenix; extra == "arize"
441
- Requires-Dist: agno[opentelemetry]; extra == "arize"
442
- Requires-Dist: opentelemetry-exporter-otlp-proto-grpc; extra == "arize"
443
- Requires-Dist: opentelemetry-distro; extra == "arize"
444
- Provides-Extra: langfuse
445
- Requires-Dist: langfuse; extra == "langfuse"
446
- Provides-Extra: aws-bedrock
447
- Requires-Dist: boto3; extra == "aws-bedrock"
448
- Requires-Dist: aioboto3; extra == "aws-bedrock"
449
- Provides-Extra: anthropic
450
- Requires-Dist: anthropic; extra == "anthropic"
451
- Provides-Extra: azure
452
- Requires-Dist: azure-ai-inference; extra == "azure"
453
- Requires-Dist: aiohttp; extra == "azure"
454
- Provides-Extra: cerebras
455
- Requires-Dist: cerebras-cloud-sdk; extra == "cerebras"
456
- Provides-Extra: cohere
457
- Requires-Dist: cohere; extra == "cohere"
458
- Provides-Extra: infinity
459
- Requires-Dist: infinity_client; extra == "infinity"
460
- Provides-Extra: google
461
- Requires-Dist: google-genai; extra == "google"
462
- Provides-Extra: groq
463
- Requires-Dist: groq; extra == "groq"
464
- Provides-Extra: ibm
465
- Requires-Dist: ibm-watsonx-ai; extra == "ibm"
466
- Provides-Extra: litellm
467
- Requires-Dist: litellm; extra == "litellm"
468
- Provides-Extra: lmstudio
469
- Requires-Dist: lmstudio; extra == "lmstudio"
470
- Provides-Extra: meta
471
- Requires-Dist: llama-api-client; extra == "meta"
472
- Provides-Extra: mistral
473
- Requires-Dist: mistralai; extra == "mistral"
474
- Provides-Extra: ollama
475
- Requires-Dist: ollama; extra == "ollama"
476
- Provides-Extra: openai
477
- Requires-Dist: openai; extra == "openai"
478
- Provides-Extra: portkey
479
- Requires-Dist: portkey-ai; extra == "portkey"
480
- Provides-Extra: agentql
481
- Requires-Dist: agentql; extra == "agentql"
482
- Provides-Extra: apify
483
- Requires-Dist: apify-client; extra == "apify"
484
- Provides-Extra: arxiv
485
- Requires-Dist: arxiv; extra == "arxiv"
486
- Provides-Extra: brave
487
- Requires-Dist: brave-search; extra == "brave"
488
- Provides-Extra: browserbase
489
- Requires-Dist: browserbase; extra == "browserbase"
490
- Requires-Dist: playwright; extra == "browserbase"
491
- Provides-Extra: cartesia
492
- Requires-Dist: cartesia; extra == "cartesia"
493
- Provides-Extra: confluence
494
- Requires-Dist: atlassian-python-api; extra == "confluence"
495
- Provides-Extra: ddg
496
- Requires-Dist: ddgs; extra == "ddg"
497
- Provides-Extra: duckdb
498
- Requires-Dist: duckdb; extra == "duckdb"
499
- Provides-Extra: elevenlabs
500
- Requires-Dist: elevenlabs; extra == "elevenlabs"
501
- Provides-Extra: evm
502
- Requires-Dist: web3; extra == "evm"
503
- Provides-Extra: exa
504
- Requires-Dist: exa_py; extra == "exa"
505
- Provides-Extra: fal
506
- Requires-Dist: fal_client; extra == "fal"
507
- Provides-Extra: firecrawl
508
- Requires-Dist: firecrawl-py; extra == "firecrawl"
509
- Provides-Extra: crawl4ai
510
- Requires-Dist: crawl4ai; extra == "crawl4ai"
511
- Provides-Extra: github
512
- Requires-Dist: PyGithub; extra == "github"
513
- Provides-Extra: gmail
514
- Requires-Dist: google-api-python-client; extra == "gmail"
515
- Requires-Dist: google-auth-httplib2; extra == "gmail"
516
- Requires-Dist: google-auth-oauthlib; extra == "gmail"
517
- Provides-Extra: google-bigquery
518
- Requires-Dist: google-cloud-bigquery; extra == "google-bigquery"
519
- Provides-Extra: googlemaps
520
- Requires-Dist: googlemaps; extra == "googlemaps"
521
- Requires-Dist: google-maps-places; extra == "googlemaps"
522
- Provides-Extra: matplotlib
523
- Requires-Dist: matplotlib; extra == "matplotlib"
524
- Provides-Extra: mcp
525
- Requires-Dist: mcp; extra == "mcp"
526
- Provides-Extra: mem0
527
- Requires-Dist: mem0ai; extra == "mem0"
528
- Provides-Extra: memori
529
- Requires-Dist: memorisdk; extra == "memori"
530
- Provides-Extra: newspaper
531
- Requires-Dist: newspaper4k; extra == "newspaper"
532
- Requires-Dist: lxml_html_clean; extra == "newspaper"
533
- Provides-Extra: opencv
534
- Requires-Dist: opencv-python; extra == "opencv"
535
- Provides-Extra: psycopg
536
- Requires-Dist: psycopg-binary; extra == "psycopg"
537
- Requires-Dist: psycopg; extra == "psycopg"
538
- Provides-Extra: todoist
539
- Requires-Dist: todoist-api-python; extra == "todoist"
540
- Provides-Extra: valyu
541
- Requires-Dist: valyu; extra == "valyu"
542
- Provides-Extra: webex
543
- Requires-Dist: webexpythonsdk; extra == "webex"
544
- Provides-Extra: yfinance
545
- Requires-Dist: yfinance; extra == "yfinance"
546
- Provides-Extra: youtube
547
- Requires-Dist: youtube_transcript_api; extra == "youtube"
548
- Provides-Extra: zep
549
- Requires-Dist: zep-cloud; extra == "zep"
550
- Provides-Extra: daytona
551
- Requires-Dist: daytona; extra == "daytona"
552
- Provides-Extra: oxylabs
553
- Requires-Dist: oxylabs; extra == "oxylabs"
554
- Provides-Extra: trafilatura
555
- Requires-Dist: trafilatura; extra == "trafilatura"
556
- Provides-Extra: neo4j
557
- Requires-Dist: neo4j; extra == "neo4j"
558
- Provides-Extra: sql
559
- Requires-Dist: sqlalchemy; extra == "sql"
560
- Provides-Extra: postgres
561
- Requires-Dist: psycopg-binary; extra == "postgres"
562
- Provides-Extra: sqlite
563
- Requires-Dist: sqlalchemy; extra == "sqlite"
564
- Provides-Extra: gcs
565
- Requires-Dist: google-cloud-storage; extra == "gcs"
566
- Provides-Extra: firestore
567
- Requires-Dist: google-cloud-firestore; extra == "firestore"
568
- Provides-Extra: redis
569
- Requires-Dist: redis; extra == "redis"
570
- Provides-Extra: pgvector
571
- Requires-Dist: pgvector; extra == "pgvector"
572
- Provides-Extra: chromadb
573
- Requires-Dist: chromadb; extra == "chromadb"
574
- Provides-Extra: lancedb
575
- Requires-Dist: lancedb==0.20.0; extra == "lancedb"
576
- Requires-Dist: tantivy; extra == "lancedb"
577
- Provides-Extra: qdrant
578
- Requires-Dist: qdrant-client; extra == "qdrant"
579
- Provides-Extra: couchbase
580
- Requires-Dist: couchbase; extra == "couchbase"
581
- Provides-Extra: cassandra
582
- Requires-Dist: cassio; extra == "cassandra"
583
- Provides-Extra: mongodb
584
- Requires-Dist: pymongo[srv]; extra == "mongodb"
585
- Provides-Extra: singlestore
586
- Requires-Dist: sqlalchemy; extra == "singlestore"
587
- Provides-Extra: weaviate
588
- Requires-Dist: weaviate-client; extra == "weaviate"
589
- Provides-Extra: milvusdb
590
- Requires-Dist: pymilvus>=2.5.10; extra == "milvusdb"
591
- Provides-Extra: clickhouse
592
- Requires-Dist: clickhouse-connect; extra == "clickhouse"
593
- Provides-Extra: pinecone
594
- Requires-Dist: pinecone==5.4.2; extra == "pinecone"
595
- Provides-Extra: surrealdb
596
- Requires-Dist: surrealdb>=1.0.4; extra == "surrealdb"
597
- Provides-Extra: pdf
598
- Requires-Dist: pypdf; extra == "pdf"
599
- Requires-Dist: rapidocr_onnxruntime; extra == "pdf"
600
- Provides-Extra: docx
601
- Requires-Dist: python-docx; extra == "docx"
602
- Provides-Extra: text
603
- Requires-Dist: aiofiles; extra == "text"
604
- Provides-Extra: csv
605
- Requires-Dist: aiofiles; extra == "csv"
606
- Provides-Extra: markdown
607
- Requires-Dist: unstructured; extra == "markdown"
608
- Requires-Dist: markdown; extra == "markdown"
609
- Requires-Dist: aiofiles; extra == "markdown"
610
- Provides-Extra: agui
611
- Requires-Dist: ag-ui-protocol; extra == "agui"
612
- Provides-Extra: huggingface
613
- Requires-Dist: huggingface-hub; extra == "huggingface"
614
- Provides-Extra: performance
615
- Requires-Dist: memory_profiler; extra == "performance"
616
- Provides-Extra: cookbooks
617
- Requires-Dist: inquirer; extra == "cookbooks"
618
- Requires-Dist: email_validator; extra == "cookbooks"
619
- Provides-Extra: docker
620
- Requires-Dist: agno-docker; extra == "docker"
621
- Provides-Extra: aws
622
- Requires-Dist: agno-aws; extra == "aws"
623
- Requires-Dist: agno-docker; extra == "aws"
624
- Provides-Extra: models
625
- Requires-Dist: agno[aws-bedrock]; extra == "models"
626
- Requires-Dist: agno[anthropic]; extra == "models"
627
- Requires-Dist: agno[azure]; extra == "models"
628
- Requires-Dist: agno[cerebras]; extra == "models"
629
- Requires-Dist: agno[cohere]; extra == "models"
630
- Requires-Dist: agno[infinity]; extra == "models"
631
- Requires-Dist: agno[google]; extra == "models"
632
- Requires-Dist: agno[groq]; extra == "models"
633
- Requires-Dist: agno[ibm]; extra == "models"
634
- Requires-Dist: agno[infinity]; extra == "models"
635
- Requires-Dist: agno[litellm]; extra == "models"
636
- Requires-Dist: agno[meta]; extra == "models"
637
- Requires-Dist: agno[mistral]; extra == "models"
638
- Requires-Dist: agno[ollama]; extra == "models"
639
- Requires-Dist: agno[openai]; extra == "models"
640
- Requires-Dist: agno[portkey]; extra == "models"
641
- Provides-Extra: tools
642
- Requires-Dist: agno[apify]; extra == "tools"
643
- Requires-Dist: agno[arxiv]; extra == "tools"
644
- Requires-Dist: agno[brave]; extra == "tools"
645
- Requires-Dist: agno[exa]; extra == "tools"
646
- Requires-Dist: agno[cartesia]; extra == "tools"
647
- Requires-Dist: agno[ddg]; extra == "tools"
648
- Requires-Dist: agno[duckdb]; extra == "tools"
649
- Requires-Dist: agno[newspaper]; extra == "tools"
650
- Requires-Dist: agno[youtube]; extra == "tools"
651
- Requires-Dist: agno[firecrawl]; extra == "tools"
652
- Requires-Dist: agno[crawl4ai]; extra == "tools"
653
- Requires-Dist: agno[github]; extra == "tools"
654
- Requires-Dist: agno[gmail]; extra == "tools"
655
- Requires-Dist: agno[googlemaps]; extra == "tools"
656
- Requires-Dist: agno[todoist]; extra == "tools"
657
- Requires-Dist: agno[matplotlib]; extra == "tools"
658
- Requires-Dist: agno[elevenlabs]; extra == "tools"
659
- Requires-Dist: agno[evm]; extra == "tools"
660
- Requires-Dist: agno[fal]; extra == "tools"
661
- Requires-Dist: agno[webex]; extra == "tools"
662
- Requires-Dist: agno[mcp]; extra == "tools"
663
- Requires-Dist: agno[browserbase]; extra == "tools"
664
- Requires-Dist: agno[agentql]; extra == "tools"
665
- Requires-Dist: agno[opencv]; extra == "tools"
666
- Requires-Dist: agno[valyu]; extra == "tools"
667
- Requires-Dist: agno[confluence]; extra == "tools"
668
- Requires-Dist: agno[oxylabs]; extra == "tools"
669
- Requires-Dist: agno[zep]; extra == "tools"
670
- Requires-Dist: agno[mem0]; extra == "tools"
671
- Requires-Dist: agno[memori]; extra == "tools"
672
- Requires-Dist: agno[google_bigquery]; extra == "tools"
673
- Requires-Dist: agno[psycopg]; extra == "tools"
674
- Requires-Dist: agno[trafilatura]; extra == "tools"
675
- Requires-Dist: agno[neo4j]; extra == "tools"
676
- Provides-Extra: storage
677
- Requires-Dist: agno[sql]; extra == "storage"
678
- Requires-Dist: agno[postgres]; extra == "storage"
679
- Requires-Dist: agno[sqlite]; extra == "storage"
680
- Requires-Dist: agno[gcs]; extra == "storage"
681
- Requires-Dist: agno[firestore]; extra == "storage"
682
- Requires-Dist: agno[redis]; extra == "storage"
683
- Provides-Extra: vectordbs
684
- Requires-Dist: agno[pgvector]; extra == "vectordbs"
685
- Requires-Dist: agno[chromadb]; extra == "vectordbs"
686
- Requires-Dist: agno[lancedb]; extra == "vectordbs"
687
- Requires-Dist: agno[qdrant]; extra == "vectordbs"
688
- Requires-Dist: agno[couchbase]; extra == "vectordbs"
689
- Requires-Dist: agno[cassandra]; extra == "vectordbs"
690
- Requires-Dist: agno[mongodb]; extra == "vectordbs"
691
- Requires-Dist: agno[singlestore]; extra == "vectordbs"
692
- Requires-Dist: agno[weaviate]; extra == "vectordbs"
693
- Requires-Dist: agno[milvusdb]; extra == "vectordbs"
694
- Requires-Dist: agno[clickhouse]; extra == "vectordbs"
695
- Requires-Dist: agno[pinecone]; extra == "vectordbs"
696
- Requires-Dist: agno[surrealdb]; extra == "vectordbs"
697
- Provides-Extra: knowledge
698
- Requires-Dist: agno[pdf]; extra == "knowledge"
699
- Requires-Dist: agno[docx]; extra == "knowledge"
700
- Requires-Dist: agno[text]; extra == "knowledge"
701
- Requires-Dist: agno[csv]; extra == "knowledge"
702
- Requires-Dist: agno[markdown]; extra == "knowledge"
703
- Provides-Extra: embedders
704
- Requires-Dist: agno[huggingface]; extra == "embedders"
705
- Provides-Extra: tests
706
- Requires-Dist: agno[dev]; extra == "tests"
707
- Requires-Dist: agno[models]; extra == "tests"
708
- Requires-Dist: agno[tools]; extra == "tests"
709
- Requires-Dist: agno[storage]; extra == "tests"
710
- Requires-Dist: agno[vectordbs]; extra == "tests"
711
- Requires-Dist: agno[knowledge]; extra == "tests"
712
- Requires-Dist: agno[embedders]; extra == "tests"
713
- Requires-Dist: agno[performance]; extra == "tests"
714
- Requires-Dist: agno[cookbooks]; extra == "tests"
715
- Requires-Dist: agno[agui]; extra == "tests"
716
- Requires-Dist: twine; extra == "tests"
717
- Requires-Dist: build; extra == "tests"
718
- Dynamic: license-file
719
-
720
- <div align="center" id="top">
721
- <a href="https://docs.agno.com">
722
- <picture>
723
- <source media="(prefers-color-scheme: dark)" srcset="https://agno-public.s3.us-east-1.amazonaws.com/assets/logo-dark.svg">
724
- <source media="(prefers-color-scheme: light)" srcset="https://agno-public.s3.us-east-1.amazonaws.com/assets/logo-light.svg">
725
- <img src="https://agno-public.s3.us-east-1.amazonaws.com/assets/logo-light.svg" alt="Agno">
726
- </picture>
727
- </a>
728
- </div>
729
- <div align="center">
730
- <a href="https://docs.agno.com">📚 Documentation</a> &nbsp;|&nbsp;
731
- <a href="https://docs.agno.com/examples/introduction">💡 Examples</a> &nbsp;|&nbsp;
732
- <a href="https://github.com/agno-agi/agno/stargazers">🌟 Star Us</a>
733
- </div>
734
-
735
- ## What is Agno?
736
-
737
- [Agno](https://docs.agno.com) is a full-stack framework for building Multi-Agent Systems with memory, knowledge and reasoning.
738
-
739
- Use Agno to build the 5 levels of Agentic Systems:
740
- - Level 1: Agents with tools and instructions.
741
- - Level 2: Agents with knowledge and storage.
742
- - Level 3: Agents with memory and reasoning.
743
- - Level 4: Agent Teams that can reason and collaborate.
744
- - Level 5: Agentic Workflows with state and determinism.
745
-
746
- Example: Level 1 Reasoning Agent that uses the YFinance API to answer questions:
747
-
748
- ```python reasoning_finance_agent.py
749
- from agno.agent import Agent
750
- from agno.models.anthropic import Claude
751
- from agno.tools.reasoning import ReasoningTools
752
- from agno.tools.yfinance import YFinanceTools
753
-
754
- reasoning_agent = Agent(
755
- model=Claude(id="claude-sonnet-4-20250514"),
756
- tools=[
757
- ReasoningTools(add_instructions=True),
758
- YFinanceTools(stock_price=True, analyst_recommendations=True, company_info=True, company_news=True),
759
- ],
760
- instructions="Use tables to display data.",
761
- markdown=True,
762
- )
763
- ```
764
-
765
- https://github.com/user-attachments/assets/4ef27ba6-a781-4fb0-b49c-bfd838123c83
766
-
767
- ## Get Started
768
-
769
- If you're new to Agno, read the documentation to build your [first Agent](https://docs.agno.com/introduction/agents), chat with it on the [playground](https://docs.agno.com/introduction/playground) and monitor it on [agno.com](https://docs.agno.com/introduction/monitoring).
770
-
771
- After that, checkout the [Examples Gallery](https://docs.agno.com/examples) and build real-world applications with Agno.
772
-
773
- ## Why Agno?
774
-
775
- Agno will help you build best-in-class, highly-performant agentic systems, saving you hours of research and boilerplate. Here are some key features that set Agno apart:
776
-
777
- - **Model Agnostic**: Agno provides a unified interface to 23+ model providers, no lock-in.
778
- - **Highly performant**: Agents instantiate in **~3μs** and use **~6.5Kib** memory on average.
779
- - **Reasoning is a first class citizen**: Reasoning improves reliability and is a must-have for complex autonomous agents. Agno supports 3 approaches to reasoning: Reasoning Models, `ReasoningTools` or our custom `chain-of-thought` approach.
780
- - **Natively Multi-Modal**: Agno Agents are natively multi-modal, they accept text, image, audio and video as input and generate text, image, audio and video as output.
781
- - **Advanced Multi-Agent Architecture**: Agno provides an industry leading multi-agent architecture (**Agent Teams**) with reasoning, memory, and shared context.
782
- - **Built-in Agentic Search**: Agents can search for information at runtime using 20+ vector databases. Agno provides state-of-the-art Agentic RAG, **fully async and highly performant.**
783
- - **Built-in Memory & Session Storage**: Agents come with built-in `Storage` & `Memory` drivers that give your Agents long-term memory and session storage.
784
- - **Structured Outputs**: Agno Agents can return fully-typed responses using model provided structured outputs or `json_mode`.
785
- - **Pre-built FastAPI Routes**: After building your Agents, serve them using pre-built FastAPI routes. 0 to production in minutes.
786
- - **Monitoring**: Monitor agent sessions and performance in real-time on [agno.com](https://app.agno.com).
787
-
788
- ## Installation
789
-
790
- ```shell
791
- pip install -U agno
792
- ```
793
-
794
- ## Example - Reasoning Agent
795
-
796
- Let's build a Reasoning Agent to get a sense of Agno's capabilities.
797
-
798
- Save this code to a file: `reasoning_agent.py`.
799
-
800
- ```python
801
- from agno.agent import Agent
802
- from agno.models.anthropic import Claude
803
- from agno.tools.reasoning import ReasoningTools
804
- from agno.tools.yfinance import YFinanceTools
805
-
806
- agent = Agent(
807
- model=Claude(id="claude-sonnet-4-20250514"),
808
- tools=[
809
- ReasoningTools(add_instructions=True),
810
- YFinanceTools(stock_price=True, analyst_recommendations=True, company_info=True, company_news=True),
811
- ],
812
- instructions=[
813
- "Use tables to display data",
814
- "Only output the report, no other text",
815
- ],
816
- markdown=True,
817
- )
818
- agent.print_response(
819
- "Write a report on NVDA",
820
- stream=True,
821
- show_full_reasoning=True,
822
- stream_intermediate_steps=True,
823
- )
824
- ```
825
-
826
- Then create a virtual environment, install dependencies, export your `ANTHROPIC_API_KEY` and run the agent.
827
-
828
- ```shell
829
- uv venv --python 3.12
830
- source .venv/bin/activate
831
-
832
- uv pip install agno anthropic yfinance
833
-
834
- export ANTHROPIC_API_KEY=sk-ant-api03-xxxx
835
-
836
- python reasoning_agent.py
837
- ```
838
-
839
- We can see the Agent is reasoning through the task, using the `ReasoningTools` and `YFinanceTools` to gather information. This is how the output looks like:
840
-
841
- https://github.com/user-attachments/assets/bbb99955-9848-49a9-9732-3e19d77b2ff8
842
-
843
- ## Example - Multi Agent Teams
844
-
845
- Agents are the atomic unit of work, and work best when they have a narrow scope and a small number of tools. When the number of tools grows beyond what the model can handle or you need to handle multiple concepts, use a team of agents to spread the load.
846
-
847
- ```python
848
- from agno.agent import Agent
849
- from agno.models.openai import OpenAIChat
850
- from agno.tools.duckduckgo import DuckDuckGoTools
851
- from agno.tools.yfinance import YFinanceTools
852
- from agno.team import Team
853
-
854
- web_agent = Agent(
855
- name="Web Agent",
856
- role="Search the web for information",
857
- model=OpenAIChat(id="gpt-4o"),
858
- tools=[DuckDuckGoTools()],
859
- instructions="Always include sources",
860
- show_tool_calls=True,
861
- markdown=True,
862
- )
863
-
864
- finance_agent = Agent(
865
- name="Finance Agent",
866
- role="Get financial data",
867
- model=OpenAIChat(id="gpt-4o"),
868
- tools=[YFinanceTools(stock_price=True, analyst_recommendations=True, company_info=True)],
869
- instructions="Use tables to display data",
870
- show_tool_calls=True,
871
- markdown=True,
872
- )
873
-
874
- agent_team = Team(
875
- mode="coordinate",
876
- members=[web_agent, finance_agent],
877
- model=OpenAIChat(id="gpt-4o"),
878
- success_criteria="A comprehensive financial news report with clear sections and data-driven insights.",
879
- instructions=["Always include sources", "Use tables to display data"],
880
- show_tool_calls=True,
881
- markdown=True,
882
- )
883
-
884
- agent_team.print_response("What's the market outlook and financial performance of AI semiconductor companies?", stream=True)
885
- ```
886
-
887
- Install dependencies and run the Agent team:
888
-
889
- ```shell
890
- pip install ddgs yfinance
891
-
892
- python agent_team.py
893
- ```
894
-
895
- [View this example in the cookbook](./cookbook/getting_started/05_agent_team.py)
896
-
897
- ## Performance
898
-
899
- At Agno, we're obsessed with performance. Why? because even simple AI workflows can spawn thousands of Agents. Scale that to a modest number of users and performance becomes a bottleneck. Agno is designed for building high performance agentic systems:
900
-
901
- - Agent instantiation: ~3μs on average
902
- - Memory footprint: ~6.5Kib on average
903
-
904
- > Tested on an Apple M4 Mackbook Pro.
905
-
906
- While an Agent's run-time is bottlenecked by inference, we must do everything possible to minimize execution time, reduce memory usage, and parallelize tool calls. These numbers may seem trivial at first, but our experience shows that they add up even at a reasonably small scale.
907
-
908
- ### Instantiation time
909
-
910
- Let's measure the time it takes for an Agent with 1 tool to start up. We'll run the evaluation 1000 times to get a baseline measurement.
911
-
912
- You should run the evaluation yourself on your own machine, please, do not take these results at face value.
913
-
914
- ```shell
915
- # Setup virtual environment
916
- ./scripts/perf_setup.sh
917
- source .venvs/perfenv/bin/activate
918
- # OR Install dependencies manually
919
- # pip install openai agno langgraph langchain_openai
920
-
921
- # Agno
922
- python evals/performance/instantiation_with_tool.py
923
-
924
- # LangGraph
925
- python evals/performance/other/langgraph_instantiation.py
926
- ```
927
-
928
- > The following evaluation is run on an Apple M4 Mackbook Pro. It also runs as a Github action on this repo.
929
-
930
- LangGraph is on the right, **let's start it first and give it a head start**.
931
-
932
- 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.
933
-
934
- https://github.com/user-attachments/assets/ba466d45-75dd-45ac-917b-0a56c5742e23
935
-
936
- ### Memory usage
937
-
938
- 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.
939
-
940
- 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.
941
-
942
- ### Conclusion
943
-
944
- Agno agents are designed for performance and while we do share some benchmarks against other frameworks, we should be mindful that accuracy and reliability are more important than speed.
945
-
946
- Given that each framework is different and we won't be able to tune their performance like we do with Agno, for future benchmarks we'll only be comparing against ourselves.
947
-
948
- ## Complete Documentation Index
949
-
950
- For LLMs and AI assistants to understand and navigate Agno's complete documentation, we provide an [LLMs.txt](https://docs.agno.com/llms.txt) or [LLMs-Full.txt](https://docs.agno.com/llms-full.txt) file.
951
-
952
- This file is specifically formatted for AI systems to efficiently parse and reference our documentation.
953
-
954
- ### Cursor Setup
955
-
956
- When building Agno agents, using Agno documentation as a source in Cursor is a great way to speed up your development.
957
-
958
- 1. In Cursor, go to the "Cursor Settings" menu.
959
- 2. Find the "Indexing & Docs" section.
960
- 3. Add `https://docs.agno.com/llms-full.txt` to the list of documentation URLs.
961
- 4. Save the changes.
962
-
963
- Now, Cursor will have access to the Agno documentation.
964
-
965
- ## Documentation, Community & More examples
966
-
967
- - Docs: <a href="https://docs.agno.com" target="_blank" rel="noopener noreferrer">docs.agno.com</a>
968
- - Cookbook: <a href="https://github.com/agno-agi/agno/tree/main/cookbook" target="_blank" rel="noopener noreferrer">Cookbook</a>
969
- - Community forum: <a href="https://community.agno.com/" target="_blank" rel="noopener noreferrer">community.agno.com</a>
970
- - Discord: <a href="https://discord.gg/4MtYHHrgA8" target="_blank" rel="noopener noreferrer">discord</a>
971
-
972
- ## Contributions
973
-
974
- We welcome contributions, read our [contributing guide](https://github.com/agno-agi/agno/blob/main/CONTRIBUTING.md) to get started.
975
-
976
- ## Telemetry
977
-
978
- 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.
979
-
980
- <p align="left">
981
- <a href="#top">⬆️ Back to Top</a>
982
- </p>