> ## Documentation Index
> Fetch the complete documentation index at: https://docs.slng.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Think

> Set the system prompt, greeting, and language model, and tune how the agent responds.

The Think section controls the conversation: the system prompt, the greeting,
the language model (LLM), and what the agent does when a caller goes quiet. For
how Listen, Think, and Speak fit together, see the
[Execution Layer overview](/concepts/execution-layer/overview). For how to write
the prompt itself, see [Agent behavior](/guides/agents/configure/agent-behavior).

## Prerequisites

Before you begin:

* An agent already exists. If not, see
  [Create an agent](/guides/get-started/create-a-project/create-agent).
* These steps change a live agent. The API path uses `PATCH`; see
  [Update an agent](/guides/get-started/create-a-project/create-agent#update-an-agent).

## Set the prompt and greeting

<Tabs>
  <Tab title="Dashboard" icon="monitor">
    Open your project and go to the **Think** section. Edit the **System
    prompt** and the **Greeting** the agent opens with.

    <Frame caption="The Think section with the system prompt and greeting fields.">
      <img src="https://mintcdn.com/slng-new-docs/_MURdOw87SJsfVag/heroshots/agent-think-prompt.png?fit=max&auto=format&n=_MURdOw87SJsfVag&q=85&s=d7015714d6122411df466539a74c12a5" alt="The Think section with the system prompt and greeting fields" width="2560" height="1600" data-path="heroshots/agent-think-prompt.png" />
    </Frame>
  </Tab>

  <Tab title="API" icon="code">
    `system_prompt` and `greeting` are top-level fields, so you can update them
    on their own. Set `inbound_greeting` or `outbound_greeting` to open phone
    calls with a different line.

    ```json theme={null}
    {
      "system_prompt": "You are a support agent for Wayne Enterprises.",
      "greeting": "Hi, how can I help you today?"
    }
    ```
  </Tab>
</Tabs>

## Change the language model

<Tabs>
  <Tab title="Dashboard" icon="monitor">
    Open your project and go to the **Think** section. Open the **LLM model**
    dropdown and pick a model. As with Listen, the dropdown separates **SLNG
    models**, hosted in your region, from **BYOK**, models you reach with your own
    provider key.

    <Frame caption="The Think section LLM model selector.">
      <img src="https://mintcdn.com/slng-new-docs/_MURdOw87SJsfVag/heroshots/livekit-think.png?fit=max&auto=format&n=_MURdOw87SJsfVag&q=85&s=05db49582f832b19bf5f3c9f2956750c" alt="The Think section with the LLM model selector" width="2560" height="1600" data-path="heroshots/livekit-think.png" />
    </Frame>

    To use the **BYOK** tab, register your provider key first; see
    [Bring your own key](/guides/models/bring-your-own-key).
  </Tab>

  <Tab title="API" icon="code">
    Send the whole `models` object. A `PATCH` replaces it as a unit rather than
    merging fields, so change `llm` and keep the other model fields as they are.

    ```json highlight={4} theme={null}
    {
      "models": {
        "stt": "deepgram/nova:3",
        "llm": "bedrock-mantle/nvidia.nemotron-super-3-120b:latest",
        "tts": "slng/fish/tts:s2.1-pro",
        "tts_voice": "16cabdb7f8d240569aff36c9e480d783"
      }
    }
    ```

    Prefer a model under the `slng/` prefix to run in your region. A bare
    `provider/model` uses the provider's model through SLNG; add your own key
    (BYOK) to run it on your account. See
    [Choose a model route](/guides/integrate/pipecat#choose-a-model-route).
  </Tab>
</Tabs>

To see which models your region and language support, see
[Which models are available](/guides/models/which-models-are-available).

## Tune generation

`models.llm_kwargs` sets the generation parameters for each turn. The ones worth
setting for a voice agent:

* `temperature`: lower keeps answers consistent, higher makes them varied.
* `max_completion_tokens`: caps how long a single reply can run.
* `top_p`: nucleus sampling, an alternative lever to temperature.
* `tool_choice` and `parallel_tool_calls`: how the model reaches for tools.

```json theme={null}
{
  "models": {
    "stt": "deepgram/nova:3",
    "llm": "bedrock-mantle/nvidia.nemotron-super-3-120b:latest",
    "tts": "slng/fish/tts:s2.1-pro",
    "tts_voice": "16cabdb7f8d240569aff36c9e480d783",
    "llm_kwargs": { "temperature": 0.7, "max_completion_tokens": 4096 }
  }
}
```

## Handle silences

`idle_nudges` sets what the agent says when a caller stops responding. It nudges
once, nudges again, then ends the call, each after its own delay. Edit the text
and delays, or set `enabled` to `false` to keep quiet.

```json theme={null}
{
  "idle_nudges": {
    "enabled": true,
    "first_nudge_delay_seconds": 15,
    "first_nudge_text": "Are you still there?",
    "hangup_delay_seconds": 15
  }
}
```

## Route with the Context Router

The Context Router sits in front of the language model and decides how to handle
each turn, so some turns skip the large model entirely. Toggle it with
`llm_router_enabled`. For how routing works, see
[Context Router](/guides/execution-layer/llm/context-router).

## Connect tools and variables

Tools and MCP servers are attached separately, not set in this section, and
`tool_refs` and `mcp_refs` cannot be changed with `PATCH`. See
[Give an agent a tool](/guides/agents/tools-and-mcp/overview).

## Keep Think reliable

The LLM step can fall back to another model and has its own per-turn timeout
(`models.fallbacks.llm`, `models.llm_first_token_timeout_s`). These work the same
way across all three sections. See
[Reliability](/guides/agents/configure/reliability).

## Next steps

* [Speak](/guides/agents/configure/speak): the text to speech model and voice.
