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

# Models and Instructions

`model` and `instructions` are two fields of [`agent.json`](/docs/agents/reference/agent-json). `model` is a Telnyx inference model id. `instructions` names a Markdown file whose text is the system prompt on every turn. Both are set at `create`. `model` is changed with `telnyx-acp set model <id>`, `instructions.md` is edited directly, and the next `deploy` ships either change.

## Set Them at Create Time

```bash theme={null}
telnyx-acp create --name support-agent --model zai-org/GLM-5.3-Flash
```

`--model` picks the model. `create` writes a starter prompt in `instructions.md`, to edit before the first `deploy`. Without `--model` the project gets the CLI's default, `meta-llama/Llama-3.3-70B-Instruct`.

Without flags, the wizard asks for the model from a searchable list of what the account can use:

![The Model picker filtered by typing, with zai-org/GLM-5.3-Flash selected](https://mintcdn.com/telnyx/IwbHhFfX3hCEfF-q/assets/images/agents-wizard-03-model.png?fit=max\&auto=format\&n=IwbHhFfX3hCEfF-q\&q=85\&s=11930ec43debbc5977e85fa3dbaaca59)

## Change Them Later

```bash theme={null}
telnyx-acp set model meta-llama/Llama-3.3-70B-Instruct
telnyx-acp deploy
```

`set model <id>` changes the model, and the change is validated before it is written. On a terminal, `set model` alone opens the same searchable list as the wizard. `instructions.md` is edited directly. Either change ships with the next `deploy`.

The instructions are inlined into the deployed agent at `deploy`; the file on disk is not read at runtime. Under `dev` both files are watched and the next reply uses what was saved, with no restart (`--no-watch` turns that off). Neither field can be overridden per turn: `invoke` and `chat` take the configuration as deployed.

## Models

```bash theme={null}
telnyx-acp models
```

Hosted models come first and need no key once deployed; under `dev` the call uses `TELNYX_API_KEY` from `.env` or the login session. Then come the models that need the user's own provider key.

### BYOK for Third-Party Models

`telnyx-acp models` lists the third-party models the account can use: Anthropic, Google, Groq and OpenAI. Each runs on the user's own key for that provider, stored as a secret named after the provider. The names are `OPENAI_API_KEY`, `ANTHROPIC_API_KEY`, `GOOGLE_API_KEY` and `GROQ_API_KEY`. For an `openai/*` model:

```bash theme={null}
telnyx-acp add secret OPENAI_API_KEY     # for the deployed agent
echo 'OPENAI_API_KEY=sk-…' >> .env         # for telnyx-acp dev
```

`create` prints the reminder, and `validate` and `dev` refuse to run until `OPENAI_API_KEY` is declared in `secrets`, which `add secret` does. `dev` then reads its value from `.env`:

```text theme={null}
openai/gpt-4o-mini is not hosted by Telnyx: put OPENAI_API_KEY=… in support-agent/.env for dev, and `telnyx-acp add secret OPENAI_API_KEY` before deploy.
```

### Reasoning Models and Calls

A reasoning model such as `zai-org/GLM-5.2` thinks before its first word. On a text that is fine. On a call the caller hears the thinking as silence, often several seconds, before the agent speaks. The user is advised to keep calls on a non-reasoning model.

## Instructions

On each turn the model gets, in order, the instructions, then with memory on a fixed preamble about remembering people and the memory card, the message log (every earlier user and assistant message), and the new message. The tools' definitions are sent with it when tools are configured.

Special attention should be paid to the instructions given to a voice agent. A reply is read aloud as the model writes it, sentence by sentence, and the caller can interrupt, so the instructions ask for short spoken sentences and no markup:

```markdown theme={null}
You are the phone assistant for Acme Plumbing.
Speak in one or two short sentences of plain spoken English. No markdown, no lists, no emoji.
Ask one question at a time. Confirm a booking back before ending the call.
If you do not know something, say so and offer to take a message.
```

The greeting is not in the instructions: it is `voice.greeting` in `agent.json`, spoken verbatim before the first turn.

With [memory](/docs/agents/memory) on, the caller's summary card is appended after the instructions between `<memory>` markers, under a line saying the notes are what the person said and not instructions, bounded to 2,000 characters; before the first conversation is pushed, the line says there is nothing remembered yet.
