agno 2.3.3__tar.gz → 2.3.4__tar.gz

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 (591) hide show
  1. {agno-2.3.3 → agno-2.3.4}/PKG-INFO +1 -1
  2. {agno-2.3.3 → agno-2.3.4}/agno/db/postgres/async_postgres.py +5 -1
  3. {agno-2.3.3 → agno-2.3.4}/agno/models/aimlapi/aimlapi.py +18 -0
  4. {agno-2.3.3 → agno-2.3.4}/agno/models/anthropic/claude.py +3 -1
  5. {agno-2.3.3 → agno-2.3.4}/agno/models/cerebras/cerebras.py +7 -2
  6. {agno-2.3.3 → agno-2.3.4}/agno/models/cerebras/cerebras_openai.py +18 -0
  7. {agno-2.3.3 → agno-2.3.4}/agno/models/cohere/chat.py +10 -2
  8. {agno-2.3.3 → agno-2.3.4}/agno/models/cometapi/cometapi.py +19 -1
  9. {agno-2.3.3 → agno-2.3.4}/agno/models/deepinfra/deepinfra.py +19 -1
  10. {agno-2.3.3 → agno-2.3.4}/agno/models/fireworks/fireworks.py +19 -1
  11. {agno-2.3.3 → agno-2.3.4}/agno/models/google/gemini.py +5 -1
  12. {agno-2.3.3 → agno-2.3.4}/agno/models/groq/groq.py +5 -1
  13. {agno-2.3.3 → agno-2.3.4}/agno/models/huggingface/huggingface.py +5 -1
  14. {agno-2.3.3 → agno-2.3.4}/agno/models/ibm/watsonx.py +5 -1
  15. {agno-2.3.3 → agno-2.3.4}/agno/models/internlm/internlm.py +19 -1
  16. {agno-2.3.3 → agno-2.3.4}/agno/models/langdb/langdb.py +10 -0
  17. agno-2.3.4/agno/models/litellm/litellm_openai.py +43 -0
  18. {agno-2.3.3 → agno-2.3.4}/agno/models/meta/llama.py +5 -1
  19. {agno-2.3.3 → agno-2.3.4}/agno/models/meta/llama_openai.py +18 -0
  20. {agno-2.3.3 → agno-2.3.4}/agno/models/mistral/mistral.py +5 -1
  21. {agno-2.3.3 → agno-2.3.4}/agno/models/nvidia/nvidia.py +19 -1
  22. {agno-2.3.3 → agno-2.3.4}/agno/models/openai/chat.py +5 -1
  23. {agno-2.3.3 → agno-2.3.4}/agno/models/openai/responses.py +5 -1
  24. {agno-2.3.3 → agno-2.3.4}/agno/models/openrouter/openrouter.py +20 -0
  25. {agno-2.3.3 → agno-2.3.4}/agno/models/perplexity/perplexity.py +17 -0
  26. {agno-2.3.3 → agno-2.3.4}/agno/models/requesty/requesty.py +18 -0
  27. {agno-2.3.3 → agno-2.3.4}/agno/models/sambanova/sambanova.py +19 -1
  28. {agno-2.3.3 → agno-2.3.4}/agno/models/siliconflow/siliconflow.py +19 -1
  29. {agno-2.3.3 → agno-2.3.4}/agno/models/together/together.py +19 -1
  30. {agno-2.3.3 → agno-2.3.4}/agno/models/vercel/v0.py +19 -1
  31. {agno-2.3.3 → agno-2.3.4}/agno/models/xai/xai.py +18 -0
  32. {agno-2.3.3 → agno-2.3.4}/agno/os/schema.py +12 -0
  33. {agno-2.3.3 → agno-2.3.4}/agno/team/team.py +1 -0
  34. {agno-2.3.3 → agno-2.3.4}/agno.egg-info/PKG-INFO +1 -1
  35. {agno-2.3.3 → agno-2.3.4}/pyproject.toml +1 -1
  36. agno-2.3.3/agno/models/litellm/litellm_openai.py +0 -25
  37. {agno-2.3.3 → agno-2.3.4}/LICENSE +0 -0
  38. {agno-2.3.3 → agno-2.3.4}/README.md +0 -0
  39. {agno-2.3.3 → agno-2.3.4}/agno/__init__.py +0 -0
  40. {agno-2.3.3 → agno-2.3.4}/agno/agent/__init__.py +0 -0
  41. {agno-2.3.3 → agno-2.3.4}/agno/agent/agent.py +0 -0
  42. {agno-2.3.3 → agno-2.3.4}/agno/api/__init__.py +0 -0
  43. {agno-2.3.3 → agno-2.3.4}/agno/api/agent.py +0 -0
  44. {agno-2.3.3 → agno-2.3.4}/agno/api/api.py +0 -0
  45. {agno-2.3.3 → agno-2.3.4}/agno/api/evals.py +0 -0
  46. {agno-2.3.3 → agno-2.3.4}/agno/api/os.py +0 -0
  47. {agno-2.3.3 → agno-2.3.4}/agno/api/routes.py +0 -0
  48. {agno-2.3.3 → agno-2.3.4}/agno/api/schemas/__init__.py +0 -0
  49. {agno-2.3.3 → agno-2.3.4}/agno/api/schemas/agent.py +0 -0
  50. {agno-2.3.3 → agno-2.3.4}/agno/api/schemas/evals.py +0 -0
  51. {agno-2.3.3 → agno-2.3.4}/agno/api/schemas/os.py +0 -0
  52. {agno-2.3.3 → agno-2.3.4}/agno/api/schemas/response.py +0 -0
  53. {agno-2.3.3 → agno-2.3.4}/agno/api/schemas/team.py +0 -0
  54. {agno-2.3.3 → agno-2.3.4}/agno/api/schemas/utils.py +0 -0
  55. {agno-2.3.3 → agno-2.3.4}/agno/api/schemas/workflows.py +0 -0
  56. {agno-2.3.3 → agno-2.3.4}/agno/api/settings.py +0 -0
  57. {agno-2.3.3 → agno-2.3.4}/agno/api/team.py +0 -0
  58. {agno-2.3.3 → agno-2.3.4}/agno/api/workflow.py +0 -0
  59. {agno-2.3.3 → agno-2.3.4}/agno/cloud/aws/base.py +0 -0
  60. {agno-2.3.3 → agno-2.3.4}/agno/cloud/aws/s3/__init__.py +0 -0
  61. {agno-2.3.3 → agno-2.3.4}/agno/cloud/aws/s3/api_client.py +0 -0
  62. {agno-2.3.3 → agno-2.3.4}/agno/cloud/aws/s3/bucket.py +0 -0
  63. {agno-2.3.3 → agno-2.3.4}/agno/cloud/aws/s3/object.py +0 -0
  64. {agno-2.3.3 → agno-2.3.4}/agno/compression/__init__.py +0 -0
  65. {agno-2.3.3 → agno-2.3.4}/agno/compression/manager.py +0 -0
  66. {agno-2.3.3 → agno-2.3.4}/agno/culture/__init__.py +0 -0
  67. {agno-2.3.3 → agno-2.3.4}/agno/culture/manager.py +0 -0
  68. {agno-2.3.3 → agno-2.3.4}/agno/db/__init__.py +0 -0
  69. {agno-2.3.3 → agno-2.3.4}/agno/db/async_postgres/__init__.py +0 -0
  70. {agno-2.3.3 → agno-2.3.4}/agno/db/base.py +0 -0
  71. {agno-2.3.3 → agno-2.3.4}/agno/db/dynamo/__init__.py +0 -0
  72. {agno-2.3.3 → agno-2.3.4}/agno/db/dynamo/dynamo.py +0 -0
  73. {agno-2.3.3 → agno-2.3.4}/agno/db/dynamo/schemas.py +0 -0
  74. {agno-2.3.3 → agno-2.3.4}/agno/db/dynamo/utils.py +0 -0
  75. {agno-2.3.3 → agno-2.3.4}/agno/db/firestore/__init__.py +0 -0
  76. {agno-2.3.3 → agno-2.3.4}/agno/db/firestore/firestore.py +0 -0
  77. {agno-2.3.3 → agno-2.3.4}/agno/db/firestore/schemas.py +0 -0
  78. {agno-2.3.3 → agno-2.3.4}/agno/db/firestore/utils.py +0 -0
  79. {agno-2.3.3 → agno-2.3.4}/agno/db/gcs_json/__init__.py +0 -0
  80. {agno-2.3.3 → agno-2.3.4}/agno/db/gcs_json/gcs_json_db.py +0 -0
  81. {agno-2.3.3 → agno-2.3.4}/agno/db/gcs_json/utils.py +0 -0
  82. {agno-2.3.3 → agno-2.3.4}/agno/db/in_memory/__init__.py +0 -0
  83. {agno-2.3.3 → agno-2.3.4}/agno/db/in_memory/in_memory_db.py +0 -0
  84. {agno-2.3.3 → agno-2.3.4}/agno/db/in_memory/utils.py +0 -0
  85. {agno-2.3.3 → agno-2.3.4}/agno/db/json/__init__.py +0 -0
  86. {agno-2.3.3 → agno-2.3.4}/agno/db/json/json_db.py +0 -0
  87. {agno-2.3.3 → agno-2.3.4}/agno/db/json/utils.py +0 -0
  88. {agno-2.3.3 → agno-2.3.4}/agno/db/migrations/__init__.py +0 -0
  89. {agno-2.3.3 → agno-2.3.4}/agno/db/migrations/manager.py +0 -0
  90. {agno-2.3.3 → agno-2.3.4}/agno/db/migrations/v1_to_v2.py +0 -0
  91. {agno-2.3.3 → agno-2.3.4}/agno/db/migrations/versions/__init__.py +0 -0
  92. {agno-2.3.3 → agno-2.3.4}/agno/db/migrations/versions/v2_3_0.py +0 -0
  93. {agno-2.3.3 → agno-2.3.4}/agno/db/mongo/__init__.py +0 -0
  94. {agno-2.3.3 → agno-2.3.4}/agno/db/mongo/async_mongo.py +0 -0
  95. {agno-2.3.3 → agno-2.3.4}/agno/db/mongo/mongo.py +0 -0
  96. {agno-2.3.3 → agno-2.3.4}/agno/db/mongo/schemas.py +0 -0
  97. {agno-2.3.3 → agno-2.3.4}/agno/db/mongo/utils.py +0 -0
  98. {agno-2.3.3 → agno-2.3.4}/agno/db/mysql/__init__.py +0 -0
  99. {agno-2.3.3 → agno-2.3.4}/agno/db/mysql/mysql.py +0 -0
  100. {agno-2.3.3 → agno-2.3.4}/agno/db/mysql/schemas.py +0 -0
  101. {agno-2.3.3 → agno-2.3.4}/agno/db/mysql/utils.py +0 -0
  102. {agno-2.3.3 → agno-2.3.4}/agno/db/postgres/__init__.py +0 -0
  103. {agno-2.3.3 → agno-2.3.4}/agno/db/postgres/postgres.py +0 -0
  104. {agno-2.3.3 → agno-2.3.4}/agno/db/postgres/schemas.py +0 -0
  105. {agno-2.3.3 → agno-2.3.4}/agno/db/postgres/utils.py +0 -0
  106. {agno-2.3.3 → agno-2.3.4}/agno/db/redis/__init__.py +0 -0
  107. {agno-2.3.3 → agno-2.3.4}/agno/db/redis/redis.py +0 -0
  108. {agno-2.3.3 → agno-2.3.4}/agno/db/redis/schemas.py +0 -0
  109. {agno-2.3.3 → agno-2.3.4}/agno/db/redis/utils.py +0 -0
  110. {agno-2.3.3 → agno-2.3.4}/agno/db/schemas/__init__.py +0 -0
  111. {agno-2.3.3 → agno-2.3.4}/agno/db/schemas/culture.py +0 -0
  112. {agno-2.3.3 → agno-2.3.4}/agno/db/schemas/evals.py +0 -0
  113. {agno-2.3.3 → agno-2.3.4}/agno/db/schemas/knowledge.py +0 -0
  114. {agno-2.3.3 → agno-2.3.4}/agno/db/schemas/memory.py +0 -0
  115. {agno-2.3.3 → agno-2.3.4}/agno/db/schemas/metrics.py +0 -0
  116. {agno-2.3.3 → agno-2.3.4}/agno/db/singlestore/__init__.py +0 -0
  117. {agno-2.3.3 → agno-2.3.4}/agno/db/singlestore/schemas.py +0 -0
  118. {agno-2.3.3 → agno-2.3.4}/agno/db/singlestore/singlestore.py +0 -0
  119. {agno-2.3.3 → agno-2.3.4}/agno/db/singlestore/utils.py +0 -0
  120. {agno-2.3.3 → agno-2.3.4}/agno/db/sqlite/__init__.py +0 -0
  121. {agno-2.3.3 → agno-2.3.4}/agno/db/sqlite/async_sqlite.py +0 -0
  122. {agno-2.3.3 → agno-2.3.4}/agno/db/sqlite/schemas.py +0 -0
  123. {agno-2.3.3 → agno-2.3.4}/agno/db/sqlite/sqlite.py +0 -0
  124. {agno-2.3.3 → agno-2.3.4}/agno/db/sqlite/utils.py +0 -0
  125. {agno-2.3.3 → agno-2.3.4}/agno/db/surrealdb/__init__.py +0 -0
  126. {agno-2.3.3 → agno-2.3.4}/agno/db/surrealdb/metrics.py +0 -0
  127. {agno-2.3.3 → agno-2.3.4}/agno/db/surrealdb/models.py +0 -0
  128. {agno-2.3.3 → agno-2.3.4}/agno/db/surrealdb/queries.py +0 -0
  129. {agno-2.3.3 → agno-2.3.4}/agno/db/surrealdb/surrealdb.py +0 -0
  130. {agno-2.3.3 → agno-2.3.4}/agno/db/surrealdb/utils.py +0 -0
  131. {agno-2.3.3 → agno-2.3.4}/agno/db/utils.py +0 -0
  132. {agno-2.3.3 → agno-2.3.4}/agno/debug.py +0 -0
  133. {agno-2.3.3 → agno-2.3.4}/agno/eval/__init__.py +0 -0
  134. {agno-2.3.3 → agno-2.3.4}/agno/eval/accuracy.py +0 -0
  135. {agno-2.3.3 → agno-2.3.4}/agno/eval/performance.py +0 -0
  136. {agno-2.3.3 → agno-2.3.4}/agno/eval/reliability.py +0 -0
  137. {agno-2.3.3 → agno-2.3.4}/agno/eval/utils.py +0 -0
  138. {agno-2.3.3 → agno-2.3.4}/agno/exceptions.py +0 -0
  139. {agno-2.3.3 → agno-2.3.4}/agno/filters.py +0 -0
  140. {agno-2.3.3 → agno-2.3.4}/agno/guardrails/__init__.py +0 -0
  141. {agno-2.3.3 → agno-2.3.4}/agno/guardrails/base.py +0 -0
  142. {agno-2.3.3 → agno-2.3.4}/agno/guardrails/openai.py +0 -0
  143. {agno-2.3.3 → agno-2.3.4}/agno/guardrails/pii.py +0 -0
  144. {agno-2.3.3 → agno-2.3.4}/agno/guardrails/prompt_injection.py +0 -0
  145. {agno-2.3.3 → agno-2.3.4}/agno/integrations/__init__.py +0 -0
  146. {agno-2.3.3 → agno-2.3.4}/agno/integrations/discord/__init__.py +0 -0
  147. {agno-2.3.3 → agno-2.3.4}/agno/integrations/discord/client.py +0 -0
  148. {agno-2.3.3 → agno-2.3.4}/agno/knowledge/__init__.py +0 -0
  149. {agno-2.3.3 → agno-2.3.4}/agno/knowledge/chunking/__init__.py +0 -0
  150. {agno-2.3.3 → agno-2.3.4}/agno/knowledge/chunking/agentic.py +0 -0
  151. {agno-2.3.3 → agno-2.3.4}/agno/knowledge/chunking/document.py +0 -0
  152. {agno-2.3.3 → agno-2.3.4}/agno/knowledge/chunking/fixed.py +0 -0
  153. {agno-2.3.3 → agno-2.3.4}/agno/knowledge/chunking/markdown.py +0 -0
  154. {agno-2.3.3 → agno-2.3.4}/agno/knowledge/chunking/recursive.py +0 -0
  155. {agno-2.3.3 → agno-2.3.4}/agno/knowledge/chunking/row.py +0 -0
  156. {agno-2.3.3 → agno-2.3.4}/agno/knowledge/chunking/semantic.py +0 -0
  157. {agno-2.3.3 → agno-2.3.4}/agno/knowledge/chunking/strategy.py +0 -0
  158. {agno-2.3.3 → agno-2.3.4}/agno/knowledge/content.py +0 -0
  159. {agno-2.3.3 → agno-2.3.4}/agno/knowledge/document/__init__.py +0 -0
  160. {agno-2.3.3 → agno-2.3.4}/agno/knowledge/document/base.py +0 -0
  161. {agno-2.3.3 → agno-2.3.4}/agno/knowledge/embedder/__init__.py +0 -0
  162. {agno-2.3.3 → agno-2.3.4}/agno/knowledge/embedder/aws_bedrock.py +0 -0
  163. {agno-2.3.3 → agno-2.3.4}/agno/knowledge/embedder/azure_openai.py +0 -0
  164. {agno-2.3.3 → agno-2.3.4}/agno/knowledge/embedder/base.py +0 -0
  165. {agno-2.3.3 → agno-2.3.4}/agno/knowledge/embedder/cohere.py +0 -0
  166. {agno-2.3.3 → agno-2.3.4}/agno/knowledge/embedder/fastembed.py +0 -0
  167. {agno-2.3.3 → agno-2.3.4}/agno/knowledge/embedder/fireworks.py +0 -0
  168. {agno-2.3.3 → agno-2.3.4}/agno/knowledge/embedder/google.py +0 -0
  169. {agno-2.3.3 → agno-2.3.4}/agno/knowledge/embedder/huggingface.py +0 -0
  170. {agno-2.3.3 → agno-2.3.4}/agno/knowledge/embedder/jina.py +0 -0
  171. {agno-2.3.3 → agno-2.3.4}/agno/knowledge/embedder/langdb.py +0 -0
  172. {agno-2.3.3 → agno-2.3.4}/agno/knowledge/embedder/mistral.py +0 -0
  173. {agno-2.3.3 → agno-2.3.4}/agno/knowledge/embedder/nebius.py +0 -0
  174. {agno-2.3.3 → agno-2.3.4}/agno/knowledge/embedder/ollama.py +0 -0
  175. {agno-2.3.3 → agno-2.3.4}/agno/knowledge/embedder/openai.py +0 -0
  176. {agno-2.3.3 → agno-2.3.4}/agno/knowledge/embedder/sentence_transformer.py +0 -0
  177. {agno-2.3.3 → agno-2.3.4}/agno/knowledge/embedder/together.py +0 -0
  178. {agno-2.3.3 → agno-2.3.4}/agno/knowledge/embedder/vllm.py +0 -0
  179. {agno-2.3.3 → agno-2.3.4}/agno/knowledge/embedder/voyageai.py +0 -0
  180. {agno-2.3.3 → agno-2.3.4}/agno/knowledge/knowledge.py +0 -0
  181. {agno-2.3.3 → agno-2.3.4}/agno/knowledge/reader/__init__.py +0 -0
  182. {agno-2.3.3 → agno-2.3.4}/agno/knowledge/reader/arxiv_reader.py +0 -0
  183. {agno-2.3.3 → agno-2.3.4}/agno/knowledge/reader/base.py +0 -0
  184. {agno-2.3.3 → agno-2.3.4}/agno/knowledge/reader/csv_reader.py +0 -0
  185. {agno-2.3.3 → agno-2.3.4}/agno/knowledge/reader/docx_reader.py +0 -0
  186. {agno-2.3.3 → agno-2.3.4}/agno/knowledge/reader/field_labeled_csv_reader.py +0 -0
  187. {agno-2.3.3 → agno-2.3.4}/agno/knowledge/reader/firecrawl_reader.py +0 -0
  188. {agno-2.3.3 → agno-2.3.4}/agno/knowledge/reader/json_reader.py +0 -0
  189. {agno-2.3.3 → agno-2.3.4}/agno/knowledge/reader/markdown_reader.py +0 -0
  190. {agno-2.3.3 → agno-2.3.4}/agno/knowledge/reader/pdf_reader.py +0 -0
  191. {agno-2.3.3 → agno-2.3.4}/agno/knowledge/reader/pptx_reader.py +0 -0
  192. {agno-2.3.3 → agno-2.3.4}/agno/knowledge/reader/reader_factory.py +0 -0
  193. {agno-2.3.3 → agno-2.3.4}/agno/knowledge/reader/s3_reader.py +0 -0
  194. {agno-2.3.3 → agno-2.3.4}/agno/knowledge/reader/tavily_reader.py +0 -0
  195. {agno-2.3.3 → agno-2.3.4}/agno/knowledge/reader/text_reader.py +0 -0
  196. {agno-2.3.3 → agno-2.3.4}/agno/knowledge/reader/web_search_reader.py +0 -0
  197. {agno-2.3.3 → agno-2.3.4}/agno/knowledge/reader/website_reader.py +0 -0
  198. {agno-2.3.3 → agno-2.3.4}/agno/knowledge/reader/wikipedia_reader.py +0 -0
  199. {agno-2.3.3 → agno-2.3.4}/agno/knowledge/reader/youtube_reader.py +0 -0
  200. {agno-2.3.3 → agno-2.3.4}/agno/knowledge/remote_content/__init__.py +0 -0
  201. {agno-2.3.3 → agno-2.3.4}/agno/knowledge/remote_content/remote_content.py +0 -0
  202. {agno-2.3.3 → agno-2.3.4}/agno/knowledge/reranker/__init__.py +0 -0
  203. {agno-2.3.3 → agno-2.3.4}/agno/knowledge/reranker/base.py +0 -0
  204. {agno-2.3.3 → agno-2.3.4}/agno/knowledge/reranker/cohere.py +0 -0
  205. {agno-2.3.3 → agno-2.3.4}/agno/knowledge/reranker/infinity.py +0 -0
  206. {agno-2.3.3 → agno-2.3.4}/agno/knowledge/reranker/sentence_transformer.py +0 -0
  207. {agno-2.3.3 → agno-2.3.4}/agno/knowledge/types.py +0 -0
  208. {agno-2.3.3 → agno-2.3.4}/agno/knowledge/utils.py +0 -0
  209. {agno-2.3.3 → agno-2.3.4}/agno/media.py +0 -0
  210. {agno-2.3.3 → agno-2.3.4}/agno/memory/__init__.py +0 -0
  211. {agno-2.3.3 → agno-2.3.4}/agno/memory/manager.py +0 -0
  212. {agno-2.3.3 → agno-2.3.4}/agno/memory/strategies/__init__.py +0 -0
  213. {agno-2.3.3 → agno-2.3.4}/agno/memory/strategies/base.py +0 -0
  214. {agno-2.3.3 → agno-2.3.4}/agno/memory/strategies/summarize.py +0 -0
  215. {agno-2.3.3 → agno-2.3.4}/agno/memory/strategies/types.py +0 -0
  216. {agno-2.3.3 → agno-2.3.4}/agno/models/__init__.py +0 -0
  217. {agno-2.3.3 → agno-2.3.4}/agno/models/aimlapi/__init__.py +0 -0
  218. {agno-2.3.3 → agno-2.3.4}/agno/models/anthropic/__init__.py +0 -0
  219. {agno-2.3.3 → agno-2.3.4}/agno/models/aws/__init__.py +0 -0
  220. {agno-2.3.3 → agno-2.3.4}/agno/models/aws/bedrock.py +0 -0
  221. {agno-2.3.3 → agno-2.3.4}/agno/models/aws/claude.py +0 -0
  222. {agno-2.3.3 → agno-2.3.4}/agno/models/azure/__init__.py +0 -0
  223. {agno-2.3.3 → agno-2.3.4}/agno/models/azure/ai_foundry.py +0 -0
  224. {agno-2.3.3 → agno-2.3.4}/agno/models/azure/openai_chat.py +0 -0
  225. {agno-2.3.3 → agno-2.3.4}/agno/models/base.py +0 -0
  226. {agno-2.3.3 → agno-2.3.4}/agno/models/cerebras/__init__.py +0 -0
  227. {agno-2.3.3 → agno-2.3.4}/agno/models/cohere/__init__.py +0 -0
  228. {agno-2.3.3 → agno-2.3.4}/agno/models/cometapi/__init__.py +0 -0
  229. {agno-2.3.3 → agno-2.3.4}/agno/models/dashscope/__init__.py +0 -0
  230. {agno-2.3.3 → agno-2.3.4}/agno/models/dashscope/dashscope.py +0 -0
  231. {agno-2.3.3 → agno-2.3.4}/agno/models/deepinfra/__init__.py +0 -0
  232. {agno-2.3.3 → agno-2.3.4}/agno/models/deepseek/__init__.py +0 -0
  233. {agno-2.3.3 → agno-2.3.4}/agno/models/deepseek/deepseek.py +0 -0
  234. {agno-2.3.3 → agno-2.3.4}/agno/models/defaults.py +0 -0
  235. {agno-2.3.3 → agno-2.3.4}/agno/models/fireworks/__init__.py +0 -0
  236. {agno-2.3.3 → agno-2.3.4}/agno/models/google/__init__.py +0 -0
  237. {agno-2.3.3 → agno-2.3.4}/agno/models/groq/__init__.py +0 -0
  238. {agno-2.3.3 → agno-2.3.4}/agno/models/huggingface/__init__.py +0 -0
  239. {agno-2.3.3 → agno-2.3.4}/agno/models/ibm/__init__.py +0 -0
  240. {agno-2.3.3 → agno-2.3.4}/agno/models/internlm/__init__.py +0 -0
  241. {agno-2.3.3 → agno-2.3.4}/agno/models/langdb/__init__.py +0 -0
  242. {agno-2.3.3 → agno-2.3.4}/agno/models/litellm/__init__.py +0 -0
  243. {agno-2.3.3 → agno-2.3.4}/agno/models/litellm/chat.py +0 -0
  244. {agno-2.3.3 → agno-2.3.4}/agno/models/llama_cpp/__init__.py +0 -0
  245. {agno-2.3.3 → agno-2.3.4}/agno/models/llama_cpp/llama_cpp.py +0 -0
  246. {agno-2.3.3 → agno-2.3.4}/agno/models/lmstudio/__init__.py +0 -0
  247. {agno-2.3.3 → agno-2.3.4}/agno/models/lmstudio/lmstudio.py +0 -0
  248. {agno-2.3.3 → agno-2.3.4}/agno/models/message.py +0 -0
  249. {agno-2.3.3 → agno-2.3.4}/agno/models/meta/__init__.py +0 -0
  250. {agno-2.3.3 → agno-2.3.4}/agno/models/metrics.py +0 -0
  251. {agno-2.3.3 → agno-2.3.4}/agno/models/mistral/__init__.py +0 -0
  252. {agno-2.3.3 → agno-2.3.4}/agno/models/nebius/__init__.py +0 -0
  253. {agno-2.3.3 → agno-2.3.4}/agno/models/nebius/nebius.py +0 -0
  254. {agno-2.3.3 → agno-2.3.4}/agno/models/nexus/__init__.py +0 -0
  255. {agno-2.3.3 → agno-2.3.4}/agno/models/nexus/nexus.py +0 -0
  256. {agno-2.3.3 → agno-2.3.4}/agno/models/nvidia/__init__.py +0 -0
  257. {agno-2.3.3 → agno-2.3.4}/agno/models/ollama/__init__.py +0 -0
  258. {agno-2.3.3 → agno-2.3.4}/agno/models/ollama/chat.py +0 -0
  259. {agno-2.3.3 → agno-2.3.4}/agno/models/openai/__init__.py +0 -0
  260. {agno-2.3.3 → agno-2.3.4}/agno/models/openai/like.py +0 -0
  261. {agno-2.3.3 → agno-2.3.4}/agno/models/openrouter/__init__.py +0 -0
  262. {agno-2.3.3 → agno-2.3.4}/agno/models/perplexity/__init__.py +0 -0
  263. {agno-2.3.3 → agno-2.3.4}/agno/models/portkey/__init__.py +0 -0
  264. {agno-2.3.3 → agno-2.3.4}/agno/models/portkey/portkey.py +0 -0
  265. {agno-2.3.3 → agno-2.3.4}/agno/models/requesty/__init__.py +0 -0
  266. {agno-2.3.3 → agno-2.3.4}/agno/models/response.py +0 -0
  267. {agno-2.3.3 → agno-2.3.4}/agno/models/sambanova/__init__.py +0 -0
  268. {agno-2.3.3 → agno-2.3.4}/agno/models/siliconflow/__init__.py +0 -0
  269. {agno-2.3.3 → agno-2.3.4}/agno/models/together/__init__.py +0 -0
  270. {agno-2.3.3 → agno-2.3.4}/agno/models/utils.py +0 -0
  271. {agno-2.3.3 → agno-2.3.4}/agno/models/vercel/__init__.py +0 -0
  272. {agno-2.3.3 → agno-2.3.4}/agno/models/vertexai/__init__.py +0 -0
  273. {agno-2.3.3 → agno-2.3.4}/agno/models/vertexai/claude.py +0 -0
  274. {agno-2.3.3 → agno-2.3.4}/agno/models/vllm/__init__.py +0 -0
  275. {agno-2.3.3 → agno-2.3.4}/agno/models/vllm/vllm.py +0 -0
  276. {agno-2.3.3 → agno-2.3.4}/agno/models/xai/__init__.py +0 -0
  277. {agno-2.3.3 → agno-2.3.4}/agno/os/__init__.py +0 -0
  278. {agno-2.3.3 → agno-2.3.4}/agno/os/app.py +0 -0
  279. {agno-2.3.3 → agno-2.3.4}/agno/os/auth.py +0 -0
  280. {agno-2.3.3 → agno-2.3.4}/agno/os/config.py +0 -0
  281. {agno-2.3.3 → agno-2.3.4}/agno/os/interfaces/__init__.py +0 -0
  282. {agno-2.3.3 → agno-2.3.4}/agno/os/interfaces/a2a/__init__.py +0 -0
  283. {agno-2.3.3 → agno-2.3.4}/agno/os/interfaces/a2a/a2a.py +0 -0
  284. {agno-2.3.3 → agno-2.3.4}/agno/os/interfaces/a2a/router.py +0 -0
  285. {agno-2.3.3 → agno-2.3.4}/agno/os/interfaces/a2a/utils.py +0 -0
  286. {agno-2.3.3 → agno-2.3.4}/agno/os/interfaces/agui/__init__.py +0 -0
  287. {agno-2.3.3 → agno-2.3.4}/agno/os/interfaces/agui/agui.py +0 -0
  288. {agno-2.3.3 → agno-2.3.4}/agno/os/interfaces/agui/router.py +0 -0
  289. {agno-2.3.3 → agno-2.3.4}/agno/os/interfaces/agui/utils.py +0 -0
  290. {agno-2.3.3 → agno-2.3.4}/agno/os/interfaces/base.py +0 -0
  291. {agno-2.3.3 → agno-2.3.4}/agno/os/interfaces/slack/__init__.py +0 -0
  292. {agno-2.3.3 → agno-2.3.4}/agno/os/interfaces/slack/router.py +0 -0
  293. {agno-2.3.3 → agno-2.3.4}/agno/os/interfaces/slack/security.py +0 -0
  294. {agno-2.3.3 → agno-2.3.4}/agno/os/interfaces/slack/slack.py +0 -0
  295. {agno-2.3.3 → agno-2.3.4}/agno/os/interfaces/whatsapp/__init__.py +0 -0
  296. {agno-2.3.3 → agno-2.3.4}/agno/os/interfaces/whatsapp/router.py +0 -0
  297. {agno-2.3.3 → agno-2.3.4}/agno/os/interfaces/whatsapp/security.py +0 -0
  298. {agno-2.3.3 → agno-2.3.4}/agno/os/interfaces/whatsapp/whatsapp.py +0 -0
  299. {agno-2.3.3 → agno-2.3.4}/agno/os/mcp.py +0 -0
  300. {agno-2.3.3 → agno-2.3.4}/agno/os/middleware/__init__.py +0 -0
  301. {agno-2.3.3 → agno-2.3.4}/agno/os/middleware/jwt.py +0 -0
  302. {agno-2.3.3 → agno-2.3.4}/agno/os/router.py +0 -0
  303. {agno-2.3.3 → agno-2.3.4}/agno/os/routers/__init__.py +0 -0
  304. {agno-2.3.3 → agno-2.3.4}/agno/os/routers/evals/__init__.py +0 -0
  305. {agno-2.3.3 → agno-2.3.4}/agno/os/routers/evals/evals.py +0 -0
  306. {agno-2.3.3 → agno-2.3.4}/agno/os/routers/evals/schemas.py +0 -0
  307. {agno-2.3.3 → agno-2.3.4}/agno/os/routers/evals/utils.py +0 -0
  308. {agno-2.3.3 → agno-2.3.4}/agno/os/routers/health.py +0 -0
  309. {agno-2.3.3 → agno-2.3.4}/agno/os/routers/home.py +0 -0
  310. {agno-2.3.3 → agno-2.3.4}/agno/os/routers/knowledge/__init__.py +0 -0
  311. {agno-2.3.3 → agno-2.3.4}/agno/os/routers/knowledge/knowledge.py +0 -0
  312. {agno-2.3.3 → agno-2.3.4}/agno/os/routers/knowledge/schemas.py +0 -0
  313. {agno-2.3.3 → agno-2.3.4}/agno/os/routers/memory/__init__.py +0 -0
  314. {agno-2.3.3 → agno-2.3.4}/agno/os/routers/memory/memory.py +0 -0
  315. {agno-2.3.3 → agno-2.3.4}/agno/os/routers/memory/schemas.py +0 -0
  316. {agno-2.3.3 → agno-2.3.4}/agno/os/routers/metrics/__init__.py +0 -0
  317. {agno-2.3.3 → agno-2.3.4}/agno/os/routers/metrics/metrics.py +0 -0
  318. {agno-2.3.3 → agno-2.3.4}/agno/os/routers/metrics/schemas.py +0 -0
  319. {agno-2.3.3 → agno-2.3.4}/agno/os/routers/session/__init__.py +0 -0
  320. {agno-2.3.3 → agno-2.3.4}/agno/os/routers/session/session.py +0 -0
  321. {agno-2.3.3 → agno-2.3.4}/agno/os/settings.py +0 -0
  322. {agno-2.3.3 → agno-2.3.4}/agno/os/utils.py +0 -0
  323. {agno-2.3.3 → agno-2.3.4}/agno/py.typed +0 -0
  324. {agno-2.3.3 → agno-2.3.4}/agno/reasoning/__init__.py +0 -0
  325. {agno-2.3.3 → agno-2.3.4}/agno/reasoning/anthropic.py +0 -0
  326. {agno-2.3.3 → agno-2.3.4}/agno/reasoning/azure_ai_foundry.py +0 -0
  327. {agno-2.3.3 → agno-2.3.4}/agno/reasoning/deepseek.py +0 -0
  328. {agno-2.3.3 → agno-2.3.4}/agno/reasoning/default.py +0 -0
  329. {agno-2.3.3 → agno-2.3.4}/agno/reasoning/gemini.py +0 -0
  330. {agno-2.3.3 → agno-2.3.4}/agno/reasoning/groq.py +0 -0
  331. {agno-2.3.3 → agno-2.3.4}/agno/reasoning/helpers.py +0 -0
  332. {agno-2.3.3 → agno-2.3.4}/agno/reasoning/ollama.py +0 -0
  333. {agno-2.3.3 → agno-2.3.4}/agno/reasoning/openai.py +0 -0
  334. {agno-2.3.3 → agno-2.3.4}/agno/reasoning/step.py +0 -0
  335. {agno-2.3.3 → agno-2.3.4}/agno/reasoning/vertexai.py +0 -0
  336. {agno-2.3.3 → agno-2.3.4}/agno/run/__init__.py +0 -0
  337. {agno-2.3.3 → agno-2.3.4}/agno/run/agent.py +0 -0
  338. {agno-2.3.3 → agno-2.3.4}/agno/run/base.py +0 -0
  339. {agno-2.3.3 → agno-2.3.4}/agno/run/cancel.py +0 -0
  340. {agno-2.3.3 → agno-2.3.4}/agno/run/messages.py +0 -0
  341. {agno-2.3.3 → agno-2.3.4}/agno/run/team.py +0 -0
  342. {agno-2.3.3 → agno-2.3.4}/agno/run/workflow.py +0 -0
  343. {agno-2.3.3 → agno-2.3.4}/agno/session/__init__.py +0 -0
  344. {agno-2.3.3 → agno-2.3.4}/agno/session/agent.py +0 -0
  345. {agno-2.3.3 → agno-2.3.4}/agno/session/summary.py +0 -0
  346. {agno-2.3.3 → agno-2.3.4}/agno/session/team.py +0 -0
  347. {agno-2.3.3 → agno-2.3.4}/agno/session/workflow.py +0 -0
  348. {agno-2.3.3 → agno-2.3.4}/agno/team/__init__.py +0 -0
  349. {agno-2.3.3 → agno-2.3.4}/agno/tools/__init__.py +0 -0
  350. {agno-2.3.3 → agno-2.3.4}/agno/tools/agentql.py +0 -0
  351. {agno-2.3.3 → agno-2.3.4}/agno/tools/airflow.py +0 -0
  352. {agno-2.3.3 → agno-2.3.4}/agno/tools/api.py +0 -0
  353. {agno-2.3.3 → agno-2.3.4}/agno/tools/apify.py +0 -0
  354. {agno-2.3.3 → agno-2.3.4}/agno/tools/arxiv.py +0 -0
  355. {agno-2.3.3 → agno-2.3.4}/agno/tools/aws_lambda.py +0 -0
  356. {agno-2.3.3 → agno-2.3.4}/agno/tools/aws_ses.py +0 -0
  357. {agno-2.3.3 → agno-2.3.4}/agno/tools/baidusearch.py +0 -0
  358. {agno-2.3.3 → agno-2.3.4}/agno/tools/bitbucket.py +0 -0
  359. {agno-2.3.3 → agno-2.3.4}/agno/tools/brandfetch.py +0 -0
  360. {agno-2.3.3 → agno-2.3.4}/agno/tools/bravesearch.py +0 -0
  361. {agno-2.3.3 → agno-2.3.4}/agno/tools/brightdata.py +0 -0
  362. {agno-2.3.3 → agno-2.3.4}/agno/tools/browserbase.py +0 -0
  363. {agno-2.3.3 → agno-2.3.4}/agno/tools/calcom.py +0 -0
  364. {agno-2.3.3 → agno-2.3.4}/agno/tools/calculator.py +0 -0
  365. {agno-2.3.3 → agno-2.3.4}/agno/tools/cartesia.py +0 -0
  366. {agno-2.3.3 → agno-2.3.4}/agno/tools/clickup.py +0 -0
  367. {agno-2.3.3 → agno-2.3.4}/agno/tools/confluence.py +0 -0
  368. {agno-2.3.3 → agno-2.3.4}/agno/tools/crawl4ai.py +0 -0
  369. {agno-2.3.3 → agno-2.3.4}/agno/tools/csv_toolkit.py +0 -0
  370. {agno-2.3.3 → agno-2.3.4}/agno/tools/dalle.py +0 -0
  371. {agno-2.3.3 → agno-2.3.4}/agno/tools/daytona.py +0 -0
  372. {agno-2.3.3 → agno-2.3.4}/agno/tools/decorator.py +0 -0
  373. {agno-2.3.3 → agno-2.3.4}/agno/tools/desi_vocal.py +0 -0
  374. {agno-2.3.3 → agno-2.3.4}/agno/tools/discord.py +0 -0
  375. {agno-2.3.3 → agno-2.3.4}/agno/tools/docker.py +0 -0
  376. {agno-2.3.3 → agno-2.3.4}/agno/tools/duckdb.py +0 -0
  377. {agno-2.3.3 → agno-2.3.4}/agno/tools/duckduckgo.py +0 -0
  378. {agno-2.3.3 → agno-2.3.4}/agno/tools/e2b.py +0 -0
  379. {agno-2.3.3 → agno-2.3.4}/agno/tools/eleven_labs.py +0 -0
  380. {agno-2.3.3 → agno-2.3.4}/agno/tools/email.py +0 -0
  381. {agno-2.3.3 → agno-2.3.4}/agno/tools/evm.py +0 -0
  382. {agno-2.3.3 → agno-2.3.4}/agno/tools/exa.py +0 -0
  383. {agno-2.3.3 → agno-2.3.4}/agno/tools/fal.py +0 -0
  384. {agno-2.3.3 → agno-2.3.4}/agno/tools/file.py +0 -0
  385. {agno-2.3.3 → agno-2.3.4}/agno/tools/file_generation.py +0 -0
  386. {agno-2.3.3 → agno-2.3.4}/agno/tools/financial_datasets.py +0 -0
  387. {agno-2.3.3 → agno-2.3.4}/agno/tools/firecrawl.py +0 -0
  388. {agno-2.3.3 → agno-2.3.4}/agno/tools/function.py +0 -0
  389. {agno-2.3.3 → agno-2.3.4}/agno/tools/giphy.py +0 -0
  390. {agno-2.3.3 → agno-2.3.4}/agno/tools/github.py +0 -0
  391. {agno-2.3.3 → agno-2.3.4}/agno/tools/gmail.py +0 -0
  392. {agno-2.3.3 → agno-2.3.4}/agno/tools/google_bigquery.py +0 -0
  393. {agno-2.3.3 → agno-2.3.4}/agno/tools/google_drive.py +0 -0
  394. {agno-2.3.3 → agno-2.3.4}/agno/tools/google_maps.py +0 -0
  395. {agno-2.3.3 → agno-2.3.4}/agno/tools/googlecalendar.py +0 -0
  396. {agno-2.3.3 → agno-2.3.4}/agno/tools/googlesheets.py +0 -0
  397. {agno-2.3.3 → agno-2.3.4}/agno/tools/hackernews.py +0 -0
  398. {agno-2.3.3 → agno-2.3.4}/agno/tools/jina.py +0 -0
  399. {agno-2.3.3 → agno-2.3.4}/agno/tools/jira.py +0 -0
  400. {agno-2.3.3 → agno-2.3.4}/agno/tools/knowledge.py +0 -0
  401. {agno-2.3.3 → agno-2.3.4}/agno/tools/linear.py +0 -0
  402. {agno-2.3.3 → agno-2.3.4}/agno/tools/linkup.py +0 -0
  403. {agno-2.3.3 → agno-2.3.4}/agno/tools/local_file_system.py +0 -0
  404. {agno-2.3.3 → agno-2.3.4}/agno/tools/lumalab.py +0 -0
  405. {agno-2.3.3 → agno-2.3.4}/agno/tools/mcp/__init__.py +0 -0
  406. {agno-2.3.3 → agno-2.3.4}/agno/tools/mcp/mcp.py +0 -0
  407. {agno-2.3.3 → agno-2.3.4}/agno/tools/mcp/multi_mcp.py +0 -0
  408. {agno-2.3.3 → agno-2.3.4}/agno/tools/mcp/params.py +0 -0
  409. {agno-2.3.3 → agno-2.3.4}/agno/tools/mcp_toolbox.py +0 -0
  410. {agno-2.3.3 → agno-2.3.4}/agno/tools/mem0.py +0 -0
  411. {agno-2.3.3 → agno-2.3.4}/agno/tools/memori.py +0 -0
  412. {agno-2.3.3 → agno-2.3.4}/agno/tools/memory.py +0 -0
  413. {agno-2.3.3 → agno-2.3.4}/agno/tools/mlx_transcribe.py +0 -0
  414. {agno-2.3.3 → agno-2.3.4}/agno/tools/models/__init__.py +0 -0
  415. {agno-2.3.3 → agno-2.3.4}/agno/tools/models/azure_openai.py +0 -0
  416. {agno-2.3.3 → agno-2.3.4}/agno/tools/models/gemini.py +0 -0
  417. {agno-2.3.3 → agno-2.3.4}/agno/tools/models/groq.py +0 -0
  418. {agno-2.3.3 → agno-2.3.4}/agno/tools/models/morph.py +0 -0
  419. {agno-2.3.3 → agno-2.3.4}/agno/tools/models/nebius.py +0 -0
  420. {agno-2.3.3 → agno-2.3.4}/agno/tools/models_labs.py +0 -0
  421. {agno-2.3.3 → agno-2.3.4}/agno/tools/moviepy_video.py +0 -0
  422. {agno-2.3.3 → agno-2.3.4}/agno/tools/nano_banana.py +0 -0
  423. {agno-2.3.3 → agno-2.3.4}/agno/tools/neo4j.py +0 -0
  424. {agno-2.3.3 → agno-2.3.4}/agno/tools/newspaper.py +0 -0
  425. {agno-2.3.3 → agno-2.3.4}/agno/tools/newspaper4k.py +0 -0
  426. {agno-2.3.3 → agno-2.3.4}/agno/tools/notion.py +0 -0
  427. {agno-2.3.3 → agno-2.3.4}/agno/tools/openai.py +0 -0
  428. {agno-2.3.3 → agno-2.3.4}/agno/tools/openbb.py +0 -0
  429. {agno-2.3.3 → agno-2.3.4}/agno/tools/opencv.py +0 -0
  430. {agno-2.3.3 → agno-2.3.4}/agno/tools/openweather.py +0 -0
  431. {agno-2.3.3 → agno-2.3.4}/agno/tools/oxylabs.py +0 -0
  432. {agno-2.3.3 → agno-2.3.4}/agno/tools/pandas.py +0 -0
  433. {agno-2.3.3 → agno-2.3.4}/agno/tools/parallel.py +0 -0
  434. {agno-2.3.3 → agno-2.3.4}/agno/tools/postgres.py +0 -0
  435. {agno-2.3.3 → agno-2.3.4}/agno/tools/pubmed.py +0 -0
  436. {agno-2.3.3 → agno-2.3.4}/agno/tools/python.py +0 -0
  437. {agno-2.3.3 → agno-2.3.4}/agno/tools/reasoning.py +0 -0
  438. {agno-2.3.3 → agno-2.3.4}/agno/tools/reddit.py +0 -0
  439. {agno-2.3.3 → agno-2.3.4}/agno/tools/replicate.py +0 -0
  440. {agno-2.3.3 → agno-2.3.4}/agno/tools/resend.py +0 -0
  441. {agno-2.3.3 → agno-2.3.4}/agno/tools/scrapegraph.py +0 -0
  442. {agno-2.3.3 → agno-2.3.4}/agno/tools/searxng.py +0 -0
  443. {agno-2.3.3 → agno-2.3.4}/agno/tools/serpapi.py +0 -0
  444. {agno-2.3.3 → agno-2.3.4}/agno/tools/serper.py +0 -0
  445. {agno-2.3.3 → agno-2.3.4}/agno/tools/shell.py +0 -0
  446. {agno-2.3.3 → agno-2.3.4}/agno/tools/slack.py +0 -0
  447. {agno-2.3.3 → agno-2.3.4}/agno/tools/sleep.py +0 -0
  448. {agno-2.3.3 → agno-2.3.4}/agno/tools/spider.py +0 -0
  449. {agno-2.3.3 → agno-2.3.4}/agno/tools/sql.py +0 -0
  450. {agno-2.3.3 → agno-2.3.4}/agno/tools/streamlit/__init__.py +0 -0
  451. {agno-2.3.3 → agno-2.3.4}/agno/tools/streamlit/components.py +0 -0
  452. {agno-2.3.3 → agno-2.3.4}/agno/tools/tavily.py +0 -0
  453. {agno-2.3.3 → agno-2.3.4}/agno/tools/telegram.py +0 -0
  454. {agno-2.3.3 → agno-2.3.4}/agno/tools/todoist.py +0 -0
  455. {agno-2.3.3 → agno-2.3.4}/agno/tools/tool_registry.py +0 -0
  456. {agno-2.3.3 → agno-2.3.4}/agno/tools/toolkit.py +0 -0
  457. {agno-2.3.3 → agno-2.3.4}/agno/tools/trafilatura.py +0 -0
  458. {agno-2.3.3 → agno-2.3.4}/agno/tools/trello.py +0 -0
  459. {agno-2.3.3 → agno-2.3.4}/agno/tools/twilio.py +0 -0
  460. {agno-2.3.3 → agno-2.3.4}/agno/tools/user_control_flow.py +0 -0
  461. {agno-2.3.3 → agno-2.3.4}/agno/tools/valyu.py +0 -0
  462. {agno-2.3.3 → agno-2.3.4}/agno/tools/visualization.py +0 -0
  463. {agno-2.3.3 → agno-2.3.4}/agno/tools/webbrowser.py +0 -0
  464. {agno-2.3.3 → agno-2.3.4}/agno/tools/webex.py +0 -0
  465. {agno-2.3.3 → agno-2.3.4}/agno/tools/website.py +0 -0
  466. {agno-2.3.3 → agno-2.3.4}/agno/tools/webtools.py +0 -0
  467. {agno-2.3.3 → agno-2.3.4}/agno/tools/whatsapp.py +0 -0
  468. {agno-2.3.3 → agno-2.3.4}/agno/tools/wikipedia.py +0 -0
  469. {agno-2.3.3 → agno-2.3.4}/agno/tools/workflow.py +0 -0
  470. {agno-2.3.3 → agno-2.3.4}/agno/tools/x.py +0 -0
  471. {agno-2.3.3 → agno-2.3.4}/agno/tools/yfinance.py +0 -0
  472. {agno-2.3.3 → agno-2.3.4}/agno/tools/youtube.py +0 -0
  473. {agno-2.3.3 → agno-2.3.4}/agno/tools/zendesk.py +0 -0
  474. {agno-2.3.3 → agno-2.3.4}/agno/tools/zep.py +0 -0
  475. {agno-2.3.3 → agno-2.3.4}/agno/tools/zoom.py +0 -0
  476. {agno-2.3.3 → agno-2.3.4}/agno/utils/__init__.py +0 -0
  477. {agno-2.3.3 → agno-2.3.4}/agno/utils/agent.py +0 -0
  478. {agno-2.3.3 → agno-2.3.4}/agno/utils/audio.py +0 -0
  479. {agno-2.3.3 → agno-2.3.4}/agno/utils/certs.py +0 -0
  480. {agno-2.3.3 → agno-2.3.4}/agno/utils/code_execution.py +0 -0
  481. {agno-2.3.3 → agno-2.3.4}/agno/utils/common.py +0 -0
  482. {agno-2.3.3 → agno-2.3.4}/agno/utils/dttm.py +0 -0
  483. {agno-2.3.3 → agno-2.3.4}/agno/utils/enum.py +0 -0
  484. {agno-2.3.3 → agno-2.3.4}/agno/utils/env.py +0 -0
  485. {agno-2.3.3 → agno-2.3.4}/agno/utils/events.py +0 -0
  486. {agno-2.3.3 → agno-2.3.4}/agno/utils/format_str.py +0 -0
  487. {agno-2.3.3 → agno-2.3.4}/agno/utils/functions.py +0 -0
  488. {agno-2.3.3 → agno-2.3.4}/agno/utils/gemini.py +0 -0
  489. {agno-2.3.3 → agno-2.3.4}/agno/utils/hooks.py +0 -0
  490. {agno-2.3.3 → agno-2.3.4}/agno/utils/http.py +0 -0
  491. {agno-2.3.3 → agno-2.3.4}/agno/utils/json_schema.py +0 -0
  492. {agno-2.3.3 → agno-2.3.4}/agno/utils/knowledge.py +0 -0
  493. {agno-2.3.3 → agno-2.3.4}/agno/utils/location.py +0 -0
  494. {agno-2.3.3 → agno-2.3.4}/agno/utils/log.py +0 -0
  495. {agno-2.3.3 → agno-2.3.4}/agno/utils/mcp.py +0 -0
  496. {agno-2.3.3 → agno-2.3.4}/agno/utils/media.py +0 -0
  497. {agno-2.3.3 → agno-2.3.4}/agno/utils/merge_dict.py +0 -0
  498. {agno-2.3.3 → agno-2.3.4}/agno/utils/message.py +0 -0
  499. {agno-2.3.3 → agno-2.3.4}/agno/utils/models/__init__.py +0 -0
  500. {agno-2.3.3 → agno-2.3.4}/agno/utils/models/ai_foundry.py +0 -0
  501. {agno-2.3.3 → agno-2.3.4}/agno/utils/models/claude.py +0 -0
  502. {agno-2.3.3 → agno-2.3.4}/agno/utils/models/cohere.py +0 -0
  503. {agno-2.3.3 → agno-2.3.4}/agno/utils/models/llama.py +0 -0
  504. {agno-2.3.3 → agno-2.3.4}/agno/utils/models/mistral.py +0 -0
  505. {agno-2.3.3 → agno-2.3.4}/agno/utils/models/openai_responses.py +0 -0
  506. {agno-2.3.3 → agno-2.3.4}/agno/utils/models/schema_utils.py +0 -0
  507. {agno-2.3.3 → agno-2.3.4}/agno/utils/models/watsonx.py +0 -0
  508. {agno-2.3.3 → agno-2.3.4}/agno/utils/openai.py +0 -0
  509. {agno-2.3.3 → agno-2.3.4}/agno/utils/pickle.py +0 -0
  510. {agno-2.3.3 → agno-2.3.4}/agno/utils/pprint.py +0 -0
  511. {agno-2.3.3 → agno-2.3.4}/agno/utils/print_response/__init__.py +0 -0
  512. {agno-2.3.3 → agno-2.3.4}/agno/utils/print_response/agent.py +0 -0
  513. {agno-2.3.3 → agno-2.3.4}/agno/utils/print_response/team.py +0 -0
  514. {agno-2.3.3 → agno-2.3.4}/agno/utils/print_response/workflow.py +0 -0
  515. {agno-2.3.3 → agno-2.3.4}/agno/utils/prompts.py +0 -0
  516. {agno-2.3.3 → agno-2.3.4}/agno/utils/reasoning.py +0 -0
  517. {agno-2.3.3 → agno-2.3.4}/agno/utils/response.py +0 -0
  518. {agno-2.3.3 → agno-2.3.4}/agno/utils/response_iterator.py +0 -0
  519. {agno-2.3.3 → agno-2.3.4}/agno/utils/safe_formatter.py +0 -0
  520. {agno-2.3.3 → agno-2.3.4}/agno/utils/serialize.py +0 -0
  521. {agno-2.3.3 → agno-2.3.4}/agno/utils/shell.py +0 -0
  522. {agno-2.3.3 → agno-2.3.4}/agno/utils/streamlit.py +0 -0
  523. {agno-2.3.3 → agno-2.3.4}/agno/utils/string.py +0 -0
  524. {agno-2.3.3 → agno-2.3.4}/agno/utils/team.py +0 -0
  525. {agno-2.3.3 → agno-2.3.4}/agno/utils/timer.py +0 -0
  526. {agno-2.3.3 → agno-2.3.4}/agno/utils/tokens.py +0 -0
  527. {agno-2.3.3 → agno-2.3.4}/agno/utils/tools.py +0 -0
  528. {agno-2.3.3 → agno-2.3.4}/agno/utils/web.py +0 -0
  529. {agno-2.3.3 → agno-2.3.4}/agno/utils/whatsapp.py +0 -0
  530. {agno-2.3.3 → agno-2.3.4}/agno/utils/yaml_io.py +0 -0
  531. {agno-2.3.3 → agno-2.3.4}/agno/vectordb/__init__.py +0 -0
  532. {agno-2.3.3 → agno-2.3.4}/agno/vectordb/base.py +0 -0
  533. {agno-2.3.3 → agno-2.3.4}/agno/vectordb/cassandra/__init__.py +0 -0
  534. {agno-2.3.3 → agno-2.3.4}/agno/vectordb/cassandra/cassandra.py +0 -0
  535. {agno-2.3.3 → agno-2.3.4}/agno/vectordb/cassandra/extra_param_mixin.py +0 -0
  536. {agno-2.3.3 → agno-2.3.4}/agno/vectordb/cassandra/index.py +0 -0
  537. {agno-2.3.3 → agno-2.3.4}/agno/vectordb/chroma/__init__.py +0 -0
  538. {agno-2.3.3 → agno-2.3.4}/agno/vectordb/chroma/chromadb.py +0 -0
  539. {agno-2.3.3 → agno-2.3.4}/agno/vectordb/clickhouse/__init__.py +0 -0
  540. {agno-2.3.3 → agno-2.3.4}/agno/vectordb/clickhouse/clickhousedb.py +0 -0
  541. {agno-2.3.3 → agno-2.3.4}/agno/vectordb/clickhouse/index.py +0 -0
  542. {agno-2.3.3 → agno-2.3.4}/agno/vectordb/couchbase/__init__.py +0 -0
  543. {agno-2.3.3 → agno-2.3.4}/agno/vectordb/couchbase/couchbase.py +0 -0
  544. {agno-2.3.3 → agno-2.3.4}/agno/vectordb/distance.py +0 -0
  545. {agno-2.3.3 → agno-2.3.4}/agno/vectordb/lancedb/__init__.py +0 -0
  546. {agno-2.3.3 → agno-2.3.4}/agno/vectordb/lancedb/lance_db.py +0 -0
  547. {agno-2.3.3 → agno-2.3.4}/agno/vectordb/langchaindb/__init__.py +0 -0
  548. {agno-2.3.3 → agno-2.3.4}/agno/vectordb/langchaindb/langchaindb.py +0 -0
  549. {agno-2.3.3 → agno-2.3.4}/agno/vectordb/lightrag/__init__.py +0 -0
  550. {agno-2.3.3 → agno-2.3.4}/agno/vectordb/lightrag/lightrag.py +0 -0
  551. {agno-2.3.3 → agno-2.3.4}/agno/vectordb/llamaindex/__init__.py +0 -0
  552. {agno-2.3.3 → agno-2.3.4}/agno/vectordb/llamaindex/llamaindexdb.py +0 -0
  553. {agno-2.3.3 → agno-2.3.4}/agno/vectordb/milvus/__init__.py +0 -0
  554. {agno-2.3.3 → agno-2.3.4}/agno/vectordb/milvus/milvus.py +0 -0
  555. {agno-2.3.3 → agno-2.3.4}/agno/vectordb/mongodb/__init__.py +0 -0
  556. {agno-2.3.3 → agno-2.3.4}/agno/vectordb/mongodb/mongodb.py +0 -0
  557. {agno-2.3.3 → agno-2.3.4}/agno/vectordb/pgvector/__init__.py +0 -0
  558. {agno-2.3.3 → agno-2.3.4}/agno/vectordb/pgvector/index.py +0 -0
  559. {agno-2.3.3 → agno-2.3.4}/agno/vectordb/pgvector/pgvector.py +0 -0
  560. {agno-2.3.3 → agno-2.3.4}/agno/vectordb/pineconedb/__init__.py +0 -0
  561. {agno-2.3.3 → agno-2.3.4}/agno/vectordb/pineconedb/pineconedb.py +0 -0
  562. {agno-2.3.3 → agno-2.3.4}/agno/vectordb/qdrant/__init__.py +0 -0
  563. {agno-2.3.3 → agno-2.3.4}/agno/vectordb/qdrant/qdrant.py +0 -0
  564. {agno-2.3.3 → agno-2.3.4}/agno/vectordb/redis/__init__.py +0 -0
  565. {agno-2.3.3 → agno-2.3.4}/agno/vectordb/redis/redisdb.py +0 -0
  566. {agno-2.3.3 → agno-2.3.4}/agno/vectordb/search.py +0 -0
  567. {agno-2.3.3 → agno-2.3.4}/agno/vectordb/singlestore/__init__.py +0 -0
  568. {agno-2.3.3 → agno-2.3.4}/agno/vectordb/singlestore/index.py +0 -0
  569. {agno-2.3.3 → agno-2.3.4}/agno/vectordb/singlestore/singlestore.py +0 -0
  570. {agno-2.3.3 → agno-2.3.4}/agno/vectordb/surrealdb/__init__.py +0 -0
  571. {agno-2.3.3 → agno-2.3.4}/agno/vectordb/surrealdb/surrealdb.py +0 -0
  572. {agno-2.3.3 → agno-2.3.4}/agno/vectordb/upstashdb/__init__.py +0 -0
  573. {agno-2.3.3 → agno-2.3.4}/agno/vectordb/upstashdb/upstashdb.py +0 -0
  574. {agno-2.3.3 → agno-2.3.4}/agno/vectordb/weaviate/__init__.py +0 -0
  575. {agno-2.3.3 → agno-2.3.4}/agno/vectordb/weaviate/index.py +0 -0
  576. {agno-2.3.3 → agno-2.3.4}/agno/vectordb/weaviate/weaviate.py +0 -0
  577. {agno-2.3.3 → agno-2.3.4}/agno/workflow/__init__.py +0 -0
  578. {agno-2.3.3 → agno-2.3.4}/agno/workflow/agent.py +0 -0
  579. {agno-2.3.3 → agno-2.3.4}/agno/workflow/condition.py +0 -0
  580. {agno-2.3.3 → agno-2.3.4}/agno/workflow/loop.py +0 -0
  581. {agno-2.3.3 → agno-2.3.4}/agno/workflow/parallel.py +0 -0
  582. {agno-2.3.3 → agno-2.3.4}/agno/workflow/router.py +0 -0
  583. {agno-2.3.3 → agno-2.3.4}/agno/workflow/step.py +0 -0
  584. {agno-2.3.3 → agno-2.3.4}/agno/workflow/steps.py +0 -0
  585. {agno-2.3.3 → agno-2.3.4}/agno/workflow/types.py +0 -0
  586. {agno-2.3.3 → agno-2.3.4}/agno/workflow/workflow.py +0 -0
  587. {agno-2.3.3 → agno-2.3.4}/agno.egg-info/SOURCES.txt +0 -0
  588. {agno-2.3.3 → agno-2.3.4}/agno.egg-info/dependency_links.txt +0 -0
  589. {agno-2.3.3 → agno-2.3.4}/agno.egg-info/requires.txt +0 -0
  590. {agno-2.3.3 → agno-2.3.4}/agno.egg-info/top_level.txt +0 -0
  591. {agno-2.3.3 → agno-2.3.4}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agno
