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.
- buddy_ai-1.0.0/LICENSE +21 -0
- buddy_ai-1.0.0/MANIFEST.in +20 -0
- buddy_ai-1.0.0/PKG-INFO +659 -0
- buddy_ai-1.0.0/README.md +590 -0
- buddy_ai-1.0.0/__init__.py +47 -0
- buddy_ai-1.0.0/agent/__init__.py +60 -0
- buddy_ai-1.0.0/agent/agent.py +8329 -0
- buddy_ai-1.0.0/agent/metrics.py +108 -0
- buddy_ai-1.0.0/api/__init__.py +0 -0
- buddy_ai-1.0.0/api/agent.py +86 -0
- buddy_ai-1.0.0/api/api.py +83 -0
- buddy_ai-1.0.0/api/app.py +37 -0
- buddy_ai-1.0.0/api/evals.py +35 -0
- buddy_ai-1.0.0/api/playground.py +94 -0
- buddy_ai-1.0.0/api/routes.py +48 -0
- buddy_ai-1.0.0/api/schemas/__init__.py +0 -0
- buddy_ai-1.0.0/api/schemas/agent.py +32 -0
- buddy_ai-1.0.0/api/schemas/app.py +12 -0
- buddy_ai-1.0.0/api/schemas/evals.py +25 -0
- buddy_ai-1.0.0/api/schemas/playground.py +22 -0
- buddy_ai-1.0.0/api/schemas/response.py +6 -0
- buddy_ai-1.0.0/api/schemas/team.py +32 -0
- buddy_ai-1.0.0/api/schemas/user.py +35 -0
- buddy_ai-1.0.0/api/schemas/workflows.py +12 -0
- buddy_ai-1.0.0/api/schemas/workspace.py +46 -0
- buddy_ai-1.0.0/api/team.py +87 -0
- buddy_ai-1.0.0/api/user.py +162 -0
- buddy_ai-1.0.0/api/workflows.py +35 -0
- buddy_ai-1.0.0/api/workspace.py +177 -0
- buddy_ai-1.0.0/app/__init__.py +0 -0
- buddy_ai-1.0.0/app/agui/__init__.py +4 -0
- buddy_ai-1.0.0/app/agui/app.py +18 -0
- buddy_ai-1.0.0/app/agui/async_router.py +122 -0
- buddy_ai-1.0.0/app/agui/sync_router.py +122 -0
- buddy_ai-1.0.0/app/agui/utils.py +392 -0
- buddy_ai-1.0.0/app/base.py +188 -0
- buddy_ai-1.0.0/app/discord/__init__.py +4 -0
- buddy_ai-1.0.0/app/discord/client.py +199 -0
- buddy_ai-1.0.0/app/fastapi/__init__.py +4 -0
- buddy_ai-1.0.0/app/fastapi/app.py +108 -0
- buddy_ai-1.0.0/app/fastapi/async_router.py +455 -0
- buddy_ai-1.0.0/app/fastapi/sync_router.py +449 -0
- buddy_ai-1.0.0/app/playground/__init__.py +3 -0
- buddy_ai-1.0.0/app/playground/app.py +230 -0
- buddy_ai-1.0.0/app/playground/async_router.py +1051 -0
- buddy_ai-1.0.0/app/playground/deploy.py +251 -0
- buddy_ai-1.0.0/app/playground/operator.py +184 -0
- buddy_ai-1.0.0/app/playground/schemas.py +221 -0
- buddy_ai-1.0.0/app/playground/serve.py +57 -0
- buddy_ai-1.0.0/app/playground/settings.py +51 -0
- buddy_ai-1.0.0/app/playground/sync_router.py +1043 -0
- buddy_ai-1.0.0/app/playground/utils.py +47 -0
- buddy_ai-1.0.0/app/settings.py +15 -0
- buddy_ai-1.0.0/app/slack/__init__.py +4 -0
- buddy_ai-1.0.0/app/slack/app.py +20 -0
- buddy_ai-1.0.0/app/slack/async_router.py +93 -0
- buddy_ai-1.0.0/app/slack/security.py +31 -0
- buddy_ai-1.0.0/app/slack/sync_router.py +93 -0
- buddy_ai-1.0.0/app/utils.py +55 -0
- buddy_ai-1.0.0/app/whatsapp/__init__.py +4 -0
- buddy_ai-1.0.0/app/whatsapp/app.py +16 -0
- buddy_ai-1.0.0/app/whatsapp/async_router.py +208 -0
- buddy_ai-1.0.0/app/whatsapp/security.py +53 -0
- buddy_ai-1.0.0/app/whatsapp/sync_router.py +198 -0
- buddy_ai-1.0.0/buddy_ai.egg-info/PKG-INFO +659 -0
- buddy_ai-1.0.0/buddy_ai.egg-info/SOURCES.txt +1065 -0
- buddy_ai-1.0.0/buddy_ai.egg-info/dependency_links.txt +1 -0
- buddy_ai-1.0.0/buddy_ai.egg-info/entry_points.txt +2 -0
- buddy_ai-1.0.0/buddy_ai.egg-info/requires.txt +45 -0
- buddy_ai-1.0.0/buddy_ai.egg-info/top_level.txt +24 -0
- buddy_ai-1.0.0/cli/__init__.py +0 -0
- buddy_ai-1.0.0/cli/auth_server.py +251 -0
- buddy_ai-1.0.0/cli/config.py +276 -0
- buddy_ai-1.0.0/cli/console.py +89 -0
- buddy_ai-1.0.0/cli/credentials.py +25 -0
- buddy_ai-1.0.0/cli/entrypoint.py +584 -0
- buddy_ai-1.0.0/cli/operator.py +358 -0
- buddy_ai-1.0.0/cli/settings.py +108 -0
- buddy_ai-1.0.0/cli/simple_train_cli.py +211 -0
- buddy_ai-1.0.0/cli/train_cli.py +503 -0
- buddy_ai-1.0.0/cli/ws/__init__.py +0 -0
- buddy_ai-1.0.0/cli/ws/ws_cli.py +819 -0
- buddy_ai-1.0.0/constants.py +14 -0
- buddy_ai-1.0.0/debug.py +19 -0
- buddy_ai-1.0.0/document/__init__.py +6 -0
- buddy_ai-1.0.0/document/base.py +49 -0
- buddy_ai-1.0.0/document/chunking/__init__.py +0 -0
- buddy_ai-1.0.0/document/chunking/agentic.py +77 -0
- buddy_ai-1.0.0/document/chunking/document.py +92 -0
- buddy_ai-1.0.0/document/chunking/fixed.py +58 -0
- buddy_ai-1.0.0/document/chunking/markdown.py +152 -0
- buddy_ai-1.0.0/document/chunking/recursive.py +64 -0
- buddy_ai-1.0.0/document/chunking/row.py +40 -0
- buddy_ai-1.0.0/document/chunking/semantic.py +46 -0
- buddy_ai-1.0.0/document/chunking/strategy.py +32 -0
- buddy_ai-1.0.0/document/reader/__init__.py +6 -0
- buddy_ai-1.0.0/document/reader/arxiv_reader.py +54 -0
- buddy_ai-1.0.0/document/reader/base.py +48 -0
- buddy_ai-1.0.0/document/reader/csv_reader.py +185 -0
- buddy_ai-1.0.0/document/reader/docx_reader.py +61 -0
- buddy_ai-1.0.0/document/reader/firecrawl_reader.py +181 -0
- buddy_ai-1.0.0/document/reader/gcs/__init__.py +0 -0
- buddy_ai-1.0.0/document/reader/gcs/pdf_reader.py +45 -0
- buddy_ai-1.0.0/document/reader/json_reader.py +67 -0
- buddy_ai-1.0.0/document/reader/markdown_reader.py +89 -0
- buddy_ai-1.0.0/document/reader/pdf_reader.py +512 -0
- buddy_ai-1.0.0/document/reader/s3/__init__.py +0 -0
- buddy_ai-1.0.0/document/reader/s3/pdf_reader.py +60 -0
- buddy_ai-1.0.0/document/reader/s3/text_reader.py +64 -0
- buddy_ai-1.0.0/document/reader/text_reader.py +95 -0
- buddy_ai-1.0.0/document/reader/url_reader.py +60 -0
- buddy_ai-1.0.0/document/reader/website_reader.py +411 -0
- buddy_ai-1.0.0/document/reader/youtube_reader.py +59 -0
- buddy_ai-1.0.0/embedder/__init__.py +6 -0
- buddy_ai-1.0.0/embedder/aws_bedrock.py +213 -0
- buddy_ai-1.0.0/embedder/azure_openai.py +93 -0
- buddy_ai-1.0.0/embedder/base.py +15 -0
- buddy_ai-1.0.0/embedder/cohere.py +74 -0
- buddy_ai-1.0.0/embedder/fastembed.py +47 -0
- buddy_ai-1.0.0/embedder/fireworks.py +14 -0
- buddy_ai-1.0.0/embedder/google.py +108 -0
- buddy_ai-1.0.0/embedder/huggingface.py +56 -0
- buddy_ai-1.0.0/embedder/jina.py +74 -0
- buddy_ai-1.0.0/embedder/langdb.py +81 -0
- buddy_ai-1.0.0/embedder/mistral.py +83 -0
- buddy_ai-1.0.0/embedder/nebius.py +14 -0
- buddy_ai-1.0.0/embedder/ollama.py +91 -0
- buddy_ai-1.0.0/embedder/openai.py +79 -0
- buddy_ai-1.0.0/embedder/sentence_transformer.py +45 -0
- buddy_ai-1.0.0/embedder/together.py +14 -0
- buddy_ai-1.0.0/embedder/voyageai.py +65 -0
- buddy_ai-1.0.0/eval/__init__.py +0 -0
- buddy_ai-1.0.0/eval/accuracy.py +723 -0
- buddy_ai-1.0.0/eval/performance.py +707 -0
- buddy_ai-1.0.0/eval/reliability.py +252 -0
- buddy_ai-1.0.0/eval/utils.py +93 -0
- buddy_ai-1.0.0/exceptions.py +95 -0
- buddy_ai-1.0.0/file/__init__.py +6 -0
- buddy_ai-1.0.0/file/file.py +17 -0
- buddy_ai-1.0.0/file/local/__init__.py +0 -0
- buddy_ai-1.0.0/file/local/csv.py +33 -0
- buddy_ai-1.0.0/file/local/txt.py +20 -0
- buddy_ai-1.0.0/infra/__init__.py +0 -0
- buddy_ai-1.0.0/infra/app.py +241 -0
- buddy_ai-1.0.0/infra/base.py +145 -0
- buddy_ai-1.0.0/infra/context.py +21 -0
- buddy_ai-1.0.0/infra/db_app.py +53 -0
- buddy_ai-1.0.0/infra/resource.py +206 -0
- buddy_ai-1.0.0/infra/resources.py +56 -0
- buddy_ai-1.0.0/knowledge/__init__.py +13 -0
- buddy_ai-1.0.0/knowledge/agent.py +699 -0
- buddy_ai-1.0.0/knowledge/arxiv.py +34 -0
- buddy_ai-1.0.0/knowledge/combined.py +37 -0
- buddy_ai-1.0.0/knowledge/csv.py +145 -0
- buddy_ai-1.0.0/knowledge/csv_url.py +125 -0
- buddy_ai-1.0.0/knowledge/document.py +224 -0
- buddy_ai-1.0.0/knowledge/docx.py +138 -0
- buddy_ai-1.0.0/knowledge/firecrawl.py +35 -0
- buddy_ai-1.0.0/knowledge/gcs/__init__.py +0 -0
- buddy_ai-1.0.0/knowledge/gcs/base.py +40 -0
- buddy_ai-1.0.0/knowledge/gcs/pdf.py +126 -0
- buddy_ai-1.0.0/knowledge/json.py +138 -0
- buddy_ai-1.0.0/knowledge/langchain.py +72 -0
- buddy_ai-1.0.0/knowledge/light_rag.py +274 -0
- buddy_ai-1.0.0/knowledge/llamaindex.py +67 -0
- buddy_ai-1.0.0/knowledge/markdown.py +155 -0
- buddy_ai-1.0.0/knowledge/pdf.py +165 -0
- buddy_ai-1.0.0/knowledge/pdf_bytes.py +43 -0
- buddy_ai-1.0.0/knowledge/pdf_url.py +149 -0
- buddy_ai-1.0.0/knowledge/s3/__init__.py +0 -0
- buddy_ai-1.0.0/knowledge/s3/base.py +65 -0
- buddy_ai-1.0.0/knowledge/s3/pdf.py +34 -0
- buddy_ai-1.0.0/knowledge/s3/text.py +35 -0
- buddy_ai-1.0.0/knowledge/sql_knowledge.py +391 -0
- buddy_ai-1.0.0/knowledge/text.py +142 -0
- buddy_ai-1.0.0/knowledge/url.py +47 -0
- buddy_ai-1.0.0/knowledge/website.py +180 -0
- buddy_ai-1.0.0/knowledge/wikipedia.py +33 -0
- buddy_ai-1.0.0/knowledge/youtube.py +36 -0
- buddy_ai-1.0.0/media.py +368 -0
- buddy_ai-1.0.0/memory/__init__.py +12 -0
- buddy_ai-1.0.0/memory/agent.py +424 -0
- buddy_ai-1.0.0/memory/classifier.py +105 -0
- buddy_ai-1.0.0/memory/db/__init__.py +6 -0
- buddy_ai-1.0.0/memory/db/base.py +43 -0
- buddy_ai-1.0.0/memory/db/mongodb.py +191 -0
- buddy_ai-1.0.0/memory/db/postgres.py +204 -0
- buddy_ai-1.0.0/memory/db/sqlite.py +194 -0
- buddy_ai-1.0.0/memory/manager.py +219 -0
- buddy_ai-1.0.0/memory/memory.py +22 -0
- buddy_ai-1.0.0/memory/row.py +36 -0
- buddy_ai-1.0.0/memory/summarizer.py +202 -0
- buddy_ai-1.0.0/memory/summary.py +19 -0
- buddy_ai-1.0.0/memory/team.py +416 -0
- buddy_ai-1.0.0/memory/v2/__init__.py +3 -0
- buddy_ai-1.0.0/memory/v2/db/__init__.py +2 -0
- buddy_ai-1.0.0/memory/v2/db/base.py +43 -0
- buddy_ai-1.0.0/memory/v2/db/firestore.py +340 -0
- buddy_ai-1.0.0/memory/v2/db/mongodb.py +198 -0
- buddy_ai-1.0.0/memory/v2/db/postgres.py +215 -0
- buddy_ai-1.0.0/memory/v2/db/redis.py +189 -0
- buddy_ai-1.0.0/memory/v2/db/schema.py +54 -0
- buddy_ai-1.0.0/memory/v2/db/sqlite.py +210 -0
- buddy_ai-1.0.0/memory/v2/manager.py +438 -0
- buddy_ai-1.0.0/memory/v2/memory.py +1099 -0
- buddy_ai-1.0.0/memory/v2/schema.py +55 -0
- buddy_ai-1.0.0/memory/v2/summarizer.py +216 -0
- buddy_ai-1.0.0/memory/workflow.py +39 -0
- buddy_ai-1.0.0/models/__init__.py +0 -0
- buddy_ai-1.0.0/models/aimlapi/__init__.py +6 -0
- buddy_ai-1.0.0/models/aimlapi/aimlapi.py +46 -0
- buddy_ai-1.0.0/models/anthropic/__init__.py +6 -0
- buddy_ai-1.0.0/models/anthropic/claude.py +646 -0
- buddy_ai-1.0.0/models/aws/__init__.py +16 -0
- buddy_ai-1.0.0/models/aws/bedrock.py +834 -0
- buddy_ai-1.0.0/models/aws/claude.py +333 -0
- buddy_ai-1.0.0/models/azure/__init__.py +19 -0
- buddy_ai-1.0.0/models/azure/ai_foundry.py +418 -0
- buddy_ai-1.0.0/models/azure/openai_chat.py +124 -0
- buddy_ai-1.0.0/models/base.py +1707 -0
- buddy_ai-1.0.0/models/cerebras/__init__.py +13 -0
- buddy_ai-1.0.0/models/cerebras/cerebras.py +436 -0
- buddy_ai-1.0.0/models/cerebras/cerebras_openai.py +110 -0
- buddy_ai-1.0.0/models/cohere/__init__.py +6 -0
- buddy_ai-1.0.0/models/cohere/chat.py +382 -0
- buddy_ai-1.0.0/models/dashscope/__init__.py +6 -0
- buddy_ai-1.0.0/models/dashscope/dashscope.py +82 -0
- buddy_ai-1.0.0/models/deepinfra/__init__.py +6 -0
- buddy_ai-1.0.0/models/deepinfra/deepinfra.py +29 -0
- buddy_ai-1.0.0/models/deepseek/__init__.py +6 -0
- buddy_ai-1.0.0/models/deepseek/deepseek.py +62 -0
- buddy_ai-1.0.0/models/defaults.py +1 -0
- buddy_ai-1.0.0/models/fireworks/__init__.py +6 -0
- buddy_ai-1.0.0/models/fireworks/fireworks.py +27 -0
- buddy_ai-1.0.0/models/google/__init__.py +6 -0
- buddy_ai-1.0.0/models/google/gemini.py +960 -0
- buddy_ai-1.0.0/models/groq/__init__.py +6 -0
- buddy_ai-1.0.0/models/groq/groq.py +492 -0
- buddy_ai-1.0.0/models/huggingface/__init__.py +6 -0
- buddy_ai-1.0.0/models/huggingface/huggingface.py +426 -0
- buddy_ai-1.0.0/models/ibm/__init__.py +6 -0
- buddy_ai-1.0.0/models/ibm/watsonx.py +364 -0
- buddy_ai-1.0.0/models/internlm/__init__.py +4 -0
- buddy_ai-1.0.0/models/internlm/internlm.py +27 -0
- buddy_ai-1.0.0/models/langdb/__init__.py +2 -0
- buddy_ai-1.0.0/models/langdb/langdb.py +49 -0
- buddy_ai-1.0.0/models/litellm/__init__.py +15 -0
- buddy_ai-1.0.0/models/litellm/chat.py +380 -0
- buddy_ai-1.0.0/models/litellm/litellm_openai.py +26 -0
- buddy_ai-1.0.0/models/lmstudio/__init__.py +6 -0
- buddy_ai-1.0.0/models/lmstudio/lmstudio.py +26 -0
- buddy_ai-1.0.0/models/message.py +401 -0
- buddy_ai-1.0.0/models/meta/__init__.py +13 -0
- buddy_ai-1.0.0/models/meta/llama.py +434 -0
- buddy_ai-1.0.0/models/meta/llama_openai.py +75 -0
- buddy_ai-1.0.0/models/mistral/__init__.py +6 -0
- buddy_ai-1.0.0/models/mistral/mistral.py +364 -0
- buddy_ai-1.0.0/models/nebius/__init__.py +4 -0
- buddy_ai-1.0.0/models/nebius/nebius.py +55 -0
- buddy_ai-1.0.0/models/nvidia/__init__.py +6 -0
- buddy_ai-1.0.0/models/nvidia/nvidia.py +29 -0
- buddy_ai-1.0.0/models/ollama/__init__.py +8 -0
- buddy_ai-1.0.0/models/ollama/chat.py +350 -0
- buddy_ai-1.0.0/models/ollama/tools.py +431 -0
- buddy_ai-1.0.0/models/openai/__init__.py +10 -0
- buddy_ai-1.0.0/models/openai/chat.py +733 -0
- buddy_ai-1.0.0/models/openai/like.py +28 -0
- buddy_ai-1.0.0/models/openai/responses.py +933 -0
- buddy_ai-1.0.0/models/openrouter/__init__.py +6 -0
- buddy_ai-1.0.0/models/openrouter/openrouter.py +29 -0
- buddy_ai-1.0.0/models/perplexity/__init__.py +6 -0
- buddy_ai-1.0.0/models/perplexity/perplexity.py +165 -0
- buddy_ai-1.0.0/models/portkey/__init__.py +4 -0
- buddy_ai-1.0.0/models/portkey/portkey.py +89 -0
- buddy_ai-1.0.0/models/qwen/__init__.py +6 -0
- buddy_ai-1.0.0/models/response.py +119 -0
- buddy_ai-1.0.0/models/sambanova/__init__.py +6 -0
- buddy_ai-1.0.0/models/sambanova/sambanova.py +29 -0
- buddy_ai-1.0.0/models/together/__init__.py +6 -0
- buddy_ai-1.0.0/models/together/together.py +26 -0
- buddy_ai-1.0.0/models/vercel/__init__.py +4 -0
- buddy_ai-1.0.0/models/vercel/v0.py +27 -0
- buddy_ai-1.0.0/models/vllm/__init__.py +4 -0
- buddy_ai-1.0.0/models/vllm/vllm.py +78 -0
- buddy_ai-1.0.0/models/xai/__init__.py +4 -0
- buddy_ai-1.0.0/models/xai/xai.py +113 -0
- buddy_ai-1.0.0/playground/__init__.py +10 -0
- buddy_ai-1.0.0/playground/deploy.py +4 -0
- buddy_ai-1.0.0/playground/playground.py +9 -0
- buddy_ai-1.0.0/playground/serve.py +4 -0
- buddy_ai-1.0.0/playground/settings.py +4 -0
- buddy_ai-1.0.0/py.typed +0 -0
- buddy_ai-1.0.0/pyproject.toml +111 -0
- buddy_ai-1.0.0/reasoning/__init__.py +0 -0
- buddy_ai-1.0.0/reasoning/azure_ai_foundry.py +68 -0
- buddy_ai-1.0.0/reasoning/deepseek.py +64 -0
- buddy_ai-1.0.0/reasoning/default.py +101 -0
- buddy_ai-1.0.0/reasoning/groq.py +72 -0
- buddy_ai-1.0.0/reasoning/helpers.py +66 -0
- buddy_ai-1.0.0/reasoning/ollama.py +68 -0
- buddy_ai-1.0.0/reasoning/openai.py +82 -0
- buddy_ai-1.0.0/reasoning/step.py +31 -0
- buddy_ai-1.0.0/reranker/__init__.py +0 -0
- buddy_ai-1.0.0/reranker/base.py +15 -0
- buddy_ai-1.0.0/reranker/cohere.py +65 -0
- buddy_ai-1.0.0/reranker/infinity.py +196 -0
- buddy_ai-1.0.0/reranker/sentence_transformer.py +55 -0
- buddy_ai-1.0.0/run/__init__.py +0 -0
- buddy_ai-1.0.0/run/base.py +215 -0
- buddy_ai-1.0.0/run/messages.py +33 -0
- buddy_ai-1.0.0/run/response.py +468 -0
- buddy_ai-1.0.0/run/team.py +466 -0
- buddy_ai-1.0.0/run/v2/__init__.py +0 -0
- buddy_ai-1.0.0/run/v2/workflow.py +568 -0
- buddy_ai-1.0.0/run/workflow.py +60 -0
- buddy_ai-1.0.0/setup.cfg +4 -0
- buddy_ai-1.0.0/storage/__init__.py +0 -0
- buddy_ai-1.0.0/storage/agent/__init__.py +0 -0
- buddy_ai-1.0.0/storage/agent/dynamodb.py +2 -0
- buddy_ai-1.0.0/storage/agent/json.py +2 -0
- buddy_ai-1.0.0/storage/agent/mongodb.py +2 -0
- buddy_ai-1.0.0/storage/agent/postgres.py +2 -0
- buddy_ai-1.0.0/storage/agent/singlestore.py +2 -0
- buddy_ai-1.0.0/storage/agent/sqlite.py +2 -0
- buddy_ai-1.0.0/storage/agent/yaml.py +2 -0
- buddy_ai-1.0.0/storage/base.py +61 -0
- buddy_ai-1.0.0/storage/dynamodb.py +674 -0
- buddy_ai-1.0.0/storage/firestore.py +298 -0
- buddy_ai-1.0.0/storage/gcs_json.py +262 -0
- buddy_ai-1.0.0/storage/in_memory.py +235 -0
- buddy_ai-1.0.0/storage/json.py +238 -0
- buddy_ai-1.0.0/storage/mongodb.py +330 -0
- buddy_ai-1.0.0/storage/mysql.py +686 -0
- buddy_ai-1.0.0/storage/postgres.py +683 -0
- buddy_ai-1.0.0/storage/redis.py +337 -0
- buddy_ai-1.0.0/storage/session/__init__.py +17 -0
- buddy_ai-1.0.0/storage/session/agent.py +65 -0
- buddy_ai-1.0.0/storage/session/team.py +64 -0
- buddy_ai-1.0.0/storage/session/v2/__init__.py +6 -0
- buddy_ai-1.0.0/storage/session/v2/workflow.py +114 -0
- buddy_ai-1.0.0/storage/session/workflow.py +62 -0
- buddy_ai-1.0.0/storage/singlestore.py +607 -0
- buddy_ai-1.0.0/storage/sqlite.py +647 -0
- buddy_ai-1.0.0/storage/workflow/__init__.py +0 -0
- buddy_ai-1.0.0/storage/workflow/mongodb.py +2 -0
- buddy_ai-1.0.0/storage/workflow/postgres.py +2 -0
- buddy_ai-1.0.0/storage/workflow/sqlite.py +2 -0
- buddy_ai-1.0.0/storage/yaml.py +242 -0
- buddy_ai-1.0.0/team/__init__.py +39 -0
- buddy_ai-1.0.0/team/team.py +8201 -0
- buddy_ai-1.0.0/tools/__init__.py +11 -0
- buddy_ai-1.0.0/tools/api.py +119 -0
- buddy_ai-1.0.0/tools/aws_lambda.py +52 -0
- buddy_ai-1.0.0/tools/bitbucket.py +293 -0
- buddy_ai-1.0.0/tools/browserbase.py +201 -0
- buddy_ai-1.0.0/tools/calculator.py +169 -0
- buddy_ai-1.0.0/tools/cartesia.py +185 -0
- buddy_ai-1.0.0/tools/code_migration_tool.py +589 -0
- buddy_ai-1.0.0/tools/confluence.py +188 -0
- buddy_ai-1.0.0/tools/csv_toolkit.py +185 -0
- buddy_ai-1.0.0/tools/dalle.py +103 -0
- buddy_ai-1.0.0/tools/decorator.py +258 -0
- buddy_ai-1.0.0/tools/desi_vocal.py +100 -0
- buddy_ai-1.0.0/tools/docker.py +729 -0
- buddy_ai-1.0.0/tools/e2b.py +697 -0
- buddy_ai-1.0.0/tools/eleven_labs.py +192 -0
- buddy_ai-1.0.0/tools/email.py +65 -0
- buddy_ai-1.0.0/tools/enhanced_cat_tool.py +1265 -0
- buddy_ai-1.0.0/tools/evm.py +124 -0
- buddy_ai-1.0.0/tools/file.py +1215 -0
- buddy_ai-1.0.0/tools/function.py +860 -0
- buddy_ai-1.0.0/tools/giphy.py +82 -0
- buddy_ai-1.0.0/tools/github.py +1827 -0
- buddy_ai-1.0.0/tools/gmail.py +715 -0
- buddy_ai-1.0.0/tools/google_maps.py +269 -0
- buddy_ai-1.0.0/tools/googlecalendar.py +647 -0
- buddy_ai-1.0.0/tools/googlesearch.py +94 -0
- buddy_ai-1.0.0/tools/googlesheets.py +359 -0
- buddy_ai-1.0.0/tools/jira.py +142 -0
- buddy_ai-1.0.0/tools/knowledge.py +220 -0
- buddy_ai-1.0.0/tools/linear.py +442 -0
- buddy_ai-1.0.0/tools/local_file_system.py +88 -0
- buddy_ai-1.0.0/tools/lumalab.py +172 -0
- buddy_ai-1.0.0/tools/mcp.py +612 -0
- buddy_ai-1.0.0/tools/mem0.py +194 -0
- buddy_ai-1.0.0/tools/mlx_transcribe.py +139 -0
- buddy_ai-1.0.0/tools/models/__init__.py +0 -0
- buddy_ai-1.0.0/tools/models/azure_openai.py +173 -0
- buddy_ai-1.0.0/tools/models/gemini.py +177 -0
- buddy_ai-1.0.0/tools/models/groq.py +152 -0
- buddy_ai-1.0.0/tools/models/morph.py +187 -0
- buddy_ai-1.0.0/tools/models/nebius.py +109 -0
- buddy_ai-1.0.0/tools/models_labs.py +172 -0
- buddy_ai-1.0.0/tools/moviepy_video.py +349 -0
- buddy_ai-1.0.0/tools/openai.py +177 -0
- buddy_ai-1.0.0/tools/opencv.py +306 -0
- buddy_ai-1.0.0/tools/openweather.py +232 -0
- buddy_ai-1.0.0/tools/pandas.py +95 -0
- buddy_ai-1.0.0/tools/playwright_tool.py +393 -0
- buddy_ai-1.0.0/tools/playwright_tool_async_backup.py +411 -0
- buddy_ai-1.0.0/tools/postgres.py +266 -0
- buddy_ai-1.0.0/tools/python.py +219 -0
- buddy_ai-1.0.0/tools/reasoning.py +276 -0
- buddy_ai-1.0.0/tools/selenium_tool.py +738 -0
- buddy_ai-1.0.0/tools/serpapi.py +114 -0
- buddy_ai-1.0.0/tools/serper.py +247 -0
- buddy_ai-1.0.0/tools/shell.py +47 -0
- buddy_ai-1.0.0/tools/slack.py +121 -0
- buddy_ai-1.0.0/tools/sleep.py +20 -0
- buddy_ai-1.0.0/tools/slm_tool.py +438 -0
- buddy_ai-1.0.0/tools/sql.py +935 -0
- buddy_ai-1.0.0/tools/streamlit/__init__.py +0 -0
- buddy_ai-1.0.0/tools/streamlit/components.py +113 -0
- buddy_ai-1.0.0/tools/tavily.py +107 -0
- buddy_ai-1.0.0/tools/thinking.py +74 -0
- buddy_ai-1.0.0/tools/tool_registry.py +2 -0
- buddy_ai-1.0.0/tools/toolkit.py +147 -0
- buddy_ai-1.0.0/tools/user_control_flow.py +74 -0
- buddy_ai-1.0.0/tools/valyu.py +200 -0
- buddy_ai-1.0.0/tools/visualization.py +477 -0
- buddy_ai-1.0.0/tools/webbrowser.py +28 -0
- buddy_ai-1.0.0/tools/website.py +86 -0
- buddy_ai-1.0.0/tools/webtools.py +38 -0
- buddy_ai-1.0.0/tools/whatsapp.py +291 -0
- buddy_ai-1.0.0/tools/wikipedia.py +57 -0
- buddy_ai-1.0.0/tools/zoom.py +382 -0
- buddy_ai-1.0.0/train/__init__.py +488 -0
- buddy_ai-1.0.0/train/data_processor.py +440 -0
- buddy_ai-1.0.0/train/integration.py +299 -0
- buddy_ai-1.0.0/train/integration_fixed.py +317 -0
- buddy_ai-1.0.0/train/model_manager.py +535 -0
- buddy_ai-1.0.0/train/test_basic.py +92 -0
- buddy_ai-1.0.0/train/trainer.py +503 -0
- buddy_ai-1.0.0/utils/__init__.py +0 -0
- buddy_ai-1.0.0/utils/audio.py +23 -0
- buddy_ai-1.0.0/utils/certs.py +27 -0
- buddy_ai-1.0.0/utils/code_execution.py +11 -0
- buddy_ai-1.0.0/utils/common.py +61 -0
- buddy_ai-1.0.0/utils/defaults.py +57 -0
- buddy_ai-1.0.0/utils/dttm.py +13 -0
- buddy_ai-1.0.0/utils/enum.py +22 -0
- buddy_ai-1.0.0/utils/env.py +11 -0
- buddy_ai-1.0.0/utils/events.py +505 -0
- buddy_ai-1.0.0/utils/filesystem.py +39 -0
- buddy_ai-1.0.0/utils/format_str.py +16 -0
- buddy_ai-1.0.0/utils/functions.py +168 -0
- buddy_ai-1.0.0/utils/gemini.py +239 -0
- buddy_ai-1.0.0/utils/git.py +53 -0
- buddy_ai-1.0.0/utils/http.py +74 -0
- buddy_ai-1.0.0/utils/json_io.py +31 -0
- buddy_ai-1.0.0/utils/json_schema.py +235 -0
- buddy_ai-1.0.0/utils/load_env.py +19 -0
- buddy_ai-1.0.0/utils/location.py +20 -0
- buddy_ai-1.0.0/utils/log.py +206 -0
- buddy_ai-1.0.0/utils/mcp.py +67 -0
- buddy_ai-1.0.0/utils/media.py +146 -0
- buddy_ai-1.0.0/utils/merge_dict.py +20 -0
- buddy_ai-1.0.0/utils/message.py +48 -0
- buddy_ai-1.0.0/utils/models/__init__.py +0 -0
- buddy_ai-1.0.0/utils/models/ai_foundry.py +44 -0
- buddy_ai-1.0.0/utils/models/aws_claude.py +171 -0
- buddy_ai-1.0.0/utils/models/claude.py +287 -0
- buddy_ai-1.0.0/utils/models/cohere.py +88 -0
- buddy_ai-1.0.0/utils/models/llama.py +79 -0
- buddy_ai-1.0.0/utils/models/mistral.py +98 -0
- buddy_ai-1.0.0/utils/models/openai_responses.py +141 -0
- buddy_ai-1.0.0/utils/models/schema_utils.py +154 -0
- buddy_ai-1.0.0/utils/models/watsonx.py +42 -0
- buddy_ai-1.0.0/utils/openai.py +258 -0
- buddy_ai-1.0.0/utils/pickle.py +33 -0
- buddy_ai-1.0.0/utils/pprint.py +178 -0
- buddy_ai-1.0.0/utils/prompts.py +112 -0
- buddy_ai-1.0.0/utils/py_io.py +19 -0
- buddy_ai-1.0.0/utils/pyproject.py +21 -0
- buddy_ai-1.0.0/utils/resource_filter.py +31 -0
- buddy_ai-1.0.0/utils/response.py +164 -0
- buddy_ai-1.0.0/utils/response_iterator.py +17 -0
- buddy_ai-1.0.0/utils/safe_formatter.py +24 -0
- buddy_ai-1.0.0/utils/shell.py +23 -0
- buddy_ai-1.0.0/utils/string.py +205 -0
- buddy_ai-1.0.0/utils/timer.py +41 -0
- buddy_ai-1.0.0/utils/tools.py +103 -0
- buddy_ai-1.0.0/utils/web.py +24 -0
- buddy_ai-1.0.0/utils/whatsapp.py +306 -0
- buddy_ai-1.0.0/utils/yaml_io.py +26 -0
- buddy_ai-1.0.0/vectordb/__init__.py +4 -0
- buddy_ai-1.0.0/vectordb/base.py +97 -0
- buddy_ai-1.0.0/vectordb/cassandra/__init__.py +6 -0
- buddy_ai-1.0.0/vectordb/cassandra/cassandra.py +182 -0
- buddy_ai-1.0.0/vectordb/cassandra/extra_param_mixin.py +11 -0
- buddy_ai-1.0.0/vectordb/cassandra/index.py +13 -0
- buddy_ai-1.0.0/vectordb/chroma/__init__.py +6 -0
- buddy_ai-1.0.0/vectordb/chroma/chromadb.py +363 -0
- buddy_ai-1.0.0/vectordb/clickhouse/__init__.py +10 -0
- buddy_ai-1.0.0/vectordb/clickhouse/clickhousedb.py +576 -0
- buddy_ai-1.0.0/vectordb/clickhouse/index.py +9 -0
- buddy_ai-1.0.0/vectordb/couchbase/__init__.py +4 -0
- buddy_ai-1.0.0/vectordb/couchbase/couchbase.py +1072 -0
- buddy_ai-1.0.0/vectordb/distance.py +7 -0
- buddy_ai-1.0.0/vectordb/lancedb/__init__.py +7 -0
- buddy_ai-1.0.0/vectordb/lancedb/lance_db.py +609 -0
- buddy_ai-1.0.0/vectordb/milvus/__init__.py +5 -0
- buddy_ai-1.0.0/vectordb/milvus/milvus.py +856 -0
- buddy_ai-1.0.0/vectordb/mongodb/__init__.py +4 -0
- buddy_ai-1.0.0/vectordb/mongodb/mongodb.py +1138 -0
- buddy_ai-1.0.0/vectordb/pgvector/__init__.py +13 -0
- buddy_ai-1.0.0/vectordb/pgvector/index.py +23 -0
- buddy_ai-1.0.0/vectordb/pgvector/pgvector.py +1076 -0
- buddy_ai-1.0.0/vectordb/pineconedb/__init__.py +6 -0
- buddy_ai-1.0.0/vectordb/pineconedb/pineconedb.py +482 -0
- buddy_ai-1.0.0/vectordb/qdrant/__init__.py +6 -0
- buddy_ai-1.0.0/vectordb/qdrant/qdrant.py +707 -0
- buddy_ai-1.0.0/vectordb/search.py +7 -0
- buddy_ai-1.0.0/vectordb/singlestore/__init__.py +11 -0
- buddy_ai-1.0.0/vectordb/singlestore/index.py +41 -0
- buddy_ai-1.0.0/vectordb/singlestore/singlestore.py +421 -0
- buddy_ai-1.0.0/vectordb/surrealdb/__init__.py +4 -0
- buddy_ai-1.0.0/vectordb/surrealdb/surrealdb.py +494 -0
- buddy_ai-1.0.0/vectordb/upstashdb/__init__.py +6 -0
- buddy_ai-1.0.0/vectordb/upstashdb/upstashdb.py +335 -0
- buddy_ai-1.0.0/vectordb/weaviate/__init__.py +9 -0
- buddy_ai-1.0.0/vectordb/weaviate/index.py +15 -0
- buddy_ai-1.0.0/vectordb/weaviate/weaviate.py +873 -0
- buddy_ai-1.0.0/workflow/__init__.py +18 -0
- buddy_ai-1.0.0/workflow/v2/__init__.py +22 -0
- buddy_ai-1.0.0/workflow/v2/condition.py +555 -0
- buddy_ai-1.0.0/workflow/v2/loop.py +603 -0
- buddy_ai-1.0.0/workflow/v2/parallel.py +660 -0
- buddy_ai-1.0.0/workflow/v2/router.py +522 -0
- buddy_ai-1.0.0/workflow/v2/step.py +862 -0
- buddy_ai-1.0.0/workflow/v2/steps.py +466 -0
- buddy_ai-1.0.0/workflow/v2/types.py +348 -0
- buddy_ai-1.0.0/workflow/v2/workflow.py +3261 -0
- buddy_ai-1.0.0/workflow/workflow.py +809 -0
- buddy_ai-1.0.0/workspace/__init__.py +0 -0
- buddy_ai-1.0.0/workspace/config.py +326 -0
- buddy_ai-1.0.0/workspace/enums.py +6 -0
- buddy_ai-1.0.0/workspace/helpers.py +54 -0
- buddy_ai-1.0.0/workspace/operator.py +759 -0
- 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
|
buddy_ai-1.0.0/PKG-INFO
ADDED
|
@@ -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
|
+
[](https://python.org)
|
|
77
|
+
[](https://opensource.org/licenses/MIT)
|
|
78
|
+
[](https://github.com/esasrir91/buddy-ai/releases)
|
|
79
|
+
[](https://github.com/esasrir91/buddy-ai/wiki)
|
|
80
|
+
[](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
|
+
[](mailto:sriram.sangeet@gmail.com)
|
|
631
|
+
[](https://github.com/esasrir91)
|
|
632
|
+
[](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
|
+
[](https://github.com/esasrir91/buddy-ai)
|
|
645
|
+
[](https://github.com/esasrir91)
|
|
646
|
+
[](https://github.com/esasrir91/buddy-ai/issues)
|
|
647
|
+
[](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>
|