Skip to main content

Appendix

Summary: Reference materials, patterns, best practices, and troubleshooting guides for the SignalWire Agents SDK.

About This Chapter

This appendix provides supplementary reference materials to support your development with the SignalWire Agents SDK.

SectionDescription
AI ParametersComplete reference for all AI model parameters
Design PatternsCommon architectural patterns and solutions
Best PracticesGuidelines for production-quality agents
TroubleshootingCommon issues and their solutions
Migration GuideUpgrading between SDK versions
ChangelogVersion history and release notes

Quick Reference

TaskSee Section
Configure AI model behaviorAI Parameters → LLM Parameters
Set speech recognitionAI Parameters → ASR Parameters
Adjust timing/timeoutsAI Parameters → Timing Parameters
Implement common patternsDesign Patterns
Optimize for productionBest Practices
Debug agent issuesTroubleshooting
Upgrade SDK versionMigration Guide

Chapter Contents

SectionDescription
AI ParametersComplete AI parameter reference
Design PatternsCommon architectural patterns
Best PracticesProduction guidelines
TroubleshootingCommon issues and solutions
Migration GuideVersion upgrade guide
ChangelogVersion history

Overview

CategoryDescriptionWhere to Set
LLM APIModel behavior (temperature, etc.)prompt/post_prompt
ASRSpeech recognition settingsprompt or params
TimingTimeouts and delaysparams
BehaviorAgent behavior togglesparams
InterruptInterruption handlingparams
AudioVolume and background audioparams
VideoVideo display optionsparams

Setting Parameters in Python

from signalwire_agents import AgentBase

agent = AgentBase(name="assistant", route="/assistant")

# Set AI parameters
agent.set_params({
"temperature": 0.7,
"confidence": 0.6,
"end_of_speech_timeout": 2000,
"attention_timeout": 10000
})

LLM API Parameters

These parameters control the AI model's behavior. Set in prompt or post_prompt sections.

ParameterTypeRangeDefaultDescription
temperaturenumber0.0 - 2.00.3Output randomness
top_pnumber0.0 - 1.01.0Nucleus sampling
frequency_penaltynumber-2.0 - 2.00.1Repeat penalty
presence_penaltynumber-2.0 - 2.00.1New topic bonus
max_tokensinteger1 - 16385256Max response size
max_completion_tokensinteger1 - 2048256For o1-style models
reasoning_effortstring-"low"o1 reasoning level
verbositystring-"low"Response length

Temperature

Controls randomness in output generation:

  • 0.0: Deterministic, consistent responses
  • 0.3 (default): Balanced creativity
  • 1.0+: More creative, less predictable

Reasoning Effort

For o1-style models only:

  • "low": Quick responses
  • "medium": Balanced reasoning
  • "high": Deep analysis

ASR (Speech Recognition) Parameters

Control automatic speech recognition behavior.

ParameterTypeRangeDefaultDescription
energy_levelnumber0 - 10052Minimum audio (dB)
asr_smart_formatboolean-falseSmart formatting
asr_diarizeboolean-falseSpeaker detection
asr_speaker_affinityboolean-falseSpeaker tracking

Timing Parameters

Control various timeouts and timing behaviors.

ParameterTypeRangeDefaultDescription
end_of_speech_timeoutinteger250 - 10000700End silence (ms)
first_word_timeoutinteger-1000First word wait (ms)
speech_timeoutinteger-60000Max speech (ms)
speech_event_timeoutinteger-1400Event wait (ms)
turn_detection_timeoutinteger-250Turn detection (ms)
attention_timeoutinteger0 - 6000005000Idle prompt (ms)
outbound_attention_timeoutinteger10000 - 600000120000Outbound (ms)
inactivity_timeoutinteger10000 - 3600000600000Exit delay (ms)
digit_timeoutinteger-3000DTMF wait (ms)
initial_sleep_msinteger-0Start delay (ms)
transparent_barge_max_timeinteger0 - 600003000Barge time (ms)

Key Timeouts

  • end_of_speech_timeout: Milliseconds of silence to detect end of speech
  • attention_timeout: How long to wait before prompting user (0 disables)
  • inactivity_timeout: How long before auto-hangup (default 10 minutes)

Hard Stop Time

# Time expression format
agent.set_params({
"hard_stop_time": "5m", # 5 minutes
"hard_stop_time": "1h30m", # 1 hour 30 minutes
"hard_stop_prompt": "We need to wrap up now."
})

Behavior Parameters

Control various AI agent behaviors.

ParameterTypeDefaultDescription
directionstringnaturalForce inbound/outbound
wait_for_userbooleanfalseWait before speaking
conscienceboolean/strtrueSafety enforcement
strict_modeboolean/str-Alias for conscience
transparent_bargebooleantrueTransparent barge mode
enable_pausebooleanfalseAllow pausing
start_pausedbooleanfalseStart paused
speak_when_spoken_tobooleanfalseOnly respond when spoken to
enable_turn_detectionbooleanvariesTurn detection
enable_visionbooleanfalseVision/video AI
enable_thinkingbooleanfalseComplex reasoning
save_conversationbooleanfalseSave summary
persist_global_databooleantruePersist data
transfer_summarybooleanfalseSummary on transfer

