import { DotCMSAISearchRawResponse } from './internal'; import { DotHttpError } from '../client/public'; import { DotCMSBasicContentlet } from '../page/public'; /** * Query parameters for AI search - defines what and where to search * @public * @interface DotCMSAISearchQuery */ export interface DotCMSAISearchQuery { /** * The limit of the search results. * @property {number} limit - The limit of the search results. * @default 1000 */ limit?: number; /** * The offset of the search results. * @property {number} offset - The offset of the search results. * @default 0 */ offset?: number; /** * The site identifier. * @property {string} siteId - The site identifier. */ siteId?: string; /** * The content type you want to search for. * @property {string} contentType - The content type you want to search for. */ contentType?: string; /** * The language id to search in. * @property {number | string} languageId - The language id to search in. */ languageId?: number | string; } /** * AI configuration parameters - controls how AI processes the results * @public * @interface DotCMSAIConfig */ export interface DotCMSAIConfig { /** * The threshold for the search results. * @property {number} threshold - The threshold for the search results. * @default 0.5 */ threshold?: number; /** * The distance function for the search results. * Possible values: * * - <-> - L2 distance * - <#> - (negative) inner product * - <=> - cosine distance * - <+> - L1 distance * - <~> - Hamming distance (binary vectors) * - <%> - Jaccard distance (binary vectors) * @default DISTANCE_FUNCTIONS.cosine * @see {@link https://platform.openai.com/docs/guides/embeddings/which-distance-function-should-i-use#which-distance-function-should-i-use} - OpenAI documentation for the distance functions * @property {string} distanceFunction - The distance function for the search results. */ distanceFunction?: (typeof DISTANCE_FUNCTIONS)[keyof typeof DISTANCE_FUNCTIONS]; /** * The length of the response. * @property {number} responseLength - The length of the response. * @default 1024 */ responseLength?: number; } /** * Parameters for making an AI search request to DotCMS. * @public * @interface DotCMSAISearchParams */ export interface DotCMSAISearchParams { /** * Query parameters defining what and where to search. * @property {DotCMSAISearchQuery} query - The search query parameters. */ query?: DotCMSAISearchQuery; /** * AI configuration parameters controlling how results are processed. * @property {DotCMSAIConfig} config - The AI configuration parameters. */ config?: DotCMSAIConfig; } /** * The distance functions for the search results. * @public * @constant DISTANCE_FUNCTIONS */ export declare const DISTANCE_FUNCTIONS: { /** * The L2 distance function. * @constant L2 - The L2 distance function. */ readonly L2: "<->"; /** * The inner product distance function. * @constant innerProduct - The inner product distance function. */ readonly innerProduct: "<#>"; readonly cosine: "<=>"; /** * The L1 distance function. * @constant L1 - The L1 distance function. */ readonly L1: "<+>"; /** * The hamming distance function. * @constant hamming - The hamming distance function. */ readonly hamming: "<~>"; /** * The jaccard distance function. * @constant jaccard - The jaccard distance function. */ readonly jaccard: "<%>"; }; /** * AI Search API specific error class * Wraps HTTP errors and adds AI search-specific context including query information */ export declare class DotErrorAISearch extends Error { readonly httpError?: DotHttpError; readonly prompt?: string; readonly params?: DotCMSAISearchParams; readonly indexName?: string; constructor({ message, httpError, prompt, params, indexName }: { message: string; httpError?: DotHttpError; prompt?: string; params?: DotCMSAISearchParams; indexName?: string; }); /** * Serializes the error to a plain object for logging or transmission */ toJSON(): { name: string; message: string; httpError: { name: string; message: string; status: number; statusText: string; data: unknown; stack: string | undefined; } | undefined; prompt: string | undefined; params: DotCMSAISearchParams | undefined; indexName: string | undefined; stack: string | undefined; }; } /** * The response from the AI search. * @public * @interface DotCMSAISearchResponse */ export interface DotCMSAISearchResponse extends Omit, 'dotCMSResults'> { /** * The results from the AI search. * @property {DotCMSAISearchContentletData[]} results - The results from the AI search. */ results: DotCMSAISearchContentletData[]; } /** * The match from the AI search. * @public * @interface DotCMSAISearchMatch */ export interface DotCMSAISearchMatch { /** * The distance from the AI search. * @property {number} distance - The distance from the AI search. */ distance: number; /** * The extracted text from the AI search. * @property {string} extractedText - The extracted text from the AI search. */ extractedText: string; } /** * The contentlet data from the AI search. * @public * @interface DotCMSAISearchContentletData */ export type DotCMSAISearchContentletData = T & { /** * The matches from the AI search. * @property {DotCMSAISearchMatch[]} matches - The matches from the AI search. */ matches?: DotCMSAISearchMatch[]; };