@flutchai/flutch-sdk 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (191) hide show
  1. package/README.md +287 -0
  2. package/dist/api/callback-token.guard.d.ts +17 -0
  3. package/dist/api/callback-token.guard.js +80 -0
  4. package/dist/api/callback-token.guard.js.map +1 -0
  5. package/dist/api/callback.controller.d.ts +7 -0
  6. package/dist/api/callback.controller.js +44 -0
  7. package/dist/api/callback.controller.js.map +1 -0
  8. package/dist/api/graph.controller.d.ts +32 -0
  9. package/dist/api/graph.controller.js +187 -0
  10. package/dist/api/graph.controller.js.map +1 -0
  11. package/dist/api/ui-dispatch.controller.d.ts +34 -0
  12. package/dist/api/ui-dispatch.controller.js +178 -0
  13. package/dist/api/ui-dispatch.controller.js.map +1 -0
  14. package/dist/bootstrap.d.ts +4 -0
  15. package/dist/bootstrap.js +177 -0
  16. package/dist/bootstrap.js.map +1 -0
  17. package/dist/callbacks/callback-acl.service.d.ts +24 -0
  18. package/dist/callbacks/callback-acl.service.js +144 -0
  19. package/dist/callbacks/callback-acl.service.js.map +1 -0
  20. package/dist/callbacks/callback-auditor.service.d.ts +47 -0
  21. package/dist/callbacks/callback-auditor.service.js +286 -0
  22. package/dist/callbacks/callback-auditor.service.js.map +1 -0
  23. package/dist/callbacks/callback-metrics.service.d.ts +34 -0
  24. package/dist/callbacks/callback-metrics.service.js +216 -0
  25. package/dist/callbacks/callback-metrics.service.js.map +1 -0
  26. package/dist/callbacks/callback-patch.service.d.ts +13 -0
  27. package/dist/callbacks/callback-patch.service.js +51 -0
  28. package/dist/callbacks/callback-patch.service.js.map +1 -0
  29. package/dist/callbacks/callback-rate-limiter.d.ts +27 -0
  30. package/dist/callbacks/callback-rate-limiter.js +129 -0
  31. package/dist/callbacks/callback-rate-limiter.js.map +1 -0
  32. package/dist/callbacks/callback-registry.d.ts +7 -0
  33. package/dist/callbacks/callback-registry.js +29 -0
  34. package/dist/callbacks/callback-registry.js.map +1 -0
  35. package/dist/callbacks/callback-store.d.ts +19 -0
  36. package/dist/callbacks/callback-store.js +145 -0
  37. package/dist/callbacks/callback-store.js.map +1 -0
  38. package/dist/callbacks/example.callback.d.ts +2 -0
  39. package/dist/callbacks/example.callback.js +10 -0
  40. package/dist/callbacks/example.callback.js.map +1 -0
  41. package/dist/callbacks/idempotency-manager.d.ts +54 -0
  42. package/dist/callbacks/idempotency-manager.js +230 -0
  43. package/dist/callbacks/idempotency-manager.js.map +1 -0
  44. package/dist/callbacks/index.d.ts +13 -0
  45. package/dist/callbacks/index.js +30 -0
  46. package/dist/callbacks/index.js.map +1 -0
  47. package/dist/callbacks/smart-callback.router.d.ts +52 -0
  48. package/dist/callbacks/smart-callback.router.js +213 -0
  49. package/dist/callbacks/smart-callback.router.js.map +1 -0
  50. package/dist/callbacks/telegram-patch.handler.d.ts +6 -0
  51. package/dist/callbacks/telegram-patch.handler.js +24 -0
  52. package/dist/callbacks/telegram-patch.handler.js.map +1 -0
  53. package/dist/callbacks/universal-callback.service.d.ts +14 -0
  54. package/dist/callbacks/universal-callback.service.js +20 -0
  55. package/dist/callbacks/universal-callback.service.js.map +1 -0
  56. package/dist/callbacks/web-patch.handler.d.ts +6 -0
  57. package/dist/callbacks/web-patch.handler.js +24 -0
  58. package/dist/callbacks/web-patch.handler.js.map +1 -0
  59. package/dist/core/abstract-graph.builder.d.ts +128 -0
  60. package/dist/core/abstract-graph.builder.js +488 -0
  61. package/dist/core/abstract-graph.builder.js.map +1 -0
  62. package/dist/core/builder-registry.service.d.ts +6 -0
  63. package/dist/core/builder-registry.service.js +29 -0
  64. package/dist/core/builder-registry.service.js.map +1 -0
  65. package/dist/core/universal-graph.module.d.ts +10 -0
  66. package/dist/core/universal-graph.module.js +294 -0
  67. package/dist/core/universal-graph.module.js.map +1 -0
  68. package/dist/decorators/callback.decorators.d.ts +21 -0
  69. package/dist/decorators/callback.decorators.js +73 -0
  70. package/dist/decorators/callback.decorators.js.map +1 -0
  71. package/dist/endpoint-registry/endpoint.decorators.d.ts +35 -0
  72. package/dist/endpoint-registry/endpoint.decorators.js +115 -0
  73. package/dist/endpoint-registry/endpoint.decorators.js.map +1 -0
  74. package/dist/endpoint-registry/endpoint.registry.d.ts +44 -0
  75. package/dist/endpoint-registry/endpoint.registry.js +90 -0
  76. package/dist/endpoint-registry/endpoint.registry.js.map +1 -0
  77. package/dist/endpoint-registry/index.d.ts +3 -0
  78. package/dist/endpoint-registry/index.js +20 -0
  79. package/dist/endpoint-registry/index.js.map +1 -0
  80. package/dist/endpoint-registry/ui-endpoints.discovery.d.ts +11 -0
  81. package/dist/endpoint-registry/ui-endpoints.discovery.js +72 -0
  82. package/dist/endpoint-registry/ui-endpoints.discovery.js.map +1 -0
  83. package/dist/engine/api-call-tracer.utils.d.ts +8 -0
  84. package/dist/engine/api-call-tracer.utils.js +184 -0
  85. package/dist/engine/api-call-tracer.utils.js.map +1 -0
  86. package/dist/engine/event-processor.utils.d.ts +49 -0
  87. package/dist/engine/event-processor.utils.js +314 -0
  88. package/dist/engine/event-processor.utils.js.map +1 -0
  89. package/dist/engine/graph-engine.factory.d.ts +12 -0
  90. package/dist/engine/graph-engine.factory.js +43 -0
  91. package/dist/engine/graph-engine.factory.js.map +1 -0
  92. package/dist/engine/langgraph-engine.d.ts +14 -0
  93. package/dist/engine/langgraph-engine.js +261 -0
  94. package/dist/engine/langgraph-engine.js.map +1 -0
  95. package/dist/index.d.ts +27 -0
  96. package/dist/index.js +48 -0
  97. package/dist/index.js.map +1 -0
  98. package/dist/interfaces/callback.interface.d.ts +46 -0
  99. package/dist/interfaces/callback.interface.js +3 -0
  100. package/dist/interfaces/callback.interface.js.map +1 -0
  101. package/dist/interfaces/graph-registry.interface.d.ts +8 -0
  102. package/dist/interfaces/graph-registry.interface.js +3 -0
  103. package/dist/interfaces/graph-registry.interface.js.map +1 -0
  104. package/dist/interfaces/graph-service.interface.d.ts +43 -0
  105. package/dist/interfaces/graph-service.interface.js +9 -0
  106. package/dist/interfaces/graph-service.interface.js.map +1 -0
  107. package/dist/interfaces/index.d.ts +3 -0
  108. package/dist/interfaces/index.js +20 -0
  109. package/dist/interfaces/index.js.map +1 -0
  110. package/dist/llm/index.d.ts +6 -0
  111. package/dist/llm/index.js +23 -0
  112. package/dist/llm/index.js.map +1 -0
  113. package/dist/llm/llm.initializer.d.ts +14 -0
  114. package/dist/llm/llm.initializer.js +167 -0
  115. package/dist/llm/llm.initializer.js.map +1 -0
  116. package/dist/llm/llm.interface.d.ts +6 -0
  117. package/dist/llm/llm.interface.js +3 -0
  118. package/dist/llm/llm.interface.js.map +1 -0
  119. package/dist/llm/llm.types.d.ts +32 -0
  120. package/dist/llm/llm.types.js +3 -0
  121. package/dist/llm/llm.types.js.map +1 -0
  122. package/dist/llm/model.initializer.d.ts +45 -0
  123. package/dist/llm/model.initializer.js +630 -0
  124. package/dist/llm/model.initializer.js.map +1 -0
  125. package/dist/llm/model.interface.d.ts +38 -0
  126. package/dist/llm/model.interface.js +4 -0
  127. package/dist/llm/model.interface.js.map +1 -0
  128. package/dist/llm/rerankers/voyageai-rerank.d.ts +17 -0
  129. package/dist/llm/rerankers/voyageai-rerank.js +56 -0
  130. package/dist/llm/rerankers/voyageai-rerank.js.map +1 -0
  131. package/dist/retriever/database-factory.d.ts +15 -0
  132. package/dist/retriever/database-factory.js +83 -0
  133. package/dist/retriever/database-factory.js.map +1 -0
  134. package/dist/retriever/index.d.ts +2 -0
  135. package/dist/retriever/index.js +19 -0
  136. package/dist/retriever/index.js.map +1 -0
  137. package/dist/retriever/retriever.client.d.ts +28 -0
  138. package/dist/retriever/retriever.client.js +97 -0
  139. package/dist/retriever/retriever.client.js.map +1 -0
  140. package/dist/retriever/retriever.service.d.ts +25 -0
  141. package/dist/retriever/retriever.service.js +265 -0
  142. package/dist/retriever/retriever.service.js.map +1 -0
  143. package/dist/retriever/types.d.ts +22 -0
  144. package/dist/retriever/types.js +3 -0
  145. package/dist/retriever/types.js.map +1 -0
  146. package/dist/schemas/graph-manifest.schema.d.ts +134 -0
  147. package/dist/schemas/graph-manifest.schema.js +180 -0
  148. package/dist/schemas/graph-manifest.schema.js.map +1 -0
  149. package/dist/schemas/index.d.ts +1 -0
  150. package/dist/schemas/index.js +18 -0
  151. package/dist/schemas/index.js.map +1 -0
  152. package/dist/shared-types/index.d.ts +199 -0
  153. package/dist/shared-types/index.js +58 -0
  154. package/dist/shared-types/index.js.map +1 -0
  155. package/dist/tools/index.d.ts +3 -0
  156. package/dist/tools/index.js +20 -0
  157. package/dist/tools/index.js.map +1 -0
  158. package/dist/tools/mcp-converter.d.ts +15 -0
  159. package/dist/tools/mcp-converter.js +133 -0
  160. package/dist/tools/mcp-converter.js.map +1 -0
  161. package/dist/tools/mcp-tool-filter.d.ts +11 -0
  162. package/dist/tools/mcp-tool-filter.js +123 -0
  163. package/dist/tools/mcp-tool-filter.js.map +1 -0
  164. package/dist/tools/mcp.interfaces.d.ts +19 -0
  165. package/dist/tools/mcp.interfaces.js +3 -0
  166. package/dist/tools/mcp.interfaces.js.map +1 -0
  167. package/dist/types/graph-types.d.ts +82 -0
  168. package/dist/types/graph-types.js +6 -0
  169. package/dist/types/graph-types.js.map +1 -0
  170. package/dist/utils/error.utils.d.ts +18 -0
  171. package/dist/utils/error.utils.js +78 -0
  172. package/dist/utils/error.utils.js.map +1 -0
  173. package/dist/utils/graph-type.utils.d.ts +14 -0
  174. package/dist/utils/graph-type.utils.js +71 -0
  175. package/dist/utils/graph-type.utils.js.map +1 -0
  176. package/dist/utils/index.d.ts +1 -0
  177. package/dist/utils/index.js +18 -0
  178. package/dist/utils/index.js.map +1 -0
  179. package/dist/utils/usage-recorder.d.ts +23 -0
  180. package/dist/utils/usage-recorder.js +29 -0
  181. package/dist/utils/usage-recorder.js.map +1 -0
  182. package/dist/versioning/index.d.ts +2 -0
  183. package/dist/versioning/index.js +19 -0
  184. package/dist/versioning/index.js.map +1 -0
  185. package/dist/versioning/versioned-graph.service.d.ts +16 -0
  186. package/dist/versioning/versioned-graph.service.js +132 -0
  187. package/dist/versioning/versioned-graph.service.js.map +1 -0
  188. package/dist/versioning/versioning.types.d.ts +21 -0
  189. package/dist/versioning/versioning.types.js +3 -0
  190. package/dist/versioning/versioning.types.js.map +1 -0
  191. package/package.json +70 -0
