buddy-ai 1.0.0__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 (540) hide show
  1. buddy_ai-1.0.0/LICENSE +21 -0
  2. buddy_ai-1.0.0/MANIFEST.in +20 -0
  3. buddy_ai-1.0.0/PKG-INFO +659 -0
  4. buddy_ai-1.0.0/README.md +590 -0
  5. buddy_ai-1.0.0/__init__.py +47 -0
  6. buddy_ai-1.0.0/agent/__init__.py +60 -0
  7. buddy_ai-1.0.0/agent/agent.py +8329 -0
  8. buddy_ai-1.0.0/agent/metrics.py +108 -0
  9. buddy_ai-1.0.0/api/__init__.py +0 -0
  10. buddy_ai-1.0.0/api/agent.py +86 -0
  11. buddy_ai-1.0.0/api/api.py +83 -0
  12. buddy_ai-1.0.0/api/app.py +37 -0
  13. buddy_ai-1.0.0/api/evals.py +35 -0
  14. buddy_ai-1.0.0/api/playground.py +94 -0
  15. buddy_ai-1.0.0/api/routes.py +48 -0
  16. buddy_ai-1.0.0/api/schemas/__init__.py +0 -0
  17. buddy_ai-1.0.0/api/schemas/agent.py +32 -0
  18. buddy_ai-1.0.0/api/schemas/app.py +12 -0
  19. buddy_ai-1.0.0/api/schemas/evals.py +25 -0
  20. buddy_ai-1.0.0/api/schemas/playground.py +22 -0
  21. buddy_ai-1.0.0/api/schemas/response.py +6 -0
  22. buddy_ai-1.0.0/api/schemas/team.py +32 -0
  23. buddy_ai-1.0.0/api/schemas/user.py +35 -0
  24. buddy_ai-1.0.0/api/schemas/workflows.py +12 -0
  25. buddy_ai-1.0.0/api/schemas/workspace.py +46 -0
  26. buddy_ai-1.0.0/api/team.py +87 -0
  27. buddy_ai-1.0.0/api/user.py +162 -0
  28. buddy_ai-1.0.0/api/workflows.py +35 -0
  29. buddy_ai-1.0.0/api/workspace.py +177 -0
  30. buddy_ai-1.0.0/app/__init__.py +0 -0
  31. buddy_ai-1.0.0/app/agui/__init__.py +4 -0
  32. buddy_ai-1.0.0/app/agui/app.py +18 -0
  33. buddy_ai-1.0.0/app/agui/async_router.py +122 -0
  34. buddy_ai-1.0.0/app/agui/sync_router.py +122 -0
  35. buddy_ai-1.0.0/app/agui/utils.py +392 -0
  36. buddy_ai-1.0.0/app/base.py +188 -0
  37. buddy_ai-1.0.0/app/discord/__init__.py +4 -0
  38. buddy_ai-1.0.0/app/discord/client.py +199 -0
  39. buddy_ai-1.0.0/app/fastapi/__init__.py +4 -0
  40. buddy_ai-1.0.0/app/fastapi/app.py +108 -0
  41. buddy_ai-1.0.0/app/fastapi/async_router.py +455 -0
  42. buddy_ai-1.0.0/app/fastapi/sync_router.py +449 -0
  43. buddy_ai-1.0.0/app/playground/__init__.py +3 -0
  44. buddy_ai-1.0.0/app/playground/app.py +230 -0
  45. buddy_ai-1.0.0/app/playground/async_router.py +1051 -0
  46. buddy_ai-1.0.0/app/playground/deploy.py +251 -0
  47. buddy_ai-1.0.0/app/playground/operator.py +184 -0
  48. buddy_ai-1.0.0/app/playground/schemas.py +221 -0
  49. buddy_ai-1.0.0/app/playground/serve.py +57 -0
  50. buddy_ai-1.0.0/app/playground/settings.py +51 -0
  51. buddy_ai-1.0.0/app/playground/sync_router.py +1043 -0
  52. buddy_ai-1.0.0/app/playground/utils.py +47 -0
  53. buddy_ai-1.0.0/app/settings.py +15 -0
  54. buddy_ai-1.0.0/app/slack/__init__.py +4 -0
  55. buddy_ai-1.0.0/app/slack/app.py +20 -0
  56. buddy_ai-1.0.0/app/slack/async_router.py +93 -0
  57. buddy_ai-1.0.0/app/slack/security.py +31 -0
  58. buddy_ai-1.0.0/app/slack/sync_router.py +93 -0
  59. buddy_ai-1.0.0/app/utils.py +55 -0
  60. buddy_ai-1.0.0/app/whatsapp/__init__.py +4 -0
  61. buddy_ai-1.0.0/app/whatsapp/app.py +16 -0
  62. buddy_ai-1.0.0/app/whatsapp/async_router.py +208 -0
  63. buddy_ai-1.0.0/app/whatsapp/security.py +53 -0
  64. buddy_ai-1.0.0/app/whatsapp/sync_router.py +198 -0
  65. buddy_ai-1.0.0/buddy_ai.egg-info/PKG-INFO +659 -0
  66. buddy_ai-1.0.0/buddy_ai.egg-info/SOURCES.txt +1065 -0
  67. buddy_ai-1.0.0/buddy_ai.egg-info/dependency_links.txt +1 -0
  68. buddy_ai-1.0.0/buddy_ai.egg-info/entry_points.txt +2 -0
  69. buddy_ai-1.0.0/buddy_ai.egg-info/requires.txt +45 -0
  70. buddy_ai-1.0.0/buddy_ai.egg-info/top_level.txt +24 -0
  71. buddy_ai-1.0.0/cli/__init__.py +0 -0
  72. buddy_ai-1.0.0/cli/auth_server.py +251 -0
  73. buddy_ai-1.0.0/cli/config.py +276 -0
  74. buddy_ai-1.0.0/cli/console.py +89 -0
  75. buddy_ai-1.0.0/cli/credentials.py +25 -0
  76. buddy_ai-1.0.0/cli/entrypoint.py +584 -0
  77. buddy_ai-1.0.0/cli/operator.py +358 -0
  78. buddy_ai-1.0.0/cli/settings.py +108 -0
  79. buddy_ai-1.0.0/cli/simple_train_cli.py +211 -0
  80. buddy_ai-1.0.0/cli/train_cli.py +503 -0
  81. buddy_ai-1.0.0/cli/ws/__init__.py +0 -0
  82. buddy_ai-1.0.0/cli/ws/ws_cli.py +819 -0
  83. buddy_ai-1.0.0/constants.py +14 -0
  84. buddy_ai-1.0.0/debug.py +19 -0
  85. buddy_ai-1.0.0/document/__init__.py +6 -0
  86. buddy_ai-1.0.0/document/base.py +49 -0
  87. buddy_ai-1.0.0/document/chunking/__init__.py +0 -0
  88. buddy_ai-1.0.0/document/chunking/agentic.py +77 -0
  89. buddy_ai-1.0.0/document/chunking/document.py +92 -0
  90. buddy_ai-1.0.0/document/chunking/fixed.py +58 -0
  91. buddy_ai-1.0.0/document/chunking/markdown.py +152 -0
  92. buddy_ai-1.0.0/document/chunking/recursive.py +64 -0
  93. buddy_ai-1.0.0/document/chunking/row.py +40 -0
  94. buddy_ai-1.0.0/document/chunking/semantic.py +46 -0
  95. buddy_ai-1.0.0/document/chunking/strategy.py +32 -0
  96. buddy_ai-1.0.0/document/reader/__init__.py +6 -0
  97. buddy_ai-1.0.0/document/reader/arxiv_reader.py +54 -0
  98. buddy_ai-1.0.0/document/reader/base.py +48 -0
  99. buddy_ai-1.0.0/document/reader/csv_reader.py +185 -0
  100. buddy_ai-1.0.0/document/reader/docx_reader.py +61 -0
  101. buddy_ai-1.0.0/document/reader/firecrawl_reader.py +181 -0
  102. buddy_ai-1.0.0/document/reader/gcs/__init__.py +0 -0
  103. buddy_ai-1.0.0/document/reader/gcs/pdf_reader.py +45 -0
  104. buddy_ai-1.0.0/document/reader/json_reader.py +67 -0
  105. buddy_ai-1.0.0/document/reader/markdown_reader.py +89 -0
  106. buddy_ai-1.0.0/document/reader/pdf_reader.py +512 -0
  107. buddy_ai-1.0.0/document/reader/s3/__init__.py +0 -0
  108. buddy_ai-1.0.0/document/reader/s3/pdf_reader.py +60 -0
  109. buddy_ai-1.0.0/document/reader/s3/text_reader.py +64 -0
  110. buddy_ai-1.0.0/document/reader/text_reader.py +95 -0
  111. buddy_ai-1.0.0/document/reader/url_reader.py +60 -0
  112. buddy_ai-1.0.0/document/reader/website_reader.py +411 -0
  113. buddy_ai-1.0.0/document/reader/youtube_reader.py +59 -0
  114. buddy_ai-1.0.0/embedder/__init__.py +6 -0
  115. buddy_ai-1.0.0/embedder/aws_bedrock.py +213 -0
  116. buddy_ai-1.0.0/embedder/azure_openai.py +93 -0
  117. buddy_ai-1.0.0/embedder/base.py +15 -0
  118. buddy_ai-1.0.0/embedder/cohere.py +74 -0
  119. buddy_ai-1.0.0/embedder/fastembed.py +47 -0
  120. buddy_ai-1.0.0/embedder/fireworks.py +14 -0
  121. buddy_ai-1.0.0/embedder/google.py +108 -0
  122. buddy_ai-1.0.0/embedder/huggingface.py +56 -0
  123. buddy_ai-1.0.0/embedder/jina.py +74 -0
  124. buddy_ai-1.0.0/embedder/langdb.py +81 -0
  125. buddy_ai-1.0.0/embedder/mistral.py +83 -0
  126. buddy_ai-1.0.0/embedder/nebius.py +14 -0
  127. buddy_ai-1.0.0/embedder/ollama.py +91 -0
  128. buddy_ai-1.0.0/embedder/openai.py +79 -0
  129. buddy_ai-1.0.0/embedder/sentence_transformer.py +45 -0
  130. buddy_ai-1.0.0/embedder/together.py +14 -0
  131. buddy_ai-1.0.0/embedder/voyageai.py +65 -0
  132. buddy_ai-1.0.0/eval/__init__.py +0 -0
  133. buddy_ai-1.0.0/eval/accuracy.py +723 -0
  134. buddy_ai-1.0.0/eval/performance.py +707 -0
  135. buddy_ai-1.0.0/eval/reliability.py +252 -0
  136. buddy_ai-1.0.0/eval/utils.py +93 -0
  137. buddy_ai-1.0.0/exceptions.py +95 -0
  138. buddy_ai-1.0.0/file/__init__.py +6 -0
  139. buddy_ai-1.0.0/file/file.py +17 -0
  140. buddy_ai-1.0.0/file/local/__init__.py +0 -0
  141. buddy_ai-1.0.0/file/local/csv.py +33 -0
  142. buddy_ai-1.0.0/file/local/txt.py +20 -0
  143. buddy_ai-1.0.0/infra/__init__.py +0 -0
  144. buddy_ai-1.0.0/infra/app.py +241 -0
  145. buddy_ai-1.0.0/infra/base.py +145 -0
  146. buddy_ai-1.0.0/infra/context.py +21 -0
  147. buddy_ai-1.0.0/infra/db_app.py +53 -0
  148. buddy_ai-1.0.0/infra/resource.py +206 -0
  149. buddy_ai-1.0.0/infra/resources.py +56 -0
  150. buddy_ai-1.0.0/knowledge/__init__.py +13 -0
  151. buddy_ai-1.0.0/knowledge/agent.py +699 -0
  152. buddy_ai-1.0.0/knowledge/arxiv.py +34 -0
  153. buddy_ai-1.0.0/knowledge/combined.py +37 -0
  154. buddy_ai-1.0.0/knowledge/csv.py +145 -0
  155. buddy_ai-1.0.0/knowledge/csv_url.py +125 -0
  156. buddy_ai-1.0.0/knowledge/document.py +224 -0
  157. buddy_ai-1.0.0/knowledge/docx.py +138 -0
  158. buddy_ai-1.0.0/knowledge/firecrawl.py +35 -0
  159. buddy_ai-1.0.0/knowledge/gcs/__init__.py +0 -0
  160. buddy_ai-1.0.0/knowledge/gcs/base.py +40 -0
  161. buddy_ai-1.0.0/knowledge/gcs/pdf.py +126 -0
  162. buddy_ai-1.0.0/knowledge/json.py +138 -0
  163. buddy_ai-1.0.0/knowledge/langchain.py +72 -0
  164. buddy_ai-1.0.0/knowledge/light_rag.py +274 -0
  165. buddy_ai-1.0.0/knowledge/llamaindex.py +67 -0
  166. buddy_ai-1.0.0/knowledge/markdown.py +155 -0
  167. buddy_ai-1.0.0/knowledge/pdf.py +165 -0
  168. buddy_ai-1.0.0/knowledge/pdf_bytes.py +43 -0
  169. buddy_ai-1.0.0/knowledge/pdf_url.py +149 -0
  170. buddy_ai-1.0.0/knowledge/s3/__init__.py +0 -0
  171. buddy_ai-1.0.0/knowledge/s3/base.py +65 -0
  172. buddy_ai-1.0.0/knowledge/s3/pdf.py +34 -0
  173. buddy_ai-1.0.0/knowledge/s3/text.py +35 -0
  174. buddy_ai-1.0.0/knowledge/sql_knowledge.py +391 -0
  175. buddy_ai-1.0.0/knowledge/text.py +142 -0
  176. buddy_ai-1.0.0/knowledge/url.py +47 -0
  177. buddy_ai-1.0.0/knowledge/website.py +180 -0
  178. buddy_ai-1.0.0/knowledge/wikipedia.py +33 -0
  179. buddy_ai-1.0.0/knowledge/youtube.py +36 -0
  180. buddy_ai-1.0.0/media.py +368 -0
  181. buddy_ai-1.0.0/memory/__init__.py +12 -0
  182. buddy_ai-1.0.0/memory/agent.py +424 -0
  183. buddy_ai-1.0.0/memory/classifier.py +105 -0
  184. buddy_ai-1.0.0/memory/db/__init__.py +6 -0
  185. buddy_ai-1.0.0/memory/db/base.py +43 -0
  186. buddy_ai-1.0.0/memory/db/mongodb.py +191 -0
  187. buddy_ai-1.0.0/memory/db/postgres.py +204 -0
  188. buddy_ai-1.0.0/memory/db/sqlite.py +194 -0
  189. buddy_ai-1.0.0/memory/manager.py +219 -0
  190. buddy_ai-1.0.0/memory/memory.py +22 -0
  191. buddy_ai-1.0.0/memory/row.py +36 -0
  192. buddy_ai-1.0.0/memory/summarizer.py +202 -0
  193. buddy_ai-1.0.0/memory/summary.py +19 -0
  194. buddy_ai-1.0.0/memory/team.py +416 -0
  195. buddy_ai-1.0.0/memory/v2/__init__.py +3 -0
  196. buddy_ai-1.0.0/memory/v2/db/__init__.py +2 -0
  197. buddy_ai-1.0.0/memory/v2/db/base.py +43 -0
  198. buddy_ai-1.0.0/memory/v2/db/firestore.py +340 -0
  199. buddy_ai-1.0.0/memory/v2/db/mongodb.py +198 -0
  200. buddy_ai-1.0.0/memory/v2/db/postgres.py +215 -0
  201. buddy_ai-1.0.0/memory/v2/db/redis.py +189 -0
  202. buddy_ai-1.0.0/memory/v2/db/schema.py +54 -0
  203. buddy_ai-1.0.0/memory/v2/db/sqlite.py +210 -0
  204. buddy_ai-1.0.0/memory/v2/manager.py +438 -0
  205. buddy_ai-1.0.0/memory/v2/memory.py +1099 -0
  206. buddy_ai-1.0.0/memory/v2/schema.py +55 -0
  207. buddy_ai-1.0.0/memory/v2/summarizer.py +216 -0
  208. buddy_ai-1.0.0/memory/workflow.py +39 -0
  209. buddy_ai-1.0.0/models/__init__.py +0 -0
  210. buddy_ai-1.0.0/models/aimlapi/__init__.py +6 -0
  211. buddy_ai-1.0.0/models/aimlapi/aimlapi.py +46 -0
  212. buddy_ai-1.0.0/models/anthropic/__init__.py +6 -0
  213. buddy_ai-1.0.0/models/anthropic/claude.py +646 -0
  214. buddy_ai-1.0.0/models/aws/__init__.py +16 -0
  215. buddy_ai-1.0.0/models/aws/bedrock.py +834 -0
  216. buddy_ai-1.0.0/models/aws/claude.py +333 -0
  217. buddy_ai-1.0.0/models/azure/__init__.py +19 -0
  218. buddy_ai-1.0.0/models/azure/ai_foundry.py +418 -0
  219. buddy_ai-1.0.0/models/azure/openai_chat.py +124 -0
  220. buddy_ai-1.0.0/models/base.py +1707 -0
  221. buddy_ai-1.0.0/models/cerebras/__init__.py +13 -0
  222. buddy_ai-1.0.0/models/cerebras/cerebras.py +436 -0
  223. buddy_ai-1.0.0/models/cerebras/cerebras_openai.py +110 -0
  224. buddy_ai-1.0.0/models/cohere/__init__.py +6 -0
  225. buddy_ai-1.0.0/models/cohere/chat.py +382 -0
  226. buddy_ai-1.0.0/models/dashscope/__init__.py +6 -0
  227. buddy_ai-1.0.0/models/dashscope/dashscope.py +82 -0
  228. buddy_ai-1.0.0/models/deepinfra/__init__.py +6 -0
  229. buddy_ai-1.0.0/models/deepinfra/deepinfra.py +29 -0
  230. buddy_ai-1.0.0/models/deepseek/__init__.py +6 -0
  231. buddy_ai-1.0.0/models/deepseek/deepseek.py +62 -0
  232. buddy_ai-1.0.0/models/defaults.py +1 -0
  233. buddy_ai-1.0.0/models/fireworks/__init__.py +6 -0
  234. buddy_ai-1.0.0/models/fireworks/fireworks.py +27 -0
  235. buddy_ai-1.0.0/models/google/__init__.py +6 -0
  236. buddy_ai-1.0.0/models/google/gemini.py +960 -0
  237. buddy_ai-1.0.0/models/groq/__init__.py +6 -0
  238. buddy_ai-1.0.0/models/groq/groq.py +492 -0
  239. buddy_ai-1.0.0/models/huggingface/__init__.py +6 -0
  240. buddy_ai-1.0.0/models/huggingface/huggingface.py +426 -0
  241. buddy_ai-1.0.0/models/ibm/__init__.py +6 -0
  242. buddy_ai-1.0.0/models/ibm/watsonx.py +364 -0
  243. buddy_ai-1.0.0/models/internlm/__init__.py +4 -0
  244. buddy_ai-1.0.0/models/internlm/internlm.py +27 -0
  245. buddy_ai-1.0.0/models/langdb/__init__.py +2 -0
  246. buddy_ai-1.0.0/models/langdb/langdb.py +49 -0
  247. buddy_ai-1.0.0/models/litellm/__init__.py +15 -0
  248. buddy_ai-1.0.0/models/litellm/chat.py +380 -0
  249. buddy_ai-1.0.0/models/litellm/litellm_openai.py +26 -0
  250. buddy_ai-1.0.0/models/lmstudio/__init__.py +6 -0
  251. buddy_ai-1.0.0/models/lmstudio/lmstudio.py +26 -0
  252. buddy_ai-1.0.0/models/message.py +401 -0
  253. buddy_ai-1.0.0/models/meta/__init__.py +13 -0
  254. buddy_ai-1.0.0/models/meta/llama.py +434 -0
  255. buddy_ai-1.0.0/models/meta/llama_openai.py +75 -0
  256. buddy_ai-1.0.0/models/mistral/__init__.py +6 -0
  257. buddy_ai-1.0.0/models/mistral/mistral.py +364 -0
  258. buddy_ai-1.0.0/models/nebius/__init__.py +4 -0
  259. buddy_ai-1.0.0/models/nebius/nebius.py +55 -0
  260. buddy_ai-1.0.0/models/nvidia/__init__.py +6 -0
  261. buddy_ai-1.0.0/models/nvidia/nvidia.py +29 -0
  262. buddy_ai-1.0.0/models/ollama/__init__.py +8 -0
  263. buddy_ai-1.0.0/models/ollama/chat.py +350 -0
  264. buddy_ai-1.0.0/models/ollama/tools.py +431 -0
  265. buddy_ai-1.0.0/models/openai/__init__.py +10 -0
  266. buddy_ai-1.0.0/models/openai/chat.py +733 -0
  267. buddy_ai-1.0.0/models/openai/like.py +28 -0
  268. buddy_ai-1.0.0/models/openai/responses.py +933 -0
  269. buddy_ai-1.0.0/models/openrouter/__init__.py +6 -0
  270. buddy_ai-1.0.0/models/openrouter/openrouter.py +29 -0
  271. buddy_ai-1.0.0/models/perplexity/__init__.py +6 -0
  272. buddy_ai-1.0.0/models/perplexity/perplexity.py +165 -0
  273. buddy_ai-1.0.0/models/portkey/__init__.py +4 -0
  274. buddy_ai-1.0.0/models/portkey/portkey.py +89 -0
  275. buddy_ai-1.0.0/models/qwen/__init__.py +6 -0
  276. buddy_ai-1.0.0/models/response.py +119 -0
  277. buddy_ai-1.0.0/models/sambanova/__init__.py +6 -0
  278. buddy_ai-1.0.0/models/sambanova/sambanova.py +29 -0
  279. buddy_ai-1.0.0/models/together/__init__.py +6 -0
  280. buddy_ai-1.0.0/models/together/together.py +26 -0
  281. buddy_ai-1.0.0/models/vercel/__init__.py +4 -0
  282. buddy_ai-1.0.0/models/vercel/v0.py +27 -0
  283. buddy_ai-1.0.0/models/vllm/__init__.py +4 -0
  284. buddy_ai-1.0.0/models/vllm/vllm.py +78 -0
  285. buddy_ai-1.0.0/models/xai/__init__.py +4 -0
  286. buddy_ai-1.0.0/models/xai/xai.py +113 -0
  287. buddy_ai-1.0.0/playground/__init__.py +10 -0
  288. buddy_ai-1.0.0/playground/deploy.py +4 -0
  289. buddy_ai-1.0.0/playground/playground.py +9 -0
  290. buddy_ai-1.0.0/playground/serve.py +4 -0
  291. buddy_ai-1.0.0/playground/settings.py +4 -0
  292. buddy_ai-1.0.0/py.typed +0 -0
  293. buddy_ai-1.0.0/pyproject.toml +111 -0
  294. buddy_ai-1.0.0/reasoning/__init__.py +0 -0
  295. buddy_ai-1.0.0/reasoning/azure_ai_foundry.py +68 -0
  296. buddy_ai-1.0.0/reasoning/deepseek.py +64 -0
  297. buddy_ai-1.0.0/reasoning/default.py +101 -0
  298. buddy_ai-1.0.0/reasoning/groq.py +72 -0
  299. buddy_ai-1.0.0/reasoning/helpers.py +66 -0
  300. buddy_ai-1.0.0/reasoning/ollama.py +68 -0
  301. buddy_ai-1.0.0/reasoning/openai.py +82 -0
  302. buddy_ai-1.0.0/reasoning/step.py +31 -0
  303. buddy_ai-1.0.0/reranker/__init__.py +0 -0
  304. buddy_ai-1.0.0/reranker/base.py +15 -0
  305. buddy_ai-1.0.0/reranker/cohere.py +65 -0
  306. buddy_ai-1.0.0/reranker/infinity.py +196 -0
  307. buddy_ai-1.0.0/reranker/sentence_transformer.py +55 -0
  308. buddy_ai-1.0.0/run/__init__.py +0 -0
  309. buddy_ai-1.0.0/run/base.py +215 -0
  310. buddy_ai-1.0.0/run/messages.py +33 -0
  311. buddy_ai-1.0.0/run/response.py +468 -0
  312. buddy_ai-1.0.0/run/team.py +466 -0
  313. buddy_ai-1.0.0/run/v2/__init__.py +0 -0
  314. buddy_ai-1.0.0/run/v2/workflow.py +568 -0
  315. buddy_ai-1.0.0/run/workflow.py +60 -0
  316. buddy_ai-1.0.0/setup.cfg +4 -0
  317. buddy_ai-1.0.0/storage/__init__.py +0 -0
  318. buddy_ai-1.0.0/storage/agent/__init__.py +0 -0
  319. buddy_ai-1.0.0/storage/agent/dynamodb.py +2 -0
  320. buddy_ai-1.0.0/storage/agent/json.py +2 -0
  321. buddy_ai-1.0.0/storage/agent/mongodb.py +2 -0
  322. buddy_ai-1.0.0/storage/agent/postgres.py +2 -0
  323. buddy_ai-1.0.0/storage/agent/singlestore.py +2 -0
  324. buddy_ai-1.0.0/storage/agent/sqlite.py +2 -0
  325. buddy_ai-1.0.0/storage/agent/yaml.py +2 -0
  326. buddy_ai-1.0.0/storage/base.py +61 -0
  327. buddy_ai-1.0.0/storage/dynamodb.py +674 -0
  328. buddy_ai-1.0.0/storage/firestore.py +298 -0
  329. buddy_ai-1.0.0/storage/gcs_json.py +262 -0
  330. buddy_ai-1.0.0/storage/in_memory.py +235 -0
  331. buddy_ai-1.0.0/storage/json.py +238 -0
  332. buddy_ai-1.0.0/storage/mongodb.py +330 -0
  333. buddy_ai-1.0.0/storage/mysql.py +686 -0
  334. buddy_ai-1.0.0/storage/postgres.py +683 -0
  335. buddy_ai-1.0.0/storage/redis.py +337 -0
  336. buddy_ai-1.0.0/storage/session/__init__.py +17 -0
  337. buddy_ai-1.0.0/storage/session/agent.py +65 -0
  338. buddy_ai-1.0.0/storage/session/team.py +64 -0
  339. buddy_ai-1.0.0/storage/session/v2/__init__.py +6 -0
  340. buddy_ai-1.0.0/storage/session/v2/workflow.py +114 -0
  341. buddy_ai-1.0.0/storage/session/workflow.py +62 -0
  342. buddy_ai-1.0.0/storage/singlestore.py +607 -0
  343. buddy_ai-1.0.0/storage/sqlite.py +647 -0
  344. buddy_ai-1.0.0/storage/workflow/__init__.py +0 -0
  345. buddy_ai-1.0.0/storage/workflow/mongodb.py +2 -0
  346. buddy_ai-1.0.0/storage/workflow/postgres.py +2 -0
  347. buddy_ai-1.0.0/storage/workflow/sqlite.py +2 -0
  348. buddy_ai-1.0.0/storage/yaml.py +242 -0
  349. buddy_ai-1.0.0/team/__init__.py +39 -0
  350. buddy_ai-1.0.0/team/team.py +8201 -0
  351. buddy_ai-1.0.0/tools/__init__.py +11 -0
  352. buddy_ai-1.0.0/tools/api.py +119 -0
  353. buddy_ai-1.0.0/tools/aws_lambda.py +52 -0
  354. buddy_ai-1.0.0/tools/bitbucket.py +293 -0
  355. buddy_ai-1.0.0/tools/browserbase.py +201 -0
  356. buddy_ai-1.0.0/tools/calculator.py +169 -0
  357. buddy_ai-1.0.0/tools/cartesia.py +185 -0
  358. buddy_ai-1.0.0/tools/code_migration_tool.py +589 -0
  359. buddy_ai-1.0.0/tools/confluence.py +188 -0
  360. buddy_ai-1.0.0/tools/csv_toolkit.py +185 -0
  361. buddy_ai-1.0.0/tools/dalle.py +103 -0
  362. buddy_ai-1.0.0/tools/decorator.py +258 -0
  363. buddy_ai-1.0.0/tools/desi_vocal.py +100 -0
  364. buddy_ai-1.0.0/tools/docker.py +729 -0
  365. buddy_ai-1.0.0/tools/e2b.py +697 -0
  366. buddy_ai-1.0.0/tools/eleven_labs.py +192 -0
  367. buddy_ai-1.0.0/tools/email.py +65 -0
  368. buddy_ai-1.0.0/tools/enhanced_cat_tool.py +1265 -0
  369. buddy_ai-1.0.0/tools/evm.py +124 -0
  370. buddy_ai-1.0.0/tools/file.py +1215 -0
  371. buddy_ai-1.0.0/tools/function.py +860 -0
  372. buddy_ai-1.0.0/tools/giphy.py +82 -0
  373. buddy_ai-1.0.0/tools/github.py +1827 -0
  374. buddy_ai-1.0.0/tools/gmail.py +715 -0
  375. buddy_ai-1.0.0/tools/google_maps.py +269 -0
  376. buddy_ai-1.0.0/tools/googlecalendar.py +647 -0
  377. buddy_ai-1.0.0/tools/googlesearch.py +94 -0
  378. buddy_ai-1.0.0/tools/googlesheets.py +359 -0
  379. buddy_ai-1.0.0/tools/jira.py +142 -0
  380. buddy_ai-1.0.0/tools/knowledge.py +220 -0
  381. buddy_ai-1.0.0/tools/linear.py +442 -0
  382. buddy_ai-1.0.0/tools/local_file_system.py +88 -0
  383. buddy_ai-1.0.0/tools/lumalab.py +172 -0
  384. buddy_ai-1.0.0/tools/mcp.py +612 -0
  385. buddy_ai-1.0.0/tools/mem0.py +194 -0
  386. buddy_ai-1.0.0/tools/mlx_transcribe.py +139 -0
  387. buddy_ai-1.0.0/tools/models/__init__.py +0 -0
  388. buddy_ai-1.0.0/tools/models/azure_openai.py +173 -0
  389. buddy_ai-1.0.0/tools/models/gemini.py +177 -0
  390. buddy_ai-1.0.0/tools/models/groq.py +152 -0
  391. buddy_ai-1.0.0/tools/models/morph.py +187 -0
  392. buddy_ai-1.0.0/tools/models/nebius.py +109 -0
  393. buddy_ai-1.0.0/tools/models_labs.py +172 -0
  394. buddy_ai-1.0.0/tools/moviepy_video.py +349 -0
  395. buddy_ai-1.0.0/tools/openai.py +177 -0
  396. buddy_ai-1.0.0/tools/opencv.py +306 -0
  397. buddy_ai-1.0.0/tools/openweather.py +232 -0
  398. buddy_ai-1.0.0/tools/pandas.py +95 -0
  399. buddy_ai-1.0.0/tools/playwright_tool.py +393 -0
  400. buddy_ai-1.0.0/tools/playwright_tool_async_backup.py +411 -0
  401. buddy_ai-1.0.0/tools/postgres.py +266 -0
  402. buddy_ai-1.0.0/tools/python.py +219 -0
  403. buddy_ai-1.0.0/tools/reasoning.py +276 -0
  404. buddy_ai-1.0.0/tools/selenium_tool.py +738 -0
  405. buddy_ai-1.0.0/tools/serpapi.py +114 -0
  406. buddy_ai-1.0.0/tools/serper.py +247 -0
  407. buddy_ai-1.0.0/tools/shell.py +47 -0
  408. buddy_ai-1.0.0/tools/slack.py +121 -0
  409. buddy_ai-1.0.0/tools/sleep.py +20 -0
  410. buddy_ai-1.0.0/tools/slm_tool.py +438 -0
  411. buddy_ai-1.0.0/tools/sql.py +935 -0
  412. buddy_ai-1.0.0/tools/streamlit/__init__.py +0 -0
  413. buddy_ai-1.0.0/tools/streamlit/components.py +113 -0
  414. buddy_ai-1.0.0/tools/tavily.py +107 -0
  415. buddy_ai-1.0.0/tools/thinking.py +74 -0
  416. buddy_ai-1.0.0/tools/tool_registry.py +2 -0
  417. buddy_ai-1.0.0/tools/toolkit.py +147 -0
  418. buddy_ai-1.0.0/tools/user_control_flow.py +74 -0
  419. buddy_ai-1.0.0/tools/valyu.py +200 -0
  420. buddy_ai-1.0.0/tools/visualization.py +477 -0
  421. buddy_ai-1.0.0/tools/webbrowser.py +28 -0
  422. buddy_ai-1.0.0/tools/website.py +86 -0
  423. buddy_ai-1.0.0/tools/webtools.py +38 -0
  424. buddy_ai-1.0.0/tools/whatsapp.py +291 -0
  425. buddy_ai-1.0.0/tools/wikipedia.py +57 -0
  426. buddy_ai-1.0.0/tools/zoom.py +382 -0
  427. buddy_ai-1.0.0/train/__init__.py +488 -0
  428. buddy_ai-1.0.0/train/data_processor.py +440 -0
  429. buddy_ai-1.0.0/train/integration.py +299 -0
  430. buddy_ai-1.0.0/train/integration_fixed.py +317 -0
  431. buddy_ai-1.0.0/train/model_manager.py +535 -0
  432. buddy_ai-1.0.0/train/test_basic.py +92 -0
  433. buddy_ai-1.0.0/train/trainer.py +503 -0
  434. buddy_ai-1.0.0/utils/__init__.py +0 -0
  435. buddy_ai-1.0.0/utils/audio.py +23 -0
  436. buddy_ai-1.0.0/utils/certs.py +27 -0
  437. buddy_ai-1.0.0/utils/code_execution.py +11 -0
  438. buddy_ai-1.0.0/utils/common.py +61 -0
  439. buddy_ai-1.0.0/utils/defaults.py +57 -0
  440. buddy_ai-1.0.0/utils/dttm.py +13 -0
  441. buddy_ai-1.0.0/utils/enum.py +22 -0
  442. buddy_ai-1.0.0/utils/env.py +11 -0
  443. buddy_ai-1.0.0/utils/events.py +505 -0
  444. buddy_ai-1.0.0/utils/filesystem.py +39 -0
  445. buddy_ai-1.0.0/utils/format_str.py +16 -0
  446. buddy_ai-1.0.0/utils/functions.py +168 -0
  447. buddy_ai-1.0.0/utils/gemini.py +239 -0
  448. buddy_ai-1.0.0/utils/git.py +53 -0
  449. buddy_ai-1.0.0/utils/http.py +74 -0
  450. buddy_ai-1.0.0/utils/json_io.py +31 -0
  451. buddy_ai-1.0.0/utils/json_schema.py +235 -0
  452. buddy_ai-1.0.0/utils/load_env.py +19 -0
  453. buddy_ai-1.0.0/utils/location.py +20 -0
  454. buddy_ai-1.0.0/utils/log.py +206 -0
  455. buddy_ai-1.0.0/utils/mcp.py +67 -0
  456. buddy_ai-1.0.0/utils/media.py +146 -0
  457. buddy_ai-1.0.0/utils/merge_dict.py +20 -0
  458. buddy_ai-1.0.0/utils/message.py +48 -0
  459. buddy_ai-1.0.0/utils/models/__init__.py +0 -0
  460. buddy_ai-1.0.0/utils/models/ai_foundry.py +44 -0
  461. buddy_ai-1.0.0/utils/models/aws_claude.py +171 -0
  462. buddy_ai-1.0.0/utils/models/claude.py +287 -0
  463. buddy_ai-1.0.0/utils/models/cohere.py +88 -0
  464. buddy_ai-1.0.0/utils/models/llama.py +79 -0
  465. buddy_ai-1.0.0/utils/models/mistral.py +98 -0
  466. buddy_ai-1.0.0/utils/models/openai_responses.py +141 -0
  467. buddy_ai-1.0.0/utils/models/schema_utils.py +154 -0
  468. buddy_ai-1.0.0/utils/models/watsonx.py +42 -0
  469. buddy_ai-1.0.0/utils/openai.py +258 -0
  470. buddy_ai-1.0.0/utils/pickle.py +33 -0
  471. buddy_ai-1.0.0/utils/pprint.py +178 -0
  472. buddy_ai-1.0.0/utils/prompts.py +112 -0
  473. buddy_ai-1.0.0/utils/py_io.py +19 -0
  474. buddy_ai-1.0.0/utils/pyproject.py +21 -0
  475. buddy_ai-1.0.0/utils/resource_filter.py +31 -0
  476. buddy_ai-1.0.0/utils/response.py +164 -0
  477. buddy_ai-1.0.0/utils/response_iterator.py +17 -0
  478. buddy_ai-1.0.0/utils/safe_formatter.py +24 -0
  479. buddy_ai-1.0.0/utils/shell.py +23 -0
  480. buddy_ai-1.0.0/utils/string.py +205 -0
  481. buddy_ai-1.0.0/utils/timer.py +41 -0
  482. buddy_ai-1.0.0/utils/tools.py +103 -0
  483. buddy_ai-1.0.0/utils/web.py +24 -0
  484. buddy_ai-1.0.0/utils/whatsapp.py +306 -0
  485. buddy_ai-1.0.0/utils/yaml_io.py +26 -0
  486. buddy_ai-1.0.0/vectordb/__init__.py +4 -0
  487. buddy_ai-1.0.0/vectordb/base.py +97 -0
  488. buddy_ai-1.0.0/vectordb/cassandra/__init__.py +6 -0
  489. buddy_ai-1.0.0/vectordb/cassandra/cassandra.py +182 -0
  490. buddy_ai-1.0.0/vectordb/cassandra/extra_param_mixin.py +11 -0
  491. buddy_ai-1.0.0/vectordb/cassandra/index.py +13 -0
  492. buddy_ai-1.0.0/vectordb/chroma/__init__.py +6 -0
  493. buddy_ai-1.0.0/vectordb/chroma/chromadb.py +363 -0
  494. buddy_ai-1.0.0/vectordb/clickhouse/__init__.py +10 -0
  495. buddy_ai-1.0.0/vectordb/clickhouse/clickhousedb.py +576 -0
  496. buddy_ai-1.0.0/vectordb/clickhouse/index.py +9 -0
  497. buddy_ai-1.0.0/vectordb/couchbase/__init__.py +4 -0
  498. buddy_ai-1.0.0/vectordb/couchbase/couchbase.py +1072 -0
  499. buddy_ai-1.0.0/vectordb/distance.py +7 -0
  500. buddy_ai-1.0.0/vectordb/lancedb/__init__.py +7 -0
  501. buddy_ai-1.0.0/vectordb/lancedb/lance_db.py +609 -0
  502. buddy_ai-1.0.0/vectordb/milvus/__init__.py +5 -0
  503. buddy_ai-1.0.0/vectordb/milvus/milvus.py +856 -0
  504. buddy_ai-1.0.0/vectordb/mongodb/__init__.py +4 -0
  505. buddy_ai-1.0.0/vectordb/mongodb/mongodb.py +1138 -0
  506. buddy_ai-1.0.0/vectordb/pgvector/__init__.py +13 -0
  507. buddy_ai-1.0.0/vectordb/pgvector/index.py +23 -0
  508. buddy_ai-1.0.0/vectordb/pgvector/pgvector.py +1076 -0
  509. buddy_ai-1.0.0/vectordb/pineconedb/__init__.py +6 -0
  510. buddy_ai-1.0.0/vectordb/pineconedb/pineconedb.py +482 -0
  511. buddy_ai-1.0.0/vectordb/qdrant/__init__.py +6 -0
  512. buddy_ai-1.0.0/vectordb/qdrant/qdrant.py +707 -0
  513. buddy_ai-1.0.0/vectordb/search.py +7 -0
  514. buddy_ai-1.0.0/vectordb/singlestore/__init__.py +11 -0
  515. buddy_ai-1.0.0/vectordb/singlestore/index.py +41 -0
  516. buddy_ai-1.0.0/vectordb/singlestore/singlestore.py +421 -0
  517. buddy_ai-1.0.0/vectordb/surrealdb/__init__.py +4 -0
  518. buddy_ai-1.0.0/vectordb/surrealdb/surrealdb.py +494 -0
  519. buddy_ai-1.0.0/vectordb/upstashdb/__init__.py +6 -0
  520. buddy_ai-1.0.0/vectordb/upstashdb/upstashdb.py +335 -0
  521. buddy_ai-1.0.0/vectordb/weaviate/__init__.py +9 -0
  522. buddy_ai-1.0.0/vectordb/weaviate/index.py +15 -0
  523. buddy_ai-1.0.0/vectordb/weaviate/weaviate.py +873 -0
  524. buddy_ai-1.0.0/workflow/__init__.py +18 -0
  525. buddy_ai-1.0.0/workflow/v2/__init__.py +22 -0
  526. buddy_ai-1.0.0/workflow/v2/condition.py +555 -0
  527. buddy_ai-1.0.0/workflow/v2/loop.py +603 -0
  528. buddy_ai-1.0.0/workflow/v2/parallel.py +660 -0
  529. buddy_ai-1.0.0/workflow/v2/router.py +522 -0
  530. buddy_ai-1.0.0/workflow/v2/step.py +862 -0
  531. buddy_ai-1.0.0/workflow/v2/steps.py +466 -0
  532. buddy_ai-1.0.0/workflow/v2/types.py +348 -0
  533. buddy_ai-1.0.0/workflow/v2/workflow.py +3261 -0
  534. buddy_ai-1.0.0/workflow/workflow.py +809 -0
  535. buddy_ai-1.0.0/workspace/__init__.py +0 -0
  536. buddy_ai-1.0.0/workspace/config.py +326 -0
  537. buddy_ai-1.0.0/workspace/enums.py +6 -0
  538. buddy_ai-1.0.0/workspace/helpers.py +54 -0
  539. buddy_ai-1.0.0/workspace/operator.py +759 -0
  540. buddy_ai-1.0.0/workspace/settings.py +159 -0
