Skip to main content

OneSDK is a Python library that provides a unified interface for interacting with various Large Language Model (LLM) providers.

Project description

OneSDK: Unified LLM API Interface

OneSDK is a Python library providing a unified interface for various Large Language Model (LLM) providers. It simplifies interactions with different LLM APIs through a consistent set of methods.

Features

  • Unified API for multiple LLM providers
  • Flexible usage: per-call model specification or default model setting
  • Intuitive interface for common LLM operations
  • Synchronous and streaming text generation support
  • Token counting functionality
  • Embedding creation (for supported providers)
  • Image generation (for supported providers)
  • File operations (for supported providers)
  • Proxy setting for API calls
  • Usage statistics retrieval (for supported providers)

Installation

pip install llm_onesdk

Quick Start

OneSDK supports two main usage patterns:

1. Specify model for each call

from llm_onesdk import OneSDK

sdk = OneSDK("openai", {"api_key": "your-api-key"})

response = sdk.generate(
    model="gpt-3.5-turbo",
    messages=[{"role": "user", "content": "Tell me a joke about programming."}]
)
print(response['choices'][0]['message']['content'])

2. Set a default model

from llm_onesdk import OneSDK

sdk = OneSDK("openai", {"api_key": "your-api-key"})
sdk.set_model("gpt-3.5-turbo")

response = sdk.generate(
    messages=[{"role": "user", "content": "Tell me a joke about programming."}]
)
print(response['choices'][0]['message']['content'])

Streaming Generation

for chunk in sdk.stream_generate(
    model="gpt-3.5-turbo",  # Optional if using set_model()
    messages=[{"role": "user", "content": "Write a short story about AI."}]
):
    print(chunk['choices'][0]['message']['content'], end='', flush=True)

Additional Operations

# List models (for supported providers)
models = sdk.list_models()
print(models)

# Count tokens
token_count = sdk.count_tokens(
    model="gpt-3.5-turbo",
    messages=[{"role": "user", "content": "How many tokens is this?"}]
)
print(f"Token count: {token_count}")

# Create embeddings (for supported providers)
embeddings = sdk.create_embedding(
    model="text-embedding-ada-002",
    input="Hello, world!"
)
print(embeddings)

# Generate image (for supported providers)
image_response = sdk.create_image("A futuristic city with flying cars")
print(image_response)

Supported Providers and Core Methods

The following table shows the supported providers and their core method support:

Provider list_models generate stream_generate count_tokens create_embedding create_image
Anthropic
Qwen (通义千问)
Cohere
Doubao
Gemini
Kimi
MiniMax
Ollama
OpenAI
Wenxin (文心一言)

✓: Supported, ✗: Not supported

Note: Some providers may have additional provider-specific methods. Refer to individual provider documentation for details.

Key Methods

  • set_model(model): Set default model
  • list_models(): List available models (if supported)
  • generate(messages, model=None, **kwargs): Generate response
  • stream_generate(messages, model=None, **kwargs): Stream response
  • count_tokens(model, messages): Count tokens
  • create_embedding(model, input, **kwargs): Create embeddings (if supported)
  • create_image(prompt, **kwargs): Create image (if supported)
  • upload_file(file_path): Upload file (if supported)
  • set_proxy(proxy_url): Set proxy for API calls

Error Handling

OneSDK uses custom exceptions inheriting from InvokeError. Always wrap API calls in try-except blocks:

from llm_onesdk.utils.error_handler import InvokeError

try:
    response = sdk.generate(model, messages)
except InvokeError as e:
    print(f"An error occurred: {str(e)}")

Documentation

For detailed information on each provider's capabilities and usage, please refer to the individual documentation files in the docs/ directory.

Contributing

We welcome contributions, especially new provider integrations! See our Contributing Guide for details.

License

This project is under the MIT License. See the LICENSE file for details.

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

llm_onesdk-0.0.3.tar.gz (6.3 kB view details)

Uploaded Source

Built Distribution

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

llm_onesdk-0.0.3-py3-none-any.whl (8.0 kB view details)

Uploaded Python 3

File details

Details for the file llm_onesdk-0.0.3.tar.gz.

File metadata

  • Download URL: llm_onesdk-0.0.3.tar.gz
  • Upload date:
  • Size: 6.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for llm_onesdk-0.0.3.tar.gz
Algorithm Hash digest
SHA256 6d3714b8b5ffb423c85769c715f479840197942aa1af2ea99931b7a1c314925b
MD5 bec0e1ed1730e595958d8887e4f7a141
BLAKE2b-256 103a3733d6c8105121c274023beed57f98c0787903f685cdc96050e82495c64c

See more details on using hashes here.

File details

Details for the file llm_onesdk-0.0.3-py3-none-any.whl.

File metadata

  • Download URL: llm_onesdk-0.0.3-py3-none-any.whl
  • Upload date:
  • Size: 8.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for llm_onesdk-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 9f6fbe3e4c85aa0dffba0fec24b8cacbd95a80aba73b2b767d178845e243c6ce
MD5 b10beb019f702de5a325e890288c3475
BLAKE2b-256 88d43efdcbcdcb4be83502177919f68ade5be6d4006778d88f07bb0cfb576851

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