3
- Version: 2.3.3
3
+ Version: 2.3.4
4
4
  Summary: Agno: a lightweight library for building Multi-Agent Systems
5
5
  Author-email: Ashpreet Bedi <ashpreet@agno.com>
6
6
  Project-URL: homepage, https://agno.com
@@ -821,7 +821,7 @@ class AsyncPostgresDb(AsyncBaseDb):
821
821
  except Exception as e:
822
822
  log_error(f"Error deleting user memory: {e}")
823
823
 
824
- async def delete_user_memories(self, memory_ids: List[str]) -> None:
824
+ async def delete_user_memories(self, memory_ids: List[str], user_id: Optional[str] = None) -> None:
825
825
  """Delete user memories from the database.
826
826
 
827
827
  Args:
@@ -835,6 +835,10 @@ class AsyncPostgresDb(AsyncBaseDb):
835
835
 
836
836
  async with self.async_session_factory() as sess, sess.begin():
837
837
  delete_stmt = table.delete().where(table.c.memory_id.in_(memory_ids))
838
+
839
+ if user_id is not None:
840
+ delete_stmt = delete_stmt.where(table.c.user_id == user_id)
841
+
838
842
  result = await sess.execute(delete_stmt)
839
843
 
840
844
  if result.rowcount == 0: # type: ignore
@@ -2,6 +2,7 @@ from dataclasses import dataclass, field
2
2
  from os import getenv
3
3
  from typing import Any, Dict, Optional
4
4
 
5
+ from agno.exceptions import ModelProviderError
5
6
  from agno.models.message import Message
6
7
  from agno.models.openai.like import OpenAILike
7
8
 
@@ -28,6 +29,23 @@ class AIMLAPI(OpenAILike):
28
29
  base_url: str = "https://api.aimlapi.com/v1"
29
30
  max_tokens: int = 4096
30
31
 
32
+ def _get_client_params(self) -> Dict[str, Any]:
33
+ """
34
+ Returns client parameters for API requests, checking for AIMLAPI_API_KEY.
35
+
36
+ Returns:
37
+ Dict[str, Any]: A dictionary of client parameters for API requests.
38
+ """
39
+ if not self.api_key:
40
+ self.api_key = getenv("AIMLAPI_API_KEY")
41
+ if not self.api_key:
42
+ raise ModelProviderError(
43
+ message="AIMLAPI_API_KEY not set. Please set the AIMLAPI_API_KEY environment variable.",
44
+ model_name=self.name,
45
+ model_id=self.id,
46
+ )
47
+ return super()._get_client_params()
48
+
31
49
  def _format_message(self, message: Message) -> Dict[str, Any]:
32
50
  """
