---
description: PhoneLLM is an open model tuned for voice agents. The model is based on Nemotron Nano 30B base capabilities and excels at typical voice agent tasks with thinking disabled.
title: phonellm-mini-alpha-2
image: https://developers.cloudflare.com/og-docs.png
---

[Skip to content](#main-content)

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

d

# phonellm-mini-alpha-2

Text Generation • daily-co

Copy as Markdown| [View as Markdown](https://developers.cloudflare.com/workers-ai/models/phonellm-mini-alpha-2/index.md)| [Agent setup](https://developers.cloudflare.com/agent-setup/)

Model ID

`@cf/daily-co/phonellm-mini-alpha-2` Copy

- Cloudflare-hosted
- Function calling
- Zero data retention

PhoneLLM is an open model tuned for voice agents. The model is based on Nemotron Nano 30B base capabilities and excels at typical voice agent tasks with thinking disabled.

| Model Info | |
| --- | --- |
| Context Window [ ↗](https://developers.cloudflare.com/workers-ai/platform/glossary/) | 262,140 tokens |
| Function calling [↗](https://developers.cloudflare.com/workers-ai/function-calling/) | Yes |
| Zero data retention | Yes |
| Unit Pricing | $0.06 per M input tokens, $0.24 per M output tokens |

## Playground

Try out this model with Workers AI LLM Playground. It does not require any setup or authentication and is an instant way to preview and test a model directly in the browser.

[Launch the LLM Playground](https://playground.ai.cloudflare.com/?model=@cf/daily-co/phonellm-mini-alpha-2)

## Usage

```ts
export interface Env {
  AI: Ai;
}

export default {
  async fetch(request, env): Promise<Response> {

    const messages = [
      { role: "system", content: "You are a friendly assistant" },
      {
        role: "user",
        content: "What is the origin of the phrase Hello, World",
      },
    ];

    const stream = await env.AI.run("@cf/daily-co/phonellm-mini-alpha-2", {
      messages,
      stream: true,
    });

    return new Response(stream, {
      headers: { "content-type": "text/event-stream" },
    });
  },
} satisfies ExportedHandler<Env>;
```

```ts
export interface Env {
  AI: Ai;
}

export default {
  async fetch(request, env): Promise<Response> {

    const messages = [
      { role: "system", content: "You are a friendly assistant" },
      {
        role: "user",
        content: "What is the origin of the phrase Hello, World",
      },
    ];
    const response = await env.AI.run("@cf/daily-co/phonellm-mini-alpha-2", { messages });

    return Response.json(response);
  },
} satisfies ExportedHandler<Env>;
```

```py
import os
import requests

ACCOUNT_ID = "your-account-id"
AUTH_TOKEN = os.environ.get("CLOUDFLARE_AUTH_TOKEN")

prompt = "Tell me all about PEP-8"
response = requests.post(
  f"https://api.cloudflare.com/client/v4/accounts/{ACCOUNT_ID}/ai/run/@cf/daily-co/phonellm-mini-alpha-2",
    headers={"Authorization": f"Bearer {AUTH_TOKEN}"},
    json={
      "messages": [
        {"role": "system", "content": "You are a friendly assistant"},
        {"role": "user", "content": prompt}
      ]
    }
)
result = response.json()
print(result)
```

```sh
curl https://api.cloudflare.com/client/v4/accounts/$CLOUDFLARE_ACCOUNT_ID/ai/run/@cf/daily-co/phonellm-mini-alpha-2 \
  -X POST \
  -H "Authorization: Bearer $CLOUDFLARE_AUTH_TOKEN" \
  -d '{ "messages": [{ "role": "system", "content": "You are a friendly assistant" }, { "role": "user", "content": "Why is pizza so good" }]}'
```

OpenAI compatible endpoints

Workers AI also supports OpenAI compatible API endpoints for `/v1/chat/completions` and `/v1/embeddings`. For more details, refer to [Configurations](https://developers.cloudflare.com/workers-ai/configuration/open-ai-compatibility/) .

## Parameters

### Input

model

`string`ID of the model to use (for example, '@cf/daily-co/phonellm-mini-alpha-2').

▶audio{}

`object`Parameters for audio output. Required when modalities includes 'audio'.

frequency\_penalty

`number | null`Penalizes new tokens based on their existing frequency in the text so far.

logit\_bias

`object | null`Modify the likelihood of specified tokens appearing in the completion. Maps token IDs to bias values from -100 to 100.

logprobs

`boolean | null`Whether to return log probabilities of the output tokens.

top\_logprobs

`integer | null`How many top log probabilities to return at each token position (0-20). Requires logprobs=true.

max\_tokens

`integer | null`The maximum number of tokens to generate.

max\_completion\_tokens

`integer | null`An upper bound for the number of tokens that can be generated for a completion.

metadata

`object | null`Set of key-value pairs that can be attached to the object.

modalities

`array | null`Output types requested from the model.

n

`integer | null`How many chat completion choices to generate for each input message.

parallel\_tool\_calls

`boolean`default: trueWhether to enable parallel function calling during tool use.

▶prediction{}

`object`

presence\_penalty

`number | null`Penalizes new tokens based on whether they appear in the text so far.

▶chat\_template\_kwargs{}

`object`Chat-template controls.

▶response\_format

`one of`Specifies the format the model must output.

seed

`integer | null`If specified, the system will make a best effort to sample deterministically.

▶stop

`one of`

store

`boolean | null`Whether to store the output for model distillation or evaluation.

stream

`boolean | null`If true, partial message deltas will be sent as server-sent events.

▶stream\_options{}

`object`

temperature

`number | null`Sampling temperature between 0 and 2.

▶tool\_choice

`one of`Controls which (if any) tool is called by the model. 'none' = no tools, 'auto' = model decides, 'required' = must call a tool.

▶tools\[]

`array`A list of tools the model may call.

top\_p

`number | null`Nucleus sampling: considers the results of the tokens with top\_p probability mass.

user

`string`A unique identifier representing your end-user, for abuse monitoring.

▶web\_search\_options{}

`object`Options for the web search tool (when using built-in web search).

▶function\_call

`one of`

▶functions\[]

`array`minItems: 1maxItems: 128

prompt

`string`requiredminLength: 1The input text prompt for the model to generate a response.

### Output

<details>

<summary>Synchronous — Send a request and receive a complete response</summary>



id

<code>string</code>A unique identifier for the chat completion.

object

<code>string</code>

created

<code>integer</code>Unix timestamp (seconds) of when the completion was created.

model

<code>string</code>The model used for the chat completion.

▶choices\[]

<code>array</code>minItems: 1

▶usage{}

<code>object</code>

system\_fingerprint

<code>string | null</code>

</details>

<details>

<summary>Streaming — Send a request with `stream: true` and receive server-sent events</summary>



type

<code>string</code>

contentType

<code>text/event-stream</code>

format

<code>binary</code>

</details>

## API Schemas (Raw)

SynchronousInput [Open](https://developers.cloudflare.com/workers-ai/models/phonellm-mini-alpha-2/sync-input.json) [Download](https://developers.cloudflare.com/workers-ai/models/phonellm-mini-alpha-2/sync-input.json)

SynchronousOutput [Open](https://developers.cloudflare.com/workers-ai/models/phonellm-mini-alpha-2/sync-output.json) [Download](https://developers.cloudflare.com/workers-ai/models/phonellm-mini-alpha-2/sync-output.json)

StreamingInput [Open](https://developers.cloudflare.com/workers-ai/models/phonellm-mini-alpha-2/streaming-input.json) [Download](https://developers.cloudflare.com/workers-ai/models/phonellm-mini-alpha-2/streaming-input.json)

StreamingOutput [Open](https://developers.cloudflare.com/workers-ai/models/phonellm-mini-alpha-2/streaming-output.json) [Download](https://developers.cloudflare.com/workers-ai/models/phonellm-mini-alpha-2/streaming-output.json)

Was this helpful?

YesNo

## On this page

[![](https://developers.cloudflare.com/_astro/logo.te5VL_aD.svg)Docs](https://developers.cloudflare.com/)

```json
{"@context":"https://schema.org","@type":"TechArticle","@id":"https://developers.cloudflare.com/workers-ai/models/phonellm-mini-alpha-2/#page","headline":"phonellm-mini-alpha-2","description":"PhoneLLM is an open model tuned for voice agents. The model is based on Nemotron Nano 30B base capabilities and excels at typical voice agent tasks with thinking disabled.","url":"https://developers.cloudflare.com/workers-ai/models/phonellm-mini-alpha-2/","inLanguage":"en","image":"https://developers.cloudflare.com/og-docs.png","publisher":{"@type":"Organization","name":"Cloudflare","description":"One platform for your apps, agents, and workforce. Build, secure, and scale without managing infrastructure","url":"https://www.cloudflare.com/","sameAs":["https://github.com/cloudflare","https://www.linkedin.com/company/cloudflare","https://x.com/cloudflare"],"logo":{"@type":"ImageObject","url":"https://developers.cloudflare.com/logo.svg"},"address":{"@type":"PostalAddress","streetAddress":"101 Townsend St","addressLocality":"San Francisco","addressRegion":"CA","postalCode":"94107","addressCountry":"US"},"contactPoint":[{"@type":"ContactPoint","contactType":"Customer Support","url":"https://support.cloudflare.com/","availableLanguage":["English"]},{"@type":"ContactPoint","contactType":"Sales","url":"https://www.cloudflare.com/contact/","availableLanguage":["English"]}]},"isPartOf":{"@type":"WebSite","@id":"https://developers.cloudflare.com/#website","name":"Cloudflare Docs","url":"https://developers.cloudflare.com/"}}
```
