agno 2.2.13__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (575) hide show
  1. agno/__init__.py +8 -0
  2. agno/agent/__init__.py +51 -0
  3. agno/agent/agent.py +10405 -0
  4. agno/api/__init__.py +0 -0
  5. agno/api/agent.py +28 -0
  6. agno/api/api.py +40 -0
  7. agno/api/evals.py +22 -0
  8. agno/api/os.py +17 -0
  9. agno/api/routes.py +13 -0
  10. agno/api/schemas/__init__.py +9 -0
  11. agno/api/schemas/agent.py +16 -0
  12. agno/api/schemas/evals.py +16 -0
  13. agno/api/schemas/os.py +14 -0
  14. agno/api/schemas/response.py +6 -0
  15. agno/api/schemas/team.py +16 -0
  16. agno/api/schemas/utils.py +21 -0
  17. agno/api/schemas/workflows.py +16 -0
  18. agno/api/settings.py +53 -0
  19. agno/api/team.py +30 -0
  20. agno/api/workflow.py +28 -0
  21. agno/cloud/aws/base.py +214 -0
  22. agno/cloud/aws/s3/__init__.py +2 -0
  23. agno/cloud/aws/s3/api_client.py +43 -0
  24. agno/cloud/aws/s3/bucket.py +195 -0
  25. agno/cloud/aws/s3/object.py +57 -0
  26. agno/culture/__init__.py +3 -0
  27. agno/culture/manager.py +956 -0
  28. agno/db/__init__.py +24 -0
  29. agno/db/async_postgres/__init__.py +3 -0
  30. agno/db/base.py +598 -0
  31. agno/db/dynamo/__init__.py +3 -0
  32. agno/db/dynamo/dynamo.py +2042 -0
  33. agno/db/dynamo/schemas.py +314 -0
  34. agno/db/dynamo/utils.py +743 -0
  35. agno/db/firestore/__init__.py +3 -0
  36. agno/db/firestore/firestore.py +1795 -0
  37. agno/db/firestore/schemas.py +140 -0
  38. agno/db/firestore/utils.py +376 -0
  39. agno/db/gcs_json/__init__.py +3 -0
  40. agno/db/gcs_json/gcs_json_db.py +1335 -0
  41. agno/db/gcs_json/utils.py +228 -0
  42. agno/db/in_memory/__init__.py +3 -0
  43. agno/db/in_memory/in_memory_db.py +1160 -0
  44. agno/db/in_memory/utils.py +230 -0
  45. agno/db/json/__init__.py +3 -0
  46. agno/db/json/json_db.py +1328 -0
  47. agno/db/json/utils.py +230 -0
  48. agno/db/migrations/__init__.py +0 -0
  49. agno/db/migrations/v1_to_v2.py +635 -0
  50. agno/db/mongo/__init__.py +17 -0
  51. agno/db/mongo/async_mongo.py +2026 -0
  52. agno/db/mongo/mongo.py +1982 -0
  53. agno/db/mongo/schemas.py +87 -0
  54. agno/db/mongo/utils.py +259 -0
  55. agno/db/mysql/__init__.py +3 -0
  56. agno/db/mysql/mysql.py +2308 -0
  57. agno/db/mysql/schemas.py +138 -0
  58. agno/db/mysql/utils.py +355 -0
  59. agno/db/postgres/__init__.py +4 -0
  60. agno/db/postgres/async_postgres.py +1927 -0
  61. agno/db/postgres/postgres.py +2260 -0
  62. agno/db/postgres/schemas.py +139 -0
  63. agno/db/postgres/utils.py +442 -0
  64. agno/db/redis/__init__.py +3 -0
  65. agno/db/redis/redis.py +1660 -0
  66. agno/db/redis/schemas.py +123 -0
  67. agno/db/redis/utils.py +346 -0
  68. agno/db/schemas/__init__.py +4 -0
  69. agno/db/schemas/culture.py +120 -0
  70. agno/db/schemas/evals.py +33 -0
  71. agno/db/schemas/knowledge.py +40 -0
  72. agno/db/schemas/memory.py +46 -0
  73. agno/db/schemas/metrics.py +0 -0
  74. agno/db/singlestore/__init__.py +3 -0
  75. agno/db/singlestore/schemas.py +130 -0
  76. agno/db/singlestore/singlestore.py +2272 -0
  77. agno/db/singlestore/utils.py +384 -0
  78. agno/db/sqlite/__init__.py +4 -0
  79. agno/db/sqlite/async_sqlite.py +2293 -0
  80. agno/db/sqlite/schemas.py +133 -0
  81. agno/db/sqlite/sqlite.py +2288 -0
  82. agno/db/sqlite/utils.py +431 -0
  83. agno/db/surrealdb/__init__.py +3 -0
  84. agno/db/surrealdb/metrics.py +292 -0
  85. agno/db/surrealdb/models.py +309 -0
  86. agno/db/surrealdb/queries.py +71 -0
  87. agno/db/surrealdb/surrealdb.py +1353 -0
  88. agno/db/surrealdb/utils.py +147 -0
  89. agno/db/utils.py +116 -0
  90. agno/debug.py +18 -0
  91. agno/eval/__init__.py +14 -0
  92. agno/eval/accuracy.py +834 -0
  93. agno/eval/performance.py +773 -0
  94. agno/eval/reliability.py +306 -0
  95. agno/eval/utils.py +119 -0
  96. agno/exceptions.py +161 -0
  97. agno/filters.py +354 -0
  98. agno/guardrails/__init__.py +6 -0
  99. agno/guardrails/base.py +19 -0
  100. agno/guardrails/openai.py +144 -0
  101. agno/guardrails/pii.py +94 -0
  102. agno/guardrails/prompt_injection.py +52 -0
  103. agno/integrations/__init__.py +0 -0
  104. agno/integrations/discord/__init__.py +3 -0
  105. agno/integrations/discord/client.py +203 -0
  106. agno/knowledge/__init__.py +5 -0
  107. agno/knowledge/chunking/__init__.py +0 -0
  108. agno/knowledge/chunking/agentic.py +79 -0
  109. agno/knowledge/chunking/document.py +91 -0
  110. agno/knowledge/chunking/fixed.py +57 -0
  111. agno/knowledge/chunking/markdown.py +151 -0
  112. agno/knowledge/chunking/recursive.py +63 -0
  113. agno/knowledge/chunking/row.py +39 -0
  114. agno/knowledge/chunking/semantic.py +86 -0
  115. agno/knowledge/chunking/strategy.py +165 -0
  116. agno/knowledge/content.py +74 -0
  117. agno/knowledge/document/__init__.py +5 -0
  118. agno/knowledge/document/base.py +58 -0
  119. agno/knowledge/embedder/__init__.py +5 -0
  120. agno/knowledge/embedder/aws_bedrock.py +343 -0
  121. agno/knowledge/embedder/azure_openai.py +210 -0
  122. agno/knowledge/embedder/base.py +23 -0
  123. agno/knowledge/embedder/cohere.py +323 -0
  124. agno/knowledge/embedder/fastembed.py +62 -0
  125. agno/knowledge/embedder/fireworks.py +13 -0
  126. agno/knowledge/embedder/google.py +258 -0
  127. agno/knowledge/embedder/huggingface.py +94 -0
  128. agno/knowledge/embedder/jina.py +182 -0
  129. agno/knowledge/embedder/langdb.py +22 -0
  130. agno/knowledge/embedder/mistral.py +206 -0
  131. agno/knowledge/embedder/nebius.py +13 -0
  132. agno/knowledge/embedder/ollama.py +154 -0
  133. agno/knowledge/embedder/openai.py +195 -0
  134. agno/knowledge/embedder/sentence_transformer.py +63 -0
  135. agno/knowledge/embedder/together.py +13 -0
  136. agno/knowledge/embedder/vllm.py +262 -0
  137. agno/knowledge/embedder/voyageai.py +165 -0
  138. agno/knowledge/knowledge.py +1988 -0
  139. agno/knowledge/reader/__init__.py +7 -0
  140. agno/knowledge/reader/arxiv_reader.py +81 -0
  141. agno/knowledge/reader/base.py +95 -0
  142. agno/knowledge/reader/csv_reader.py +166 -0
  143. agno/knowledge/reader/docx_reader.py +82 -0
  144. agno/knowledge/reader/field_labeled_csv_reader.py +292 -0
  145. agno/knowledge/reader/firecrawl_reader.py +201 -0
  146. agno/knowledge/reader/json_reader.py +87 -0
  147. agno/knowledge/reader/markdown_reader.py +137 -0
  148. agno/knowledge/reader/pdf_reader.py +431 -0
  149. agno/knowledge/reader/pptx_reader.py +101 -0
  150. agno/knowledge/reader/reader_factory.py +313 -0
  151. agno/knowledge/reader/s3_reader.py +89 -0
  152. agno/knowledge/reader/tavily_reader.py +194 -0
  153. agno/knowledge/reader/text_reader.py +115 -0
  154. agno/knowledge/reader/web_search_reader.py +372 -0
  155. agno/knowledge/reader/website_reader.py +455 -0
  156. agno/knowledge/reader/wikipedia_reader.py +59 -0
  157. agno/knowledge/reader/youtube_reader.py +78 -0
  158. agno/knowledge/remote_content/__init__.py +0 -0
  159. agno/knowledge/remote_content/remote_content.py +88 -0
  160. agno/knowledge/reranker/__init__.py +3 -0
  161. agno/knowledge/reranker/base.py +14 -0
  162. agno/knowledge/reranker/cohere.py +64 -0
  163. agno/knowledge/reranker/infinity.py +195 -0
  164. agno/knowledge/reranker/sentence_transformer.py +54 -0
  165. agno/knowledge/types.py +39 -0
  166. agno/knowledge/utils.py +189 -0
  167. agno/media.py +462 -0
  168. agno/memory/__init__.py +3 -0
  169. agno/memory/manager.py +1327 -0
  170. agno/models/__init__.py +0 -0
  171. agno/models/aimlapi/__init__.py +5 -0
  172. agno/models/aimlapi/aimlapi.py +45 -0
  173. agno/models/anthropic/__init__.py +5 -0
  174. agno/models/anthropic/claude.py +757 -0
  175. agno/models/aws/__init__.py +15 -0
  176. agno/models/aws/bedrock.py +701 -0
  177. agno/models/aws/claude.py +378 -0
  178. agno/models/azure/__init__.py +18 -0
  179. agno/models/azure/ai_foundry.py +485 -0
  180. agno/models/azure/openai_chat.py +131 -0
  181. agno/models/base.py +2175 -0
  182. agno/models/cerebras/__init__.py +12 -0
  183. agno/models/cerebras/cerebras.py +501 -0
  184. agno/models/cerebras/cerebras_openai.py +112 -0
  185. agno/models/cohere/__init__.py +5 -0
  186. agno/models/cohere/chat.py +389 -0
  187. agno/models/cometapi/__init__.py +5 -0
  188. agno/models/cometapi/cometapi.py +57 -0
  189. agno/models/dashscope/__init__.py +5 -0
  190. agno/models/dashscope/dashscope.py +91 -0
  191. agno/models/deepinfra/__init__.py +5 -0
  192. agno/models/deepinfra/deepinfra.py +28 -0
  193. agno/models/deepseek/__init__.py +5 -0
  194. agno/models/deepseek/deepseek.py +61 -0
  195. agno/models/defaults.py +1 -0
  196. agno/models/fireworks/__init__.py +5 -0
  197. agno/models/fireworks/fireworks.py +26 -0
  198. agno/models/google/__init__.py +5 -0
  199. agno/models/google/gemini.py +1085 -0
  200. agno/models/groq/__init__.py +5 -0
  201. agno/models/groq/groq.py +556 -0
  202. agno/models/huggingface/__init__.py +5 -0
  203. agno/models/huggingface/huggingface.py +491 -0
  204. agno/models/ibm/__init__.py +5 -0
  205. agno/models/ibm/watsonx.py +422 -0
  206. agno/models/internlm/__init__.py +3 -0
  207. agno/models/internlm/internlm.py +26 -0
  208. agno/models/langdb/__init__.py +1 -0
  209. agno/models/langdb/langdb.py +48 -0
  210. agno/models/litellm/__init__.py +14 -0
  211. agno/models/litellm/chat.py +468 -0
  212. agno/models/litellm/litellm_openai.py +25 -0
  213. agno/models/llama_cpp/__init__.py +5 -0
  214. agno/models/llama_cpp/llama_cpp.py +22 -0
  215. agno/models/lmstudio/__init__.py +5 -0
  216. agno/models/lmstudio/lmstudio.py +25 -0
  217. agno/models/message.py +434 -0
  218. agno/models/meta/__init__.py +12 -0
  219. agno/models/meta/llama.py +475 -0
  220. agno/models/meta/llama_openai.py +78 -0
  221. agno/models/metrics.py +120 -0
  222. agno/models/mistral/__init__.py +5 -0
  223. agno/models/mistral/mistral.py +432 -0
  224. agno/models/nebius/__init__.py +3 -0
  225. agno/models/nebius/nebius.py +54 -0
  226. agno/models/nexus/__init__.py +3 -0
  227. agno/models/nexus/nexus.py +22 -0
  228. agno/models/nvidia/__init__.py +5 -0
  229. agno/models/nvidia/nvidia.py +28 -0
  230. agno/models/ollama/__init__.py +5 -0
  231. agno/models/ollama/chat.py +441 -0
  232. agno/models/openai/__init__.py +9 -0
  233. agno/models/openai/chat.py +883 -0
  234. agno/models/openai/like.py +27 -0
  235. agno/models/openai/responses.py +1050 -0
  236. agno/models/openrouter/__init__.py +5 -0
  237. agno/models/openrouter/openrouter.py +66 -0
  238. agno/models/perplexity/__init__.py +5 -0
  239. agno/models/perplexity/perplexity.py +187 -0
  240. agno/models/portkey/__init__.py +3 -0
  241. agno/models/portkey/portkey.py +81 -0
  242. agno/models/requesty/__init__.py +5 -0
  243. agno/models/requesty/requesty.py +52 -0
  244. agno/models/response.py +199 -0
  245. agno/models/sambanova/__init__.py +5 -0
  246. agno/models/sambanova/sambanova.py +28 -0
  247. agno/models/siliconflow/__init__.py +5 -0
  248. agno/models/siliconflow/siliconflow.py +25 -0
  249. agno/models/together/__init__.py +5 -0
  250. agno/models/together/together.py +25 -0
  251. agno/models/utils.py +266 -0
  252. agno/models/vercel/__init__.py +3 -0
  253. agno/models/vercel/v0.py +26 -0
  254. agno/models/vertexai/__init__.py +0 -0
  255. agno/models/vertexai/claude.py +70 -0
  256. agno/models/vllm/__init__.py +3 -0
  257. agno/models/vllm/vllm.py +78 -0
  258. agno/models/xai/__init__.py +3 -0
  259. agno/models/xai/xai.py +113 -0
  260. agno/os/__init__.py +3 -0
  261. agno/os/app.py +876 -0
  262. agno/os/auth.py +57 -0
  263. agno/os/config.py +104 -0
  264. agno/os/interfaces/__init__.py +1 -0
  265. agno/os/interfaces/a2a/__init__.py +3 -0
  266. agno/os/interfaces/a2a/a2a.py +42 -0
  267. agno/os/interfaces/a2a/router.py +250 -0
  268. agno/os/interfaces/a2a/utils.py +924 -0
  269. agno/os/interfaces/agui/__init__.py +3 -0
  270. agno/os/interfaces/agui/agui.py +47 -0
  271. agno/os/interfaces/agui/router.py +144 -0
  272. agno/os/interfaces/agui/utils.py +534 -0
  273. agno/os/interfaces/base.py +25 -0
  274. agno/os/interfaces/slack/__init__.py +3 -0
  275. agno/os/interfaces/slack/router.py +148 -0
  276. agno/os/interfaces/slack/security.py +30 -0
  277. agno/os/interfaces/slack/slack.py +47 -0
  278. agno/os/interfaces/whatsapp/__init__.py +3 -0
  279. agno/os/interfaces/whatsapp/router.py +211 -0
  280. agno/os/interfaces/whatsapp/security.py +53 -0
  281. agno/os/interfaces/whatsapp/whatsapp.py +36 -0
  282. agno/os/mcp.py +292 -0
  283. agno/os/middleware/__init__.py +7 -0
  284. agno/os/middleware/jwt.py +233 -0
  285. agno/os/router.py +1763 -0
  286. agno/os/routers/__init__.py +3 -0
  287. agno/os/routers/evals/__init__.py +3 -0
  288. agno/os/routers/evals/evals.py +430 -0
  289. agno/os/routers/evals/schemas.py +142 -0
  290. agno/os/routers/evals/utils.py +162 -0
  291. agno/os/routers/health.py +31 -0
  292. agno/os/routers/home.py +52 -0
  293. agno/os/routers/knowledge/__init__.py +3 -0
  294. agno/os/routers/knowledge/knowledge.py +997 -0
  295. agno/os/routers/knowledge/schemas.py +178 -0
  296. agno/os/routers/memory/__init__.py +3 -0
  297. agno/os/routers/memory/memory.py +515 -0
  298. agno/os/routers/memory/schemas.py +62 -0
  299. agno/os/routers/metrics/__init__.py +3 -0
  300. agno/os/routers/metrics/metrics.py +190 -0
  301. agno/os/routers/metrics/schemas.py +47 -0
  302. agno/os/routers/session/__init__.py +3 -0
  303. agno/os/routers/session/session.py +997 -0
  304. agno/os/schema.py +1055 -0
  305. agno/os/settings.py +43 -0
  306. agno/os/utils.py +630 -0
  307. agno/py.typed +0 -0
  308. agno/reasoning/__init__.py +0 -0
  309. agno/reasoning/anthropic.py +80 -0
  310. agno/reasoning/azure_ai_foundry.py +67 -0
  311. agno/reasoning/deepseek.py +63 -0
  312. agno/reasoning/default.py +97 -0
  313. agno/reasoning/gemini.py +73 -0
  314. agno/reasoning/groq.py +71 -0
  315. agno/reasoning/helpers.py +63 -0
  316. agno/reasoning/ollama.py +67 -0
  317. agno/reasoning/openai.py +86 -0
  318. agno/reasoning/step.py +31 -0
  319. agno/reasoning/vertexai.py +76 -0
  320. agno/run/__init__.py +6 -0
  321. agno/run/agent.py +787 -0
  322. agno/run/base.py +229 -0
  323. agno/run/cancel.py +81 -0
  324. agno/run/messages.py +32 -0
  325. agno/run/team.py +753 -0
  326. agno/run/workflow.py +708 -0
  327. agno/session/__init__.py +10 -0
  328. agno/session/agent.py +295 -0
  329. agno/session/summary.py +265 -0
  330. agno/session/team.py +392 -0
  331. agno/session/workflow.py +205 -0
  332. agno/team/__init__.py +37 -0
  333. agno/team/team.py +8793 -0
  334. agno/tools/__init__.py +10 -0
  335. agno/tools/agentql.py +120 -0
  336. agno/tools/airflow.py +69 -0
  337. agno/tools/api.py +122 -0
  338. agno/tools/apify.py +314 -0
  339. agno/tools/arxiv.py +127 -0
  340. agno/tools/aws_lambda.py +53 -0
  341. agno/tools/aws_ses.py +66 -0
  342. agno/tools/baidusearch.py +89 -0
  343. agno/tools/bitbucket.py +292 -0
  344. agno/tools/brandfetch.py +213 -0
  345. agno/tools/bravesearch.py +106 -0
  346. agno/tools/brightdata.py +367 -0
  347. agno/tools/browserbase.py +209 -0
  348. agno/tools/calcom.py +255 -0
  349. agno/tools/calculator.py +151 -0
  350. agno/tools/cartesia.py +187 -0
  351. agno/tools/clickup.py +244 -0
  352. agno/tools/confluence.py +240 -0
  353. agno/tools/crawl4ai.py +158 -0
  354. agno/tools/csv_toolkit.py +185 -0
  355. agno/tools/dalle.py +110 -0
  356. agno/tools/daytona.py +475 -0
  357. agno/tools/decorator.py +262 -0
  358. agno/tools/desi_vocal.py +108 -0
  359. agno/tools/discord.py +161 -0
  360. agno/tools/docker.py +716 -0
  361. agno/tools/duckdb.py +379 -0
  362. agno/tools/duckduckgo.py +91 -0
  363. agno/tools/e2b.py +703 -0
  364. agno/tools/eleven_labs.py +196 -0
  365. agno/tools/email.py +67 -0
  366. agno/tools/evm.py +129 -0
  367. agno/tools/exa.py +396 -0
  368. agno/tools/fal.py +127 -0
  369. agno/tools/file.py +240 -0
  370. agno/tools/file_generation.py +350 -0
  371. agno/tools/financial_datasets.py +288 -0
  372. agno/tools/firecrawl.py +143 -0
  373. agno/tools/function.py +1187 -0
  374. agno/tools/giphy.py +93 -0
  375. agno/tools/github.py +1760 -0
  376. agno/tools/gmail.py +922 -0
  377. agno/tools/google_bigquery.py +117 -0
  378. agno/tools/google_drive.py +270 -0
  379. agno/tools/google_maps.py +253 -0
  380. agno/tools/googlecalendar.py +674 -0
  381. agno/tools/googlesearch.py +98 -0
  382. agno/tools/googlesheets.py +377 -0
  383. agno/tools/hackernews.py +77 -0
  384. agno/tools/jina.py +101 -0
  385. agno/tools/jira.py +170 -0
  386. agno/tools/knowledge.py +218 -0
  387. agno/tools/linear.py +426 -0
  388. agno/tools/linkup.py +58 -0
  389. agno/tools/local_file_system.py +90 -0
  390. agno/tools/lumalab.py +183 -0
  391. agno/tools/mcp/__init__.py +10 -0
  392. agno/tools/mcp/mcp.py +331 -0
  393. agno/tools/mcp/multi_mcp.py +347 -0
  394. agno/tools/mcp/params.py +24 -0
  395. agno/tools/mcp_toolbox.py +284 -0
  396. agno/tools/mem0.py +193 -0
  397. agno/tools/memori.py +339 -0
  398. agno/tools/memory.py +419 -0
  399. agno/tools/mlx_transcribe.py +139 -0
  400. agno/tools/models/__init__.py +0 -0
  401. agno/tools/models/azure_openai.py +190 -0
  402. agno/tools/models/gemini.py +203 -0
  403. agno/tools/models/groq.py +158 -0
  404. agno/tools/models/morph.py +186 -0
  405. agno/tools/models/nebius.py +124 -0
  406. agno/tools/models_labs.py +195 -0
  407. agno/tools/moviepy_video.py +349 -0
  408. agno/tools/neo4j.py +134 -0
  409. agno/tools/newspaper.py +46 -0
  410. agno/tools/newspaper4k.py +93 -0
  411. agno/tools/notion.py +204 -0
  412. agno/tools/openai.py +202 -0
  413. agno/tools/openbb.py +160 -0
  414. agno/tools/opencv.py +321 -0
  415. agno/tools/openweather.py +233 -0
  416. agno/tools/oxylabs.py +385 -0
  417. agno/tools/pandas.py +102 -0
  418. agno/tools/parallel.py +314 -0
  419. agno/tools/postgres.py +257 -0
  420. agno/tools/pubmed.py +188 -0
  421. agno/tools/python.py +205 -0
  422. agno/tools/reasoning.py +283 -0
  423. agno/tools/reddit.py +467 -0
  424. agno/tools/replicate.py +117 -0
  425. agno/tools/resend.py +62 -0
  426. agno/tools/scrapegraph.py +222 -0
  427. agno/tools/searxng.py +152 -0
  428. agno/tools/serpapi.py +116 -0
  429. agno/tools/serper.py +255 -0
  430. agno/tools/shell.py +53 -0
  431. agno/tools/slack.py +136 -0
  432. agno/tools/sleep.py +20 -0
  433. agno/tools/spider.py +116 -0
  434. agno/tools/sql.py +154 -0
  435. agno/tools/streamlit/__init__.py +0 -0
  436. agno/tools/streamlit/components.py +113 -0
  437. agno/tools/tavily.py +254 -0
  438. agno/tools/telegram.py +48 -0
  439. agno/tools/todoist.py +218 -0
  440. agno/tools/tool_registry.py +1 -0
  441. agno/tools/toolkit.py +146 -0
  442. agno/tools/trafilatura.py +388 -0
  443. agno/tools/trello.py +274 -0
  444. agno/tools/twilio.py +186 -0
  445. agno/tools/user_control_flow.py +78 -0
  446. agno/tools/valyu.py +228 -0
  447. agno/tools/visualization.py +467 -0
  448. agno/tools/webbrowser.py +28 -0
  449. agno/tools/webex.py +76 -0
  450. agno/tools/website.py +54 -0
  451. agno/tools/webtools.py +45 -0
  452. agno/tools/whatsapp.py +286 -0
  453. agno/tools/wikipedia.py +63 -0
  454. agno/tools/workflow.py +278 -0
  455. agno/tools/x.py +335 -0
  456. agno/tools/yfinance.py +257 -0
  457. agno/tools/youtube.py +184 -0
  458. agno/tools/zendesk.py +82 -0
  459. agno/tools/zep.py +454 -0
  460. agno/tools/zoom.py +382 -0
  461. agno/utils/__init__.py +0 -0
  462. agno/utils/agent.py +820 -0
  463. agno/utils/audio.py +49 -0
  464. agno/utils/certs.py +27 -0
  465. agno/utils/code_execution.py +11 -0
  466. agno/utils/common.py +132 -0
  467. agno/utils/dttm.py +13 -0
  468. agno/utils/enum.py +22 -0
  469. agno/utils/env.py +11 -0
  470. agno/utils/events.py +696 -0
  471. agno/utils/format_str.py +16 -0
  472. agno/utils/functions.py +166 -0
  473. agno/utils/gemini.py +426 -0
  474. agno/utils/hooks.py +57 -0
  475. agno/utils/http.py +74 -0
  476. agno/utils/json_schema.py +234 -0
  477. agno/utils/knowledge.py +36 -0
  478. agno/utils/location.py +19 -0
  479. agno/utils/log.py +255 -0
  480. agno/utils/mcp.py +214 -0
  481. agno/utils/media.py +352 -0
  482. agno/utils/merge_dict.py +41 -0
  483. agno/utils/message.py +118 -0
  484. agno/utils/models/__init__.py +0 -0
  485. agno/utils/models/ai_foundry.py +43 -0
  486. agno/utils/models/claude.py +358 -0
  487. agno/utils/models/cohere.py +87 -0
  488. agno/utils/models/llama.py +78 -0
  489. agno/utils/models/mistral.py +98 -0
  490. agno/utils/models/openai_responses.py +140 -0
  491. agno/utils/models/schema_utils.py +153 -0
  492. agno/utils/models/watsonx.py +41 -0
  493. agno/utils/openai.py +257 -0
  494. agno/utils/pickle.py +32 -0
  495. agno/utils/pprint.py +178 -0
  496. agno/utils/print_response/__init__.py +0 -0
  497. agno/utils/print_response/agent.py +842 -0
  498. agno/utils/print_response/team.py +1724 -0
  499. agno/utils/print_response/workflow.py +1668 -0
  500. agno/utils/prompts.py +111 -0
  501. agno/utils/reasoning.py +108 -0
  502. agno/utils/response.py +163 -0
  503. agno/utils/response_iterator.py +17 -0
  504. agno/utils/safe_formatter.py +24 -0
  505. agno/utils/serialize.py +32 -0
  506. agno/utils/shell.py +22 -0
  507. agno/utils/streamlit.py +487 -0
  508. agno/utils/string.py +231 -0
  509. agno/utils/team.py +139 -0
  510. agno/utils/timer.py +41 -0
  511. agno/utils/tools.py +102 -0
  512. agno/utils/web.py +23 -0
  513. agno/utils/whatsapp.py +305 -0
  514. agno/utils/yaml_io.py +25 -0
  515. agno/vectordb/__init__.py +3 -0
  516. agno/vectordb/base.py +127 -0
  517. agno/vectordb/cassandra/__init__.py +5 -0
  518. agno/vectordb/cassandra/cassandra.py +501 -0
  519. agno/vectordb/cassandra/extra_param_mixin.py +11 -0
  520. agno/vectordb/cassandra/index.py +13 -0
  521. agno/vectordb/chroma/__init__.py +5 -0
  522. agno/vectordb/chroma/chromadb.py +929 -0
  523. agno/vectordb/clickhouse/__init__.py +9 -0
  524. agno/vectordb/clickhouse/clickhousedb.py +835 -0
  525. agno/vectordb/clickhouse/index.py +9 -0
  526. agno/vectordb/couchbase/__init__.py +3 -0
  527. agno/vectordb/couchbase/couchbase.py +1442 -0
  528. agno/vectordb/distance.py +7 -0
  529. agno/vectordb/lancedb/__init__.py +6 -0
  530. agno/vectordb/lancedb/lance_db.py +995 -0
  531. agno/vectordb/langchaindb/__init__.py +5 -0
  532. agno/vectordb/langchaindb/langchaindb.py +163 -0
  533. agno/vectordb/lightrag/__init__.py +5 -0
  534. agno/vectordb/lightrag/lightrag.py +388 -0
  535. agno/vectordb/llamaindex/__init__.py +3 -0
  536. agno/vectordb/llamaindex/llamaindexdb.py +166 -0
  537. agno/vectordb/milvus/__init__.py +4 -0
  538. agno/vectordb/milvus/milvus.py +1182 -0
  539. agno/vectordb/mongodb/__init__.py +9 -0
  540. agno/vectordb/mongodb/mongodb.py +1417 -0
  541. agno/vectordb/pgvector/__init__.py +12 -0
  542. agno/vectordb/pgvector/index.py +23 -0
  543. agno/vectordb/pgvector/pgvector.py +1462 -0
  544. agno/vectordb/pineconedb/__init__.py +5 -0
  545. agno/vectordb/pineconedb/pineconedb.py +747 -0
  546. agno/vectordb/qdrant/__init__.py +5 -0
  547. agno/vectordb/qdrant/qdrant.py +1134 -0
  548. agno/vectordb/redis/__init__.py +9 -0
  549. agno/vectordb/redis/redisdb.py +694 -0
  550. agno/vectordb/search.py +7 -0
  551. agno/vectordb/singlestore/__init__.py +10 -0
  552. agno/vectordb/singlestore/index.py +41 -0
  553. agno/vectordb/singlestore/singlestore.py +763 -0
  554. agno/vectordb/surrealdb/__init__.py +3 -0
  555. agno/vectordb/surrealdb/surrealdb.py +699 -0
  556. agno/vectordb/upstashdb/__init__.py +5 -0
  557. agno/vectordb/upstashdb/upstashdb.py +718 -0
  558. agno/vectordb/weaviate/__init__.py +8 -0
  559. agno/vectordb/weaviate/index.py +15 -0
  560. agno/vectordb/weaviate/weaviate.py +1005 -0
  561. agno/workflow/__init__.py +23 -0
  562. agno/workflow/agent.py +299 -0
  563. agno/workflow/condition.py +738 -0
  564. agno/workflow/loop.py +735 -0
  565. agno/workflow/parallel.py +824 -0
  566. agno/workflow/router.py +702 -0
  567. agno/workflow/step.py +1432 -0
  568. agno/workflow/steps.py +592 -0
  569. agno/workflow/types.py +520 -0
  570. agno/workflow/workflow.py +4321 -0
  571. agno-2.2.13.dist-info/METADATA +614 -0
  572. agno-2.2.13.dist-info/RECORD +575 -0
  573. agno-2.2.13.dist-info/WHEEL +5 -0
  574. agno-2.2.13.dist-info/licenses/LICENSE +201 -0
  575. agno-2.2.13.dist-info/top_level.txt +1 -0
@@ -0,0 +1,378 @@
1
+ from dataclasses import dataclass
2
+ from os import getenv
3
+ from typing import Any, AsyncIterator, Dict, Iterator, List, Optional, Type, Union
4
+
5
+ from pydantic import BaseModel
6
+
7
+ from agno.exceptions import ModelProviderError, ModelRateLimitError
8
+ from agno.models.anthropic import Claude as AnthropicClaude
9
+ from agno.models.message import Message
10
+ from agno.models.response import ModelResponse
11
+ from agno.run.agent import RunOutput
12
+ from agno.utils.log import log_debug, log_error, log_warning
13
+ from agno.utils.models.claude import format_messages
14
+
15
+ try:
16
+ from anthropic import AnthropicBedrock, APIConnectionError, APIStatusError, AsyncAnthropicBedrock, RateLimitError
17
+ except ImportError:
18
+ raise ImportError("`anthropic[bedrock]` not installed. Please install using `pip install anthropic[bedrock]`")
19
+
20
+ try:
21
+ from boto3.session import Session
22
+ except ImportError:
23
+ raise ImportError("`boto3` not installed. Please install using `pip install boto3`")
24
+
25
+
26
+ @dataclass
27
+ class Claude(AnthropicClaude):
28
+ """
29
+ AWS Bedrock Claude model.
30
+
31
+ For more information, see: https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters-anthropic.html
32
+ """
33
+
34
+ id: str = "anthropic.claude-3-5-sonnet-20240620-v1:0"
35
+ name: str = "AwsBedrockAnthropicClaude"
36
+ provider: str = "AwsBedrock"
37
+
38
+ aws_access_key: Optional[str] = None
39
+ aws_secret_key: Optional[str] = None
40
+ aws_region: Optional[str] = None
41
+ session: Optional[Session] = None
42
+
43
+ # -*- Request parameters
44
+ max_tokens: int = 4096
45
+ temperature: Optional[float] = None
46
+ top_p: Optional[float] = None
47
+ top_k: Optional[int] = None
48
+ stop_sequences: Optional[List[str]] = None
49
+
50
+ # -*- Request parameters
51
+ request_params: Optional[Dict[str, Any]] = None
52
+ # -*- Client parameters
53
+ client_params: Optional[Dict[str, Any]] = None
54
+
55
+ def to_dict(self) -> Dict[str, Any]:
56
+ """
57
+ Convert the model to a dictionary.
58
+
59
+ Returns:
60
+ Dict[str, Any]: The dictionary representation of the model.
61
+ """
62
+ _dict = super().to_dict()
63
+ _dict["max_tokens"] = self.max_tokens
64
+ _dict["temperature"] = self.temperature
65
+ _dict["top_p"] = self.top_p
66
+ _dict["top_k"] = self.top_k
67
+ _dict["stop_sequences"] = self.stop_sequences
68
+ return _dict
69
+
70
+ client: Optional[AnthropicBedrock] = None # type: ignore
71
+ async_client: Optional[AsyncAnthropicBedrock] = None # type: ignore
72
+
73
+ def get_client(self):
74
+ """
75
+ Get the Bedrock client.
76
+
77
+ Returns:
78
+ AnthropicBedrock: The Bedrock client.
79
+ """
80
+ if self.client is not None and not self.client.is_closed():
81
+ return self.client
82
+
83
+ if self.session:
84
+ credentials = self.session.get_credentials()
85
+ client_params = {
86
+ "aws_access_key": credentials.access_key,
87
+ "aws_secret_key": credentials.secret_key,
88
+ "aws_session_token": credentials.token,
89
+ "aws_region": self.session.region_name,
90
+ }
91
+ else:
92
+ self.aws_access_key = self.aws_access_key or getenv("AWS_ACCESS_KEY")
93
+ self.aws_secret_key = self.aws_secret_key or getenv("AWS_SECRET_KEY")
94
+ self.aws_region = self.aws_region or getenv("AWS_REGION")
95
+
96
+ client_params = {
97
+ "aws_secret_key": self.aws_secret_key,
98
+ "aws_access_key": self.aws_access_key,
99
+ "aws_region": self.aws_region,
100
+ }
101
+
102
+ if self.client_params:
103
+ client_params.update(self.client_params)
104
+
105
+ self.client = AnthropicBedrock(
106
+ **client_params, # type: ignore
107
+ )
108
+ return self.client
109
+
110
+ def get_async_client(self):
111
+ """
112
+ Get the Bedrock async client.
113
+
114
+ Returns:
115
+ AsyncAnthropicBedrock: The Bedrock async client.
116
+ """
117
+ if self.async_client is not None:
118
+ return self.async_client
119
+
120
+ if self.session:
121
+ credentials = self.session.get_credentials()
122
+ client_params = {
123
+ "aws_access_key": credentials.access_key,
124
+ "aws_secret_key": credentials.secret_key,
125
+ "aws_session_token": credentials.token,
126
+ "aws_region": self.session.region_name,
127
+ }
128
+ else:
129
+ client_params = {
130
+ "aws_secret_key": self.aws_secret_key,
131
+ "aws_access_key": self.aws_access_key,
132
+ "aws_region": self.aws_region,
133
+ }
134
+
135
+ if self.client_params:
136
+ client_params.update(self.client_params)
137
+
138
+ self.async_client = AsyncAnthropicBedrock(
139
+ **client_params, # type: ignore
140
+ )
141
+ return self.async_client
142
+
143
+ def get_request_params(self) -> Dict[str, Any]:
144
+ """
145
+ Generate keyword arguments for API requests.
146
+
147
+ Returns:
148
+ Dict[str, Any]: The keyword arguments for API requests.
149
+ """
150
+ _request_params: Dict[str, Any] = {}
151
+ if self.max_tokens:
152
+ _request_params["max_tokens"] = self.max_tokens
153
+ if self.temperature:
154
+ _request_params["temperature"] = self.temperature
155
+ if self.stop_sequences:
156
+ _request_params["stop_sequences"] = self.stop_sequences
157
+ if self.top_p:
158
+ _request_params["top_p"] = self.top_p
159
+ if self.top_k:
160
+ _request_params["top_k"] = self.top_k
161
+ if self.request_params:
162
+ _request_params.update(self.request_params)
163
+
164
+ if _request_params:
165
+ log_debug(f"Calling {self.provider} with request parameters: {_request_params}", log_level=2)
166
+ return _request_params
167
+
168
+ def invoke(
169
+ self,
170
+ messages: List[Message],
171
+ assistant_message: Message,
172
+ response_format: Optional[Union[Dict, Type[BaseModel]]] = None,
173
+ tools: Optional[List[Dict[str, Any]]] = None,
174
+ tool_choice: Optional[Union[str, Dict[str, Any]]] = None,
175
+ run_response: Optional[RunOutput] = None,
176
+ ) -> ModelResponse:
177
+ """
178
+ Send a request to the Anthropic API to generate a response.
179
+ """
180
+
181
+ try:
182
+ chat_messages, system_message = format_messages(messages)
183
+ request_kwargs = self._prepare_request_kwargs(system_message, tools)
184
+
185
+ if run_response and run_response.metrics:
186
+ run_response.metrics.set_time_to_first_token()
187
+
188
+ assistant_message.metrics.start_timer()
189
+ response = self.get_client().messages.create(
190
+ model=self.id,
191
+ messages=chat_messages, # type: ignore
192
+ **request_kwargs,
193
+ )
194
+ assistant_message.metrics.stop_timer()
195
+
196
+ model_response = self._parse_provider_response(response, response_format=response_format)
197
+
198
+ return model_response
199
+
200
+ except APIConnectionError as e:
201
+ log_error(f"Connection error while calling Claude API: {str(e)}")
202
+ raise ModelProviderError(message=e.message, model_name=self.name, model_id=self.id) from e
203
+ except RateLimitError as e:
204
+ log_warning(f"Rate limit exceeded: {str(e)}")
205
+ raise ModelRateLimitError(message=e.message, model_name=self.name, model_id=self.id) from e
206
+ except APIStatusError as e:
207
+ log_error(f"Claude API error (status {e.status_code}): {str(e)}")
208
+ raise ModelProviderError(
209
+ message=e.message, status_code=e.status_code, model_name=self.name, model_id=self.id
210
+ ) from e
211
+ except Exception as e:
212
+ log_error(f"Unexpected error calling Claude API: {str(e)}")
213
+ raise ModelProviderError(message=str(e), model_name=self.name, model_id=self.id) from e
214
+
215
+ def invoke_stream(
216
+ self,
217
+ messages: List[Message],
218
+ assistant_message: Message,
219
+ response_format: Optional[Union[Dict, Type[BaseModel]]] = None,
220
+ tools: Optional[List[Dict[str, Any]]] = None,
221
+ tool_choice: Optional[Union[str, Dict[str, Any]]] = None,
222
+ run_response: Optional[RunOutput] = None,
223
+ ) -> Iterator[ModelResponse]:
224
+ """
225
+ Stream a response from the Anthropic API.
226
+
227
+ Args:
228
+ messages (List[Message]): A list of messages to send to the model.
229
+
230
+ Returns:
231
+ Any: The streamed response from the model.
232
+
233
+ Raises:
234
+ APIConnectionError: If there are network connectivity issues
235
+ RateLimitError: If the API rate limit is exceeded
236
+ APIStatusError: For other API-related errors
237
+ """
238
+
239
+ chat_messages, system_message = format_messages(messages)
240
+ request_kwargs = self._prepare_request_kwargs(system_message, tools)
241
+
242
+ try:
243
+ if run_response and run_response.metrics:
244
+ run_response.metrics.set_time_to_first_token()
245
+
246
+ assistant_message.metrics.start_timer()
247
+
248
+ with self.get_client().messages.stream(
249
+ model=self.id,
250
+ messages=chat_messages, # type: ignore
251
+ **request_kwargs,
252
+ ) as stream:
253
+ for chunk in stream:
254
+ yield self._parse_provider_response_delta(chunk)
255
+
256
+ assistant_message.metrics.stop_timer()
257
+
258
+ except APIConnectionError as e:
259
+ log_error(f"Connection error while calling Claude API: {str(e)}")
260
+ raise ModelProviderError(message=e.message, model_name=self.name, model_id=self.id) from e
261
+ except RateLimitError as e:
262
+ log_warning(f"Rate limit exceeded: {str(e)}")
263
+ raise ModelRateLimitError(message=e.message, model_name=self.name, model_id=self.id) from e
264
+ except APIStatusError as e:
265
+ log_error(f"Claude API error (status {e.status_code}): {str(e)}")
266
+ raise ModelProviderError(
267
+ message=e.message, status_code=e.status_code, model_name=self.name, model_id=self.id
268
+ ) from e
269
+ except Exception as e:
270
+ log_error(f"Unexpected error calling Claude API: {str(e)}")
271
+ raise ModelProviderError(message=str(e), model_name=self.name, model_id=self.id) from e
272
+
273
+ async def ainvoke(
274
+ self,
275
+ messages: List[Message],
276
+ assistant_message: Message,
277
+ response_format: Optional[Union[Dict, Type[BaseModel]]] = None,
278
+ tools: Optional[List[Dict[str, Any]]] = None,
279
+ tool_choice: Optional[Union[str, Dict[str, Any]]] = None,
280
+ run_response: Optional[RunOutput] = None,
281
+ ) -> ModelResponse:
282
+ """
283
+ Send an asynchronous request to the Anthropic API to generate a response.
284
+ """
285
+
286
+ try:
287
+ chat_messages, system_message = format_messages(messages)
288
+ request_kwargs = self._prepare_request_kwargs(system_message, tools)
289
+
290
+ if run_response and run_response.metrics:
291
+ run_response.metrics.set_time_to_first_token()
292
+
293
+ assistant_message.metrics.start_timer()
294
+
295
+ response = await self.get_async_client().messages.create(
296
+ model=self.id,
297
+ messages=chat_messages, # type: ignore
298
+ **request_kwargs,
299
+ )
300
+
301
+ assistant_message.metrics.stop_timer()
302
+
303
+ model_response = self._parse_provider_response(response, response_format=response_format)
304
+
305
+ return model_response
306
+
307
+ except APIConnectionError as e:
308
+ log_error(f"Connection error while calling Claude API: {str(e)}")
309
+ raise ModelProviderError(message=e.message, model_name=self.name, model_id=self.id) from e
310
+ except RateLimitError as e:
311
+ log_warning(f"Rate limit exceeded: {str(e)}")
312
+ raise ModelRateLimitError(message=e.message, model_name=self.name, model_id=self.id) from e
313
+ except APIStatusError as e:
314
+ log_error(f"Claude API error (status {e.status_code}): {str(e)}")
315
+ raise ModelProviderError(
316
+ message=e.message, status_code=e.status_code, model_name=self.name, model_id=self.id
317
+ ) from e
318
+ except Exception as e:
319
+ log_error(f"Unexpected error calling Claude API: {str(e)}")
320
+ raise ModelProviderError(message=str(e), model_name=self.name, model_id=self.id) from e
321
+
322
+ async def ainvoke_stream(
323
+ self,
324
+ messages: List[Message],
325
+ assistant_message: Message,
326
+ response_format: Optional[Union[Dict, Type[BaseModel]]] = None,
327
+ tools: Optional[List[Dict[str, Any]]] = None,
328
+ tool_choice: Optional[Union[str, Dict[str, Any]]] = None,
329
+ run_response: Optional[RunOutput] = None,
330
+ ) -> AsyncIterator[ModelResponse]:
331
+ """
332
+ Stream an asynchronous response from the Anthropic API.
333
+
334
+ Args:
335
+ messages (List[Message]): A list of messages to send to the model.
336
+
337
+ Returns:
338
+ Any: The streamed response from the model.
339
+
340
+ Raises:
341
+ APIConnectionError: If there are network connectivity issues
342
+ RateLimitError: If the API rate limit is exceeded
343
+ APIStatusError: For other API-related errors
344
+ """
345
+
346
+ try:
347
+ chat_messages, system_message = format_messages(messages)
348
+ request_kwargs = self._prepare_request_kwargs(system_message, tools)
349
+
350
+ if run_response and run_response.metrics:
351
+ run_response.metrics.set_time_to_first_token()
352
+
353
+ assistant_message.metrics.start_timer()
354
+
355
+ async with self.get_async_client().messages.stream(
356
+ model=self.id,
357
+ messages=chat_messages, # type: ignore
358
+ **request_kwargs,
359
+ ) as stream:
360
+ async for chunk in stream:
361
+ yield self._parse_provider_response_delta(chunk)
362
+
363
+ assistant_message.metrics.stop_timer()
364
+
365
+ except APIConnectionError as e:
366
+ log_error(f"Connection error while calling Claude API: {str(e)}")
367
+ raise ModelProviderError(message=e.message, model_name=self.name, model_id=self.id) from e
368
+ except RateLimitError as e:
369
+ log_warning(f"Rate limit exceeded: {str(e)}")
370
+ raise ModelRateLimitError(message=e.message, model_name=self.name, model_id=self.id) from e
371
+ except APIStatusError as e:
372
+ log_error(f"Claude API error (status {e.status_code}): {str(e)}")
373
+ raise ModelProviderError(
374
+ message=e.message, status_code=e.status_code, model_name=self.name, model_id=self.id
375
+ ) from e
376
+ except Exception as e:
377
+ log_error(f"Unexpected error calling Claude API: {str(e)}")
378
+ raise ModelProviderError(message=str(e), model_name=self.name, model_id=self.id) from e
@@ -0,0 +1,18 @@
1
+ try:
2
+ from agno.models.azure.ai_foundry import AzureAIFoundry
3
+ except ImportError:
4
+
5
+ class AzureAIFoundry: # type: ignore
6
+ def __init__(self, *args, **kwargs):
7
+ raise ImportError(
8
+ "`azure-ai-inference` not installed. Please install it via `pip install azure-ai-inference aiohttp`"
9
+ )
10
+
11
+
12
+ try:
13
+ from agno.models.azure.openai_chat import AzureOpenAI
14
+ except ImportError:
15
+
16
+ class AzureOpenAI: # type: ignore
17
+ def __init__(self, *args, **kwargs):
18
+ raise ImportError("`openai` not installed. Please install it via `pip install openai`")