A comprehensive Python framework for building and deploying AI agents with multi-model support and advanced capabilities
Project description
🤖 Buddy AI
A model-agnostic Python framework for building production-grade AI agents
Documentation · GitHub · CHANGELOG · Examples
What is Buddy AI?
Buddy AI is a comprehensive Python framework for creating, deploying, and managing intelligent AI agents. It provides a unified interface across 25+ LLM providers, a powerful memory system, extensible tools, RAG-based knowledge management, multi-agent teams, and workflows — all production-ready out of the box.
New in v2.1.0 → PULSE — give your AI an employee identity, teach it through interactive knowledge transfer, have it attend meetings, manage tasks, and more.
Installation
# Core install
pip install buddy-ai
# With all optional dependencies (recommended)
pip install buddy-ai[all]
# Specific providers
pip install buddy-ai[openai]
pip install buddy-ai[anthropic]
pip install buddy-ai[google]
pip install buddy-ai[groq]
Quick Start
from buddy import Agent
from buddy.models.openai import OpenAIChat
agent = Agent(
name="Assistant",
model=OpenAIChat(),
instructions="You are a helpful assistant."
)
response = agent.run("What can you do?")
print(response.content)
✨ PULSE — Virtual Employee's ERA
The flagship feature of v2.1.0
PULSE turns a Buddy AI agent into a fully-functional virtual human team member — complete with a professional identity, the ability to learn from documents and live human sessions (KT), attend meetings, manage tasks, and communicate across channels.
Launch the PULSE web UI
pip install buddy-ai[all]
# Set your LLM key
export OPENAI_API_KEY=sk-...
# Start the dashboard (or configure the key inside the UI)
buddy pulse start
# Open http://localhost:8888
Or use PULSE in Python
from buddy.pulse import PulseEmployee
from buddy.pulse.identity import EmployeeProfile
from buddy.models.openai import OpenAIChat
# Create the employee
priya = PulseEmployee(
employee_profile=EmployeeProfile(
full_name="Priya Sharma",
role="Senior Backend Engineer",
department="Engineering",
skills=["Python", "FastAPI", "PostgreSQL"],
timezone="Asia/Kolkata",
),
model=OpenAIChat(id="gpt-4o"),
)
# Introduce herself
print(priya.introduce_yourself())
# Learn from a document
summary = priya.take_kt(
source="architecture.md",
session_name="Payments Architecture",
knowledge_giver="Arjun Nair",
)
print(f"Confidence: {summary.confidence_score:.0%}")
print(f"Mental model: {summary.mental_model}")
# Start a live interactive KT session
session = priya.start_live_kt(
session_name="Auth Service Deep Dive",
knowledge_giver="Rahul",
)
# Human explains, Priya asks targeted questions
turn = session.human_explains("Our auth uses JWT with RS256...")
print(turn.pulse_message) # Priya's response + questions
print(turn.questions) # Clarifying questions
# Attend a meeting and extract actions
notes = priya.attend_meeting(
transcript="Alice: Let's ship the new API by Friday...",
title="Sprint Planning",
)
for action in notes.action_items:
print(f"[{action.priority}] {action.description} → {action.owner}")
# Receive and track a task
task = priya.receive_task(
title="Refactor payment retry logic",
description="Reduce retry latency by 40%",
priority="high",
deadline="2026-06-20",
)
print(priya.report_status(task.task_id).message)
PULSE Web UI — 9 pages
| Page | What it does |
|---|---|
| Onboarding Wizard | 4-step setup: identity → company/role → skills → launch |
| Dashboard | KT stats, active tasks, knowledge domains |
| KT Center | Launch live (chat) or async (document/URL) KT sessions |
| Live KT Session | 3-panel view: dialogue + real-time Confidence Meter + Mental Model |
| Meeting Room | Paste transcript → extract decisions + action items instantly |
| Task Board | Kanban board with move buttons and status updates |
| Chat | WebSocket streaming chat directly with your PULSE employee |
| Knowledge Explorer | Search across everything PULSE has learned |
| Settings | Configure AI model, API keys, and employee profile |
Core Features
🤖 Agent System
from buddy import Agent
from buddy.models.anthropic import Claude
from buddy.tools.web import DuckDuckGoSearch
from buddy.memory.agent import AgentMemory
agent = Agent(
name="ResearchBot",
model=Claude(id="claude-opus-4-5"),
tools=[DuckDuckGoSearch()],
memory=AgentMemory(),
instructions="You are a research assistant.",
markdown=True,
)
response = agent.run("Latest developments in quantum computing?")
🧠 25+ Model Providers
from buddy.models.openai import OpenAIChat
from buddy.models.anthropic import Claude
from buddy.models.google import Gemini
from buddy.models.groq import Groq
from buddy.models.ollama import Ollama
# Local model via Ollama
agent = Agent(model=Ollama(id="llama3.2"))
# Switch models at runtime
agent.model = Claude(id="claude-sonnet-4-5")
🛠️ Tools
from buddy.tools.web import DuckDuckGoSearch, BrowserTools
from buddy.tools.files import FileTools
from buddy.tools.code import PythonTools
# Custom tool with decorator
@agent.tool
def get_stock_price(ticker: str) -> str:
"""Get real-time stock price for a ticker symbol."""
return fetch_price(ticker)
🧠 Memory & Knowledge (RAG)
from buddy.knowledge.pdf import PDFKnowledge
from buddy.vectordb.chroma import ChromaDb
knowledge = PDFKnowledge(
path="company_handbook.pdf",
vector_db=ChromaDb(collection="handbook"),
)
agent = Agent(
model=OpenAIChat(),
knowledge=knowledge,
search_knowledge=True,
)
👥 Multi-Agent Teams
from buddy import Agent, Team
researcher = Agent(name="Researcher", role="Research the topic")
writer = Agent(name="Writer", role="Write a clear summary")
reviewer = Agent(name="Reviewer", role="Review and improve")
team = Team(
agents=[researcher, writer, reviewer],
mode="coordinate",
instructions="Produce a polished research report.",
)
response = team.run("Write a report on renewable energy trends.")
⚙️ Workflows
from buddy.workflow.workflow import Workflow
class ResearchWorkflow(Workflow):
def run(self, topic: str):
research = self.researcher.run(f"Research: {topic}")
draft = self.writer.run(f"Write based on: {research.content}")
return self.reviewer.run(f"Review: {draft.content}")
CLI
# Initialize a project
buddy init my-agent
# PULSE virtual employee
buddy pulse start # Launch web UI (http://localhost:8888)
buddy pulse create # Interactive employee setup
buddy pulse kt --source doc.pdf --name "KT Session" --giver Alice
buddy pulse status # Module health check
# Training
buddy train /data --name my-model
Deployment
# FastAPI
from buddy.app.fastapi import create_agent_app
app = create_agent_app(agent)
# uvicorn app:app --host 0.0.0.0 --port 8000
# Docker
FROM python:3.12-slim
RUN pip install buddy-ai[all]
COPY . /app
WORKDIR /app
CMD ["buddy", "pulse", "start", "--host", "0.0.0.0"]
What's New in v2.1.0
- PULSE — Virtual Employee's ERA: identity, interactive KT, meetings, tasks, comms, feedback, onboarding
- PULSE Web UI — Full React 18 + TypeScript dashboard with 9 pages
- Live KT — Real-time dialogue with Confidence Meter and Mental Model panel
- LLM Settings UI — Configure provider, model, and API key directly in the browser
- 36 unit tests — Full test coverage for all PULSE modules
- Bug fix —
ProfessionalMemorycomposition refactor
Optional Dependencies
| Extra | Installs |
|---|---|
buddy-ai[openai] |
OpenAI SDK |
buddy-ai[anthropic] |
Anthropic SDK |
buddy-ai[google] |
Google Generative AI SDK |
buddy-ai[groq] |
Groq SDK |
buddy-ai[aws] |
boto3 (AWS Bedrock) |
buddy-ai[training] |
PyTorch, Transformers, PEFT |
buddy-ai[multimodal] |
Pillow, OpenCV, librosa |
buddy-ai[tools] |
Playwright, Selenium, Slack SDK |
buddy-ai[all] |
Everything above |
Links
- Documentation: esasrir91.github.io/buddy-ai
- GitHub: github.com/esasrir91/buddy-ai
- PyPI: pypi.org/project/buddy-ai
- Issues: github.com/esasrir91/buddy-ai/issues
- Discussions: github.com/esasrir91/buddy-ai/discussions
License
MIT License — see LICENSE
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file buddy_ai-2.1.1.tar.gz.
File metadata
- Download URL: buddy_ai-2.1.1.tar.gz
- Upload date:
- Size: 884.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c429817b514ae82231116809ef9507c6db7cfaae24c3c7168b694e0e1b07dd48
|
|
| MD5 |
00ca582f850a19a51f55a30bd001f990
|
|
| BLAKE2b-256 |
61fce0d9241d398858c7ce0c708f92421e214c05d346f2b915da3fe5cc4614e9
|
File details
Details for the file buddy_ai-2.1.1-py3-none-any.whl.
File metadata
- Download URL: buddy_ai-2.1.1-py3-none-any.whl
- Upload date:
- Size: 1.1 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
83bcec263e5a19d31bde1f465a6c1fc233eb412fa6e5cf361e021b1b3a957d6d
|
|
| MD5 |
45f1144ca8280fc0f4182741a21c90fd
|
|
| BLAKE2b-256 |
29b7f3f549cd0f400282fe5ed90b60ae4636577d73ed862baa1d3ede7e8d4559
|