Prompting Guide

How to write good instructions to guide your agent’s behavior.

Overview

Effective instructions are a key part of any voice agent. In addition to the instruction challenges faced by all LLMs, such as personality, goals, and guardrails, voice agents have their own unique considerations. For instance, when using a STT-LLM-TTS pipeline, the LLM in the middle has no built-in understanding of its own position in a voice pipeline. From its perspective, it’s operating in a traditional text-based environment. Additionally, all voice agents must be instructed to be concise, as most users are not patient with long monologues.
💡 Workflows The following guidance applies to most voice agents, and is a good starting point. While it is possible to build some voice agents with a single set of good instructions, most use-cases require breaking the agent down into smaller components using workflows — such as routing to different subagents per stage of the call — to achieve consistent behavior in real-world interactions.

Prompt design

In most applications, it’s beneficial to use a structured format. We recommend using Markdown, as it’s easy for both humans and machines to read and write. Consider adding the following sections to your instructions.

Identity

Start your agent’s primary instructions with a clear description of its identity. Usually, this begins with the phrase “You are…” and contains its name, role, and a summary of its primary responsibilities. An effective identity sets the stage for the remainder of the instructions, and helps with prompt adherence. An example identity section, for a travel agent:

Output formatting

Instruct your agent to format responses in a way that optimizes for text-to-speech systems. Depending on the domain your agent operates in, you should add specific rules for special kinds of entities that may appear in its responses, such as numbers, phone numbers, email addresses, etc. An example output formatting section, for any general-purpose voice agent:

Tools

It’s beneficial to give your agent a general overview of how it should interact with the tools it has access to. Provide specific usage instructions for each tool in its definition, along with clear descriptions of each parameter and how to interpret the results. An example tools section for any general-purpose voice agent:

Goals

Include your agent’s overall goal or objective. In many cases you should also design your voice agent to use a workflow-based approach, where the main prompt contains general guidelines and an overarching goal, but each individual subagent or stage in the workflow holds a more specific and immediate goal. An example goal section for a travel agent. This prompt is used in the agent’s base instructions, and is supplemented with more specific goals for each individual stage in the workflow.

Guardrails

Include a section that limits the agent’s behavior, the range of user requests it should process, and how to handle requests that fall outside of its scope. An example guardrail section for any general-purpose voice agent:

User information

Provide information about the user, if known ahead of time, to ensure the agent provides a personalized experience and avoids asking redundant questions. The best way to load user data into your agent is with variable_values in the initiate-call request during dispatch. An example user information section, for a travel agent:

Complete example

The following is a complete example of instructions for a general-purpose voice assistant. It is a good starting point for your own agent:

Voice realism

A well-structured prompt tells your agent what to do, but voice agents using an STT-LLM-TTS pipeline also need guidance on how they should sound. By default, LLMs produce clean, grammatically polished text. Natural speech is messier: filler words, mid-sentence restarts, soft pauses, and shifts in tone. Read aloud, written-style text sounds flat or robotic. To make voice agents sound more natural, your prompt has to model these patterns explicitly. Each technique below pairs a rule with concrete examples. If you have recordings of human agents, use them to identify patterns you want the model to replicate. LLMs are trained on written text, so you typically need to reinforce each rule across multiple sections of your prompt for the model to follow it consistently.
ℹ️ Note Most techniques here apply to any voice agent. The tag-based ones (pauses, emotion, and non-verbal sounds) only render in cascaded STT-LLM-TTS pipelines, since realtime speech models don’t interpret tags inside LLM output.

Pauses and filler words

Without prompting, filler words like “um” and “so” don’t appear in LLM responses, even though they’re common in natural speech. To make their usage more realistic, include timing markers indicating where the agent should pause. In real speech, “um” usually comes with a brief pause and a recovery word like “so.” If your TTS provider supports Speech Synthesis Markup Language (SSML), model that timing in your examples with <break> tags. The LLM mirrors the pattern in its output, and the TTS converts the tags into pauses.
ℹ️ Note SSML support varies by provider. For example, some providers require enable_ssml_parsing=true to apply SSML tags, others support SSML directly, and some use their own speech tags instead. Check your TTS provider’s documentation before relying on <break> in production prompts.
An example pauses and filler words section:

Self-corrections and restarts

Humans drop one phrasing mid-sentence and pick up a different one. A few examples of restarts in your prompt show the agent how to abandon a phrase and try again. An example self-corrections section:

Emotion as a constraint

If your TTS or realtime model supports emotion or expression controls, treat them as guardrails rather than decoration. Humans don’t oscillate between excited, sad, and angry within a single sentence, and an agent that does sounds unnatural. Set a calm baseline as the default and reserve stronger emotions for specific moments.
ℹ️ Note Tag syntax for emotion and non-verbal sounds varies by provider. Some use tags like [laughs], [sighs], and [whispers]; others use <laughter> and [laugh]; some parse SSML <prosody>. Some don’t support these at all, so check your TTS provider’s reference.
An example emotion section:

Non-verbal sounds

A short laugh after a joke, a sigh before bad news, an audible breath of acknowledgment: these sounds add as much realism as any tone instruction. Treat them as discrete events tied to specific moments rather than a baseline behavior, and cap usage so each one keeps its effect. An example non-verbal sounds section:

Personality as audible behaviors

LLMs are already trained to be friendly and helpful, so prompting for those traits is redundant. Show the agent how to behave instead. Define personality as observable speech patterns the model can output: which words it uses, how it starts sentences, how it recovers from misunderstandings. An example personality section:

Phrase variation across turns

Each technique above shapes a single turn. Realism across a longer conversation also depends on what changes between turns. LLMs tend to open every response with the same short acknowledgment. Phrases like “Sure” or “Got it” sound convincing once and repetitive by the third turn. Tell the agent to rotate openers and short acknowledgments so no two consecutive turns sound the same. An example phrase variation section:

Testing and validation

Test and monitor your agent to ensure that the instructions produce the desired behavior. Small changes to the prompt, tools, or models used can have a significant impact on the agent’s behavior. The following guidance is useful to keep in mind.

Test calls

Use the Test interface in the assistant editor to place a browser-based test call. Try a range of realistic inputs — including edge cases the prompt should handle — and check that the agent follows the output rules, stays within its guardrails, and sounds natural.

Real-world observability

Monitor your agent’s behavior in real-world sessions to see what your users are actually doing with it, and how your agent responds. This can help you identify issues with your agent’s behavior, and iterate on your instructions to improve it. In many cases, you can use these sessions as inspiration for new test cases, then iterate your agent’s instructions and workflows until it responds as expected. Vonative provides call logs and session history, including transcripts and recordings. Use this data to monitor your agent’s behavior in real-world sessions, and identify any issues or areas for improvement.

Next steps

Configure Your Assistant

Set the system prompt, model, voice, and transcriber

Workflows Overview

Break complex conversations into subagents and stages

Test Your Assistant

Try your prompt with a browser-based test call