Voice applications powered by LLMs.
appConfig.yaml
:
applications:update
command with the from-file
flag.
AUTOPILOT
. The endpoint is an optional property allowing you to specify the endpoint for self-hosted Autopilots.
Setting | Description | Default Value |
---|---|---|
firstMessage | The first message the Autopilot will say when the conversation starts | |
systemPrompt | A prompt that describes the behavior of the Autopilot and sets the context of the conversation | |
systemErrorMessage | The message the Autopilot will say when an error occurs | |
maxSessionDuration | Maximum length of the session (in milliseconds) before it is automatically terminated, regardless of activity | 1800000 (30 minutes) |
maxSpeechWaitTimeout | Specifies the maximum amount of time (in milliseconds) to wait for the user to begin speaking before sending the captured audio for processing | 0 |
initialDtmf | A DTMF to play prior to starting the conversation | |
allowUserBargeIn | Determines whether the user can interrupt the voice agent while it is speaking | true |
transferOptions | The options to transfer the call to a live agent | |
transferOptions.phoneNumber | The phone number to transfer the call to | |
transferOptions.message | The message to play before transferring the call | |
transferOptions.timeout | Time to wait for a transfer answer before the transfer attempt is considered failed | 30000 |
idleOptions | The options to handle idle time during the conversation | |
idleOptions.message | The message to play after the idle time is reached | |
idleOptions.timeout | Duration of user inactivity (in milliseconds) before the system triggers an idle event | 30000 |
idleOptions.maxTimeoutCount | The maximum number of times the idle message will be played before hanging up the call | 2 |
vad | The voice activity detection settings | |
vad.activationThreshold | See VAD section | 0.4 |
vad.deactivationThreshold | See VAD section | 0.25 |
vad.debounceFrames | See VAD section | 4 |
Setting | Description |
---|---|
provider | Model provider |
model | The model to use. The available models depend on the provider |
maxTokens | The maximum number of tokens the language model can generate in a single response |
temperature | The randomness of the language model. A higher temperature will result in more random responses |
knowledgeBase | A list of knowledge bases to use for the language model |
tools | A list of tools to use for the language model |
Provider | Description | Supported models |
---|---|---|
OpenAI | OpenAI provides various GPT models for conversational AI | gpt-4o , gpt-4o-mini , gpt-3.5-turbo , gpt-4-turbo |
Groq | Groq offers high-performance AI models optimized for speed | llama-3.3-70b-versatile |
Google offers various LLM models for conversational AI | gemini-2.0-flash , gemini-2.0-flash-lite , gemini-2.0-pro-exp-02-05 | |
Anthropic | Anthropic offers various LLM models for conversational AI | claude-3-5-haiku-latest , claude-3-7-sonnet-latest |
llama-3.3-70b-versatile
, often require greater prompting specificity for effective tool usage. Also, Google’s gemini-2.0-flash-lite
does not support tool calling. We will share best practices to ensure more consistent behavior as we gain more insightsTool | Description |
---|---|
hangup | A tool to end the conversation |
transfer | A tool to transfer the call to a live agent |
hold | A tool to put the call on hold (Coming soon) |
intelligence.config.languageModel.tools
, which is an array where each tool is defined as an object. These tools enable your assistant to interact with external services, APIs, or execute specific actions.
Each tool must follow the tool schema, for consistency and compatibility.
The following example demonstrates how to add a custom tool that fetches available appointment times for a specific date:
result
property. For example: { "result": "We have open slots for Thursday and Friday." }
name
: A unique identifier for the tooldescription
: A brief explanation of what the tool doesrequestStartMessage
: The message sent when the tool is triggeredparameters
: Defines the expected input structure in accordance with the JSON Schema standard, which is also required for OpenAI compatible tool calling
type
: Defines the structure of the input (typically object
)properties
: Specifies the fields expected in the inputrequired
: Lists the fields that must be providedoperation
:
method
: The HTTP method (get
and post
are supported)url
: The endpoint to send the request toheaders
: Any necessary headers, such as authentication keyspost
method, the parameters will arrive in the body of the request, while with get
, the parameters will arrive as query parameters.
For additional details, refer to the tool schema documentation.
operation.method
post
for POST requests. If don’t want the Autopilot to wait for POST requests to complete, set operation.waitForResponse
to false
. For get
requests, the Autopilot will wait for the response by default.evalsLanguageModel
section defines the model used to evaluate test cases:
Setting | Description |
---|---|
provider | Evaluation provider |
model | The OpenAI model to use for evaluations |
apiKey | The API key for the evaluation model |
ref
: A unique identifier for the test casedescription
: A brief description of what the test case verifiestelephonyContext
: Emulates the context of a real phone call with the following properties:
callDirection
: The direction of the call (e.g., “FROM_PSTN”)ingressNumber
: The number being calledcallerNumber
: The number making the callComponent | Description |
---|---|
userInput | The text representing what the user says |
expected | The expected response from the Autopilot |
expected.text | The expected text response from the Autopilot |
expected.text.type | |
expected.text.response | The actual text response from the Autopilot |
expected.tools | The expected tools to be used in the response |
expected.tools.tool | The name of the tool to be used |
expected.tools.parameters |
type: "similar"
for text responses to allow for natural language variations in the Autopilot’s responses while maintaining the same semantic meaning.expected
object can validate:
text
property:
tools
property: