agno 2.0.0rc2__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.
Files changed (331) hide show
  1. agno/agent/agent.py +6009 -2874
  2. agno/api/api.py +2 -0
  3. agno/api/os.py +1 -1
  4. agno/culture/__init__.py +3 -0
  5. agno/culture/manager.py +956 -0
  6. agno/db/async_postgres/__init__.py +3 -0
  7. agno/db/base.py +385 -6
  8. agno/db/dynamo/dynamo.py +388 -81
  9. agno/db/dynamo/schemas.py +47 -10
  10. agno/db/dynamo/utils.py +63 -4
  11. agno/db/firestore/firestore.py +435 -64
  12. agno/db/firestore/schemas.py +11 -0
  13. agno/db/firestore/utils.py +102 -4
  14. agno/db/gcs_json/gcs_json_db.py +384 -42
  15. agno/db/gcs_json/utils.py +60 -26
  16. agno/db/in_memory/in_memory_db.py +351 -66
  17. agno/db/in_memory/utils.py +60 -2
  18. agno/db/json/json_db.py +339 -48
  19. agno/db/json/utils.py +60 -26
  20. agno/db/migrations/manager.py +199 -0
  21. agno/db/migrations/v1_to_v2.py +510 -37
  22. agno/db/migrations/versions/__init__.py +0 -0
  23. agno/db/migrations/versions/v2_3_0.py +938 -0
  24. agno/db/mongo/__init__.py +15 -1
  25. agno/db/mongo/async_mongo.py +2036 -0
  26. agno/db/mongo/mongo.py +653 -76
  27. agno/db/mongo/schemas.py +13 -0
  28. agno/db/mongo/utils.py +80 -8
  29. agno/db/mysql/mysql.py +687 -25
  30. agno/db/mysql/schemas.py +61 -37
  31. agno/db/mysql/utils.py +60 -2
  32. agno/db/postgres/__init__.py +2 -1
  33. agno/db/postgres/async_postgres.py +2001 -0
  34. agno/db/postgres/postgres.py +676 -57
  35. agno/db/postgres/schemas.py +43 -18
  36. agno/db/postgres/utils.py +164 -2
  37. agno/db/redis/redis.py +344 -38
  38. agno/db/redis/schemas.py +18 -0
  39. agno/db/redis/utils.py +60 -2
  40. agno/db/schemas/__init__.py +2 -1
  41. agno/db/schemas/culture.py +120 -0
  42. agno/db/schemas/memory.py +13 -0
  43. agno/db/singlestore/schemas.py +26 -1
  44. agno/db/singlestore/singlestore.py +687 -53
  45. agno/db/singlestore/utils.py +60 -2
  46. agno/db/sqlite/__init__.py +2 -1
  47. agno/db/sqlite/async_sqlite.py +2371 -0
  48. agno/db/sqlite/schemas.py +24 -0
  49. agno/db/sqlite/sqlite.py +774 -85
  50. agno/db/sqlite/utils.py +168 -5
  51. agno/db/surrealdb/__init__.py +3 -0
  52. agno/db/surrealdb/metrics.py +292 -0
  53. agno/db/surrealdb/models.py +309 -0
  54. agno/db/surrealdb/queries.py +71 -0
  55. agno/db/surrealdb/surrealdb.py +1361 -0
  56. agno/db/surrealdb/utils.py +147 -0
  57. agno/db/utils.py +50 -22
  58. agno/eval/accuracy.py +50 -43
  59. agno/eval/performance.py +6 -3
  60. agno/eval/reliability.py +6 -3
  61. agno/eval/utils.py +33 -16
  62. agno/exceptions.py +68 -1
  63. agno/filters.py +354 -0
  64. agno/guardrails/__init__.py +6 -0
  65. agno/guardrails/base.py +19 -0
  66. agno/guardrails/openai.py +144 -0
  67. agno/guardrails/pii.py +94 -0
  68. agno/guardrails/prompt_injection.py +52 -0
  69. agno/integrations/discord/client.py +1 -0
  70. agno/knowledge/chunking/agentic.py +13 -10
  71. agno/knowledge/chunking/fixed.py +1 -1
  72. agno/knowledge/chunking/semantic.py +40 -8
  73. agno/knowledge/chunking/strategy.py +59 -15
  74. agno/knowledge/embedder/aws_bedrock.py +9 -4
  75. agno/knowledge/embedder/azure_openai.py +54 -0
  76. agno/knowledge/embedder/base.py +2 -0
  77. agno/knowledge/embedder/cohere.py +184 -5
  78. agno/knowledge/embedder/fastembed.py +1 -1
  79. agno/knowledge/embedder/google.py +79 -1
  80. agno/knowledge/embedder/huggingface.py +9 -4
  81. agno/knowledge/embedder/jina.py +63 -0
  82. agno/knowledge/embedder/mistral.py +78 -11
  83. agno/knowledge/embedder/nebius.py +1 -1
  84. agno/knowledge/embedder/ollama.py +13 -0
  85. agno/knowledge/embedder/openai.py +37 -65
  86. agno/knowledge/embedder/sentence_transformer.py +8 -4
  87. agno/knowledge/embedder/vllm.py +262 -0
  88. agno/knowledge/embedder/voyageai.py +69 -16
  89. agno/knowledge/knowledge.py +595 -187
  90. agno/knowledge/reader/base.py +9 -2
  91. agno/knowledge/reader/csv_reader.py +8 -10
  92. agno/knowledge/reader/docx_reader.py +5 -6
  93. agno/knowledge/reader/field_labeled_csv_reader.py +290 -0
  94. agno/knowledge/reader/json_reader.py +6 -5
  95. agno/knowledge/reader/markdown_reader.py +13 -13
  96. agno/knowledge/reader/pdf_reader.py +43 -68
  97. agno/knowledge/reader/pptx_reader.py +101 -0
  98. agno/knowledge/reader/reader_factory.py +51 -6
  99. agno/knowledge/reader/s3_reader.py +3 -15
  100. agno/knowledge/reader/tavily_reader.py +194 -0
  101. agno/knowledge/reader/text_reader.py +13 -13
  102. agno/knowledge/reader/web_search_reader.py +2 -43
  103. agno/knowledge/reader/website_reader.py +43 -25
  104. agno/knowledge/reranker/__init__.py +3 -0
  105. agno/knowledge/types.py +9 -0
  106. agno/knowledge/utils.py +20 -0
  107. agno/media.py +339 -266
  108. agno/memory/manager.py +336 -82
  109. agno/models/aimlapi/aimlapi.py +2 -2
  110. agno/models/anthropic/claude.py +183 -37
  111. agno/models/aws/bedrock.py +52 -112
  112. agno/models/aws/claude.py +33 -1
  113. agno/models/azure/ai_foundry.py +33 -15
  114. agno/models/azure/openai_chat.py +25 -8
  115. agno/models/base.py +1011 -566
  116. agno/models/cerebras/cerebras.py +19 -13
  117. agno/models/cerebras/cerebras_openai.py +8 -5
  118. agno/models/cohere/chat.py +27 -1
  119. agno/models/cometapi/__init__.py +5 -0
  120. agno/models/cometapi/cometapi.py +57 -0
  121. agno/models/dashscope/dashscope.py +1 -0
  122. agno/models/deepinfra/deepinfra.py +2 -2
  123. agno/models/deepseek/deepseek.py +2 -2
  124. agno/models/fireworks/fireworks.py +2 -2
  125. agno/models/google/gemini.py +110 -37
  126. agno/models/groq/groq.py +28 -11
  127. agno/models/huggingface/huggingface.py +2 -1
  128. agno/models/internlm/internlm.py +2 -2
  129. agno/models/langdb/langdb.py +4 -4
  130. agno/models/litellm/chat.py +18 -1
  131. agno/models/litellm/litellm_openai.py +2 -2
  132. agno/models/llama_cpp/__init__.py +5 -0
  133. agno/models/llama_cpp/llama_cpp.py +22 -0
  134. agno/models/message.py +143 -4
  135. agno/models/meta/llama.py +27 -10
  136. agno/models/meta/llama_openai.py +5 -17
  137. agno/models/nebius/nebius.py +6 -6
  138. agno/models/nexus/__init__.py +3 -0
  139. agno/models/nexus/nexus.py +22 -0
  140. agno/models/nvidia/nvidia.py +2 -2
  141. agno/models/ollama/chat.py +60 -6
  142. agno/models/openai/chat.py +102 -43
  143. agno/models/openai/responses.py +103 -106
  144. agno/models/openrouter/openrouter.py +41 -3
  145. agno/models/perplexity/perplexity.py +4 -5
  146. agno/models/portkey/portkey.py +3 -3
  147. agno/models/requesty/__init__.py +5 -0
  148. agno/models/requesty/requesty.py +52 -0
  149. agno/models/response.py +81 -5
  150. agno/models/sambanova/sambanova.py +2 -2
  151. agno/models/siliconflow/__init__.py +5 -0
  152. agno/models/siliconflow/siliconflow.py +25 -0
  153. agno/models/together/together.py +2 -2
  154. agno/models/utils.py +254 -8
  155. agno/models/vercel/v0.py +2 -2
  156. agno/models/vertexai/__init__.py +0 -0
  157. agno/models/vertexai/claude.py +96 -0
  158. agno/models/vllm/vllm.py +1 -0
  159. agno/models/xai/xai.py +3 -2
  160. agno/os/app.py +543 -175
  161. agno/os/auth.py +24 -14
  162. agno/os/config.py +1 -0
  163. agno/os/interfaces/__init__.py +1 -0
  164. agno/os/interfaces/a2a/__init__.py +3 -0
  165. agno/os/interfaces/a2a/a2a.py +42 -0
  166. agno/os/interfaces/a2a/router.py +250 -0
  167. agno/os/interfaces/a2a/utils.py +924 -0
  168. agno/os/interfaces/agui/agui.py +23 -7
  169. agno/os/interfaces/agui/router.py +27 -3
  170. agno/os/interfaces/agui/utils.py +242 -142
  171. agno/os/interfaces/base.py +6 -2
  172. agno/os/interfaces/slack/router.py +81 -23
  173. agno/os/interfaces/slack/slack.py +29 -14
  174. agno/os/interfaces/whatsapp/router.py +11 -4
  175. agno/os/interfaces/whatsapp/whatsapp.py +14 -7
  176. agno/os/mcp.py +111 -54
  177. agno/os/middleware/__init__.py +7 -0
  178. agno/os/middleware/jwt.py +233 -0
  179. agno/os/router.py +556 -139
  180. agno/os/routers/evals/evals.py +71 -34
  181. agno/os/routers/evals/schemas.py +31 -31
  182. agno/os/routers/evals/utils.py +6 -5
  183. agno/os/routers/health.py +31 -0
  184. agno/os/routers/home.py +52 -0
  185. agno/os/routers/knowledge/knowledge.py +185 -38
  186. agno/os/routers/knowledge/schemas.py +82 -22
  187. agno/os/routers/memory/memory.py +158 -53
  188. agno/os/routers/memory/schemas.py +20 -16
  189. agno/os/routers/metrics/metrics.py +20 -8
  190. agno/os/routers/metrics/schemas.py +16 -16
  191. agno/os/routers/session/session.py +499 -38
  192. agno/os/schema.py +308 -198
  193. agno/os/utils.py +401 -41
  194. agno/reasoning/anthropic.py +80 -0
  195. agno/reasoning/azure_ai_foundry.py +2 -2
  196. agno/reasoning/deepseek.py +2 -2
  197. agno/reasoning/default.py +3 -1
  198. agno/reasoning/gemini.py +73 -0
  199. agno/reasoning/groq.py +2 -2
  200. agno/reasoning/ollama.py +2 -2
  201. agno/reasoning/openai.py +7 -2
  202. agno/reasoning/vertexai.py +76 -0
  203. agno/run/__init__.py +6 -0
  204. agno/run/agent.py +266 -112
  205. agno/run/base.py +53 -24
  206. agno/run/team.py +252 -111
  207. agno/run/workflow.py +156 -45
  208. agno/session/agent.py +105 -89
  209. agno/session/summary.py +65 -25
  210. agno/session/team.py +176 -96
  211. agno/session/workflow.py +406 -40
  212. agno/team/team.py +3854 -1692
  213. agno/tools/brightdata.py +3 -3
  214. agno/tools/cartesia.py +3 -5
  215. agno/tools/dalle.py +9 -8
  216. agno/tools/decorator.py +4 -2
  217. agno/tools/desi_vocal.py +2 -2
  218. agno/tools/duckduckgo.py +15 -11
  219. agno/tools/e2b.py +20 -13
  220. agno/tools/eleven_labs.py +26 -28
  221. agno/tools/exa.py +21 -16
  222. agno/tools/fal.py +4 -4
  223. agno/tools/file.py +153 -23
  224. agno/tools/file_generation.py +350 -0
  225. agno/tools/firecrawl.py +4 -4
  226. agno/tools/function.py +257 -37
  227. agno/tools/giphy.py +2 -2
  228. agno/tools/gmail.py +238 -14
  229. agno/tools/google_drive.py +270 -0
  230. agno/tools/googlecalendar.py +36 -8
  231. agno/tools/googlesheets.py +20 -5
  232. agno/tools/jira.py +20 -0
  233. agno/tools/knowledge.py +3 -3
  234. agno/tools/lumalab.py +3 -3
  235. agno/tools/mcp/__init__.py +10 -0
  236. agno/tools/mcp/mcp.py +331 -0
  237. agno/tools/mcp/multi_mcp.py +347 -0
  238. agno/tools/mcp/params.py +24 -0
  239. agno/tools/mcp_toolbox.py +284 -0
  240. agno/tools/mem0.py +11 -17
  241. agno/tools/memori.py +1 -53
  242. agno/tools/memory.py +419 -0
  243. agno/tools/models/azure_openai.py +2 -2
  244. agno/tools/models/gemini.py +3 -3
  245. agno/tools/models/groq.py +3 -5
  246. agno/tools/models/nebius.py +7 -7
  247. agno/tools/models_labs.py +25 -15
  248. agno/tools/notion.py +204 -0
  249. agno/tools/openai.py +4 -9
  250. agno/tools/opencv.py +3 -3
  251. agno/tools/parallel.py +314 -0
  252. agno/tools/replicate.py +7 -7
  253. agno/tools/scrapegraph.py +58 -31
  254. agno/tools/searxng.py +2 -2
  255. agno/tools/serper.py +2 -2
  256. agno/tools/slack.py +18 -3
  257. agno/tools/spider.py +2 -2
  258. agno/tools/tavily.py +146 -0
  259. agno/tools/whatsapp.py +1 -1
  260. agno/tools/workflow.py +278 -0
  261. agno/tools/yfinance.py +12 -11
  262. agno/utils/agent.py +820 -0
  263. agno/utils/audio.py +27 -0
  264. agno/utils/common.py +90 -1
  265. agno/utils/events.py +222 -7
  266. agno/utils/gemini.py +181 -23
  267. agno/utils/hooks.py +57 -0
  268. agno/utils/http.py +111 -0
  269. agno/utils/knowledge.py +12 -5
  270. agno/utils/log.py +1 -0
  271. agno/utils/mcp.py +95 -5
  272. agno/utils/media.py +188 -10
  273. agno/utils/merge_dict.py +22 -1
  274. agno/utils/message.py +60 -0
  275. agno/utils/models/claude.py +40 -11
  276. agno/utils/models/cohere.py +1 -1
  277. agno/utils/models/watsonx.py +1 -1
  278. agno/utils/openai.py +1 -1
  279. agno/utils/print_response/agent.py +105 -21
  280. agno/utils/print_response/team.py +103 -38
  281. agno/utils/print_response/workflow.py +251 -34
  282. agno/utils/reasoning.py +22 -1
  283. agno/utils/serialize.py +32 -0
  284. agno/utils/streamlit.py +16 -10
  285. agno/utils/string.py +41 -0
  286. agno/utils/team.py +98 -9
  287. agno/utils/tools.py +1 -1
  288. agno/vectordb/base.py +23 -4
  289. agno/vectordb/cassandra/cassandra.py +65 -9
  290. agno/vectordb/chroma/chromadb.py +182 -38
  291. agno/vectordb/clickhouse/clickhousedb.py +64 -11
  292. agno/vectordb/couchbase/couchbase.py +105 -10
  293. agno/vectordb/lancedb/lance_db.py +183 -135
  294. agno/vectordb/langchaindb/langchaindb.py +25 -7
  295. agno/vectordb/lightrag/lightrag.py +17 -3
  296. agno/vectordb/llamaindex/__init__.py +3 -0
  297. agno/vectordb/llamaindex/llamaindexdb.py +46 -7
  298. agno/vectordb/milvus/milvus.py +126 -9
  299. agno/vectordb/mongodb/__init__.py +7 -1
  300. agno/vectordb/mongodb/mongodb.py +112 -7
  301. agno/vectordb/pgvector/pgvector.py +142 -21
  302. agno/vectordb/pineconedb/pineconedb.py +80 -8
  303. agno/vectordb/qdrant/qdrant.py +125 -39
  304. agno/vectordb/redis/__init__.py +9 -0
  305. agno/vectordb/redis/redisdb.py +694 -0
  306. agno/vectordb/singlestore/singlestore.py +111 -25
  307. agno/vectordb/surrealdb/surrealdb.py +31 -5
  308. agno/vectordb/upstashdb/upstashdb.py +76 -8
  309. agno/vectordb/weaviate/weaviate.py +86 -15
  310. agno/workflow/__init__.py +2 -0
  311. agno/workflow/agent.py +299 -0
  312. agno/workflow/condition.py +112 -18
  313. agno/workflow/loop.py +69 -10
  314. agno/workflow/parallel.py +266 -118
  315. agno/workflow/router.py +110 -17
  316. agno/workflow/step.py +645 -136
  317. agno/workflow/steps.py +65 -6
  318. agno/workflow/types.py +71 -33
  319. agno/workflow/workflow.py +2113 -300
  320. agno-2.3.0.dist-info/METADATA +618 -0
  321. agno-2.3.0.dist-info/RECORD +577 -0
  322. agno-2.3.0.dist-info/licenses/LICENSE +201 -0
  323. agno/knowledge/reader/url_reader.py +0 -128
  324. agno/tools/googlesearch.py +0 -98
  325. agno/tools/mcp.py +0 -610
  326. agno/utils/models/aws_claude.py +0 -170
  327. agno-2.0.0rc2.dist-info/METADATA +0 -355
  328. agno-2.0.0rc2.dist-info/RECORD +0 -515
  329. agno-2.0.0rc2.dist-info/licenses/LICENSE +0 -375
  330. {agno-2.0.0rc2.dist-info → agno-2.3.0.dist-info}/WHEEL +0 -0
  331. {agno-2.0.0rc2.dist-info → agno-2.3.0.dist-info}/top_level.txt +0 -0
