UNPKG

@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
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; };