@ibm-cloud/watsonx-ai
Version:
IBM watsonx.ai Node.js SDK
231 lines • 8.68 kB
TypeScript
/**
* (C) Copyright IBM Corp. 2025-2026.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
* in compliance with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License
* is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/
/** The function call. */
export interface TextChatFunctionCall {
/** The name of the function. */
name: string;
/**
* The arguments to call the function with, as generated by the model in JSON format. Note that
* the model does not always generate valid JSON, and may hallucinate parameters not defined by
* your function schema. Validate the arguments in your code before calling your function.
*/
arguments: string;
}
/** The tool call. */
export interface TextChatToolCall {
/** The ID of the tool call. */
id: string;
/** The type of the tool. Currently, only `function` is supported. */
type: 'function';
/** The function call. */
function: TextChatFunctionCall;
}
export declare namespace TextChatToolCall {
namespace Constants {
/** The type of the tool. Currently, only `function` is supported. */
enum Type {
FUNCTION = "function"
}
}
}
/** The base definition of a text chat message. */
export interface TextChatMessage {
/**
* The role of the messages author. Note that this parameter is case sensitive, make sure to use
* lower case.
*/
role: string;
}
/** The definition of an assistant message. */
export interface TextChatMessageAssistant extends TextChatMessage {
role: 'assistant';
/** The contents of the assistant message. Required unless `tool_calls` is specified. */
content?: string;
/** An optional name for the participant. */
name?: string;
/** The refusal message by the assistant. */
refusal?: string | null;
/** The tool calls generated by the model, such as function calls. */
tool_calls?: TextChatToolCall[];
}
/** The definition of a control message. */
export interface TextChatMessageControl extends TextChatMessage {
role: 'control';
/**
* The contents of the control message. Depending on the model, an example would be "thinking" for
* Granite reasoning models.
*/
content: string;
/** An optional name for the participant. */
name?: string;
}
/** The definition of a system message. */
export interface TextChatMessageSystem extends TextChatMessage {
role: 'system';
/** The contents of the system message. */
content: string;
/** An optional name for the participant. */
name?: string;
}
/** The definition of a tool message. */
export interface TextChatMessageTool extends TextChatMessage {
role: 'tool';
/** The contents of the tool message. */
content: string;
/** Tool call that this message is responding to. */
tool_call_id: string;
}
/** The base definition of a text chat user content. */
export interface TextChatUserContent {
/**
* The type of the user content. You can get the list of models supporting text, image, audio,
* video by using Foundation Model Specs with `filters=function_text_chat`,
* `filters=function_image_chat`, `filters=function_audio_chat`, `filters=function_video_chat`
* respectively.
*/
type: 'text' | 'image_url' | 'video_url' | 'input_audio';
}
/** The definition of a user text content. */
export interface TextChatUserTextContent extends TextChatUserContent {
type: 'text';
/** The text content. */
text: string;
}
/** The definition of a user image content. */
export interface TextChatUserImageURL {
/**
* You can either set this string to a base64 encoded image, or use `data_asset` field to refer to
* an uploaded image.
*
* @example
* 'data:image/jpeg;base64,{base64_image}';
*/
url?: string;
/**
* This parameter controls how the model processes the image and generates its textual
* understanding. The `auto` setting will look at the image input size and decide if it should use
* the `low` or `high` setting.
*
* @default 'auto'
*/
detail?: 'low' | 'high' | 'auto';
}
export declare namespace TextChatUserImageURL {
namespace Constants {
/**
* This parameter controls how the model processes the image and generates its textual
* understanding. The `auto` setting which will look at the image input size and decide if it
* should use the `low` or `high` setting.
*/
enum Detail {
LOW = "low",
HIGH = "high",
AUTO = "auto"
}
}
}
/** Data asset reference for uploaded content. */
export interface TextChatDataAsset {
/** The id of the asset */
id: string;
}
/** The definition of a user image content. */
export interface TextChatUserImageURLContent extends TextChatUserContent {
type: 'image_url';
/** The image URL configuration. */
image_url?: TextChatUserImageURL;
/**
* The data asset of an image uploaded into the `space_id` or `project_id`. If `data_asset` is
* specified, the `url` field in `image_url` will be automatically set with the URL of the
* uploaded image.
*/
data_asset?: TextChatDataAsset;
}
/** The definition of a user video content. */
export interface TextChatUserVideoURL {
/**
* You can either set this string to a base64 encoded video, or use `data_asset` field to refer to
* an uploaded video.
*
* @example
* 'data:video/mp4;base64,{base64_video}';
*/
url?: string;
}
/** The definition of a user video content. */
export interface TextChatUserVideoURLContent extends TextChatUserContent {
type: 'video_url';
/** The video URL configuration. */
video_url?: TextChatUserVideoURL;
/**
* The data asset of a video uploaded into the `space_id` or `project_id`. If `data_asset` is
* specified, the `url` field in `video_url` will be automatically set with the URL of the
* uploaded video.
*/
data_asset?: TextChatDataAsset;
}
/** The definition of a user audio content. */
export interface TextChatUserInputAudio {
/**
* You can either set this string to a base64 encoded audio, or use `data_asset` field to refer to
* an uploaded audio file.
*
* @example
* {base64_audio}
*/
data?: string;
/** Either `wav` or `mp3`. */
format?: 'wav' | 'mp3';
}
/** The definition of a user audio content. */
export interface TextChatUserAudioContent extends TextChatUserContent {
type: 'input_audio';
/** The input audio configuration. */
input_audio?: TextChatUserInputAudio;
/**
* The data asset of an audio uploaded into the `space_id` or `project_id`. If `data_asset` is
* specified, the `data` field in `input_audio` will be automatically set with the URL of the
* uploaded audio.
*/
data_asset?: TextChatDataAsset;
}
/** Union type for all user content types. */
export type TextChatUserContents = TextChatUserTextContent | TextChatUserImageURLContent | TextChatUserVideoURLContent | TextChatUserAudioContent;
/** The definition of a user message. */
export interface TextChatMessageUser extends TextChatMessage {
role: 'user';
/** Content of a user message. */
content: TextChatUserContents[] | string;
/** An optional name for the participant. */
name?: string;
}
/** Union type for all text chat message types. */
export type TextChatMessages = TextChatMessageAssistant | TextChatMessageControl | TextChatMessageSystem | TextChatMessageTool | TextChatMessageUser | TextChatMessage;
/** The parameters specific to chat functions. */
export interface TextChatParameterFunction {
/** The name of the function. */
name: string;
/**
* A description of what the function does, used by the model to choose when and how to call the
* function.
*/
description?: string;
/**
* The parameters the functions accepts, described as a JSON Schema object. See the [JSON Schema
* reference](https://json-schema.org/learn/getting-started-step-by-step) for documentation about
* the format. Omitting parameters defines a function with an empty parameter list.
*/
parameters?: Record<string, any>;
}
//# sourceMappingURL=messages.d.ts.map