Metadata-Version: 2.4
Name: ide_model_ext
Version: 0.1.0
Summary: A universal multi-model AI extension — interact with OpenAI, Gemini, and Claude through a single interface.
Author: Novatechnolab
License: MIT
Project-URL: Homepage, https://github.com/novatechnolab/ide_model_ext
Project-URL: Documentation, https://github.com/novatechnolab/ide_model_ext/blob/main/docs/user_guide.md
Project-URL: Repository, https://github.com/novatechnolab/ide_model_ext
Project-URL: Issues, https://github.com/novatechnolab/ide_model_ext/issues
Keywords: llm,ai,openai,gemini,claude,jupyter,multi-model,chatbot
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Framework :: Jupyter
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: openai>=1.0.0
Requires-Dist: google-generativeai>=0.4.0
Requires-Dist: anthropic>=0.20.0
Provides-Extra: jupyter
Requires-Dist: ipython>=7.0; extra == "jupyter"
Provides-Extra: dev
Requires-Dist: pytest>=7.0; extra == "dev"
Requires-Dist: pytest-cov; extra == "dev"
Requires-Dist: build; extra == "dev"
Requires-Dist: twine; extra == "dev"
Requires-Dist: ipython>=7.0; extra == "dev"
Provides-Extra: all
Requires-Dist: ide_model_ext[dev,jupyter]; extra == "all"
Dynamic: license-file

# 🚀 ide_model_ext

[![PyPI version](https://img.shields.io/pypi/v/ide_model_ext.svg)](https://pypi.org/project/ide_model_ext/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Python 3.9+](https://img.shields.io/badge/python-3.9+-blue.svg)](https://www.python.org/downloads/)

**One extension. Three AI providers. Zero hassle.**

`ide_model_ext` gives you a **single, universal interface** to interact with **OpenAI**, **Google Gemini**, and **Anthropic Claude** — from Python scripts, the terminal CLI, or Jupyter notebooks. Stop juggling three SDKs and three different APIs.

---

## ✨ Features

- 🔗 **Unified API** — One `ModelClient` for GPT-4o, Gemini Pro, Claude Sonnet, and more.
- 🔀 **Dynamic Model Selection** — Automatically picks the best available model based on your API keys.
- 🔍 **Transparent Routing** — Every response tells you which model and provider was used.
- 🌊 **Streaming Support** — Real-time streamed responses from all providers.
- 📓 **Jupyter Magics** — `%ai` and `%%ai` magic commands for in-notebook AI.
- 💻 **CLI Tool** — Quick chat, interactive REPL, and model listing from your terminal.
- 🔌 **Extensible** — Add new providers by subclassing `BaseProvider`.

---

## 📦 Installation

```bash
pip install ide_model_ext
```

With Jupyter support:
```bash
pip install "ide_model_ext[jupyter]"
```

---

## 🔑 Setup

Set your API keys as environment variables (only for the providers you want to use):

```bash
export OPENAI_API_KEY="sk-..."
export GOOGLE_API_KEY="AIza..."
export ANTHROPIC_API_KEY="sk-ant-..."
```

---

## ⚡ Quick Start

### Python

```python
from ide_model_ext import ModelClient

# Auto-selects the best available model
client = ModelClient()
response = client.chat("Explain quantum computing in simple terms.")
print(response.content)
print(f"Answered by: {response.model} ({response.provider})")

# Or pick a specific model
client = ModelClient(model="gpt-4o")
response = client.chat("Write a haiku about Python.")
```

### CLI

```bash
# One-shot query
ide-model-ext chat "What is machine learning?"

# Pick a model
ide-model-ext chat --model gemini-pro "Summarize this concept"

# Interactive REPL
ide-model-ext interactive

# List available models
ide-model-ext models
```

### Jupyter Notebook

```python
%load_ext ide_model_ext

%ai Tell me a joke about programming

%ai_model claude-3-5-sonnet-20241022

%%ai
Write a Python function that calculates
the Fibonacci sequence recursively.
```

---

## 📖 Documentation

- [User Guide](docs/user_guide.md) — Full usage documentation.
- [Publishing Guide](docs/publishing_guide.md) — How to publish on PyPI, GitHub, Dev.to.
- [Contributing](CONTRIBUTING.md) — How to contribute or add new providers.
- [Changelog](CHANGELOG.md)

---

## 🏗️ Architecture

```
Your Code / CLI / Jupyter
        │
   ModelClient          ← simple user-facing API
        │
   ModelRouter          ← resolves model → provider
      ┌──┼──┐
  OpenAI Gemini Claude  ← provider adapters
      └──┼──┘
   BaseProvider         ← abstract interface
```

---

## 📄 License

MIT License © 2026 [Novatechnolab](https://github.com/novatechnolab)