SWAIG Control Parameters

ParameterTypeDefaultDescription
swaig_allow_swmlbooleantrueAllow SWML returns
swaig_allow_settingsbooleantrueAllow settings mods
swaig_post_conversationbooleanfalsePost conversation
swaig_set_global_databooleantrueAllow global data
hold_on_processbooleanfalseHold during process
barge_functionsbooleantrueAllow function barge
function_wait_for_talkingbooleanfalseWait for speech
functions_on_no_responsebooleanfalseRun on no response
functions_on_speaker_timeoutbooleantrueRun on timeout

Interrupt Parameters

ParameterTypeDefaultDescription
acknowledge_interruptionsbooleanfalseAcknowledge interrupts
interrupt_promptstring-Custom interrupt message
interrupt_on_noisebooleanfalseAllow noise interrupts
max_interruptsinteger0Max before interrupt_prompt
barge_min_wordsinteger0Min words before barge allowed

Debug Parameters

ParameterTypeDefaultDescription
debug_webhook_urlstring-URL to send debug data
debug_webhook_levelinteger1Debug verbosity (0-2)
audible_debugbooleanfalseEnable audible debugging
audible_latencybooleanfalseMake latency audible
verbose_logsbooleanfalseEnable verbose logging

Audio Parameters

ParameterTypeRangeDefaultDescription
ai_volumeinteger-50 - 500AI voice volume
background_filestring--Background audio URL
background_file_volumeinteger-50 - 500Background volume
background_file_loopsinteger--1Loop count (-1=infinite)
hold_musicstring--Hold audio/tone
max_emotioninteger1 - 3030TTS emotion level

Hold Music with Tone

# Use tone generator
agent.set_params({
"hold_music": "tone:440" # 440Hz tone
})

# Use audio file
agent.set_params({
"hold_music": "https://example.com/hold-music.mp3"
})

Video Parameters

ParameterTypeDescription
video_talking_filestringVideo when AI is talking
video_idle_filestringVideo when AI is idle
video_listening_filestringVideo when AI is listening

String Parameters

ParameterDefaultDescription
local_tz"US/Central"Timezone for agent
conversation_id-ID for cross-call persistence
digit_terminators-DTMF end characters (e.g., "#")
barge_match_string-Barge pattern matching
tts_number_format"international"Phone format: national/intl
ai_model"gpt-4o-mini"AI model to use
thinking_model-Model for thinking mode
vision_model-Model for vision
pom_format"markdown"Prompt format: markdown/xml
attention_timeout_prompt-Custom attention prompt
hard_stop_prompt-Prompt at hard stop time
static_greeting-Pre-recorded greeting
summary_mode-string/og/function

VAD Configuration

Voice Activity Detection uses a string format: silero_thresh:frame_ms

agent.set_params({
"vad_config": "0.5:30" # threshold 0.5, 30ms frames
})

Post-Prompt Parameter Defaults

Parameters have different defaults in post_prompt for more deterministic summaries:

ParameterPrompt DefaultPost-Prompt DefaultReason
temperature0.30.0Deterministic
frequency_penalty0.10.0No penalty
presence_penalty0.10.0No penalty

Model-Specific Overrides

Different models support different parameters:

Model TypeSupported Parameters
OpenAIfrequency_penalty, presence_penalty, max_tokens, top_p
Bedrock Claudemax_completion_tokens instead of max_tokens
o1-stylereasoning_effort, max_completion_tokens

Complete Example

#!/usr/bin/env python3
# configured_agent.py - Agent with all AI parameters configured
from signalwire_agents import AgentBase

agent = AgentBase(name="configured", route="/configured")
agent.prompt_add_section("Role", "You are a customer service agent.")
agent.add_language("English", "en-US", "rime.spore")

# Configure all parameters
agent.set_params({
# LLM settings
"max_tokens": 300,

# Timing
"end_of_speech_timeout": 1500,
"attention_timeout": 8000,
"inactivity_timeout": 300000,

# Behavior
"wait_for_user": False,
"conscience": True,
"local_tz": "America/New_York",

# Audio
"background_file": "https://example.com/ambient.mp3",
"background_file_volume": -30
})

if __name__ == "__main__":
agent.run()

SWML Example

{
"version": "1.0.0",
"sections": {
"main": [{
"ai": {
"params": {
"end_of_speech_timeout": 2000,
"attention_timeout": 10000,
"inactivity_timeout": 600000,
"wait_for_user": false,
"conscience": true,
"local_tz": "America/Chicago",
"background_file": "https://example.com/music.mp3",
"background_file_volume": -25
},
"prompt": {
"temperature": 0.3,
"top_p": 1.0,
"frequency_penalty": 0.1,
"presence_penalty": 0.1,
"text": "You are a helpful assistant."
},
"post_prompt": {
"temperature": 0.0,
"frequency_penalty": 0.0,
"presence_penalty": 0.0,
"text": "Summarize the conversation."
}
}
}]
}
}