# LemonSlice (/en/ai/platform/models/avatar/lemonslice)

> For AI agents: see the complete documentation index at [llms.txt](/llms.txt).

> Documentation: Conversational AI.
> Documentation version: Preview.
> This document describes only this version. [Version index](/llms/doc-versions-convoai-guides-v2.txt).


LemonSlice provides AI-powered avatar agents that generate synchronized video and audio responses in real time, enabling natural video conversations with your AI agents.

## Sample configuration

The following example shows how to configure LemonSlice as the agent's avatar when you create or update an agent. For a complete example, see [Create an agent and start a session](/en/ai/platform/get-started/start-stop-agent#create-an-agent).

LemonSlice supports BYOK only. It isn't available in managed mode. Store your LemonSlice API key in a secret set, and refer to it from the agent. For details, see [Use your own provider keys](/en/ai/platform/build/use-your-own-keys).

**Python SDK**

```python
from agora_agent import Agent, LemonSlice, secret_ref

# client is your configured Agora client
agent = (
    Agent(client=client)
    .with_stt(...)  # configure your ASR vendor
    .with_llm(...)  # configure your LLM vendor
    .with_tts(...)  # configure your TTS vendor
    .with_avatar(
        LemonSlice(
            api_key=secret_ref("support_prod", "lemonslice"),
            api_base_url="https://lemonslice.com/api/liveai/agora",
            avatar_id="lemonslice",
            agora_uid="<avatar_rtc_uid>",
            agora_token="<avatar_rtc_token>",
            additional_params={
                "agent_image_url": "<image_url>",
                "aspect_ratio": "2x3",
            },
        )
    )
)
```

**TypeScript SDK**

```ts
import { Agent, LemonSlice, secretRef } from 'agora-agents';

// client is your configured Agora client
const agent = new Agent({ client })
  .withStt(/* configure your ASR vendor */)
  .withLlm(/* configure your LLM vendor */)
  .withTts(/* configure your TTS vendor */)
  .withAvatar(
    new LemonSlice({
      apiKey: secretRef('support_prod', 'lemonslice'),
      apiBaseUrl: 'https://lemonslice.com/api/liveai/agora',
      avatarId: 'lemonslice',
      agoraUid: '<avatar_rtc_uid>',
      agoraToken: '<avatar_rtc_token>',
      agentImageUrl: '<image_url>',
      aspectRatio: '2x3',
    }),
  );
```

**Go SDK**

```go
// client is your configured Agora client
agent := agentkit.NewAgent(client).
	WithStt( /* configure your ASR vendor */ ).
	WithLlm( /* configure your LLM vendor */ ).
	WithTts( /* configure your TTS vendor */ ).
	WithAvatar(vendors.NewLemonSlice(vendors.LemonSliceOptions{
		APIKey:     agentkit.SecretRef("support_prod", "lemonslice"),
		APIBaseURL: "https://lemonslice.com/api/liveai/agora",
		AvatarID:   "lemonslice",
		AgoraUID:   "<avatar_rtc_uid>",
		AgoraToken: "<avatar_rtc_token>",
		AdditionalParams: map[string]interface{}{
			"agent_image_url": "<image_url>",
			"aspect_ratio":    "2x3",
		},
	}))
```

**REST API**

Add an `avatar` block to the `pipeline`. LemonSlice uses the `generic` avatar vendor. Set `credential.mode` to `byok` and `credential.fields.api_key` to the reference. In the following example, the key is stored as `lemonslice` in the `support_prod` set:

```json
"avatar": {
  "enabled": true,
  "credential": {
    "mode": "byok",
    "fields": {
      "api_key": "$secrets.support_prod.lemonslice"
    }
  },
  "vendor": "generic",
  "params": {
    "api_base_url": "https://lemonslice.com/api/liveai/agora",
    "avatar_id": "lemonslice",
    "agent_image_url": "<image_url>",
    "agora_token": "<avatar_rtc_token>",
    "agora_uid": "<avatar_rtc_uid>",
    "aspect_ratio": "2x3"
  }
}
```

## Key parameters

The `avatar` block takes the following fields. In the SDKs, `LemonSlice` sets them from its options, and passes any other parameters from its additional parameters option to `params`.

**avatar required**

**`enabled` (boolean) required**

Set to `true` to show the avatar.

**`vendor` (string) required**

Set to `generic`.

**`credential` (object) required**

Set `mode` to `byok` and `fields.api_key` to a `$secrets.<set>.<key>` reference to your LemonSlice API key. Get your API key from your LemonSlice account.

**`params` (object) required**

**`api_base_url` (string) required**

The base URL of the LemonSlice API endpoint. Set to `https://lemonslice.com/api/liveai/agora`.

**`avatar_id` (string) required**

Fixed value that identifies the vendor integration. Always set to `lemonslice`.

**`agent_image_url` (string) optional**

A publicly accessible URL to the avatar image. Provide exactly one of `agent_id`, `agent_image_url`, or `agent_image_base64`.

**`agent_id` (string) optional**

The ID of a LemonSlice agent to use as the avatar. Provide exactly one of `agent_id`, `agent_image_url`, or `agent_image_base64`. If you provide `agent_id`, LemonSlice also uses that agent's configured settings as defaults for `agent_prompt` and `agent_idle_prompt`.

**`agent_image_base64` (string) optional**

A base64-encoded avatar image. Provide exactly one of `agent_id`, `agent_image_url`, or `agent_image_base64`.

**`aspect_ratio` (string) optional**

The output aspect ratio for the avatar video. One of `2x3`, `9x16`, or `1x1`. Defaults to `2x3`.

**`agora_token` (string) optional**

The RTC token that authorizes the avatar to join the video channel. Generate this token using your Agora project credentials.

**`agora_uid` (string) required**

The unique identifier for the avatar's RTC connection. This must be different from other participants in the channel.

For advanced configuration options, refer to the [LemonSlice Agora integration](https://lemonslice.com/docs/agora) page or the [LemonSlice API documentation](https://lemonslice.com/docs/api-reference/create-self-managed-session).

This integration is fully supported for use with the Conversational AI Platform. While it has completed functional validation, it is newer to the platform, and additional provider-specific edge cases may be identified as usage scales across a broader range of applications and workloads.
