Simple wrappers for various AI APIs including LLMs, ASR, and TTS
Project description
wraipperz (WIP - agent generated)
Simple wrappers for various AI APIs including LLMs, ASR, and TTS.
Installation
pip install wraipperz
uv add wraipperz
Features
- LLM API Wrappers: Unified interface for OpenAI, Anthropic, Google, and other LLM providers
- ASR (Automatic Speech Recognition): Convert speech to text
- TTS (Text-to-Speech): Convert text to speech
- Async Support: Asynchronous API calls for improved performance
Quick Start
LLM
import os
from wraipperz import call_ai, MessageBuilder
os.environ["OPENAI_API_KEY"] = "your_openai_key" # if not defined in environment variables
messages = MessageBuilder().add_system("You are a helpful assistant.").add_user("What's 1+1?")
# Call an LLM with a simple interface
response, cost = call_ai(
model="openai/gpt-4o",
messages=messages
)
Parsing LLM output to pydantic object.
from pydantic import BaseModel, Field
from wraipperz import pydantic_to_yaml_example, find_yaml, MessageBuilder, call_ai
import yaml
class User(BaseModel):
name: str = Field(json_schema_extra={"example": "Bob", "comment": "The name of the character."})
age: int = Field(json_schema_extra={"example": 12, "comment": "The age of the character."})
template = pydantic_to_yaml_example(User)
prompt = f"""Extract the user's name and age from the unstructured text provided below and output your answer following the provided example.
Text: "John is a well respected 31 years old pirate who really likes mooncakes."
Exampe output:
\`\`\`yaml
{template}
\`\`\`
"""
messages = MessageBuilder().add_system(prompt).build()
response, cost = call_ai(model="openai/gpt-4o-mini", messages=messages)
yaml_content = find_yaml(response)
user = User(**yaml.safe_load(yaml_content))
print(user) # prints name='John' age=31
TTS
from wraipperz.api.tts import create_tts_manager
tts_manager = create_tts_manager()
# Generate speech using OpenAI Realtime TTS
response = tts_manager.generate_speech(
"openai_realtime",
text="This is a demonstration of my voice capabilities!",
output_path="realtime_output.mp3",
voice="ballad",
context="Speak in a extremelly calm, soft, and relaxed voice.",
return_alignment=True,
speed=1.1,
)
# Convert speech using ElevenLabs
# TODO add example
Environment Variables
Set up your API keys in environment variables to enable providers.
OPENAI_API_KEY=your_openai_key
ANTHROPIC_API_KEY=your_anthropic_key
GOOGLE_API_KEY=your_google_key
# ... todo add all
License
MIT
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file wraipperz-0.1.10.tar.gz.
File metadata
- Download URL: wraipperz-0.1.10.tar.gz
- Upload date:
- Size: 194.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4561f898fa7776ede68963f135b2d5eda1a263ab59bb47e34f256bf036dcbc20
|
|
| MD5 |
997d79536e6e92e6e0cc3d6633218069
|
|
| BLAKE2b-256 |
95b315a2b52d55cfd7cbf07d65e519249156a9d323c87bfe17b453a54f2edcc7
|
File details
Details for the file wraipperz-0.1.10-py3-none-any.whl.
File metadata
- Download URL: wraipperz-0.1.10-py3-none-any.whl
- Upload date:
- Size: 29.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
87672ba7ca76d98a4b212c37310497c6602ea2289cdafe83c6b17d25a0b7141a
|
|
| MD5 |
cb1893c4ffaaced7a91f0d14b04c6f24
|
|
| BLAKE2b-256 |
c38337f2c08e15033c7ee454f121d1a2f514f0b4997e58b26dbbc271a8f3a0a7
|