Metadata-Version: 2.4
Name: dobby-sdk
Version: 0.2.12
Summary: Lightweight multi-provider LLM SDK with streaming and tools
Project-URL: Homepage, https://github.com/tynybay/dobby-sdk
Project-URL: Repository, https://github.com/tynybay/dobby-sdk
Author-email: Anant Gupta <anant.gupta@tynybay.com>, Sheik Javeed <sheik.javeed@tynybay.com>
License: MIT
License-File: LICENSE
Keywords: RAG,agents,ai,anthropic,gemini,google-genai,llm,openai,streaming,tools
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: MacOS
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: OS Independent
Classifier: Operating System :: POSIX
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Typing :: Typed
Requires-Python: >=3.12
Requires-Dist: anthropic>=0.75.0
Requires-Dist: azure-search-documents>=11.6.0
Requires-Dist: google-genai>=1.57.0
Requires-Dist: logfire>=4.16.0
Requires-Dist: openai>=2.14.0
Requires-Dist: pydantic>=2.12.5
Requires-Dist: tavily-python>=0.7.17
Requires-Dist: tenacity>=9.1.2
Description-Content-Type: text/markdown

# Dobby SDK

Lightweight multi-provider LLM SDK with streaming and tool support.

## Installation

```bash
pip install dobby-sdk

# Or from GitHub
pip install git+https://github.com/TYNYBAY/dobby-sdk.git

# With uv
uv add dobby-sdk
```

## Quick Start

```python
from dobby import AgentExecutor, OpenAIProvider
from dobby.types import UserMessagePart, TextPart, TextDeltaEvent

provider = OpenAIProvider(model="gpt-4o", api_key="sk-...")
executor = AgentExecutor(provider="openai", llm=provider)

messages = [UserMessagePart(parts=[TextPart(text="Hello!")])]

async for event in executor.run_stream(messages):
    match event:
        case TextDeltaEvent(delta=delta):
            print(delta, end="")
```

## Features

- **Multi-provider**: OpenAI, Azure OpenAI, Anthropic
- **Streaming**: Real-time token streaming with typed events
- **Tools**: Dataclass-based tools with auto-generated schemas
- **Context injection**: Pass runtime context to tools via `Injected[T]`
- **Structured output**: Pydantic model validation for agent responses

## Documentation

See [docs/](./docs/) for detailed documentation:

- [Getting Started](./docs/getting-started.md)
- [Message Types](./docs/types/messages.md)
- [Providers](./docs/providers/)
- [Tools](./docs/tools/)
- [AgentExecutor](./docs/executor.md)
- [Vector Stores](./docs/vector-stores/)
- [Retrievers](./docs/retrievers/)

## License

MIT