@@ -0,0 +1,167 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LLMInitializer = void 0;
4
+ const openai_1 = require("@langchain/openai");
5
+ const anthropic_1 = require("@langchain/anthropic");
6
+ const cohere_1 = require("@langchain/cohere");
7
+ const shared_types_1 = require("../shared-types");
8
+ const mistralai_1 = require("@langchain/mistralai");
9
+ const common_1 = require("@nestjs/common");
10
+ class LLMInitializer {
11
+ constructor(configFetcher) {
12
+ this.configFetcher = configFetcher;
13
+ this.logger = new common_1.Logger(LLMInitializer.name);
14
+ this.modelProviders = {
15
+ [shared_types_1.ModelProvider.OPENAI]: ({ name, temperature, maxTokens, customApiToken, }) => {
16
+ const config = {
17
+ modelName: name,
18
+ temperature,
19
+ streaming: true,
20
+ openAIApiKey: customApiToken || process.env.OPENAI_API_KEY,
21
+ };
22
+ if (this.requiresMaxCompletionTokens(name)) {
23
+ config.maxCompletionTokens = maxTokens;
24
+ this.logger.log(`Using maxCompletionTokens for ${name}: ${maxTokens}`);
25
+ }
26
+ else {
27
+ config.maxTokens = maxTokens;
28
+ }
29
+ return new openai_1.ChatOpenAI(config);
30
+ },
31
+ [shared_types_1.ModelProvider.ANTHROPIC]: ({ name, temperature, maxTokens, customApiToken, }) => new anthropic_1.ChatAnthropic({
32
+ modelName: name,
33
+ temperature,
34
+ maxTokens,
35
+ anthropicApiKey: customApiToken || process.env.ANTHROPIC_API_KEY,
36
+ }),
37
+ [shared_types_1.ModelProvider.FLUTCH_ANTHROPIC]: ({ name, temperature, maxTokens, customApiToken, }) => new anthropic_1.ChatAnthropic({
38
+ modelName: name,
39
+ temperature,
40
+ maxTokens,
41
+ anthropicApiKey: customApiToken || process.env.ANTHROPIC_API_KEY,
42
+ }),
43
+ [shared_types_1.ModelProvider.MISTRAL]: ({ name, temperature, maxTokens, customApiToken, }) => new mistralai_1.ChatMistralAI({
44
+ model: name,
45
+ temperature,
46
+ maxTokens,
47
+ apiKey: customApiToken || process.env.MISTRAL_API_KEY,
48
+ }),
49
+ [shared_types_1.ModelProvider.FLUTCH_MISTRAL]: ({ name, temperature, maxTokens, customApiToken, }) => new mistralai_1.ChatMistralAI({
50
+ model: name,
51
+ temperature,
52
+ maxTokens,
53
+ apiKey: customApiToken || process.env.MISTRAL_API_KEY,
54
+ }),
55
+ [shared_types_1.ModelProvider.FLUTCH_OPENAI]: ({ name, temperature, maxTokens, customApiToken, }) => {
56
+ var _a;
57
+ const config = {
58
+ modelName: name,
59
+ temperature,
60
+ streaming: true,
61
+ openAIApiKey: customApiToken || process.env.OPENAI_API_KEY,
62
+ };
63
+ if (this.requiresMaxCompletionTokens(name)) {
64
+ config.maxCompletionTokens = maxTokens;
65
+ (_a = this.logger) === null || _a === void 0 ? void 0 : _a.log(`Using maxCompletionTokens for FLUTCH ${name}: ${maxTokens}`);
66
+ }
67
+ else {
68
+ config.maxTokens = maxTokens;
69
+ }
70
+ return new openai_1.ChatOpenAI(config);
71
+ },
72
+ [shared_types_1.ModelProvider.COHERE]: ({ name, temperature, maxTokens, customApiToken, }) => new cohere_1.ChatCohere({
73
+ model: name,
74
+ temperature,
75
+ apiKey: customApiToken || process.env.COHERE_API_KEY,
76
+ }),
77
+ [shared_types_1.ModelProvider.FLUTCH]: () => {
78
+ throw new Error("Пока не сделали");
79
+ },
80
+ [shared_types_1.ModelProvider.VOYAGEAI]: () => {
81
+ throw new Error("VoyageAI используется только для reranking, не для чат моделей");
82
+ },
83
+ };
84
+ }
85
+ requiresMaxCompletionTokens(modelName) {
86
+ return (modelName.includes("gpt-5") ||
87
+ modelName.includes("gpt-o1") ||
88
+ modelName.includes("gpt-o2") ||
89
+ modelName.includes("gpt-o3") ||
90
+ modelName.includes("gpt-o4") ||
91
+ /^gpt-(5|6|7|8|9)/.test(modelName) ||
92
+ /^gpt-o[1-4]/.test(modelName));
93
+ }
94
+ initializeModel(config) {
95
+ this.logger.log(`LLMInitializer init model: ${config.modelProvider} - ${config.name}`);
96
+ const provider = this.modelProviders[config.modelProvider];
97
+ if (!provider) {
98
+ throw new Error(`Неподдерживаемый провайдер ${config.modelProvider}`);
99
+ }
100
+ return provider(config);
101
+ }
102
+ async initializeModelById(config) {
103
+ var _a, _b;
104
+ this.logger.log(`Initializing model by ID: ${config.modelId}`);
105
+ try {
106
+ const modelConfig = this.configFetcher
107
+ ? await this.configFetcher(config.modelId)
108
+ : await this.fetchFromApi(config.modelId);
109
+ this.logger.log(`Retrieved model config for ${config.modelId}`, {
110
+ modelName: modelConfig.modelName,
111
+ provider: modelConfig.provider,
112
+ hasApiToken: !!modelConfig.apiToken,
113
+ requiresApiKey: modelConfig.requiresApiKey,
114
+ });
115
+ const initConfig = {
116
+ name: modelConfig.modelName,
117
+ modelProvider: modelConfig.provider,
118
+ temperature: Number((_a = config.temperature) !== null && _a !== void 0 ? _a : modelConfig.defaultTemperature),
119
+ maxTokens: Number((_b = config.maxTokens) !== null && _b !== void 0 ? _b : modelConfig.defaultMaxTokens),
120
+ customApiToken: modelConfig.apiToken,
121
+ };
122
+ return this.initializeModelWithCustomToken(initConfig);
123
+ }
124
+ catch (error) {
125
+ this.logger.error(`Failed to initialize model ${config.modelId}: ${error instanceof Error ? error.message : String(error)}`);
126
+ throw error;
127
+ }
128
+ }
129
+ async fetchFromApi(modelId) {
130
+ const apiUrl = process.env.API_URL || "http://amelie-service";
131
+ const token = process.env.INTERNAL_API_TOKEN;
132
+ if (!token) {
133
+ throw new Error("INTERNAL_API_TOKEN required for API mode");
134
+ }
135
+ const url = `${apiUrl}/internal/model-catalog/models/${modelId}/config`;
136
+ const response = await fetch(url, {
137
+ method: "GET",
138
+ headers: {
139
+ "x-internal-token": token,
140
+ "Content-Type": "application/json",
141
+ },
142
+ });
143
+ if (!response.ok) {
144
+ throw new Error(`Failed to fetch model config: ${response.status} ${response.statusText}`);
145
+ }
146
+ return response.json();
147
+ }
148
+ initializeModelWithCustomToken(config) {
149
+ const provider = this.modelProviders[config.modelProvider];
150
+ if (!provider) {
151
+ throw new Error(`Неподдерживаемый провайдер ${config.modelProvider}`);
152
+ }
153
+ const providerConfig = {
154
+ name: config.name,
155
+ modelProvider: config.modelProvider,
156
+ temperature: Number(config.temperature),
157
+ maxTokens: Number(config.maxTokens),
158
+ customApiToken: config.customApiToken,
159
+ };
160
+ return provider(providerConfig);
161
+ }
162
+ check() {
163
+ return "LLMInitializer check";
164
+ }
165
+ }
166
+ exports.LLMInitializer = LLMInitializer;
167
+ //# sourceMappingURL=llm.initializer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm.initializer.js","sourceRoot":"","sources":["../../src/llm/llm.initializer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { LLModel, ModelConfig, ModelByIdConfig } from "./llm.types";
2
+ export interface ILLMInitializer {
3
+ initializeModel(config: ModelConfig): LLModel;
4
+ initializeModelById(config: ModelByIdConfig): Promise<LLModel>;
5
+ check(): string;
6
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=llm.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm.interface.js","sourceRoot":"","sources":["../../src/llm/llm.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,32 @@
1
+ import { ModelProvider } from "../shared-types";
2
+ import { ChatAnthropic } from "@langchain/anthropic";
3
+ import { ChatCohere } from "@langchain/cohere";
4
+ import { ChatMistralAI } from "@langchain/mistralai";
5
+ import { ChatOpenAI } from "@langchain/openai";
6
+ import { BaseChatModel } from "@langchain/core/language_models/chat_models";
7
+ export interface ModelConfig {
8
+ name: string;
9
+ modelProvider: ModelProvider;
10
+ temperature?: number;
11
+ maxTokens?: number;
12
+ }
13
+ export interface ModelByIdConfig {
14
+ modelId: string;
15
+ temperature?: number;
16
+ maxTokens?: number;
17
+ }
18
+ export type ModelConfigFetcher = (modelId: string) => Promise<ModelConfigWithToken>;
19
+ export interface ModelConfigWithToken {
20
+ modelId: string;
21
+ modelName: string;
22
+ provider: ModelProvider;
23
+ defaultTemperature: number;
24
+ defaultMaxTokens: number;
25
+ apiToken?: string;
26
+ requiresApiKey: boolean;
27
+ }
28
+ export type LLModel = BaseChatModel;
29
+ export type ConcreteModels = ChatOpenAI | ChatAnthropic | ChatCohere | ChatMistralAI;
30
+ export type ModelCreator = (config: ModelConfig & {
31
+ customApiToken?: string;
32
+ }) => LLModel;
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=llm.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm.types.js","sourceRoot":"","sources":["../../src/llm/llm.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,45 @@
1
+ import { BaseChatModel } from "@langchain/core/language_models/chat_models";
2
+ import { BaseDocumentCompressor } from "@langchain/core/retrievers/document_compressors";
3
+ import { Embeddings } from "@langchain/core/embeddings";
4
+ import { Logger } from "@nestjs/common";
5
+ import { StructuredTool } from "@langchain/core/tools";
6
+ import { ModelType } from "../shared-types";
7
+ import { IModelInitializer, Model, ModelByIdWithTypeConfig, ModelConfigWithTokenAndType } from "./model.interface";
8
+ import { ModelByIdConfig, ModelConfigFetcher } from "./llm.types";
9
+ export declare class ModelInitializer implements IModelInitializer {
10
+ private configFetcher?;
11
+ private logger;
12
+ private modelConfigCache;
13
+ private modelInstanceCache;
14
+ constructor(configFetcher?: ModelConfigFetcher, logger?: Logger);
15
+ private generateModelCacheKey;
16
+ private requiresMaxCompletionTokens;
17
+ private readonly chatModelCreators;
18
+ private readonly rerankModelCreators;
19
+ private readonly embeddingModelCreators;
20
+ initializeChatModel(config: ModelByIdConfig): Promise<BaseChatModel>;
21
+ initializeRerankModel(config: ModelByIdConfig): Promise<BaseDocumentCompressor>;
22
+ initializeEmbeddingModel(config: ModelByIdConfig): Promise<Embeddings>;
23
+ createChatModelById(modelId: string): Promise<BaseChatModel>;
24
+ createRerankModelById(modelId: string): Promise<BaseDocumentCompressor>;
25
+ createEmbeddingModelById(modelId: string): Promise<Embeddings>;
26
+ createModelById(modelId: string, expectedType?: ModelType): Promise<Model>;
27
+ initializeModelByType(config: ModelByIdWithTypeConfig): Promise<Model>;
28
+ getModelConfigWithType(modelId: string): Promise<ModelConfigWithTokenAndType>;
29
+ isModelTypeSupported(modelType: ModelType): boolean;
30
+ getSupportedModelTypes(): ModelType[];
31
+ clearCache(): void;
32
+ clearModelCache(modelId: string): void;
33
+ getCacheStats(): {
34
+ configCacheSize: number;
35
+ instanceCacheSize: number;
36
+ configCacheKeys: string[];
37
+ instanceCacheKeys: string[];
38
+ };
39
+ private fetchFromApi;
40
+ }
41
+ export declare function prepareModelWithTools(model: BaseChatModel, tools: StructuredTool[], baseConfig?: any): {
42
+ modelWithTools: any;
43
+ finalConfig: any;
44
+ toolsMethod: "bindTools" | "manual" | "none";
45
+ };