33
51
  Minimal additional formatter that only replaces None with empty string.
@@ -154,7 +154,9 @@ class Claude(Model):
154
154
 
155
155
  self.api_key = self.api_key or getenv("ANTHROPIC_API_KEY")
156
156
  if not self.api_key:
157
- log_error("ANTHROPIC_API_KEY not set. Please set the ANTHROPIC_API_KEY environment variable.")
157
+ raise ModelProviderError(
158
+ "ANTHROPIC_API_KEY not set. Please set the ANTHROPIC_API_KEY environment variable."
159
+ )
158
160
 
159
161
  # Add API key to client parameters
160
162
  client_params["api_key"] = self.api_key
@@ -7,13 +7,14 @@ from typing import Any, Dict, Iterator, List, Optional, Type, Union
7
7
  import httpx
8
8
  from pydantic import BaseModel
9
9
 
10
+ from agno.exceptions import ModelProviderError
10
11
  from agno.models.base import Model
11
12
  from agno.models.message import Message
12
13
  from agno.models.metrics import Metrics
13
14
  from agno.models.response import ModelResponse
14
15
  from agno.run.agent import RunOutput
15
16
  from agno.utils.http import get_default_async_client, get_default_sync_client
16
- from agno.utils.log import log_debug, log_error, log_warning
17
+ from agno.utils.log import log_debug, log_warning
17
18
 
