Python SDK
Build real-time conversational AI applications in Python with speech-to-text, text-to-speech, and LLM capabilities.
Installation
pip install ug-python-sdk
Or using Poetry:
poetry add ug-python-sdk
Requirements: Python 3.12 or higher
Quick Start
Here's a simple example that creates a conversation and sends a text message:
import asyncio
from ug_python_sdk import Client
async def main():
# Initialize the client
client = Client()
# Authenticate with your API key
await client.authenticate(api_key="your-api-key")
# Start a conversation session
async with client.session() as session:
# Configure the AI assistant
await session.set_configuration(
prompt="You are a helpful assistant.",
temperature=0.7
)
# Send a message and stream responses
async for event in session.interact(text="Hello! How are you?"):
if event.type == "text":
print(f"Assistant: {event.text}")
elif event.type == "completed":
print("Interaction complete")
asyncio.run(main())
Authentication Options
API Key Authentication
# Basic API key authentication
await client.authenticate(api_key="your-api-key")
# With team context
await client.authenticate(
api_key="your-api-key",
team_id="team-123"
)
# For a specific player
await client.authenticate(
api_key="your-api-key",
player_id="player-456"
)
Google OAuth
# Opens browser for Google login
await client.google_authenticate()
Session Configuration
Configure the AI assistant's behavior:
await session.set_configuration(
prompt="You are a friendly assistant who helps with coding questions.",
temperature=0.7,
audio_output=True,
voice_profile={
"provider": "elevenlabs",
"voice_id": "your-voice-id",
"speed": 1.0,
"stability": 0.5,
"similarity_boost": 0.75
}
)
Voice Providers
ElevenLabs:
voice_profile = {
"provider": "elevenlabs",
"voice_id": "voice-id",
"speed": 1.0,
"stability": 0.5,
"similarity_boost": 0.75
}
Deepdub:
voice_profile = {
"provider": "deepdub",
"voice_id": "voice-id",
"locale": "en-US",
"tempo": 1.0,
"variance": 0.5,
"accent_blending": 0.3
}
Real-time Streaming
Stream text and audio responses with event handling:
async for event in session.interact(text="Tell me a story"):
match event.type:
case "text":
print(event.text, end="", flush=True)
case "audio":
# Handle audio data
audio_chunk = event.data
case "data":
# Handle utility results
print(f"Data: {event.data}")
case "completed":
print("\nDone!")
Audio Input (Speech-to-Text)
Process audio input for transcription:
# Add audio data
await session.add_audio(
audio_data=audio_bytes,
mime_type="audio/wav",
sample_rate=16000
)
# Transcribe the audio
transcript = await session.transcribe(language="en")
print(f"Transcription: {transcript}")
Utilities
Add structured outputs with classification or extraction utilities:
Classification
await session.set_configuration(
prompt="You are a sentiment analysis assistant.",
utilities={
"sentiment": {
"type": "classify",
"classification_question": "What is the sentiment: {{user_input}}",
"answers": ["positive", "negative", "neutral"]
}
},
on_output_utilities=["sentiment"]
)
async for event in session.interact(text="I love this product!"):
if event.type == "data":
print(f"Sentiment: {event.data['sentiment']}")
Extraction
await session.set_configuration(
prompt="You are a helpful assistant.",
utilities={
"key_points": {
"type": "extract",
"extract_prompt": "Extract the main points from: {{assistant_output}}"
}
},
on_output_utilities=["key_points"]
)
Player Management
Manage players programmatically:
# List all players
players = await client.list_players()
# Create a new player
player = await client.create_player(
external_id="user-123",
metadata={"name": "John"}
)
# Get a player
player = await client.get_player(player_id="player-id")
# Delete a player
await client.delete_player(player_id="player-id")
Complete Example
Here's a full conversational AI example:
import asyncio
from ug_python_sdk import Client
async def chat():
client = Client()
await client.authenticate(api_key="your-api-key")
async with client.session() as session:
await session.set_configuration(
prompt="""You are a helpful AI assistant.
Be concise and friendly in your responses.""",
temperature=0.7,
audio_output=False
)
print("Chat started! Type 'quit' to exit.\n")
while True:
user_input = input("You: ")
if user_input.lower() == 'quit':
break
print("Assistant: ", end="")
async for event in session.interact(text=user_input):
if event.type == "text":
print(event.text, end="", flush=True)
print("\n")
if __name__ == "__main__":
asyncio.run(chat())
Resources
Next Steps
- Try the Interactive API Tester to explore the API
- Learn about Utilities for structured outputs
- Explore Examples for more use cases