@@ -1,170 +0,0 @@
1
- import json
2
- from typing import Any, Dict, List, Optional, Tuple
3
-
4
- from agno.media import Image
5
- from agno.models.message import Message
6
- from agno.utils.log import log_error, log_warning
7
-
8
- try:
9
- from anthropic.types import (
10
- TextBlock,
11
- ToolUseBlock,
12
- )
13
- except ImportError:
14
- log_error("`anthropic[bedrock]` not installed. Please install it via `pip install anthropic[bedrock]`.")
15
- raise
16
-
17
- ROLE_MAP = {
18
- "system": "system",
19
- "user": "user",
20
- "assistant": "assistant",
21
- "tool": "user",
22
- }
23
-
24
-
25
- def _format_image_for_message(image: Image) -> Optional[Dict[str, Any]]:
26
- """
27
- Add an image to a message by converting it to base64 encoded format.
28
- """
29
- using_filetype = False
30
-
31
- import base64
32
-
33
- # 'imghdr' was deprecated in Python 3.11: https://docs.python.org/3/library/imghdr.html
34
- # 'filetype' used as a fallback
35
- try:
36
- import imghdr
37
- except (ModuleNotFoundError, ImportError):
38
- try:
39
- import filetype
40
-
41
- using_filetype = True
42
- except (ModuleNotFoundError, ImportError):
43
- raise ImportError("`filetype` not installed. Please install using `pip install filetype`")
44
-
45
- type_mapping = {
46
- "jpeg": "image/jpeg",
47
- "jpg": "image/jpeg",
48
- "png": "image/png",
49
- "gif": "image/gif",
50
- "webp": "image/webp",
51
- }
52
-
53
- try:
54
- # Case 1: Image is a URL
55
- if image.url is not None:
56
- content_bytes = image.image_url_content
57
-
58
- # Case 2: Image is a local file path
59
- elif image.filepath is not None:
60
- from pathlib import Path
61
-
62
- path = Path(image.filepath) if isinstance(image.filepath, str) else image.filepath
63
- if path.exists() and path.is_file():
64
- with open(image.filepath, "rb") as f:
65
- content_bytes = f.read()
66
- else:
67
- log_error(f"Image file not found: {image}")
68
- return None
69
-
70
- # Case 3: Image is a bytes object
71
- elif image.content is not None:
72
- content_bytes = image.content
73
-
74
- else:
75
- log_error(f"Unsupported image type: {type(image)}")
76
- return None
77
-
78
- if using_filetype:
79
- kind = filetype.guess(content_bytes)
80
- if not kind:
81
- log_error("Unable to determine image type")
82
- return None
83
-
84
- img_type = kind.extension
85
- else:
86
- img_type = imghdr.what(None, h=content_bytes) # type: ignore
87
-
88
- if not img_type:
89
- log_error("Unable to determine image type")
90
- return None
91
-
92
- media_type = type_mapping.get(img_type)
93
- if not media_type:
94
- log_error(f"Unsupported image type: {img_type}")
95
- return None
96
-
97
- return {
98
- "type": "image",
99
- "source": {
100
- "type": "base64",
101
- "media_type": media_type,
102
- "data": base64.b64encode(content_bytes).decode("utf-8"), # type: ignore
103
- },
104
- }
105
-
106
- except Exception as e:
107
- log_error(f"Error processing image: {e}")
108
- return None
109
-
110
-
111
- def format_messages(messages: List[Message]) -> Tuple[List[Dict[str, str]], str]:
112
- """
113
- Process the list of messages and separate them into API messages and system messages.
114
-
115
- Args:
116
- messages (List[Message]): The list of messages to process.
117
-
118
- Returns:
119
- Tuple[List[Dict[str, str]], str]: A tuple containing the list of API messages and the concatenated system messages.
120
- """
121
-
122
- chat_messages: List[Dict[str, str]] = []
123
- system_messages: List[str] = []
124
-
125
- for message in messages:
126
- content = message.content or ""
127
- if message.role == "system":
128
- if content is not None:
129
- system_messages.append(content) # type: ignore
130
- continue
131
- elif message.role == "user":
132
- if isinstance(content, str):
133
- content = [{"type": "text", "text": content}]
134
-
135
- if message.images is not None:
136
- for image in message.images:
137
- image_content = _format_image_for_message(image)
138
- if image_content:
139
- content.append(image_content)
140
-
141
- if message.files is not None and len(message.files) > 0:
142
- log_warning("Files are not supported for AWS Bedrock Claude")
143
-
144
- if message.audio is not None and len(message.audio) > 0:
145
- log_warning("Audio is not supported for AWS Bedrock Claude")
146
-
147
- if message.videos is not None and len(message.videos) > 0:
148
- log_warning("Video is not supported for AWS Bedrock Claude")
149
-
150
- # Handle tool calls from history
151
- elif message.role == "assistant":
152
- content = []
153
-
154
- if isinstance(message.content, str) and message.content and len(message.content.strip()) > 0:
155
- content.append(TextBlock(text=message.content, type="text"))
156
-
157
- if message.tool_calls:
158
- for tool_call in message.tool_calls:
159
- content.append(
160
- ToolUseBlock(
161
- id=tool_call["id"],
162
- input=json.loads(tool_call["function"]["arguments"])
163
- if "arguments" in tool_call["function"]
164
- else {},
165
- name=tool_call["function"]["name"],
166
- type="tool_use",
167
- )
168
- )
169
- chat_messages.append({"role": ROLE_MAP[message.role], "content": content}) # type: ignore
170
- return chat_messages, " ".join(system_messages)
@@ -1,355 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: agno
3
- Version: 2.0.0rc2
4
- Summary: Agno: a lightweight library for building Multi-Agent Systems
5
- Author-email: Ashpreet Bedi <ashpreet@agno.com>
6
- Project-URL: homepage, https://agno.com
7
- Project-URL: documentation, https://docs.agno.com
8
- Keywords: agent,reasoning,llm,large-language-model,framework
9
- Classifier: Development Status :: 5 - Production/Stable
10
- Classifier: Intended Audience :: Developers
11
- Classifier: License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)
12
- Classifier: Programming Language :: Python :: 3
13
- Classifier: Programming Language :: Python :: 3.7
14
- Classifier: Programming Language :: Python :: 3.8
15
- Classifier: Programming Language :: Python :: 3.9
16
- Classifier: Programming Language :: Python :: 3.10
17
- Classifier: Programming Language :: Python :: 3.11
18
- Classifier: Programming Language :: Python :: 3.12
19
- Classifier: Operating System :: OS Independent
20
- Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
21
- Requires-Python: <4,>=3.7
22
- Description-Content-Type: text/markdown
23
- License-File: LICENSE
24
- Requires-Dist: docstring-parser
25
- Requires-Dist: gitpython
26
- Requires-Dist: httpx
27
- Requires-Dist: packaging
28
- Requires-Dist: pydantic-settings
29
- Requires-Dist: pydantic
30
- Requires-Dist: python-dotenv
31
- Requires-Dist: python-multipart
32
- Requires-Dist: pyyaml
33
- Requires-Dist: rich
34
- Requires-Dist: typer
35
- Requires-Dist: typing-extensions
36
- Provides-Extra: dev
37
- Requires-Dist: mypy; extra == "dev"
38
- Requires-Dist: pytest; extra == "dev"
39
- Requires-Dist: pytest-asyncio; extra == "dev"
40
- Requires-Dist: pytest-cov; extra == "dev"
41
- Requires-Dist: pytest-mock; extra == "dev"
42
- Requires-Dist: ruff; extra == "dev"
43
- Requires-Dist: timeout-decorator; extra == "dev"
44
- Requires-Dist: types-pyyaml; extra == "dev"
45
- Requires-Dist: types-aiofiles; extra == "dev"
46
- Requires-Dist: fastapi; extra == "dev"
47
- Requires-Dist: uvicorn; extra == "dev"
48
- Provides-Extra: os
49
- Requires-Dist: fastapi; extra == "os"
50
- Requires-Dist: uvicorn; extra == "os"
51
- Provides-Extra: integration-tests
52
- Requires-Dist: exa_py; extra == "integration-tests"
53
- Requires-Dist: ddgs; extra == "integration-tests"
54
- Requires-Dist: yfinance; extra == "integration-tests"
55
- Requires-Dist: sqlalchemy; extra == "integration-tests"
56
- Requires-Dist: Pillow; extra == "integration-tests"
57
- Provides-Extra: opentelemetry
58
- Requires-Dist: opentelemetry-sdk; extra == "opentelemetry"
59
- Requires-Dist: opentelemetry-exporter-otlp; extra == "opentelemetry"
60
- Provides-Extra: weave
61
- Requires-Dist: weave; extra == "weave"
62
- Provides-Extra: openlit
63
- Requires-Dist: openlit; extra == "openlit"
64
- Requires-Dist: agno[opentelemetry]; extra == "openlit"
65
- Provides-Extra: arize
66
- Requires-Dist: arize-phoenix; extra == "arize"
67
- Requires-Dist: agno[opentelemetry]; extra == "arize"
68
- Requires-Dist: opentelemetry-exporter-otlp-proto-grpc; extra == "arize"
69
- Requires-Dist: opentelemetry-distro; extra == "arize"
70
- Provides-Extra: langfuse
71
- Requires-Dist: langfuse; extra == "langfuse"
72
- Provides-Extra: aws-bedrock
73
- Requires-Dist: boto3; extra == "aws-bedrock"
74
- Requires-Dist: aioboto3; extra == "aws-bedrock"
75
- Provides-Extra: anthropic
76
- Requires-Dist: anthropic; extra == "anthropic"
77
- Provides-Extra: azure
78
- Requires-Dist: azure-ai-inference; extra == "azure"
79
- Requires-Dist: aiohttp; extra == "azure"
80
- Provides-Extra: cerebras
81
- Requires-Dist: cerebras-cloud-sdk; extra == "cerebras"
82
- Provides-Extra: cohere
83
- Requires-Dist: cohere; extra == "cohere"
84
- Provides-Extra: infinity
85
- Requires-Dist: infinity_client; extra == "infinity"
86
- Provides-Extra: google
87
- Requires-Dist: google-genai; extra == "google"
88
- Provides-Extra: groq
89
- Requires-Dist: groq; extra == "groq"
90
- Provides-Extra: ibm
91
- Requires-Dist: ibm-watsonx-ai; extra == "ibm"
92
- Provides-Extra: litellm
93
- Requires-Dist: litellm; extra == "litellm"
94
- Provides-Extra: lmstudio
95
- Requires-Dist: lmstudio; extra == "lmstudio"
96
- Provides-Extra: meta
97
- Requires-Dist: llama-api-client; extra == "meta"
98
- Provides-Extra: mistral
99
- Requires-Dist: mistralai; extra == "mistral"
100
- Provides-Extra: ollama
101
- Requires-Dist: ollama; extra == "ollama"
102
- Provides-Extra: openai
103
- Requires-Dist: openai; extra == "openai"
104
- Provides-Extra: portkey
105
- Requires-Dist: portkey-ai; extra == "portkey"
106
- Provides-Extra: agentql
107
- Requires-Dist: agentql; extra == "agentql"
108
- Provides-Extra: apify
109
- Requires-Dist: apify-client; extra == "apify"
110
- Provides-Extra: arxiv
111
- Requires-Dist: arxiv; extra == "arxiv"
112
- Provides-Extra: brave
113
- Requires-Dist: brave-search; extra == "brave"
114
- Provides-Extra: browserbase
115
- Requires-Dist: browserbase; extra == "browserbase"
116
- Requires-Dist: playwright; extra == "browserbase"
117
- Provides-Extra: cartesia
118
- Requires-Dist: cartesia; extra == "cartesia"
119
- Provides-Extra: confluence
120
- Requires-Dist: atlassian-python-api; extra == "confluence"
121
- Provides-Extra: ddg
122
- Requires-Dist: ddgs; extra == "ddg"
123
- Provides-Extra: duckdb
124
- Requires-Dist: duckdb; extra == "duckdb"
125
- Provides-Extra: elevenlabs
126
- Requires-Dist: elevenlabs; extra == "elevenlabs"
127
- Provides-Extra: evm
128
- Requires-Dist: web3; extra == "evm"
129
- Provides-Extra: exa
130
- Requires-Dist: exa_py; extra == "exa"
131
- Provides-Extra: fal
132
- Requires-Dist: fal_client; extra == "fal"
133
- Provides-Extra: firecrawl
134
- Requires-Dist: firecrawl-py; extra == "firecrawl"
135
- Provides-Extra: crawl4ai
136
- Requires-Dist: crawl4ai; extra == "crawl4ai"
137
- Provides-Extra: github
138
- Requires-Dist: PyGithub; extra == "github"
139
- Provides-Extra: gmail
140
- Requires-Dist: google-api-python-client; extra == "gmail"
141
- Requires-Dist: google-auth-httplib2; extra == "gmail"
142
- Requires-Dist: google-auth-oauthlib; extra == "gmail"
143
- Provides-Extra: google-bigquery
144
- Requires-Dist: google-cloud-bigquery; extra == "google-bigquery"
145
- Provides-Extra: googlemaps
146
- Requires-Dist: googlemaps; extra == "googlemaps"
147
- Requires-Dist: google-maps-places; extra == "googlemaps"
148
- Provides-Extra: matplotlib
149
- Requires-Dist: matplotlib; extra == "matplotlib"
150
- Provides-Extra: mcp
151
- Requires-Dist: mcp; extra == "mcp"
152
- Provides-Extra: mem0
153
- Requires-Dist: mem0ai; extra == "mem0"
154
- Provides-Extra: memori
155
- Requires-Dist: memorisdk; extra == "memori"
156
- Provides-Extra: newspaper
157
- Requires-Dist: newspaper4k; extra == "newspaper"
158
- Requires-Dist: lxml_html_clean; extra == "newspaper"
159
- Provides-Extra: opencv
160
- Requires-Dist: opencv-python; extra == "opencv"
161
- Provides-Extra: psycopg
162
- Requires-Dist: psycopg-binary; extra == "psycopg"
163
- Requires-Dist: psycopg; extra == "psycopg"
164
- Provides-Extra: todoist
165
- Requires-Dist: todoist-api-python; extra == "todoist"
166
- Provides-Extra: valyu
167
- Requires-Dist: valyu; extra == "valyu"
168
- Provides-Extra: webex
169
- Requires-Dist: webexpythonsdk; extra == "webex"
170
- Provides-Extra: yfinance
171
- Requires-Dist: yfinance; extra == "yfinance"
172
- Provides-Extra: youtube
173
- Requires-Dist: youtube_transcript_api; extra == "youtube"
174
- Provides-Extra: zep
175
- Requires-Dist: zep-cloud; extra == "zep"
176
- Provides-Extra: daytona
177
- Requires-Dist: daytona; extra == "daytona"
178
- Provides-Extra: oxylabs
179
- Requires-Dist: oxylabs; extra == "oxylabs"
180
- Provides-Extra: trafilatura
181
- Requires-Dist: trafilatura; extra == "trafilatura"
182
- Provides-Extra: neo4j
183
- Requires-Dist: neo4j; extra == "neo4j"
184
- Provides-Extra: sql
185
- Requires-Dist: sqlalchemy; extra == "sql"
186
- Provides-Extra: postgres
187
- Requires-Dist: psycopg-binary; extra == "postgres"
188
- Provides-Extra: sqlite
189
- Requires-Dist: sqlalchemy; extra == "sqlite"
190
- Provides-Extra: gcs
191
- Requires-Dist: google-cloud-storage; extra == "gcs"
192
- Provides-Extra: firestore
193
- Requires-Dist: google-cloud-firestore; extra == "firestore"
194
- Provides-Extra: redis
195
- Requires-Dist: redis; extra == "redis"
196
- Provides-Extra: pgvector
197
- Requires-Dist: pgvector; extra == "pgvector"
198
- Provides-Extra: chromadb
199
- Requires-Dist: chromadb; extra == "chromadb"
200
- Provides-Extra: lancedb
201
- Requires-Dist: lancedb>=0.24.0; extra == "lancedb"
202
- Requires-Dist: tantivy; extra == "lancedb"
203
- Provides-Extra: pylance
204
- Requires-Dist: pylance; extra == "pylance"
205
- Provides-Extra: qdrant
206
- Requires-Dist: qdrant-client; extra == "qdrant"
207
- Provides-Extra: couchbase
208
- Requires-Dist: couchbase; extra == "couchbase"
209
- Provides-Extra: cassandra
210
- Requires-Dist: cassio; extra == "cassandra"
211
- Provides-Extra: mongodb
212
- Requires-Dist: pymongo[srv]; extra == "mongodb"
213
- Provides-Extra: singlestore
214
- Requires-Dist: sqlalchemy; extra == "singlestore"
215
- Provides-Extra: weaviate
216
- Requires-Dist: weaviate-client; extra == "weaviate"
217
- Provides-Extra: milvusdb
218
- Requires-Dist: pymilvus>=2.5.10; extra == "milvusdb"
219
- Provides-Extra: clickhouse
220
- Requires-Dist: clickhouse-connect; extra == "clickhouse"
221
- Provides-Extra: pinecone
222
- Requires-Dist: pinecone==5.4.2; extra == "pinecone"
223
- Provides-Extra: surrealdb
224
- Requires-Dist: surrealdb>=1.0.4; extra == "surrealdb"
225
- Provides-Extra: upstash
226
- Requires-Dist: upstash-vector; extra == "upstash"
227
- Provides-Extra: pdf
228
- Requires-Dist: pypdf; extra == "pdf"
229
- Requires-Dist: rapidocr_onnxruntime; extra == "pdf"
230
- Provides-Extra: docx
231
- Requires-Dist: python-docx; extra == "docx"
232
- Provides-Extra: text
233
- Requires-Dist: aiofiles; extra == "text"
234
- Provides-Extra: csv
235
- Requires-Dist: aiofiles; extra == "csv"
236
- Provides-Extra: markdown
237
- Requires-Dist: unstructured; extra == "markdown"
238
- Requires-Dist: markdown; extra == "markdown"
239
- Requires-Dist: aiofiles; extra == "markdown"
240
- Provides-Extra: chonkie
241
- Requires-Dist: chonkie[st]; extra == "chonkie"
242
- Requires-Dist: chonkie; extra == "chonkie"
243
- Provides-Extra: agui
244
- Requires-Dist: ag-ui-protocol; extra == "agui"
245
- Provides-Extra: huggingface
246
- Requires-Dist: huggingface-hub; extra == "huggingface"
247
- Provides-Extra: performance
248
- Requires-Dist: memory_profiler; extra == "performance"
249
- Provides-Extra: cookbooks
250
- Requires-Dist: inquirer; extra == "cookbooks"
251
- Requires-Dist: email_validator; extra == "cookbooks"
252
- Provides-Extra: docker
253
- Requires-Dist: agno-infra[docker]; extra == "docker"
254
- Provides-Extra: aws
255
- Requires-Dist: agno-infra[aws]; extra == "aws"
256
- Requires-Dist: agno-infra[docker]; extra == "aws"
257
- Provides-Extra: infra
258
- Requires-Dist: agno-infra; extra == "infra"
259
- Provides-Extra: models
260
- Requires-Dist: agno[aws-bedrock]; extra == "models"
261
- Requires-Dist: agno[anthropic]; extra == "models"
262
- Requires-Dist: agno[azure]; extra == "models"
263
- Requires-Dist: agno[cerebras]; extra == "models"
264
- Requires-Dist: agno[cohere]; extra == "models"
265
- Requires-Dist: agno[infinity]; extra == "models"
266
- Requires-Dist: agno[google]; extra == "models"
267
- Requires-Dist: agno[groq]; extra == "models"
268
- Requires-Dist: agno[ibm]; extra == "models"
269
- Requires-Dist: agno[infinity]; extra == "models"
270
- Requires-Dist: agno[litellm]; extra == "models"
271
- Requires-Dist: agno[meta]; extra == "models"
272
- Requires-Dist: agno[mistral]; extra == "models"
273
- Requires-Dist: agno[ollama]; extra == "models"
274
- Requires-Dist: agno[openai]; extra == "models"
275
- Requires-Dist: agno[portkey]; extra == "models"
276
- Provides-Extra: tools
277
- Requires-Dist: agno[apify]; extra == "tools"
278
- Requires-Dist: agno[arxiv]; extra == "tools"
279
- Requires-Dist: agno[brave]; extra == "tools"
280
- Requires-Dist: agno[exa]; extra == "tools"
281
- Requires-Dist: agno[cartesia]; extra == "tools"
282
- Requires-Dist: agno[ddg]; extra == "tools"
283
- Requires-Dist: agno[duckdb]; extra == "tools"
284
- Requires-Dist: agno[newspaper]; extra == "tools"
285
- Requires-Dist: agno[youtube]; extra == "tools"
286
- Requires-Dist: agno[firecrawl]; extra == "tools"
287
- Requires-Dist: agno[crawl4ai]; extra == "tools"
288
- Requires-Dist: agno[github]; extra == "tools"
289
- Requires-Dist: agno[gmail]; extra == "tools"
290
- Requires-Dist: agno[googlemaps]; extra == "tools"
291
- Requires-Dist: agno[todoist]; extra == "tools"
292
- Requires-Dist: agno[matplotlib]; extra == "tools"
293
- Requires-Dist: agno[elevenlabs]; extra == "tools"
294
- Requires-Dist: agno[evm]; extra == "tools"
295
- Requires-Dist: agno[fal]; extra == "tools"
296
- Requires-Dist: agno[webex]; extra == "tools"
297
- Requires-Dist: agno[mcp]; extra == "tools"
298
- Requires-Dist: agno[browserbase]; extra == "tools"
299
- Requires-Dist: agno[agentql]; extra == "tools"
300
- Requires-Dist: agno[opencv]; extra == "tools"
301
- Requires-Dist: agno[valyu]; extra == "tools"
302
- Requires-Dist: agno[confluence]; extra == "tools"
303
- Requires-Dist: agno[oxylabs]; extra == "tools"
304
- Requires-Dist: agno[zep]; extra == "tools"
305
- Requires-Dist: agno[mem0]; extra == "tools"
306
- Requires-Dist: agno[memori]; extra == "tools"
307
- Requires-Dist: agno[google_bigquery]; extra == "tools"
308
- Requires-Dist: agno[psycopg]; extra == "tools"
309
- Requires-Dist: agno[trafilatura]; extra == "tools"
310
- Requires-Dist: agno[neo4j]; extra == "tools"
311
- Provides-Extra: storage
312
- Requires-Dist: agno[sql]; extra == "storage"
313
- Requires-Dist: agno[postgres]; extra == "storage"
314
- Requires-Dist: agno[sqlite]; extra == "storage"
315
- Requires-Dist: agno[gcs]; extra == "storage"
316
- Requires-Dist: agno[firestore]; extra == "storage"
317
- Requires-Dist: agno[redis]; extra == "storage"
318
- Provides-Extra: vectordbs
319
- Requires-Dist: agno[pgvector]; extra == "vectordbs"
320
- Requires-Dist: agno[chromadb]; extra == "vectordbs"
321
- Requires-Dist: agno[lancedb]; extra == "vectordbs"
322
- Requires-Dist: agno[qdrant]; extra == "vectordbs"
323
- Requires-Dist: agno[couchbase]; extra == "vectordbs"
324
- Requires-Dist: agno[cassandra]; extra == "vectordbs"
325
- Requires-Dist: agno[mongodb]; extra == "vectordbs"
326
- Requires-Dist: agno[singlestore]; extra == "vectordbs"
327
- Requires-Dist: agno[weaviate]; extra == "vectordbs"
328
- Requires-Dist: agno[milvusdb]; extra == "vectordbs"
329
- Requires-Dist: agno[clickhouse]; extra == "vectordbs"
330
- Requires-Dist: agno[pinecone]; extra == "vectordbs"
331
- Requires-Dist: agno[surrealdb]; extra == "vectordbs"
332
- Requires-Dist: agno[upstash]; extra == "vectordbs"
333
- Provides-Extra: knowledge
334
- Requires-Dist: agno[pdf]; extra == "knowledge"
335
- Requires-Dist: agno[docx]; extra == "knowledge"
336
- Requires-Dist: agno[text]; extra == "knowledge"
337
- Requires-Dist: agno[csv]; extra == "knowledge"
338
- Requires-Dist: agno[markdown]; extra == "knowledge"
339
- Requires-Dist: agno[chonkie]; extra == "knowledge"
340
- Provides-Extra: embedders
341
- Requires-Dist: agno[huggingface]; extra == "embedders"
342
- Provides-Extra: tests
343
- Requires-Dist: agno[dev]; extra == "tests"
344
- Requires-Dist: agno[models]; extra == "tests"
345
- Requires-Dist: agno[tools]; extra == "tests"
346
- Requires-Dist: agno[storage]; extra == "tests"
347
- Requires-Dist: agno[vectordbs]; extra == "tests"
348
- Requires-Dist: agno[knowledge]; extra == "tests"
349
- Requires-Dist: agno[embedders]; extra == "tests"
350
- Requires-Dist: agno[performance]; extra == "tests"
351
- Requires-Dist: agno[cookbooks]; extra == "tests"
352
- Requires-Dist: agno[agui]; extra == "tests"
353
- Requires-Dist: twine; extra == "tests"
354
- Requires-Dist: build; extra == "tests"
355
- Dynamic: license-file