{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "#/components/schemas/CustomLLMModel",
"title": "CustomLLMModel",
"type": "object",
"properties": {
"messages": {
"description": "This is the starting state for the conversation.",
"type": "array",
"items": {
"$ref": "#/components/schemas/OpenAIMessage"
}
},
"tools": {
"type": "array",
"description": "These are the tools that the assistant can use during the call. To use existing tools, use `toolIds`.\n\nBoth `tools` and `toolIds` can be used together.",
"items": {
"oneOf": [
{
"$ref": "#/components/schemas/CreateApiRequestToolDTO",
"title": "ApiRequestTool"
},
{
"$ref": "#/components/schemas/CreateBashToolDTO",
"title": "BashTool"
},
{
"$ref": "#/components/schemas/CreateCodeToolDTO",
"title": "CodeTool"
},
{
"$ref": "#/components/schemas/CreateComputerToolDTO",
"title": "ComputerTool"
},
{
"$ref": "#/components/schemas/CreateDtmfToolDTO",
"title": "DtmfTool"
},
{
"$ref": "#/components/schemas/CreateEndCallToolDTO",
"title": "EndCallTool"
},
{
"$ref": "#/components/schemas/CreateFunctionToolDTO",
"title": "FunctionTool"
},
{
"$ref": "#/components/schemas/CreateGoHighLevelCalendarAvailabilityToolDTO",
"title": "GoHighLevelCalendarAvailabilityTool"
},
{
"$ref": "#/components/schemas/CreateGoHighLevelCalendarEventCreateToolDTO",
"title": "GoHighLevelCalendarEventCreateTool"
},
{
"$ref": "#/components/schemas/CreateGoHighLevelContactCreateToolDTO",
"title": "GoHighLevelContactCreateTool"
},
{
"$ref": "#/components/schemas/CreateGoHighLevelContactGetToolDTO",
"title": "GoHighLevelContactGetTool"
},
{
"$ref": "#/components/schemas/CreateGoogleCalendarCheckAvailabilityToolDTO",
"title": "GoogleCalendarCheckAvailabilityTool"
},
{
"$ref": "#/components/schemas/CreateGoogleCalendarCreateEventToolDTO",
"title": "GoogleCalendarCreateEventTool"
},
{
"$ref": "#/components/schemas/CreateGoogleSheetsRowAppendToolDTO",
"title": "GoogleSheetsRowAppendTool"
},
{
"$ref": "#/components/schemas/CreateHandoffToolDTO",
"title": "HandoffTool"
},
{
"$ref": "#/components/schemas/CreateMcpToolDTO",
"title": "McpTool"
},
{
"$ref": "#/components/schemas/CreateQueryToolDTO",
"title": "QueryTool"
},
{
"$ref": "#/components/schemas/CreateSlackSendMessageToolDTO",
"title": "SlackSendMessageTool"
},
{
"$ref": "#/components/schemas/CreateSmsToolDTO",
"title": "SmsTool"
},
{
"$ref": "#/components/schemas/CreateTextEditorToolDTO",
"title": "TextEditorTool"
},
{
"$ref": "#/components/schemas/CreateTransferCallToolDTO",
"title": "TransferCallTool"
},
{
"$ref": "#/components/schemas/CreateSipRequestToolDTO",
"title": "SipRequestTool"
},
{
"$ref": "#/components/schemas/CreateVoicemailToolDTO",
"title": "VoicemailTool"
}
]
}
},
"toolIds": {
"description": "These are the tools that the assistant can use during the call. To use transient tools, use `tools`.\n\nBoth `tools` and `toolIds` can be used together.",
"type": "array",
"items": {
"type": "string"
}
},
"knowledgeBase": {
"description": "These are the options for the knowledge base.",
"oneOf": [
{
"$ref": "#/components/schemas/CreateCustomKnowledgeBaseDTO",
"title": "Custom"
}
]
},
"provider": {
"type": "string",
"description": "This is the provider that will be used for the model. Any service, including your own server, that is compatible with the OpenAI API can be used.",
"enum": [
"custom-llm"
]
},
"metadataSendMode": {
"type": "string",
"description": "This determines whether metadata is sent in requests to the custom provider.\n\n- `off` will not send any metadata. payload will look like `{ messages }`\n- `variable` will send `assistant.metadata` as a variable on the payload. payload will look like `{ messages, metadata }`\n- `destructured` will send `assistant.metadata` fields directly on the payload. payload will look like `{ messages, ...metadata }`\n\nFurther, `variable` and `destructured` will send `call`, `phoneNumber`, and `customer` objects in the payload.\n\nDefault is `variable`.",
"enum": [
"off",
"variable",
"destructured"
]
},
"headers": {
"type": "object",
"description": "Custom headers to send with requests. These headers can override default OpenAI headers except for Authorization (which should be specified using a custom-llm credential).",
"additionalProperties": {
"type": "string"
},
"example": {
"X-Custom-Header": "value"
}
},
"url": {
"type": "string",
"description": "These is the URL we'll use for the OpenAI client's `baseURL`. Ex. https://openrouter.ai/api/v1"
},
"wordLevelConfidenceEnabled": {
"type": "boolean",
"description": "This determines whether the transcriber's word level confidence is sent in requests to the custom provider. Default is false.\nThis only works for Deepgram transcribers."
},
"timeoutSeconds": {
"type": "number",
"description": "This sets the timeout for the connection to the custom provider without needing to stream any tokens back. Default is 20 seconds.",
"minimum": 0,
"maximum": 300
},
"model": {
"type": "string",
"description": "This is the name of the model. Ex. cognitivecomputations/dolphin-mixtral-8x7b"
},
"temperature": {
"type": "number",
"description": "This is the temperature that will be used for calls. Default is 0 to leverage caching for lower latency.",
"minimum": 0,
"maximum": 2
},
"maxTokens": {
"type": "number",
"description": "This is the max number of tokens that the assistant will be allowed to generate in each turn of the conversation. Default is 250.",
"minimum": 50,
"maximum": 10000
},
"emotionRecognitionEnabled": {
"type": "boolean",
"description": "This determines whether we detect user's emotion while they speak and send it as an additional info to model.\n\nDefault `false` because the model is usually are good at understanding the user's emotion from text.\n\n@default false"
},
"numFastTurns": {
"type": "number",
"description": "This sets how many turns at the start of the conversation to use a smaller, faster model from the same provider before switching to the primary model. Example, gpt-3.5-turbo if provider is openai.\n\nDefault is 0.\n\n@default 0",
"minimum": 0
}
},
"required": [
"provider",
"url",
"model"
]
}