Agent Framework plugin for services from Phonic
Project description
LiveKit Plugins: Phonic
Realtime voice AI integration for Phonic with LiveKit Agents.
Installation
uv add livekit-plugins-phonic
Usage
import asyncio
import logging
from dotenv import load_dotenv
from livekit.agents import (
Agent,
AgentServer,
AgentSession,
JobContext,
cli,
function_tool,
)
from livekit.plugins.phonic.realtime import RealtimeModel
logger = logging.getLogger("phonic-agent")
load_dotenv()
class MyAgent(Agent):
def __init__(self) -> None:
super().__init__(
instructions="You are a helpful voice AI assistant named Sabrina.",
llm=RealtimeModel(
voice="sabrina",
audio_speed=1.2,
),
)
@function_tool(
description="Toggle a light on or off. Available lights are A05, A06, A07, and A08."
)
async def toggle_light(self, light_id: str, state: str) -> str:
"""Called when the user asks to toggle a light on or off.
Args:
light_id: The ID of the light to toggle
state: Whether to turn the light on or off, e.g., 'on', 'off'
"""
logger.info(f"Turning {state} light {light_id}")
await asyncio.sleep(1.0)
return f"Light {light_id} turned {state}"
server = AgentServer()
@server.rtc_session()
async def entrypoint(ctx: JobContext):
session = AgentSession()
await session.start(agent=MyAgent(), room=ctx.room)
await session.generate_reply(
instructions="Greet the user, asking about their day.",
)
if __name__ == "__main__":
cli.run_app(server)
cd examples
uv run voice_agents/phonic_realtime_agent.py dev
Configuration
Set the PHONIC_API_KEY environment variable, or pass api_key directly to RealtimeModel. All other options are optional.
| Option | Type | Description |
|---|---|---|
api_key |
str |
Phonic API key. Falls back to PHONIC_API_KEY environment variable |
phonic_agent |
str |
Phonic agent name. Options set explicitly here override agent settings |
voice |
str |
Voice ID — sabrina, grant, virginia, landon, eleanor, shelby, nolan |
welcome_message |
str |
Message the agent says when the conversation starts. Ignored when generate_welcome_message is True |
generate_welcome_message |
bool |
Auto-generate the welcome message (ignores welcome_message) |
project |
str |
Project name (default: main) |
default_language |
str |
ISO 639-1 default language for recognition and speech |
additional_languages |
list[str] |
Further ISO 639-1 codes (must not repeat default_language) |
multilingual_mode |
"auto" | "request" |
Per-utterance language detection vs. change on user request (recommended: request) |
audio_speed |
float |
Audio playback speed |
phonic_tools |
list[str] |
Phonic Webhook tool names available to the assistant |
boosted_keywords |
list[str] |
Keywords to boost in speech recognition |
min_words_to_interrupt |
int |
Minimum number of user words required to interrupt the assistant |
generate_no_input_poke_text |
bool |
Auto-generate poke text when user is silent |
no_input_poke_sec |
float |
Seconds of silence before sending poke message |
no_input_poke_text |
str |
Poke message text (ignored when generate_no_input_poke_text is True) |
no_input_end_conversation_sec |
float |
Seconds of silence before ending conversation |
If you already have an agent set up on the Phonic platform, you can use the phonic_agent option to specify the agent name. As a note, configuration options you set in the LiveKit Agents SDK will override the agent settings set on the Phonic platform. This means the system prompt you have set on the Phonic platform will be ignored in favor of the instructions field set on the LiveKit Agent. Likewise, options explicitly set in the RealtimeModel constructor will override the Phonic agent's settings.
If you have Webhook tools set up on the Phonic platform, you can use phonic_tools to make them available to your agent. Only Phonic Webhook tools are supported with LiveKit Agents.
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 livekit_plugins_phonic-1.5.4.tar.gz.
File metadata
- Download URL: livekit_plugins_phonic-1.5.4.tar.gz
- Upload date:
- Size: 12.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
67216cb31d28ff6e8db1a87d4a873c1f6effea656bf64a5b0468e2ab28b78dee
|
|
| MD5 |
cf20360496b9b6664513375f787ed442
|
|
| BLAKE2b-256 |
bf0a50825658aaf641ea667177a3180d8923f0d13dc24c86818235dace3256f2
|
Provenance
The following attestation bundles were made for livekit_plugins_phonic-1.5.4.tar.gz:
Publisher:
publish.yml on livekit/agents
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
livekit_plugins_phonic-1.5.4.tar.gz -
Subject digest:
67216cb31d28ff6e8db1a87d4a873c1f6effea656bf64a5b0468e2ab28b78dee - Sigstore transparency entry: 1316063235
- Sigstore integration time:
-
Permalink:
livekit/agents@78a66bcf79c5cea82989401c408f1dff4b961a5b -
Branch / Tag:
refs/heads/main - Owner: https://github.com/livekit
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@78a66bcf79c5cea82989401c408f1dff4b961a5b -
Trigger Event:
pull_request
-
Statement type:
File details
Details for the file livekit_plugins_phonic-1.5.4-py3-none-any.whl.
File metadata
- Download URL: livekit_plugins_phonic-1.5.4-py3-none-any.whl
- Upload date:
- Size: 12.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
eabea987e19e69f3f36b62cb2e33661ad10ec42c78c0823f4746d4454ce15632
|
|
| MD5 |
1adf1e59707f8ea1e7fc74db620cfc1d
|
|
| BLAKE2b-256 |
4f6d0dd7390674a26d24947b454a1caff1d9900093c8e3be013403cd64ac5f72
|
Provenance
The following attestation bundles were made for livekit_plugins_phonic-1.5.4-py3-none-any.whl:
Publisher:
publish.yml on livekit/agents
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
livekit_plugins_phonic-1.5.4-py3-none-any.whl -
Subject digest:
eabea987e19e69f3f36b62cb2e33661ad10ec42c78c0823f4746d4454ce15632 - Sigstore transparency entry: 1316063339
- Sigstore integration time:
-
Permalink:
livekit/agents@78a66bcf79c5cea82989401c408f1dff4b961a5b -
Branch / Tag:
refs/heads/main - Owner: https://github.com/livekit
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@78a66bcf79c5cea82989401c408f1dff4b961a5b -
Trigger Event:
pull_request
-
Statement type: