@juspay/neurolink
Version:
The pipe layer of an AI nervous system: one interface connecting provider neurons to your application, across three inference types — generate, stream and decide. `decide` returns typed, calibrated judgements from a non-generative model (~400ms, ~$0.00002
83 lines (82 loc) • 3.86 kB
TypeScript
import type { StreamOptions } from "../types/index.js";
/**
* Builds a normalized multimodal options payload for streaming providers.
*
* This utility extracts and normalizes multimodal input fields from StreamOptions
* into a consistent format that can be consumed by buildMultimodalMessagesArray.
*
* @param {StreamOptions} options - Stream options containing:
* - input.text: Main text prompt
* - input.images: Image files (Buffer | string paths/URLs)
* - input.content: Advanced multimodal content array
* - input.files: Auto-detected file types
* - input.csvFiles: CSV files for tabular data
* - input.pdfFiles: PDF documents (Buffer | string paths)
* - input.audioFiles: Audio files (Buffer | string paths)
* - input.videoFiles: Video files (Buffer | string paths)
* - csvOptions: CSV parsing options
* - videoOptions: Video frame/quality/format/transcription options
* - officeOptions: DOCX/XLSX sheet selection and output-format options
* - systemPrompt: System-level instructions
* - conversationMessages: Chat history
* - temperature: Model temperature (0-1)
* - maxTokens: Maximum output tokens
* - enableAnalytics: Enable analytics tracking
* - enableEvaluation: Enable response evaluation
* - context: Additional context data
* @param {string} providerName - Provider identifier (e.g., "vertex", "openai", "anthropic")
* @param {string} modelName - Model identifier (e.g., "gemini-2.5-flash", "gpt-4o")
* @returns {object} Normalized options object with:
* - input: { text, images, content, files, csvFiles, pdfFiles, audioFiles, videoFiles }
* - csvOptions: CSV processing options
* - officeOptions: Office (DOCX/XLSX) processing options
* - systemPrompt: System prompt string
* - conversationHistory: Message history array
* - provider: Provider name
* - model: Model name
* - temperature: Temperature value
* - maxTokens: Token limit
* - enableAnalytics: Analytics flag
* - enableEvaluation: Evaluation flag
* - context: Context data
*
* @example
* ```typescript
* const opts = buildMultimodalOptions(streamOptions, "vertex", "gemini-2.5-flash");
* const messages = await buildMultimodalMessagesArray(opts, "vertex", "gemini-2.5-flash");
* ```
*/
export declare function buildMultimodalOptions(options: StreamOptions, providerName: string, modelName: string): {
input: {
text: string;
images: (string | Buffer<ArrayBufferLike> | import("../index.js").ImageWithAltText)[] | undefined;
content: import("../index.js").Content[] | undefined;
files: (string | Buffer<ArrayBufferLike> | import("../index.js").FileWithMetadata)[] | undefined;
csvFiles: (string | Buffer<ArrayBufferLike>)[] | undefined;
pdfFiles: (string | Buffer<ArrayBufferLike>)[] | undefined;
audioFiles: (string | Buffer<ArrayBufferLike>)[] | undefined;
videoFiles: (string | Buffer<ArrayBufferLike>)[] | undefined;
};
csvOptions: import("../index.js").CSVProcessorOptions | undefined;
pdfOptions: {
password?: string;
maxCanvasPixels?: number;
scale?: number;
maxPages?: number;
} | undefined;
imageOptions: {
outputFormat?: import("../index.js").VisionImageOutputFormat;
} | undefined;
videoOptions: import("../index.js").VideoProcessorOptions | undefined;
officeOptions: import("../index.js").OfficeProcessorOptions | undefined;
systemPrompt: string | undefined;
conversationHistory: import("../index.js").ChatMessage[] | undefined;
provider: string;
model: string;
temperature: number | undefined;
maxTokens: number | undefined;
enableAnalytics: boolean | undefined;
enableEvaluation: boolean | undefined;
context: import("../index.js").UnknownRecord | undefined;
fileRegistry: unknown;
};