perception layer. It allows an AI agent to trigger functions based on visual cues during a conversation.
The perception layer tool calling is only available for Raven.
Tavus does not execute tool calls on the backend. Use event listeners in your frontend to listen for perception tool call events and run your own logic when a tool is invoked.
Defining Tool
Top-Level Fields
| Field | Type | Required | Description |
|---|---|---|---|
type | string | ✅ | Must be "function" to enable tool calling. |
function | object | ✅ | Defines the function that can be called by the model. Contains metadata and a strict schema for arguments. |
function
| Field | Type | Required | Description |
|---|---|---|---|
name | string | ✅ | A unique identifier for the function. Must be in snake_case. The model uses this to refer to the function when calling it. |
description | string | ✅ | A natural language explanation of what the function does. Helps the perception model decide when to call it. |
parameters | object | ✅ | A JSON Schema object that describes the expected structure of the function’s input arguments. |
function.parameters
| Field | Type | Required | Description |
|---|---|---|---|
type | string | ✅ | Always "object". Indicates the expected input is a structured object. |
properties | object | ✅ | Defines each expected parameter and its corresponding type, constraints, and description. |
required | array of strings | ✅ | Specifies which parameters are mandatory for the function to execute. |
Each parameter should be included in the required list, even if they might seem optional in your code.
function.parameters.properties
Each key inside properties defines a single parameter the model must supply when calling the function.
| Field | Type | Required | Description |
|---|---|---|---|
<parameter_name> | object | ✅ | Each key is a named parameter. The value is a schema for that parameter. |
| Subfield | Type | Required | Description |
|---|---|---|---|
type | string | ✅ | Data type (e.g., string, number, boolean). |
description | string | ❌ | Explains what the parameter represents and how it should be used. |
maxLength | number | ❌ | Maximum character length for string parameters. Must not exceed 1,000. |
enum | array | ❌ | Defines a strict list of allowed values for this parameter. Useful for categorical choices. |
Example Configuration
Here’s an example of tool calling inperception layers:
Perception Layer
How Perception Tool Calling Works
Perception Tool calling is triggered during an active conversation when the perception model detects a visual cue that matches a defined function. Here’s how the process works:This example explains the
notify_if_id_shown function from the example configuration above.
The same process applies to other functions like
notify_if_bright_outfit_shown, which is triggered if a bright-colored outfit is visually detected.Modify Existing Tools
You can update theperception_tools definitions using the Update Persona API.
Replace
<api_key> with your actual API key. You can generate one in the Developer Portal.
