llm.d.ts 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. export declare function isLocalLlmDisabled(_env?: NodeJS.ProcessEnv): boolean;
  2. export declare function resolveLlamaGpuMode(_env?: NodeJS.ProcessEnv): "cpu" | "auto";
  3. export declare function isQwen3EmbeddingModel(modelUri: string): boolean;
  4. export declare function formatQueryForEmbedding(query: string, modelUri?: string): string;
  5. export declare function formatDocForEmbedding(text: string, title?: string, modelUri?: string): string;
  6. export type TokenLogProb = {
  7. token: string;
  8. logprob: number;
  9. };
  10. export type EmbeddingResult = {
  11. embedding: number[];
  12. model: string;
  13. };
  14. export type GenerateResult = {
  15. text: string;
  16. model: string;
  17. logprobs?: TokenLogProb[];
  18. done: boolean;
  19. };
  20. export type RerankDocumentResult = {
  21. file: string;
  22. score: number;
  23. index: number;
  24. };
  25. export type RerankResult = {
  26. results: RerankDocumentResult[];
  27. model: string;
  28. };
  29. export type ModelInfo = {
  30. name: string;
  31. exists: boolean;
  32. path?: string;
  33. };
  34. export type EmbedOptions = {
  35. model?: string;
  36. isQuery?: boolean;
  37. title?: string;
  38. };
  39. export type GenerateOptions = {
  40. model?: string;
  41. maxTokens?: number;
  42. temperature?: number;
  43. };
  44. export type RerankOptions = {
  45. model?: string;
  46. };
  47. export type LLMSessionOptions = {
  48. maxDuration?: number;
  49. signal?: AbortSignal;
  50. name?: string;
  51. };
  52. export type QueryType = "lex" | "vec" | "hyde";
  53. export type Queryable = {
  54. type: QueryType;
  55. text: string;
  56. };
  57. export type RerankDocument = {
  58. file: string;
  59. text: string;
  60. title?: string;
  61. };
  62. export interface ILLMSession {
  63. embed(text: string, options?: EmbedOptions): Promise<EmbeddingResult | null>;
  64. embedBatch(texts: string[], options?: EmbedOptions): Promise<(EmbeddingResult | null)[]>;
  65. expandQuery(query: string, options?: {
  66. context?: string;
  67. includeLexical?: boolean;
  68. }): Promise<Queryable[]>;
  69. rerank(query: string, documents: RerankDocument[], options?: RerankOptions): Promise<RerankResult>;
  70. readonly isValid: boolean;
  71. readonly signal: AbortSignal;
  72. }
  73. export declare const LFM2_GENERATE_MODEL = "commercial-api-required";
  74. export declare const LFM2_INSTRUCT_MODEL = "commercial-api-required";
  75. export declare const DEFAULT_EMBED_MODEL_URI = "commercial-api:embedding-unconfigured";
  76. export declare const DEFAULT_RERANK_MODEL_URI = "commercial-api:rerank-unconfigured";
  77. export declare const DEFAULT_GENERATE_MODEL_URI = "commercial-api:generation-unconfigured";
  78. export declare const DEFAULT_MODEL_CACHE_DIR = "commercial-api:no-local-cache";
  79. export type PullResult = {
  80. model: string;
  81. path: string;
  82. sizeBytes: number;
  83. refreshed: boolean;
  84. };
  85. export declare function pullModels(_models: string[], _options?: {
  86. refresh?: boolean;
  87. cacheDir?: string;
  88. }): Promise<PullResult[]>;
  89. export interface LLM {
  90. embed(text: string, options?: EmbedOptions): Promise<EmbeddingResult | null>;
  91. embedBatch(texts: string[], options?: EmbedOptions): Promise<(EmbeddingResult | null)[]>;
  92. generate(prompt: string, options?: GenerateOptions): Promise<GenerateResult | null>;
  93. modelExists(modelUri: string): Promise<ModelInfo>;
  94. expandQuery(query: string, options?: {
  95. context?: string;
  96. includeLexical?: boolean;
  97. intent?: string;
  98. }): Promise<Queryable[]>;
  99. rerank(query: string, documents: RerankDocument[], options?: RerankOptions): Promise<RerankResult>;
  100. dispose(): Promise<void>;
  101. }
  102. export type LlamaCppConfig = {
  103. embedModel?: string;
  104. generateModel?: string;
  105. rerankModel?: string;
  106. modelCacheDir?: string;
  107. expandContextSize?: number;
  108. inactivityTimeoutMs?: number;
  109. disposeModelsOnInactivity?: boolean;
  110. };
  111. /** Historical SDK name retained as a fail-closed compatibility adapter. */
  112. export declare class LlamaCpp implements LLM {
  113. static readonly EMBED_CONTEXT_SIZE = 2048;
  114. static readonly RERANK_CONTEXT_SIZE = 2048;
  115. static readonly RERANK_TARGET_DOCS_PER_CONTEXT = 32;
  116. static readonly RERANK_TEMPLATE_OVERHEAD = 32;
  117. readonly embedModelName: string;
  118. constructor(config?: LlamaCppConfig);
  119. tokenize(_text: string): Promise<readonly number[]>;
  120. countTokens(_text: string): Promise<number>;
  121. detokenize(_tokens: readonly number[]): Promise<string>;
  122. embed(_text: string, _options?: EmbedOptions): Promise<EmbeddingResult | null>;
  123. embedBatch(_texts: string[], _options?: EmbedOptions): Promise<(EmbeddingResult | null)[]>;
  124. generate(_prompt: string, _options?: GenerateOptions): Promise<GenerateResult | null>;
  125. modelExists(modelUri: string): Promise<ModelInfo>;
  126. expandQuery(_query: string, _options?: {
  127. context?: string;
  128. includeLexical?: boolean;
  129. intent?: string;
  130. }): Promise<Queryable[]>;
  131. rerank(_query: string, _documents: RerankDocument[], _options?: RerankOptions): Promise<RerankResult>;
  132. getDeviceInfo(): Promise<{
  133. gpu: string | false;
  134. gpuOffloading: boolean;
  135. gpuDevices: string[];
  136. vram?: {
  137. total: number;
  138. used: number;
  139. free: number;
  140. };
  141. cpuCores: number;
  142. }>;
  143. unloadIdleResources(): Promise<void>;
  144. dispose(): Promise<void>;
  145. }
  146. export declare class SessionReleasedError extends Error {
  147. constructor(message?: string);
  148. }
  149. export declare function getDefaultLlamaCpp(): LlamaCpp;
  150. export declare function setDefaultLlamaCpp(llm: LlamaCpp | null): void;
  151. export declare function disposeDefaultLlamaCpp(): Promise<void>;
  152. export declare function withLLMSession<T>(fn: (session: ILLMSession) => Promise<T>, options?: LLMSessionOptions): Promise<T>;
  153. export declare function withLLMSessionForLlm<T>(llm: LlamaCpp, fn: (session: ILLMSession) => Promise<T>, options?: LLMSessionOptions): Promise<T>;
  154. export declare function canUnloadLLM(): boolean;