Metadata-Version: 2.4
Name: buddy-ai
Version: 2.1.3
Summary: A comprehensive Python framework for building and deploying AI agents with multi-model support and advanced capabilities
Author-email: Sriram Sangeeth Mantha <sriram.sangeet@gmail.com>
Maintainer-email: Sriram Sangeeth Mantha <sriram.sangeet@gmail.com>
License-Expression: MIT
Project-URL: Homepage, https://github.com/esasrir91/buddy-ai
Project-URL: Documentation, https://github.com/esasrir91/buddy-ai#readme
Project-URL: Repository, https://github.com/esasrir91/buddy-ai
Project-URL: Bug Reports, https://github.com/esasrir91/buddy-ai/issues
Project-URL: Discussions, https://github.com/esasrir91/buddy-ai/discussions
Project-URL: Release Notes, https://github.com/esasrir91/buddy-ai/releases
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
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
Classifier: Environment :: Console
Classifier: Environment :: Web Environment
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: pydantic>=2.0.0
Requires-Dist: pydantic-settings>=2.0.0
Requires-Dist: httpx>=0.24.0
Requires-Dist: fastapi>=0.100.0
Requires-Dist: uvicorn>=0.23.0
Requires-Dist: typer>=0.9.0
Requires-Dist: rich>=13.0.0
Requires-Dist: python-multipart>=0.0.6
Requires-Dist: starlette>=0.27.0
Requires-Dist: docstring-parser>=0.15
Requires-Dist: packaging>=23.0
Requires-Dist: openai>=1.0.0
Requires-Dist: streamlit>=1.28.0
Requires-Dist: spacy>=3.4.0
Requires-Dist: numpy>=1.21.0
Requires-Dist: scikit-learn>=1.1.0
Provides-Extra: dev
Requires-Dist: pytest>=7.0.0; extra == "dev"
Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
Requires-Dist: pytest-cov>=4.1.0; extra == "dev"
Requires-Dist: black>=23.0.0; extra == "dev"
Requires-Dist: isort>=5.12.0; extra == "dev"
Requires-Dist: flake8>=6.0.0; extra == "dev"
Requires-Dist: mypy>=1.5.0; extra == "dev"
Provides-Extra: openai
Requires-Dist: openai>=1.0.0; extra == "openai"
Provides-Extra: anthropic
Requires-Dist: anthropic>=0.25.0; extra == "anthropic"
Provides-Extra: google
Requires-Dist: google-generativeai>=0.3.0; extra == "google"
Provides-Extra: cohere
Requires-Dist: cohere>=4.0.0; extra == "cohere"
Provides-Extra: aws
Requires-Dist: boto3>=1.34.0; extra == "aws"
Provides-Extra: azure
Requires-Dist: openai>=1.0.0; extra == "azure"
Provides-Extra: irag
Requires-Dist: spacy>=3.4.0; extra == "irag"
Requires-Dist: numpy>=1.21.0; extra == "irag"
Requires-Dist: scikit-learn>=1.1.0; extra == "irag"
Provides-Extra: training
Requires-Dist: torch>=2.0.0; extra == "training"
Requires-Dist: transformers>=4.35.0; extra == "training"
Requires-Dist: datasets>=2.14.0; extra == "training"
Requires-Dist: accelerate>=0.24.0; extra == "training"
Requires-Dist: peft>=0.6.0; extra == "training"
Provides-Extra: multimodal
Requires-Dist: Pillow>=10.0.0; extra == "multimodal"
Requires-Dist: opencv-python>=4.8.0; extra == "multimodal"
Requires-Dist: librosa>=0.10.0; extra == "multimodal"
Requires-Dist: soundfile>=0.12.0; extra == "multimodal"
Provides-Extra: tools
Requires-Dist: playwright>=1.40.0; extra == "tools"
Requires-Dist: selenium>=4.15.0; extra == "tools"
Requires-Dist: boto3>=1.34.0; extra == "tools"
Requires-Dist: slack-sdk>=3.26.0; extra == "tools"
Requires-Dist: google-api-python-client>=2.108.0; extra == "tools"
Requires-Dist: tavily-python>=0.3.0; extra == "tools"
Provides-Extra: all
Requires-Dist: openai>=1.0.0; extra == "all"
Requires-Dist: anthropic>=0.25.0; extra == "all"
Requires-Dist: google-generativeai>=0.3.0; extra == "all"
Requires-Dist: cohere>=4.0.0; extra == "all"
Requires-Dist: boto3>=1.34.0; extra == "all"
Requires-Dist: spacy>=3.4.0; extra == "all"
Requires-Dist: numpy>=1.21.0; extra == "all"
Requires-Dist: scikit-learn>=1.1.0; extra == "all"
Requires-Dist: torch>=2.0.0; extra == "all"
Requires-Dist: transformers>=4.35.0; extra == "all"
Requires-Dist: datasets>=2.14.0; extra == "all"
Requires-Dist: accelerate>=0.24.0; extra == "all"
Requires-Dist: Pillow>=10.0.0; extra == "all"
Requires-Dist: opencv-python>=4.8.0; extra == "all"
Requires-Dist: librosa>=0.10.0; extra == "all"
Requires-Dist: soundfile>=0.12.0; extra == "all"
Dynamic: license-file

<div align="center">

# 🤖 Buddy AI

**A model-agnostic Python framework for building production-grade AI agents**

[![PyPI version](https://badge.fury.io/py/buddy-ai.svg)](https://pypi.org/project/buddy-ai/)
[![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![GitHub stars](https://img.shields.io/github/stars/esasrir91/buddy-ai.svg)](https://github.com/esasrir91/buddy-ai/stargazers)

**[Documentation](https://esasrir91.github.io/buddy-ai/) · [GitHub](https://github.com/esasrir91/buddy-ai) · [CHANGELOG](https://github.com/esasrir91/buddy-ai/blob/main/CHANGELOG.md) · [Examples](https://github.com/esasrir91/buddy-ai/tree/main/examples)**

</div>

---

## 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](#-pulse--virtual-employees-era)** — give your AI an employee identity, teach it through interactive knowledge transfer, have it attend meetings, manage tasks, and more.

---

## Installation

```bash
# 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

```python
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

```bash
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

```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

```python
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

```python
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

```python
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)

```python
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

```python
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

```python
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

```bash
# 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

```python
# FastAPI
from buddy.app.fastapi import create_agent_app

app = create_agent_app(agent)
# uvicorn app:app --host 0.0.0.0 --port 8000
```

```dockerfile
# 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** — `ProfessionalMemory` composition refactor

[Full CHANGELOG →](https://github.com/esasrir91/buddy-ai/blob/main/CHANGELOG.md)

---

## 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](https://esasrir91.github.io/buddy-ai/)
- **GitHub**: [github.com/esasrir91/buddy-ai](https://github.com/esasrir91/buddy-ai)
- **PyPI**: [pypi.org/project/buddy-ai](https://pypi.org/project/buddy-ai/)
- **Issues**: [github.com/esasrir91/buddy-ai/issues](https://github.com/esasrir91/buddy-ai/issues)
- **Discussions**: [github.com/esasrir91/buddy-ai/discussions](https://github.com/esasrir91/buddy-ai/discussions)

---

## License

MIT License — see [LICENSE](https://github.com/esasrir91/buddy-ai/blob/main/LICENSE)

---

<div align="center">
Built with ❤️ by <a href="https://github.com/esasrir91">Sriram Sangeeth Mantha</a>
</div>
