Skip to main content

UniAI

PyPI version Python Versions License: MIT GitHub

A Universal AI Interface Layer for Python

Seamlessly connect to and switch between LLM providers with unified context management and streaming support.

✨ Features

Feature Description
🔄 Unified Interface Single API for multiple LLM providers
🔀 Easy Switching Switch between OpenAI, DeepSeek, and more with one line
💬 Context Management Built-in conversation history tracking
🌊 Streaming Stream responses in real-time
🛡️ Type Safety Full type hints and Pydantic validation
🔧 Extensible Easy to add custom providers

📦 Installation

pip install uniai

From source:

git clone https://github.com/Archie818/uniai.git
cd uniai
pip install -e .

🚀 Quick Start

from uniai import UniAI

# Initialize with your preferred provider
bot = UniAI(provider="openai", api_key="sk-...", model="gpt-4o-mini")

# Simple chat
response = bot.chat("Hello, who are you?")
print(response)

# Multi-turn conversation (context is automatically managed)
response = bot.chat("What can you help me with?")
response = bot.chat("Tell me more about the first thing you mentioned")

🌊 Streaming

for chunk in bot.stream("Tell me a story about a brave knight"):
    print(chunk, end="", flush=True)

🔀 Switch Providers

# Start with OpenAI
bot = UniAI(provider="openai", api_key="sk-openai-key", model="gpt-4o-mini")
bot.chat("Hello!")

# Switch to DeepSeek (preserves history)
bot.switch_provider(provider="deepseek", api_key="sk-deepseek-key", model="deepseek-chat")
bot.chat("Continue our conversation")

# Switch and clear history
bot.switch_provider(provider="openai", api_key="sk-...", model="gpt-4o", keep_history=False)

📋 Supported Providers

Provider Models Status
OpenAI gpt-4o, gpt-4o-mini, gpt-4, gpt-3.5-turbo ✅ Supported
DeepSeek deepseek-chat, deepseek-coder ✅ Supported
Gemini gemini-2.0-flash, gemini-1.5-pro ✅ Supported
Claude claude-3.5-sonnet, claude-3-opus 🚧 Coming Soon

⚙️ Configuration

bot = UniAI(
    provider="openai",
    api_key="sk-...",
    model="gpt-4o-mini",
    system_prompt="You are a helpful assistant.",  # System instructions
    temperature=0.7,         # Randomness (0.0-2.0)
    max_tokens=2048,         # Max response length
    max_history=20,          # Conversation history limit
    timeout=60.0,            # Request timeout (seconds)
    max_retries=3,           # Retry attempts
)

📖 Advanced Usage

Full Response Object

response = bot.chat_with_response("What is Python?")

print(f"Content: {response.content}")
print(f"Model: {response.model}")
print(f"Tokens: {response.usage.total_tokens}")
print(f"Finish reason: {response.finish_reason}")

History Management

history = bot.get_history()      # Get conversation history
bot.clear_history()              # Clear history
print(len(bot.memory))           # Messages count

Custom Providers

from uniai.core.base import BaseProvider
from uniai.providers import register_provider

class MyProvider(BaseProvider):
    name = "custom"

    def _init_client(self):
        pass

    def chat(self, messages):
        # Your implementation
        pass

    def stream_chat(self, messages):
        # Your implementation
        pass

register_provider("custom", MyProvider)
bot = UniAI(provider="custom", api_key="...", model="...")

🛡️ Error Handling

from uniai.exceptions import AuthenticationError, RateLimitError, APIError

try:
    response = bot.chat("Hello!")
except AuthenticationError:
    print("Invalid API key")
except RateLimitError:
    print("Rate limit exceeded")
except APIError as e:
    print(f"API error: {e}")

🏗️ Architecture

uniai/
├── client.py            # Main UniAI class
├── exceptions.py        # Custom exceptions
├── core/
│   ├── base.py          # Abstract BaseProvider
│   ├── config.py        # Pydantic config models
│   └── types.py         # Type definitions
├── context/
│   └── memory.py        # Conversation memory
└── providers/
    ├── openai.py        # OpenAI provider
    ├── deepseek.py      # DeepSeek provider
    ├── gemini.py       # Gemini provider

🗺️ Roadmap

  • v0.1 - Core functionality (Unified interface, OpenAI & DeepSeek, Context management, Streaming)
  • v0.1.3 - Gemini support
  • v0.2 - Extended providers (Claude, Ollama)
  • v0.3 - Advanced features (Async support, Function calling, Token counting)
  • v1.0 - Agent framework (Multi-model collaboration, Tool integration)

🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

📄 License

MIT License © 2024 UniAI Contributors

Release files for uniai 0.1.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for uniai 0.1.3
File Size Uploaded
uniai-0.1.3.tar.gz 14.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for uniai 0.1.3
File Interpreter ABI Platform
uniai-0.1.3-py3-none-any.whl Python 3 none any Details

Total release size: 32.7 kB

Release files / uniai-0.1.3.tar.gz

Download URL uniai-0.1.3.tar.gz
Size 14.8 kB
Tags Source
SHA-256 checksum
How to use checksums
268f701ddcddf5c7dec1f2fa3fe43481d0b4d3217a02318ab7629f193c349cda
BLAKE2b-256 checksum
How to use checksums
d0086890fe4d7119be9b477a25cef2557ca53eb0c097e0007333e874356b6492
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.6

Release files / uniai-0.1.3-py3-none-any.whl

Download URL uniai-0.1.3-py3-none-any.whl
Size 18.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2d42e6cc448e09cac73fd19039115d0efba12035ad4913aedbc2fff14885541a
BLAKE2b-256 checksum
How to use checksums
995c0d054edc558a4989a9381777ad075dc598f0fc62d758772589f4e28be416
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.6

Release history Release notifications | RSS feed

This release

0.1.3 This release

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page