buddy_ai-1.0.0/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Sriram Sangeeth Mantha
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,20 @@
1
+ include README.md
2
+ include LICENSE
3
+ include MANIFEST.in
4
+ include pyproject.toml
5
+ include py.typed
6
+
7
+ recursive-include . *.py
8
+ recursive-include app/agui *.html *.css *.js
9
+ recursive-include app/playground *.html *.css *.js *.ico
10
+ recursive-include app/streamlit *.py
11
+
12
+ global-exclude *.pyc
13
+ global-exclude *.pyo
14
+ global-exclude __pycache__
15
+ global-exclude .DS_Store
16
+ global-exclude *.so
17
+ global-exclude .git*
18
+ global-exclude .vscode
19
+ global-exclude .idea
20
+ global-exclude *.log
@@ -0,0 +1,659 @@
1
+ Metadata-Version: 2.4
2
+ Name: buddy-ai
3
+ Version: 1.0.0
4
+ Summary: A comprehensive Python framework for building and deploying AI agents with multi-model support and advanced capabilities
5
+ Author-email: Sriram Sangeeth Mantha <sriram.sangeet@gmail.com>
6
+ Maintainer-email: Sriram Sangeeth Mantha <sriram.sangeet@gmail.com>
7
+ License-Expression: MIT
8
+ Project-URL: Homepage, https://github.com/esasrir91/buddy-ai
9
+ Project-URL: Documentation, https://github.com/esasrir91/buddy-ai
10
+ Project-URL: Repository, https://github.com/esasrir91/buddy-ai
11
+ Project-URL: Bug Reports, https://github.com/esasrir91/buddy-ai/issues
12
+ Keywords: ai,agents,llm,chatbot,artificial-intelligence,machine-learning,nlp,openai,anthropic,rag,multi-agent,workflow,automation,ai-framework,conversational-ai,intelligent-agents,ai-assistant
13
+ Classifier: Development Status :: 5 - Production/Stable
14
+ Classifier: Intended Audience :: Developers
15
+ Classifier: Intended Audience :: Science/Research
16
+ Classifier: Operating System :: OS Independent
17
+ Classifier: Programming Language :: Python :: 3
18
+ Classifier: Programming Language :: Python :: 3.8
19
+ Classifier: Programming Language :: Python :: 3.9
20
+ Classifier: Programming Language :: Python :: 3.10
21
+ Classifier: Programming Language :: Python :: 3.11
22
+ Classifier: Programming Language :: Python :: 3.12
23
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
24
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
25
+ Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
26
+ Classifier: Environment :: Console
27
+ Classifier: Environment :: Web Environment
28
+ Requires-Python: >=3.8
29
+ Description-Content-Type: text/markdown
30
+ License-File: LICENSE
31
+ Requires-Dist: pydantic>=2.0.0
32
+ Requires-Dist: pydantic-settings>=2.0.0
33
+ Requires-Dist: httpx>=0.24.0
34
+ Requires-Dist: fastapi>=0.100.0
35
+ Requires-Dist: uvicorn>=0.23.0
36
+ Requires-Dist: typer>=0.9.0
37
+ Requires-Dist: rich>=13.0.0
38
+ Requires-Dist: python-multipart>=0.0.6
39
+ Requires-Dist: starlette>=0.27.0
40
+ Requires-Dist: docstring-parser>=0.15
41
+ Requires-Dist: packaging>=23.0
42
+ Provides-Extra: dev
43
+ Requires-Dist: pytest>=7.0.0; extra == "dev"
44
+ Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
45
+ Requires-Dist: black>=23.0.0; extra == "dev"
46
+ Requires-Dist: isort>=5.12.0; extra == "dev"
47
+ Requires-Dist: flake8>=6.0.0; extra == "dev"
48
+ Requires-Dist: mypy>=1.5.0; extra == "dev"
49
+ Provides-Extra: openai
50
+ Requires-Dist: openai>=1.0.0; extra == "openai"
51
+ Provides-Extra: anthropic
52
+ Requires-Dist: anthropic>=0.25.0; extra == "anthropic"
53
+ Provides-Extra: google
54
+ Requires-Dist: google-generativeai>=0.3.0; extra == "google"
55
+ Provides-Extra: cohere
56
+ Requires-Dist: cohere>=4.0.0; extra == "cohere"
57
+ Provides-Extra: aws
58
+ Requires-Dist: boto3>=1.34.0; extra == "aws"
59
+ Provides-Extra: azure
60
+ Requires-Dist: azure-openai>=1.0.0; extra == "azure"
61
+ Provides-Extra: all
62
+ Requires-Dist: openai>=1.0.0; extra == "all"
63
+ Requires-Dist: anthropic>=0.25.0; extra == "all"
64
+ Requires-Dist: google-generativeai>=0.3.0; extra == "all"
65
+ Requires-Dist: cohere>=4.0.0; extra == "all"
66
+ Requires-Dist: boto3>=1.34.0; extra == "all"
67
+ Requires-Dist: azure-openai>=1.0.0; extra == "all"
68
+ Dynamic: license-file
69
+
70
+ <div align="center">
71
+
72
+ # 🤖 Buddy AI
73
+
74
+ ### *Advanced AI Agent Framework for Enterprise Applications*
75
+
76
+ [![Python Version](https://img.shields.io/badge/python-3.8%2B-blue.svg)](https://python.org)
77
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
78
+ [![GitHub Release](https://img.shields.io/github/v/release/esasrir91/buddy-ai.svg)](https://github.com/esasrir91/buddy-ai/releases)
79
+ [![Documentation](https://img.shields.io/badge/docs-latest-brightgreen.svg)](https://github.com/esasrir91/buddy-ai/wiki)
80
+ [![Build Status](https://img.shields.io/badge/build-passing-brightgreen.svg)](https://github.com/esasrir91/buddy-ai/actions)
81
+
82
+ ---
83
+
84
+ **Buddy AI** is a production-ready Python framework for building, deploying, and scaling intelligent AI agents with enterprise-grade capabilities. Designed for developers who need sophisticated AI applications with multi-model support, advanced knowledge management, and seamless tool integration.
85
+
86
+ [**🚀 Quick Start**](#-quick-start) • [**📖 Documentation**](https://github.com/esasrir91/buddy-ai/wiki) • [**💻 Examples**](https://github.com/esasrir91/buddy-ai/tree/main/examples) • [**🤝 Contributing**](#-contributing)
87
+
88
+ </div>
89
+
90
+ ---
91
+
92
+ ## ✨ **Key Features**
93
+
94
+ <table>
95
+ <tr>
96
+ <td width="50%">
97
+
98
+ ### 🧠 **Intelligent Agents**
99
+ - **Multi-Model Support**: OpenAI, Anthropic, Google, Cohere, AWS Bedrock, Azure OpenAI, and 20+ providers
100
+ - **Persistent Memory**: Long-term context preservation across sessions
101
+ - **Advanced Reasoning**: Chain-of-thought and structured thinking capabilities
102
+ - **Custom Instructions**: Tailored agent behavior and personality
103
+
104
+ ### 🛠️ **Extensible Toolkit**
105
+ - **80+ Built-in Tools**: Calculator, file operations, web scraping, databases, APIs
106
+ - **Custom Tool Creation**: Easy integration of proprietary systems and services
107
+ - **Tool Chaining**: Complex workflows with multiple tool interactions
108
+ - **Security Controls**: Sandboxed execution and permission management
109
+
110
+ </td>
111
+ <td width="50%">
112
+
113
+ ### 📚 **Knowledge Management**
114
+ - **RAG (Retrieval-Augmented Generation)**: Multiple knowledge source integration
115
+ - **Vector Databases**: Support for Pinecone, Weaviate, Chroma, and more
116
+ - **Document Processing**: PDF, Word, Markdown, code files, and structured data
117
+ - **SQL Knowledge Base**: Built-in SQLite storage with full-text search
118
+
119
+ ### 🏢 **Enterprise Ready**
120
+ - **Team Collaboration**: Multi-agent systems with role-based workflows
121
+ - **Deployment Options**: FastAPI, CLI, web interfaces, and chat integrations
122
+ - **Monitoring & Analytics**: Comprehensive logging, metrics, and performance tracking
123
+ - **Production Features**: Error handling, rate limiting, and scalability
124
+
125
+ </td>
126
+ </tr>
127
+ </table>
128
+
129
+ ---
130
+
131
+ ## 🚀 **Quick Start**
132
+
133
+ ### **Installation**
134
+
135
+ ```bash
136
+ # Install core framework
137
+ pip install buddy-ai
138
+
139
+ # Install with all optional dependencies
140
+ pip install buddy-ai[all]
141
+
142
+ # Provider-specific installations
143
+ pip install buddy-ai[openai,anthropic,google,aws]
144
+ ```
145
+
146
+ ### **Create Your First Agent**
147
+
148
+ ```python
149
+ from buddy import Agent
150
+ from buddy.models.openai import OpenAIChat
151
+ from buddy.tools.calculator import CalculatorTools
152
+ from buddy.tools.python import PythonTools
153
+
154
+ # Create an intelligent agent
155
+ agent = Agent(
156
+ name="DataAnalyst",
157
+ model=OpenAIChat(id="gpt-4"),
158
+ tools=[CalculatorTools(), PythonTools()],
159
+ instructions="You are a helpful data analyst who can perform calculations and write Python code.",
160
+ show_tool_calls=True
161
+ )
162
+
163
+ # Start conversation
164
+ response = agent.run("Calculate the compound interest for $10,000 at 5% annually for 3 years")
165
+ print(response.content)
166
+ ```
167
+
168
+ ### **Knowledge-Enhanced Agent**
169
+
170
+ ```python
171
+ from buddy import Agent
172
+ from buddy.models.openai import OpenAIChat
173
+ from buddy.knowledge.document import DocumentKnowledgeBase
174
+ from buddy.embedder.openai import OpenAIEmbedder
175
+
176
+ # Setup knowledge base
177
+ knowledge = DocumentKnowledgeBase(
178
+ path="./documents",
179
+ embedder=OpenAIEmbedder()
180
+ )
181
+ knowledge.load()
182
+
183
+ # Create knowledge-enhanced agent
184
+ agent = Agent(
185
+ name="ResearchAssistant",
186
+ model=OpenAIChat(id="gpt-4"),
187
+ knowledge=knowledge,
188
+ search_knowledge=True,
189
+ instructions="You are a research assistant with access to a comprehensive knowledge base."
190
+ )
191
+
192
+ response = agent.run("What are the latest developments in artificial intelligence?")
193
+ ```
194
+
195
+ ### **Multi-Agent Team**
196
+
197
+ ```python
198
+ from buddy import Team, Agent
199
+ from buddy.models.openai import OpenAIChat
200
+
201
+ # Create specialized agents
202
+ researcher = Agent(
203
+ name="Researcher",
204
+ role="Research and gather information",
205
+ model=OpenAIChat(id="gpt-4"),
206
+ tools=[WebsiteTools(), GoogleSearchTools()]
207
+ )
208
+
209
+ analyst = Agent(
210
+ name="Analyst",
211
+ role="Analyze data and create insights",
212
+ model=OpenAIChat(id="gpt-4"),
213
+ tools=[PythonTools(), CalculatorTools()]
214
+ )
215
+
216
+ writer = Agent(
217
+ name="Writer",
218
+ role="Create well-structured reports",
219
+ model=OpenAIChat(id="gpt-4")
220
+ )
221
+
222
+ # Create team
223
+ team = Team(
224
+ name="MarketResearchTeam",
225
+ agents=[researcher, analyst, writer],
226
+ workflow="researcher -> analyst -> writer"
227
+ )
228
+
229
+ # Execute team task
230
+ result = team.run("Research the current state of the electric vehicle market and create a comprehensive report")
231
+ ```
232
+
233
+ ---
234
+
235
+ ## 🏗️ **Architecture Overview**
236
+
237
+ <div align="center">
238
+
239
+ ```mermaid
240
+ graph TB
241
+ A[User Input] --> B[Agent Router]
242
+ B --> C[Model Provider]
243
+ B --> D[Tool Executor]
244
+ B --> E[Knowledge Base]
245
+ B --> F[Memory Manager]
246
+
247
+ C --> G[OpenAI/Anthropic/Google/etc.]
248
+ D --> H[Built-in Tools]
249
+ D --> I[Custom Tools]
250
+ E --> J[Vector Database]
251
+ E --> K[SQL Database]
252
+ F --> L[Conversation History]
253
+ F --> M[Long-term Memory]
254
+
255
+ G --> N[Response Generator]
256
+ H --> N
257
+ I --> N
258
+ J --> N
259
+ K --> N
260
+ L --> N
261
+ M --> N
262
+
263
+ N --> O[Structured Output]
264
+ ```
265
+
266
+ </div>
267
+
268
+ ---
269
+
270
+ ## 🛠️ **Core Components**
271
+
272
+ ### **Agents**
273
+ ```python
274
+ # Basic agent configuration
275
+ agent = Agent(
276
+ name="CustomerSupport",
277
+ model=OpenAIChat(id="gpt-4"),
278
+ instructions="You are a helpful customer support agent...",
279
+ tools=[EmailTools(), DatabaseTools()],
280
+ memory=AgentMemory(),
281
+ temperature=0.1,
282
+ max_tokens=2000
283
+ )
284
+ ```
285
+
286
+ ### **Models**
287
+ ```python
288
+ # Multiple provider support
289
+ from buddy.models import OpenAIChat, AnthropicChat, GoogleChat
290
+
291
+ openai_model = OpenAIChat(id="gpt-4-turbo")
292
+ anthropic_model = AnthropicChat(id="claude-3-opus")
293
+ google_model = GoogleChat(id="gemini-pro")
294
+ ```
295
+
296
+ ### **Tools**
297
+ ```python
298
+ # Extensive tool ecosystem
299
+ from buddy.tools import (
300
+ CalculatorTools, PythonTools, FileTools, WebsiteTools,
301
+ DatabaseTools, EmailTools, CalendarTools, SlackTools
302
+ )
303
+
304
+ # Custom tool creation
305
+ @tool
306
+ def custom_api_call(endpoint: str, data: dict) -> str:
307
+ """Call internal API with custom logic"""
308
+ # Your implementation
309
+ return result
310
+ ```
311
+
312
+ ### **Knowledge Management**
313
+ ```python
314
+ # Vector-based knowledge
315
+ from buddy.knowledge import DocumentKnowledgeBase
316
+ from buddy.vectordb import PineconeDb
317
+
318
+ knowledge = DocumentKnowledgeBase(
319
+ path="./docs",
320
+ vector_db=PineconeDb(api_key="your-key"),
321
+ embedder=OpenAIEmbedder()
322
+ )
323
+
324
+ # SQL-based knowledge
325
+ from buddy.knowledge import SQLKnowledgeBase
326
+
327
+ sql_knowledge = SQLKnowledgeBase(
328
+ path="./documents",
329
+ db_path="knowledge.db",
330
+ formats=[".py", ".md", ".json", ".txt"]
331
+ )
332
+ ```
333
+
334
+ ---
335
+
336
+ ## 📊 **Advanced Features**
337
+
338
+ ### **Structured Outputs**
339
+ ```python
340
+ from pydantic import BaseModel, Field
341
+ from typing import List
342
+
343
+ class AnalysisReport(BaseModel):
344
+ summary: str = Field(description="Executive summary")
345
+ key_findings: List[str] = Field(description="Key insights")
346
+ recommendations: List[str] = Field(description="Action items")
347
+ confidence_score: float = Field(description="Confidence level 0-1")
348
+
349
+ agent = Agent(
350
+ name="BusinessAnalyst",
351
+ model=OpenAIChat(id="gpt-4"),
352
+ response_model=AnalysisReport,
353
+ structured_outputs=True
354
+ )
355
+
356
+ result = agent.run("Analyze our Q3 sales performance")
357
+ print(f"Summary: {result.content.summary}")
358
+ print(f"Confidence: {result.content.confidence_score}")
359
+ ```
360
+
361
+ ### **Memory Management**
362
+ ```python
363
+ from buddy.memory import AgentMemory
364
+
365
+ # Persistent memory across sessions
366
+ memory = AgentMemory(
367
+ db_url="postgresql://user:pass@localhost/buddy",
368
+ create_user_memories=True,
369
+ create_session_summary=True
370
+ )
371
+
372
+ agent = Agent(
373
+ name="PersonalAssistant",
374
+ model=OpenAIChat(id="gpt-4"),
375
+ memory=memory,
376
+ user_id="user_123"
377
+ )
378
+ ```
379
+
380
+ ### **Multi-Agent Workflows**
381
+ ```python
382
+ from buddy import Team
383
+ from buddy.workflow import Workflow
384
+
385
+ # Define complex workflows
386
+ workflow = Workflow([
387
+ {"agent": "researcher", "task": "gather_data"},
388
+ {"agent": "analyst", "task": "analyze_data", "depends_on": ["gather_data"]},
389
+ {"agent": "reviewer", "task": "review_analysis", "depends_on": ["analyze_data"]},
390
+ {"agent": "publisher", "task": "publish_report", "depends_on": ["review_analysis"]}
391
+ ])
392
+
393
+ team = Team(agents=[researcher, analyst, reviewer, publisher])
394
+ team.run_workflow(workflow, input_data="Market research for Q4 planning")
395
+ ```
396
+
397
+ ---
398
+
399
+ ## 🚀 **Deployment Options**
400
+
401
+ ### **FastAPI Web Service**
402
+ ```python
403
+ from buddy.app.fastapi import create_buddy_app
404
+
405
+ app = create_buddy_app(
406
+ agents=[customer_support_agent, sales_agent],
407
+ enable_playground=True,
408
+ enable_metrics=True
409
+ )
410
+
411
+ # Run with: uvicorn main:app --host 0.0.0.0 --port 8000
412
+ ```
413
+
414
+ ### **CLI Application**
415
+ ```python
416
+ from buddy.cli import BuddyCLI
417
+
418
+ cli = BuddyCLI(
419
+ agent=research_agent,
420
+ title="Research Assistant CLI",
421
+ description="AI-powered research tool"
422
+ )
423
+
424
+ cli.run()
425
+ ```
426
+
427
+ ### **Chat Platform Integration**
428
+ ```python
429
+ # Slack integration
430
+ from buddy.app.slack import SlackApp
431
+
432
+ slack_app = SlackApp(
433
+ agent=support_agent,
434
+ bot_token="xoxb-your-token",
435
+ signing_secret="your-secret"
436
+ )
437
+
438
+ # Discord integration
439
+ from buddy.app.discord import DiscordBot
440
+
441
+ discord_bot = DiscordBot(
442
+ agent=community_agent,
443
+ token="your-discord-token"
444
+ )
445
+ ```
446
+
447
+ ---
448
+
449
+ ## 📈 **Performance & Monitoring**
450
+
451
+ ### **Built-in Analytics**
452
+ ```python
453
+ from buddy.monitoring import MetricsCollector
454
+
455
+ # Track agent performance
456
+ metrics = MetricsCollector(
457
+ store="postgresql://localhost/metrics",
458
+ enable_tracing=True
459
+ )
460
+
461
+ agent = Agent(
462
+ name="ProductionAgent",
463
+ model=OpenAIChat(id="gpt-4"),
464
+ metrics=metrics
465
+ )
466
+
467
+ # View metrics
468
+ print(metrics.get_agent_stats(agent_name="ProductionAgent"))
469
+ ```
470
+
471
+ ### **Custom Logging**
472
+ ```python
473
+ import logging
474
+ from buddy.utils.log import setup_buddy_logging
475
+
476
+ # Configure detailed logging
477
+ setup_buddy_logging(
478
+ level=logging.INFO,
479
+ format="detailed",
480
+ include_trace_id=True
481
+ )
482
+ ```
483
+
484
+ ---
485
+
486
+ ## 🔧 **Configuration**
487
+
488
+ ### **Environment Variables**
489
+ ```bash
490
+ # Model API Keys
491
+ export OPENAI_API_KEY="your-openai-key"
492
+ export ANTHROPIC_API_KEY="your-anthropic-key"
493
+ export GOOGLE_API_KEY="your-google-key"
494
+
495
+ # Database Configuration
496
+ export BUDDY_DB_URL="postgresql://user:pass@localhost/buddy"
497
+
498
+ # Monitoring
499
+ export BUDDY_ENABLE_METRICS=true
500
+ export BUDDY_LOG_LEVEL=INFO
501
+ ```
502
+
503
+ ### **Configuration File**
504
+ ```yaml
505
+ # buddy_config.yaml
506
+ models:
507
+ default: "openai-gpt-4"
508
+ fallback: "anthropic-claude-3"
509
+
510
+ database:
511
+ url: "postgresql://localhost/buddy"
512
+ pool_size: 10
513
+
514
+ monitoring:
515
+ enable_metrics: true
516
+ log_level: "INFO"
517
+ trace_requests: true
518
+
519
+ security:
520
+ enable_tool_sandboxing: true
521
+ max_tool_execution_time: 30
522
+ allowed_domains: ["example.com", "api.company.com"]
523
+ ```
524
+
525
+ ---
526
+
527
+ ## 🔐 **Security & Best Practices**
528
+
529
+ ### **Tool Sandboxing**
530
+ ```python
531
+ from buddy.security import ToolSandbox
532
+
533
+ # Secure tool execution
534
+ sandbox = ToolSandbox(
535
+ allowed_modules=["requests", "pandas"],
536
+ blocked_functions=["exec", "eval"],
537
+ max_execution_time=30,
538
+ memory_limit="100MB"
539
+ )
540
+
541
+ agent = Agent(
542
+ name="SecureAgent",
543
+ tools=[PythonTools(sandbox=sandbox)]
544
+ )
545
+ ```
546
+
547
+ ### **Input Validation**
548
+ ```python
549
+ from buddy.security import InputValidator
550
+
551
+ validator = InputValidator(
552
+ max_length=1000,
553
+ blocked_patterns=["<script>", "javascript:"],
554
+ sanitize_html=True
555
+ )
556
+
557
+ agent = Agent(
558
+ name="PublicAgent",
559
+ input_validator=validator
560
+ )
561
+ ```
562
+
563
+ ---
564
+
565
+ ## 📚 **Documentation & Resources**
566
+
567
+ <div align="center">
568
+
569
+ | Resource | Description | Link |
570
+ |----------|-------------|------|
571
+ | 📖 **Complete Documentation** | Comprehensive guides and API reference | [View Docs](https://github.com/esasrir91/buddy-ai/wiki) |
572
+ | 🚀 **Quick Start Guide** | Get up and running in minutes | [Get Started](https://github.com/esasrir91/buddy-ai/blob/main/docs/quickstart.md) |
573
+ | 💡 **Examples & Tutorials** | Real-world use cases and implementations | [View Examples](https://github.com/esasrir91/buddy-ai/tree/main/examples) |
574
+ | 🔧 **API Reference** | Detailed API documentation | [API Docs](https://github.com/esasrir91/buddy-ai/blob/main/docs/api.md) |
575
+ | ❓ **FAQ** | Common questions and solutions | [View FAQ](https://github.com/esasrir91/buddy-ai/blob/main/docs/faq.md) |
576
+ | 🎥 **Video Tutorials** | Step-by-step video guides | [Watch Videos](https://github.com/esasrir91/buddy-ai/blob/main/docs/videos.md) |
577
+
578
+ </div>
579
+
580
+ ---
581
+
582
+ ## 🤝 **Contributing**
583
+
584
+ We welcome contributions from the community! Buddy AI is built by developers, for developers.
585
+
586
+ ### **Development Setup**
587
+
588
+ ```bash
589
+ # Clone the repository
590
+ git clone https://github.com/esasrir91/buddy-ai.git
591
+ cd buddy-ai
592
+
593
+ # Install development dependencies
594
+ pip install -e ".[dev]"
595
+
596
+ # Run tests
597
+ pytest tests/
598
+
599
+ # Run linting
600
+ black . && isort . && flake8
601
+
602
+ # Build documentation
603
+ cd docs && make html
604
+ ```
605
+
606
+ ### **Contributing Guidelines**
607
+
608
+ 1. **🔍 Check existing issues** before creating new ones
609
+ 2. **🌿 Create feature branches** for your changes
610
+ 3. **✅ Add tests** for new functionality
611
+ 4. **📝 Update documentation** for API changes
612
+ 5. **🔄 Submit pull requests** with clear descriptions
613
+
614
+ See our [Contributing Guide](https://github.com/esasrir91/buddy-ai/blob/main/CONTRIBUTING.md) for detailed information.
615
+
616
+ ---
617
+
618
+ ## 📄 **License**
619
+
620
+ This project is licensed under the **MIT License** - see the [LICENSE](https://github.com/esasrir91/buddy-ai/blob/main/LICENSE) file for details.
621
+
622
+ ---
623
+
624
+ ## 👨‍💻 **Author & Maintainer**
625
+
626
+ <div align="center">
627
+
628
+ ### **Sriram Sangeeth Mantha**
629
+
630
+ [![Email](https://img.shields.io/badge/Email-sriram.sangeet%40gmail.com-blue.svg)](mailto:sriram.sangeet@gmail.com)
631
+ [![GitHub](https://img.shields.io/badge/GitHub-esasrir91-black.svg)](https://github.com/esasrir91)
632
+ [![LinkedIn](https://img.shields.io/badge/LinkedIn-Sriram%20Sangeeth%20Mantha-0077B5.svg)](https://linkedin.com/in/sriram-mantha)
633
+
634
+ </div>
635
+
636
+ ---
637
+
638
+ ## 🙏 **Support & Community**
639
+
640
+ <div align="center">
641
+
642
+ If you find Buddy AI helpful, please consider:
643
+
644
+ [![Star on GitHub](https://img.shields.io/badge/⭐-Star%20on%20GitHub-yellow.svg)](https://github.com/esasrir91/buddy-ai)
645
+ [![Follow on GitHub](https://img.shields.io/badge/👀-Follow%20on%20GitHub-blue.svg)](https://github.com/esasrir91)
646
+ [![Report Issues](https://img.shields.io/badge/🐛-Report%20Issues-red.svg)](https://github.com/esasrir91/buddy-ai/issues)
647
+ [![Join Discussions](https://img.shields.io/badge/💬-Join%20Discussions-green.svg)](https://github.com/esasrir91/buddy-ai/discussions)
648
+
649
+ </div>
650
+
651
+ ---
652
+
653
+ <div align="center">
654
+
655
+ **Made with ❤️ by the Buddy AI Team**
656
+
657
+ *Empowering developers to build the future of AI applications*
658
+
659
+ </div>