Build your agent
AI decision
The AI thinks first and fills in fields (a reply, “end the call”…). Silent: follow it with Say or Branch.
Type: llm.
What it does
- Builds the instructions the same way as AI reply, plus emotion cues if
emotionis on. - Asks the AI for a JSON answer with the fields in
llm_return_type, and waits for the whole answer. - Saves every returned field to the call's state (a plain-text answer is saved as
llm_response), and the exchange to memory. - Says nothing. Follow it with a Say that speaks
speak, and a Branch if the call should go different ways.
It waits for the full answer before anything is said, so it's slower to the first word than AI reply. Use it where you need the fields; use AI reply for plain chat.
Settings
Everything goes in the step's parameters. In the editor, click the step to open its settings.
system_promptstring- In the editor: Instructions. Tell the agent who it is, what to do and how to talk. Default:
"". modelstring- In the editor: Model. Which AI writes the reply. The provider comes with it. Default:
"openai/gpt-oss-120b". llm_return_type{ name: { type, description } }- In the editor: What it decides (More tab). Things the AI fills in every turn. The spoken reply is what the caller hears; the rest goes to your webhook.
emotionboolean- In the editor: Add emotion. Lets the voice sound happy, calm or excited where it fits.
emotion_ttsstring- In the editor: Emotion style. Which voice understands the emotion cues. Only used when
emotionis on. One of:eleven_v3(ElevenLabs v3). input_variables{ name: { type, description } }- In the editor: What it reads (More tab). Information from earlier steps the AI can use.
history_keystring- In the editor: Shared memory (More tab). Steps with the same name here remember the same conversation. Default:
"conversation_history". summariserboolean- In the editor: Summarise long calls (More tab). Keeps long conversations quick by summarising older turns.
prompt_templatestring- Built-in instructions to start from. See Prompt templates. Default
"base_llm". summariser_configobject- Tune
summariser. See Memory.
Examples
Qualify a lead
Decide a reply, whether to hang up, and an outcome for your dashboard:
{ "type": "llm", "parameters": { "system_prompt": "Find out if the caller wants a demo this week.", "service": "groq", "model": "openai/gpt-oss-120b", "llm_return_type": { "speak": { "type": "str", "description": "What to say." }, "hangup": { "type": "bool", "description": "True once done." }, "outcome": { "type": "str", "description": "demo_booked, later or not_interested" } }, "history_key": "conversation_history" }, "next": "reply"}