18
19
  try:
19
20
  from cerebras.cloud.sdk import AsyncCerebras as AsyncCerebrasClient
@@ -77,7 +78,11 @@ class Cerebras(Model):
77
78
  if not self.api_key:
78
79
  self.api_key = getenv("CEREBRAS_API_KEY")
79
80
  if not self.api_key:
80
- log_error("CEREBRAS_API_KEY not set. Please set the CEREBRAS_API_KEY environment variable.")
81
+ raise ModelProviderError(
82
+ message="CEREBRAS_API_KEY not set. Please set the CEREBRAS_API_KEY environment variable.",
83
+ model_name=self.name,
84
+ model_id=self.id,
85
+ )
81
86
 
82
87
  # Define base client params
83
88
  base_params = {
@@ -5,6 +5,7 @@ from typing import Any, Dict, List, Optional, Type, Union
5
5
 
6
6
  from pydantic import BaseModel
7
7
 
8
+ from agno.exceptions import ModelProviderError
8
9
  from agno.models.message import Message
9
10
  from agno.models.openai.like import OpenAILike
10
11
  from agno.utils.log import log_debug
@@ -20,6 +21,23 @@ class CerebrasOpenAI(OpenAILike):
20
21
  base_url: str = "https://api.cerebras.ai/v1"
21
22
  api_key: Optional[str] = field(default_factory=lambda: getenv("CEREBRAS_API_KEY", None))
22
23
 
24
+ def _get_client_params(self) -> Dict[str, Any]:
25
+ """
26
+ Returns client parameters for API requests, checking for CEREBRAS_API_KEY.
27
+
28
+ Returns:
29
+ Dict[str, Any]: A dictionary of client parameters for API requests.
30
+ """
31
+ if not self.api_key:
32
+ self.api_key = getenv("CEREBRAS_API_KEY")
33
+ if not self.api_key:
34
+ raise ModelProviderError(
35
+ message="CEREBRAS_API_KEY not set. Please set the CEREBRAS_API_KEY environment variable.",
36
+ model_name=self.name,
37
+ model_id=self.id,
38
+ )
39
+ return super()._get_client_params()
40
+
23
41
  def get_request_params(
24
42
  self,
25
43
  response_format: Optional[Union[Dict, Type[BaseModel]]] = None,
@@ -65,7 +65,11 @@ class Cohere(Model):
65
65
 
66
66
  self.api_key = self.api_key or getenv("CO_API_KEY")
67
67
  if not self.api_key:
68
- log_error("CO_API_KEY not set. Please set the CO_API_KEY environment variable.")
68
+ raise ModelProviderError(
69
+ message="CO_API_KEY not set. Please set the CO_API_KEY environment variable.",
70
+ model_name=self.name,
71
+ model_id=self.id,
72
+ )
69
73
 
70
74
  _client_params["api_key"] = self.api_key
71
75
 
@@ -92,7 +96,11 @@ class Cohere(Model):
92
96
  self.api_key = self.api_key or getenv("CO_API_KEY")
93
97
 
94
98
  if not self.api_key:
95
- log_error("CO_API_KEY not set. Please set the CO_API_KEY environment variable.")
99
+ raise ModelProviderError(
100
+ message="CO_API_KEY not set. Please set the CO_API_KEY environment variable.",
101
+ model_name=self.name,
102
+ model_id=self.id,
103
+ )
96
104
 
97
105
  _client_params["api_key"] = self.api_key
98
106
 
@@ -1,9 +1,10 @@
1
1
  from dataclasses import dataclass, field
2
2
  from os import getenv
3
- from typing import List, Optional
3
+ from typing import Any, Dict, List, Optional
4
4
 
5
5
  import httpx
6
6
 
7
+ from agno.exceptions import ModelProviderError
7
8
  from agno.models.openai.like import OpenAILike
8
9
  from agno.utils.log import log_debug
9
10
 
@@ -26,6 +27,23 @@ class CometAPI(OpenAILike):
26
27
  api_key: Optional[str] = field(default_factory=lambda: getenv("COMETAPI_KEY"))
27
28
  base_url: str = "https://api.cometapi.com/v1"
28
29
 
30
+ def _get_client_params(self) -> Dict[str, Any]:
31
+ """
32
+ Returns client parameters for API requests, checking for COMETAPI_KEY.
33
+
34
+ Returns:
35
+ Dict[str, Any]: A dictionary of client parameters for API requests.
36
+ """
37
+ if not self.api_key:
38
+ self.api_key = getenv("COMETAPI_KEY")
39
+ if not self.api_key:
40
+ raise ModelProviderError(
41
+ message="COMETAPI_KEY not set. Please set the COMETAPI_KEY environment variable.",
42
+ model_name=self.name,
43
+ model_id=self.id,
44
+ )
45
+ return super()._get_client_params()
46
+
29
47
  def get_available_models(self) -> List[str]:
30
48
  """
31
49
  Fetch available chat models from CometAPI, filtering out non-chat models.
@@ -1,7 +1,8 @@
1
1
  from dataclasses import dataclass, field
2
2
  from os import getenv
3
- from typing import Optional
3
+ from typing import Any, Dict, Optional
4
4
 
5
+ from agno.exceptions import ModelProviderError
5
6
  from agno.models.openai.like import OpenAILike
6
7
 
7
8
 
@@ -26,3 +27,20 @@ class DeepInfra(OpenAILike):
26
27
  base_url: str = "https://api.deepinfra.com/v1/openai"
27
28
 
28
29
  supports_native_structured_outputs: bool = False
30
+
31
+ def _get_client_params(self) -> Dict[str, Any]:
32
+ """
33
+ Returns client parameters for API requests, checking for DEEPINFRA_API_KEY.
34
+
35
+ Returns:
36
+ Dict[str, Any]: A dictionary of client parameters for API requests.
37
+ """
38
+ if not self.api_key:
39
+ self.api_key = getenv("DEEPINFRA_API_KEY")
40
+ if not self.api_key:
41
+ raise ModelProviderError(
42
+ message="DEEPINFRA_API_KEY not set. Please set the DEEPINFRA_API_KEY environment variable.",
43
+ model_name=self.name,
44
+ model_id=self.id,
45
+ )
46
+ return super()._get_client_params()
@@ -1,7 +1,8 @@
1
1
  from dataclasses import dataclass, field
2
2
  from os import getenv
3
- from typing import Optional
3
+ from typing import Any, Dict, Optional
4
4
 
5
+ from agno.exceptions import ModelProviderError
5
6
  from agno.models.openai import OpenAILike
6
7
 
7
8
 
@@ -24,3 +25,20 @@ class Fireworks(OpenAILike):
24
25
 
25
26
  api_key: Optional[str] = field(default_factory=lambda: getenv("FIREWORKS_API_KEY"))
26
27
  base_url: str = "https://api.fireworks.ai/inference/v1"
28
+
29
+ def _get_client_params(self) -> Dict[str, Any]:
30
+ """
31
+ Returns client parameters for API requests, checking for FIREWORKS_API_KEY.
32
+
33
+ Returns:
34
+ Dict[str, Any]: A dictionary of client parameters for API requests.
35
+ """
36
+ if not self.api_key:
37
+ self.api_key = getenv("FIREWORKS_API_KEY")
38
+ if not self.api_key:
39
+ raise ModelProviderError(
40
+ message="FIREWORKS_API_KEY not set. Please set the FIREWORKS_API_KEY environment variable.",
41
+ model_name=self.name,
42
+ model_id=self.id,
43
+ )
44
+ return super()._get_client_params()
@@ -141,7 +141,11 @@ class Gemini(Model):
141
141
  if not vertexai:
142
142
  self.api_key = self.api_key or getenv("GOOGLE_API_KEY")
143
143
  if not self.api_key:
144
- log_error("GOOGLE_API_KEY not set. Please set the GOOGLE_API_KEY environment variable.")
144
+ raise ModelProviderError(
145
+ message="GOOGLE_API_KEY not set. Please set the GOOGLE_API_KEY environment variable.",
146
+ model_name=self.name,
147
+ model_id=self.id,
148
+ )
145
149
  client_params["api_key"] = self.api_key
146
150
  else:
147
151
  log_info("Using Vertex AI API")
@@ -74,7 +74,11 @@ class Groq(Model):
74
74
  if not self.api_key:
75
75
  self.api_key = getenv("GROQ_API_KEY")
76
76
  if not self.api_key:
77
- log_error("GROQ_API_KEY not set. Please set the GROQ_API_KEY environment variable.")
77
+ raise ModelProviderError(
78
+ message="GROQ_API_KEY not set. Please set the GROQ_API_KEY environment variable.",
79
+ model_name=self.name,
80
+ model_id=self.id,
81
+ )
78
82
 
79
83
  # Define base client params
80
84
  base_params = {
@@ -73,7 +73,11 @@ class HuggingFace(Model):
73
73
  def get_client_params(self) -> Dict[str, Any]:
74
74
  self.api_key = self.api_key or getenv("HF_TOKEN")
75
75
  if not self.api_key:
76
- log_error("HF_TOKEN not set. Please set the HF_TOKEN environment variable.")
76
+ raise ModelProviderError(
77
+ message="HF_TOKEN not set. Please set the HF_TOKEN environment variable.",
78
+ model_name=self.name,
79
+ model_id=self.id,
80
+ )
77
81
 
78
82
  _client_params: Dict[str, Any] = {}
79
83
  if self.api_key is not None:
@@ -59,7 +59,11 @@ class WatsonX(Model):
59
59
  # Fetch API key and project ID from env if not already set
60
60
  self.api_key = self.api_key or getenv("IBM_WATSONX_API_KEY")
61
61
  if not self.api_key:
62
- log_error("IBM_WATSONX_API_KEY not set. Please set the IBM_WATSONX_API_KEY environment variable.")
62
+ raise ModelProviderError(
63
+ message="IBM_WATSONX_API_KEY not set. Please set the IBM_WATSONX_API_KEY environment variable.",
64
+ model_name=self.name,
65
+ model_id=self.id,
66
+ )
63
67
 
64
68
  self.project_id = self.project_id or getenv("IBM_WATSONX_PROJECT_ID")
65
69
  if not self.project_id:
@@ -1,7 +1,8 @@
1
1
  from dataclasses import dataclass, field
2
2
  from os import getenv
3
- from typing import Optional
3
+ from typing import Any, Dict, Optional
4
4
 
5
+ from agno.exceptions import ModelProviderError
5
6
  from agno.models.openai.like import OpenAILike
6
7
 
7
8
 
@@ -24,3 +25,20 @@ class InternLM(OpenAILike):
24
25
 
25
26
  api_key: Optional[str] = field(default_factory=lambda: getenv("INTERNLM_API_KEY"))
26
27
  base_url: Optional[str] = "https://internlm-chat.intern-ai.org.cn/puyu/api/v1/chat/completions"
28
+
29
+ def _get_client_params(self) -> Dict[str, Any]:
30
+ """
31
+ Returns client parameters for API requests, checking for INTERNLM_API_KEY.
32
+
33
+ Returns:
34
+ Dict[str, Any]: A dictionary of client parameters for API requests.
35
+ """
36
+ if not self.api_key:
37
+ self.api_key = getenv("INTERNLM_API_KEY")
38
+ if not self.api_key:
39
+ raise ModelProviderError(
40
+ message="INTERNLM_API_KEY not set. Please set the INTERNLM_API_KEY environment variable.",
41
+ model_name=self.name,
42
+ model_id=self.id,
43
+ )
44
+ return super()._get_client_params()
@@ -2,6 +2,7 @@ from dataclasses import dataclass, field
2
2
  from os import getenv
3
3
  from typing import Any, Dict, Optional
4
4
 
5
+ from agno.exceptions import ModelProviderError
5
6
  from agno.models.openai.like import OpenAILike
6
7
 
7
8
 
@@ -32,6 +33,15 @@ class LangDB(OpenAILike):
32
33
  default_headers: Optional[dict] = None
33
34
 
34
35
  def _get_client_params(self) -> Dict[str, Any]:
36
+ if not self.api_key:
37
+ self.api_key = getenv("LANGDB_API_KEY")
38
+ if not self.api_key:
39
+ raise ModelProviderError(
40
+ message="LANGDB_API_KEY not set. Please set the LANGDB_API_KEY environment variable.",
41
+ model_name=self.name,
42
+ model_id=self.id,
43
+ )
44
+
35
45
  if not self.project_id:
36
46
  raise ValueError("LANGDB_PROJECT_ID not set in the environment")
37
47
 
@@ -0,0 +1,43 @@
1
+ from dataclasses import dataclass, field
2
+ from os import getenv
3
+ from typing import Any, Dict, Optional
4
+
5
+ from agno.exceptions import ModelProviderError
6
+ from agno.models.openai.like import OpenAILike
7
+
8
+
9
+ @dataclass
10
+ class LiteLLMOpenAI(OpenAILike):
11
+ """
12
+ A class for interacting with LiteLLM.
13
+
14
+ Attributes:
15
+ id (str): The id of the LiteLLM model. Default is "gpt-4o".
16
+ name (str): The name of this chat model instance. Default is "LiteLLM".
17
+ provider (str): The provider of the model. Default is "LiteLLM".
18
+ base_url (str): The base url to which the requests are sent.
19
+ """
20
+
21
+ id: str = "gpt-4o"
22
+ name: str = "LiteLLM"
23
+ provider: str = "LiteLLM"
24
+
25
+ api_key: Optional[str] = field(default_factory=lambda: getenv("LITELLM_API_KEY"))
26
+ base_url: str = "http://0.0.0.0:4000"
27
+
28
+ def _get_client_params(self) -> Dict[str, Any]:
29
+ """
30
+ Returns client parameters for API requests, checking for LITELLM_API_KEY.
31
+
32
+ Returns:
33
+ Dict[str, Any]: A dictionary of client parameters for API requests.
34
+ """
35
+ if not self.api_key:
36
+ self.api_key = getenv("LITELLM_API_KEY")
37
+ if not self.api_key:
38
+ raise ModelProviderError(
39
+ message="LITELLM_API_KEY not set. Please set the LITELLM_API_KEY environment variable.",
40
+ model_name=self.name,
41
+ model_id=self.id,
42
+ )
43
+ return super()._get_client_params()
@@ -74,7 +74,11 @@ class Llama(Model):
74
74
  if not self.api_key:
75
75
  self.api_key = getenv("LLAMA_API_KEY")
76
76
  if not self.api_key:
77
- log_error("LLAMA_API_KEY not set. Please set the LLAMA_API_KEY environment variable.")
77
+ raise ModelProviderError(
78
+ message="LLAMA_API_KEY not set. Please set the LLAMA_API_KEY environment variable.",
79
+ model_name=self.name,
80
+ model_id=self.id,
81
+ )
78
82
 
79
83
  # Define base client params
80
84
  base_params = {
@@ -7,6 +7,7 @@ try:
7
7
  except ImportError:
8
8
  raise ImportError("`openai` not installed. Please install using `pip install openai`")
9
9
 
10
+ from agno.exceptions import ModelProviderError
10
11
  from agno.models.meta.llama import Message
11
12
  from agno.models.openai.like import OpenAILike
12
13
  from agno.utils.models.llama import format_message
@@ -49,6 +50,23 @@ class LlamaOpenAI(OpenAILike):
49
50
  # Cached async client
50
51
  openai_async_client: Optional[AsyncOpenAIClient] = None
51
52
 
53
+ def _get_client_params(self) -> Dict[str, Any]:
54
+ """
55
+ Returns client parameters for API requests, checking for LLAMA_API_KEY.
56
+
57
+ Returns:
58
+ Dict[str, Any]: A dictionary of client parameters for API requests.
59
+ """
60
+ if not self.api_key:
61
+ self.api_key = getenv("LLAMA_API_KEY")
62
+ if not self.api_key:
63
+ raise ModelProviderError(
64
+ message="LLAMA_API_KEY not set. Please set the LLAMA_API_KEY environment variable.",
65
+ model_name=self.name,
66
+ model_id=self.id,
67
+ )
68
+ return super()._get_client_params()
69
+
52
70
  def _format_message(self, message: Message) -> Dict[str, Any]:
53
71
  """
54
72
  Format a message into the format expected by Llama API.
@@ -94,7 +94,11 @@ class MistralChat(Model):
94
94
 
95
95
  self.api_key = self.api_key or getenv("MISTRAL_API_KEY")
96
96
  if not self.api_key:
97
- log_error("MISTRAL_API_KEY not set. Please set the MISTRAL_API_KEY environment variable.")
97
+ raise ModelProviderError(
98
+ message="MISTRAL_API_KEY not set. Please set the MISTRAL_API_KEY environment variable.",
99
+ model_name=self.name,
100
+ model_id=self.id,
101
+ )
98
102
 
99
103
  client_params.update(
100
104
  {
@@ -1,7 +1,8 @@
1
1
  from dataclasses import dataclass, field
2
2
  from os import getenv
3
- from typing import Optional
3
+ from typing import Any, Dict, Optional
4
4
 
5
+ from agno.exceptions import ModelProviderError
5
6
  from agno.models.openai.like import OpenAILike
6
7
 
7
8
 
@@ -26,3 +27,20 @@ class Nvidia(OpenAILike):
26
27
  base_url: str = "https://integrate.api.nvidia.com/v1"
27
28
 
28
29
  supports_native_structured_outputs: bool = False
30
+
31
+ def _get_client_params(self) -> Dict[str, Any]:
32
+ """
33
+ Returns client parameters for API requests, checking for NVIDIA_API_KEY.
34
+
35
+ Returns:
36
+ Dict[str, Any]: A dictionary of client parameters for API requests.
37
+ """
38
+ if not self.api_key:
39
+ self.api_key = getenv("NVIDIA_API_KEY")
40
+ if not self.api_key:
41
+ raise ModelProviderError(
42
+ message="NVIDIA_API_KEY not set. Please set the NVIDIA_API_KEY environment variable.",
43
+ model_name=self.name,
44
+ model_id=self.id,
45
+ )
46
+ return super()._get_client_params()
@@ -102,7 +102,11 @@ class OpenAIChat(Model):
102
102
  if not self.api_key:
103
103
  self.api_key = getenv("OPENAI_API_KEY")
104
104
  if not self.api_key:
105
- log_error("OPENAI_API_KEY not set. Please set the OPENAI_API_KEY environment variable.")
105
+ raise ModelProviderError(
106
+ message="OPENAI_API_KEY not set. Please set the OPENAI_API_KEY environment variable.",
107
+ model_name=self.name,
108
+ model_id=self.id,
109
+ )
106
110
 
107
111
  # Define base client params
108
112
  base_params = {
@@ -117,7 +117,11 @@ class OpenAIResponses(Model):
117
117
  if not self.api_key:
118
118
  self.api_key = getenv("OPENAI_API_KEY")
119
119
  if not self.api_key:
120
- log_error("OPENAI_API_KEY not set. Please set the OPENAI_API_KEY environment variable.")
120
+ raise ModelProviderError(
121
+ message="OPENAI_API_KEY not set. Please set the OPENAI_API_KEY environment variable.",
122
+ model_name=self.name,
123
+ model_id=self.id,
124
+ )
121
125
 
122
126
  # Define base client params
123
127
  base_params = {
@@ -4,6 +4,7 @@ from typing import Any, Dict, List, Optional, Type, Union
4
4
 
5
5
  from pydantic import BaseModel
6
6
 
7
+ from agno.exceptions import ModelProviderError
7
8
  from agno.models.openai.like import OpenAILike
8
9
  from agno.run.agent import RunOutput
9
10
 
@@ -34,6 +35,25 @@ class OpenRouter(OpenAILike):
34
35
  max_tokens: int = 1024
35
36
  models: Optional[List[str]] = None # Dynamic model routing https://openrouter.ai/docs/features/model-routing
36
37
 
38
+ def _get_client_params(self) -> Dict[str, Any]:
39
+ """
40
+ Returns client parameters for API requests, checking for OPENROUTER_API_KEY.
41
+
42
+ Returns:
43
+ Dict[str, Any]: A dictionary of client parameters for API requests.
44
+ """
45
+ # Fetch API key from env if not already set
46
+ if not self.api_key:
47
+ self.api_key = getenv("OPENROUTER_API_KEY")
48
+ if not self.api_key:
49
+ raise ModelProviderError(
50
+ message="OPENROUTER_API_KEY not set. Please set the OPENROUTER_API_KEY environment variable.",
51
+ model_name=self.name,
52
+ model_id=self.id,
53
+ )
54
+
55
+ return super()._get_client_params()
56
+
37
57
  def get_request_params(
38
58
  self,
39
59
  response_format: Optional[Union[Dict, Type[BaseModel]]] = None,
@@ -50,6 +50,23 @@ class Perplexity(OpenAILike):
50
50
  supports_native_structured_outputs: bool = False
51
51
  supports_json_schema_outputs: bool = True
52
52
 
53
+ def _get_client_params(self) -> Dict[str, Any]:
54
+ """
55
+ Returns client parameters for API requests, checking for PERPLEXITY_API_KEY.
56
+
57
+ Returns:
58
+ Dict[str, Any]: A dictionary of client parameters for API requests.
59
+ """
60
+ if not self.api_key:
61
+ self.api_key = getenv("PERPLEXITY_API_KEY")
62
+ if not self.api_key:
63
+ raise ModelProviderError(
64
+ message="PERPLEXITY_API_KEY not set. Please set the PERPLEXITY_API_KEY environment variable.",
65
+ model_name=self.name,
66
+ model_id=self.id,
67
+ )
68
+ return super()._get_client_params()
69
+
53
70
  def get_request_params(
54
71
  self,
55
72
  response_format: Optional[Union[Dict, Type[BaseModel]]] = None,
@@ -4,6 +4,7 @@ from typing import Any, Dict, List, Optional, Type, Union
4
4
 
5
5
  from pydantic import BaseModel
6
6
 
7
+ from agno.exceptions import ModelProviderError
7
8
  from agno.models.openai.like import OpenAILike
8
9
  from agno.run.agent import RunOutput
9
10
  from agno.run.team import TeamRunOutput
@@ -30,6 +31,23 @@ class Requesty(OpenAILike):
30
31
  base_url: str = "https://router.requesty.ai/v1"
31
32
  max_tokens: int = 1024
32
33
 
34
+ def _get_client_params(self) -> Dict[str, Any]:
35
+ """
36
+ Returns client parameters for API requests, checking for REQUESTY_API_KEY.
37
+
38
+ Returns:
39
+ Dict[str, Any]: A dictionary of client parameters for API requests.
40
+ """
41
+ if not self.api_key:
42
+ self.api_key = getenv("REQUESTY_API_KEY")
43
+ if not self.api_key:
44
+ raise ModelProviderError(
45
+ message="REQUESTY_API_KEY not set. Please set the REQUESTY_API_KEY environment variable.",
46
+ model_name=self.name,
47
+ model_id=self.id,
48
+ )
49
+ return super()._get_client_params()
50
+
33
51
  def get_request_params(
34
52
  self,
35
53
  response_format: Optional[Union[Dict, Type[BaseModel]]] = None,
@@ -1,7 +1,8 @@
1
1
  from dataclasses import dataclass, field
2
2
  from os import getenv
3
- from typing import Optional
3
+ from typing import Any, Dict, Optional
4
4
 
5
+ from agno.exceptions import ModelProviderError
5
6
  from agno.models.openai.like import OpenAILike
6
7
 
7
8
 
@@ -26,3 +27,20 @@ class Sambanova(OpenAILike):
26
27
  base_url: str = "https://api.sambanova.ai/v1"
27
28
 
28
29
  supports_native_structured_outputs: bool = False
30
+
31
+ def _get_client_params(self) -> Dict[str, Any]:
32
+ """
33
+ Returns client parameters for API requests, checking for SAMBANOVA_API_KEY.
34
+
35
+ Returns:
36
+ Dict[str, Any]: A dictionary of client parameters for API requests.
37
+ """
38
+ if not self.api_key:
39
+ self.api_key = getenv("SAMBANOVA_API_KEY")
40
+ if not self.api_key:
41
+ raise ModelProviderError(
42
+ message="SAMBANOVA_API_KEY not set. Please set the SAMBANOVA_API_KEY environment variable.",
43
+ model_name=self.name,
44
+ model_id=self.id,
45
+ )
46
+ return super()._get_client_params()