Skip to main content

A unified library for interacting with various AI APIs through a standardized interface.

Project description

SwitchAI

SwitchAI is a lightweight and flexible library that provides a standardized interface for interacting with various AI APIs like OpenAI, Anthropic, Mistral, and more. With SwitchAI, you can easily switch between AI providers or use multiple APIs simultaneously, all with a simple and consistent interface.

Installation

You can install just the base switchai package, or install a provider's package along with it.

  • Base Package: This installs just the base switchai package without installing any provider's SDK.

    pip install switchai
    
  • OpenAI Provider: This installs switchai along with OpenAI's library.

    pip install switchai[openai]
    
  • All Providers: This installs switchai along with all provider-specific libraries.

    pip install switchai[all]
    

Getting Started

To use SwitchAI, you will need API keys for the AI providers you intend to interact with. You can set these keys either as environment variables or pass them as configuration to the SwitchAI client.

Option 1: In Code

from switchai import SwitchAI

client = SwitchAI(provider="openai", model_name="gpt-4", api_key="your_api_key")

Option 2: Environment Variables

Set the API key as an environment variable:

macOS/Linux:

export PROVIDER_API_KEY="your_api_key"

Windows:

set PROVIDER_API_KEY="your_api_key"

Make sure you follow the correct naming conventions for each provider's API key, as outlined in the documentation. This ensures that SwitchAI can automatically detect and use the appropriate key for the chosen provider.

Example Usage

Here are some examples of how you can use SwitchAI to interact with different AI models:

Chat

from switchai import SwitchAI

# Initialize the client with the desired AI model
client = SwitchAI(provider="openai", model_name="gpt-4o")

# Send a message and receive a response
response = client.chat(
    messages=[
        {"role": "user", "content": "Hello, how are you?"}
    ]
)

# Print the response
print(response)

Vision

from switchai import SwitchAI

# Initialize the client with the vision model
client = SwitchAI(provider="mistral", model_name="pixtral-large-latest")

# Send an image with a question and receive a response
response = client.chat(
    messages=[
        {
            "role": "user",
            "content": [
                {"type": "text", "text": "What's in this image?"},
                {"type": "image", "image": "path/to/image/file.jpg"},
            ],
        }
    ]
)

# Print the response
print(response)

Text Embedding

from switchai import SwitchAI

# Initialize the client with the chosen embedding model
client = SwitchAI(provider="google", model_name="models/text-embedding-004")

# Generate embeddings for a list of text inputs
response = client.embed(
    inputs=[
        "I am feeling great today!",
        "I am feeling sad today."
    ]
)

# Print the response
print(response)

Speech to Text

from switchai import SwitchAI

# Initialize the client with the desired speech-to-text model
client = SwitchAI(provider="deepgram", model_name="nova-2")

# Transcribe an audio file
response = client.transcribe(
    audio_path="path/to/audio/file.wav"
)

# Print the response
print(response)

Image Generation

from switchai import SwitchAI

client = SwitchAI(provider="replicate", model_name="black-forest-labs/flux-schnell")
response = client.generate_image("A beautiful sunset over the mountains.")

image = response.images[0]
image.show()

SuperClients

SuperClients are high-level interfaces that extend the base SwitchAI client to provide additional functionalities.

Browser

Gives a chat model the ability to access websites.

from switchai import SwitchAI, Browser

client = SwitchAI(provider="openai", model_name="gpt-4o")
client = Browser(client)

response = client.chat(
    messages=[
        {
            "role": "user",
            "content": "Can you summarize the content of this website: https://example.com?"
        },
    ]
)

print(response)

Classifier

Assigns a label to a text or image input.

from switchai import SwitchAI, Classifier

client = SwitchAI(provider="openai", model_name="gpt-4o-mini")
classifier = Classifier(client, classes=["negative", "positive"])

response = classifier.classify("I am feeling great today!")
print(response)  # Output: "positive"

Illustrator

Creates SVG illustrations using simple textual descriptions.

from switchai import SwitchAI, Illustrator

client = SwitchAI(provider="openai", model_name="gpt-4o")

illustrator = Illustrator(client)
illustrator.generate_illustration(
    "Design a futuristic logo for my AI app with a sleek, modern aesthetic.",
    output_path="logo.svg",
)

ImageRetriever

Retrieves images from a folder of images based on a query.

from switchai import SwitchAI, ImageRetriever

client = SwitchAI(provider="VoyageAI", model_name="voyage-multimodal-3")
image_retriever = ImageRetriever(client, images_folder_path="files/images")

results = image_retriever.retrieve_images("An orange cat in a green field.")
print(results)

Documentation

For full documentation, visit SwitchAI Documentation.

Contributing

Contributions are always welcome! If you'd like to help enhance SwitchAI, feel free to make a contribution.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

switchai-0.4.0.tar.gz (29.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

switchai-0.4.0-py3-none-any.whl (38.1 kB view details)

Uploaded Python 3

File details

Details for the file switchai-0.4.0.tar.gz.

File metadata

  • Download URL: switchai-0.4.0.tar.gz
  • Upload date:
  • Size: 29.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.10.12

File hashes

Hashes for switchai-0.4.0.tar.gz
Algorithm Hash digest
SHA256 9197306403cd51e960fc2dc8211956a94eb0a0c085b03c002719ad51f2dee762
MD5 1219d921d499ef1824096e2264b7f383
BLAKE2b-256 7ba5eb7e48fccd9ebed6b2639a8961ac4f272e43ad3d1695edb38db0a5d2317a

See more details on using hashes here.

File details

Details for the file switchai-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: switchai-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 38.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.10.12

File hashes

Hashes for switchai-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7b3faa53094e981a4ea422638bc00e44f7f9989d579d0927e11af9168f1ded5e
MD5 3eb69991b5fc0b68778bd2ece92abb4c
BLAKE2b-256 15d03ce9c401e103a8765ce602806487caa75c63923cbff15ae54545a77f40ab

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page