@modular-prompt/driver 0.14.0 → 0.15.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.
- package/README.md +58 -5
- package/dist/driver-registry/ai-service.d.ts +23 -1
- package/dist/driver-registry/ai-service.d.ts.map +1 -1
- package/dist/driver-registry/ai-service.js +44 -10
- package/dist/driver-registry/ai-service.js.map +1 -1
- package/dist/driver-registry/config-based-factory.d.ts.map +1 -1
- package/dist/driver-registry/config-based-factory.js +16 -0
- package/dist/driver-registry/config-based-factory.js.map +1 -1
- package/dist/driver-registry/factory-helper.d.ts +2 -0
- package/dist/driver-registry/factory-helper.d.ts.map +1 -1
- package/dist/driver-registry/factory-helper.js +21 -3
- package/dist/driver-registry/factory-helper.js.map +1 -1
- package/dist/driver-registry/index.d.ts +2 -2
- package/dist/driver-registry/index.d.ts.map +1 -1
- package/dist/driver-registry/index.js +1 -1
- package/dist/driver-registry/index.js.map +1 -1
- package/dist/driver-registry/registry.d.ts.map +1 -1
- package/dist/driver-registry/registry.js +3 -1
- package/dist/driver-registry/registry.js.map +1 -1
- package/dist/driver-registry/types.d.ts +8 -2
- package/dist/driver-registry/types.d.ts.map +1 -1
- package/dist/index.d.ts +10 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -1
- package/dist/index.js.map +1 -1
- package/dist/local-inference/adapters.d.ts +66 -0
- package/dist/local-inference/adapters.d.ts.map +1 -0
- package/dist/local-inference/adapters.js +2 -0
- package/dist/local-inference/adapters.js.map +1 -0
- package/dist/local-inference/driver.d.ts +51 -0
- package/dist/local-inference/driver.d.ts.map +1 -0
- package/dist/local-inference/driver.js +309 -0
- package/dist/local-inference/driver.js.map +1 -0
- package/dist/local-inference/index.d.ts +22 -0
- package/dist/local-inference/index.d.ts.map +1 -0
- package/dist/local-inference/index.js +17 -0
- package/dist/local-inference/index.js.map +1 -0
- package/dist/local-inference/process-client.d.ts +50 -0
- package/dist/local-inference/process-client.d.ts.map +1 -0
- package/dist/local-inference/process-client.js +92 -0
- package/dist/local-inference/process-client.js.map +1 -0
- package/dist/local-inference/process-communication.d.ts +41 -0
- package/dist/local-inference/process-communication.d.ts.map +1 -0
- package/dist/{mlx-ml/process → local-inference}/process-communication.js +25 -61
- package/dist/local-inference/process-communication.js.map +1 -0
- package/dist/local-inference/process-port.d.ts +12 -0
- package/dist/local-inference/process-port.d.ts.map +1 -0
- package/dist/local-inference/process-port.js +2 -0
- package/dist/local-inference/process-port.js.map +1 -0
- package/dist/local-inference/prompt-utils.d.ts +6 -0
- package/dist/local-inference/prompt-utils.d.ts.map +1 -0
- package/dist/local-inference/prompt-utils.js +17 -0
- package/dist/local-inference/prompt-utils.js.map +1 -0
- package/dist/local-inference/protocol.d.ts +192 -0
- package/dist/local-inference/protocol.d.ts.map +1 -0
- package/dist/local-inference/protocol.js +2 -0
- package/dist/local-inference/protocol.js.map +1 -0
- package/dist/local-inference/queue-types.d.ts +54 -0
- package/dist/local-inference/queue-types.d.ts.map +1 -0
- package/dist/local-inference/queue-types.js +2 -0
- package/dist/local-inference/queue-types.js.map +1 -0
- package/dist/local-inference/request-queue.d.ts +36 -0
- package/dist/local-inference/request-queue.d.ts.map +1 -0
- package/dist/{mlx-ml/process/queue.js → local-inference/request-queue.js} +83 -56
- package/dist/local-inference/request-queue.js.map +1 -0
- package/dist/local-inference/stream-utils.d.ts +19 -0
- package/dist/local-inference/stream-utils.d.ts.map +1 -0
- package/dist/local-inference/stream-utils.js +76 -0
- package/dist/local-inference/stream-utils.js.map +1 -0
- package/dist/mlx-ml/mlx-cache-support.d.ts +23 -0
- package/dist/mlx-ml/mlx-cache-support.d.ts.map +1 -0
- package/dist/mlx-ml/mlx-cache-support.js +45 -0
- package/dist/mlx-ml/mlx-cache-support.js.map +1 -0
- package/dist/mlx-ml/mlx-driver.d.ts +20 -59
- package/dist/mlx-ml/mlx-driver.d.ts.map +1 -1
- package/dist/mlx-ml/mlx-driver.js +86 -460
- package/dist/mlx-ml/mlx-driver.js.map +1 -1
- package/dist/mlx-ml/mlx-local-inference-adapters.d.ts +3 -0
- package/dist/mlx-ml/mlx-local-inference-adapters.d.ts.map +1 -0
- package/dist/mlx-ml/mlx-local-inference-adapters.js +19 -0
- package/dist/mlx-ml/mlx-local-inference-adapters.js.map +1 -0
- package/dist/mlx-ml/mlx-options.d.ts +19 -0
- package/dist/mlx-ml/mlx-options.d.ts.map +1 -0
- package/dist/mlx-ml/mlx-options.js +30 -0
- package/dist/mlx-ml/mlx-options.js.map +1 -0
- package/dist/mlx-ml/process/index.d.ts +10 -8
- package/dist/mlx-ml/process/index.d.ts.map +1 -1
- package/dist/mlx-ml/process/index.js +73 -54
- package/dist/mlx-ml/process/index.js.map +1 -1
- package/dist/mlx-ml/process/model-specific.d.ts +2 -1
- package/dist/mlx-ml/process/model-specific.d.ts.map +1 -1
- package/dist/mlx-ml/process/model-specific.js.map +1 -1
- package/dist/mlx-ml/process/prompt-builder.d.ts +11 -0
- package/dist/mlx-ml/process/prompt-builder.d.ts.map +1 -0
- package/dist/mlx-ml/process/prompt-builder.js +51 -0
- package/dist/mlx-ml/process/prompt-builder.js.map +1 -0
- package/dist/mlx-ml/process/types.d.ts +15 -183
- package/dist/mlx-ml/process/types.d.ts.map +1 -1
- package/dist/mlx-ml/types.d.ts +2 -45
- package/dist/mlx-ml/types.d.ts.map +1 -1
- package/dist/models-config/index.d.ts +8 -0
- package/dist/models-config/index.d.ts.map +1 -0
- package/dist/models-config/index.js +7 -0
- package/dist/models-config/index.js.map +1 -0
- package/dist/models-config/loader.d.ts +20 -0
- package/dist/models-config/loader.d.ts.map +1 -0
- package/dist/models-config/loader.js +85 -0
- package/dist/models-config/loader.js.map +1 -0
- package/dist/models-config/paths.d.ts +7 -0
- package/dist/models-config/paths.d.ts.map +1 -0
- package/dist/models-config/paths.js +11 -0
- package/dist/models-config/paths.js.map +1 -0
- package/dist/models-config/resolve.d.ts +57 -0
- package/dist/models-config/resolve.d.ts.map +1 -0
- package/dist/models-config/resolve.js +187 -0
- package/dist/models-config/resolve.js.map +1 -0
- package/dist/models-config/types.d.ts +60 -0
- package/dist/models-config/types.d.ts.map +1 -0
- package/dist/models-config/types.js +5 -0
- package/dist/models-config/types.js.map +1 -0
- package/dist/pytorch/process/index.d.ts +35 -0
- package/dist/pytorch/process/index.d.ts.map +1 -0
- package/dist/pytorch/process/index.js +69 -0
- package/dist/pytorch/process/index.js.map +1 -0
- package/dist/pytorch/pytorch-driver.d.ts +35 -0
- package/dist/pytorch/pytorch-driver.d.ts.map +1 -0
- package/dist/pytorch/pytorch-driver.js +48 -0
- package/dist/pytorch/pytorch-driver.js.map +1 -0
- package/dist/pytorch/pytorch-local-inference-adapters.d.ts +3 -0
- package/dist/pytorch/pytorch-local-inference-adapters.d.ts.map +1 -0
- package/dist/pytorch/pytorch-local-inference-adapters.js +19 -0
- package/dist/pytorch/pytorch-local-inference-adapters.js.map +1 -0
- package/dist/pytorch/pytorch-options.d.ts +8 -0
- package/dist/pytorch/pytorch-options.d.ts.map +1 -0
- package/dist/pytorch/pytorch-options.js +21 -0
- package/dist/pytorch/pytorch-options.js.map +1 -0
- package/dist/query-logger.js +1 -1
- package/dist/query-logger.js.map +1 -1
- package/dist/runtime/check.d.ts +10 -0
- package/dist/runtime/check.d.ts.map +1 -0
- package/dist/runtime/check.js +24 -0
- package/dist/runtime/check.js.map +1 -0
- package/dist/runtime/index.d.ts +4 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +4 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/runtime/manifest-core.d.mts +27 -0
- package/dist/runtime/manifest-core.d.mts.map +1 -0
- package/dist/runtime/manifest-core.mjs +68 -0
- package/dist/runtime/manifest-core.mjs.map +1 -0
- package/dist/runtime/manifest.d.ts +18 -0
- package/dist/runtime/manifest.d.ts.map +1 -0
- package/dist/runtime/manifest.js +9 -0
- package/dist/runtime/manifest.js.map +1 -0
- package/dist/runtime/paths-core.d.mts +17 -0
- package/dist/runtime/paths-core.d.mts.map +1 -0
- package/dist/runtime/paths-core.mjs +67 -0
- package/dist/runtime/paths-core.mjs.map +1 -0
- package/dist/runtime/paths.d.ts +12 -0
- package/dist/runtime/paths.d.ts.map +1 -0
- package/dist/runtime/paths.js +17 -0
- package/dist/runtime/paths.js.map +1 -0
- package/dist/types.d.ts +11 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +10 -7
- package/scripts/download-model.js +25 -9
- package/scripts/runtime-cli.js +315 -0
- package/src/mlx-ml/python/__main__.py +43 -4
- package/src/mlx-ml/python/handlers/__init__.py +2 -1
- package/src/mlx-ml/python/handlers/completion.py +3 -27
- package/src/mlx-ml/python/handlers/{chat.py → generate.py} +33 -106
- package/src/mlx-ml/python/handlers/render.py +40 -0
- package/src/mlx-ml/python/pyproject.toml +3 -2
- package/src/mlx-ml/python/server.py +28 -8
- package/src/mlx-ml/python/utils/template_render.py +80 -0
- package/src/mlx-ml/python/utils/token_utils.py +2 -2
- package/src/mlx-ml/python/uv.lock +549 -454
- package/src/pytorch/python/__main__.py +19 -0
- package/src/pytorch/python/backends/__init__.py +3 -0
- package/src/pytorch/python/backends/base.py +84 -0
- package/src/pytorch/python/backends/transformers_lm.py +127 -0
- package/src/pytorch/python/handlers/__init__.py +6 -0
- package/src/pytorch/python/handlers/cancel.py +53 -0
- package/src/pytorch/python/handlers/capabilities.py +6 -0
- package/src/pytorch/python/handlers/completion.py +15 -0
- package/src/pytorch/python/handlers/format_test.py +70 -0
- package/src/pytorch/python/handlers/generate.py +68 -0
- package/src/pytorch/python/handlers/render.py +40 -0
- package/src/pytorch/python/handlers/tokenize.py +63 -0
- package/src/pytorch/python/pyproject.toml +36 -0
- package/src/pytorch/python/server.py +140 -0
- package/src/pytorch/python/utils/__init__.py +0 -0
- package/src/pytorch/python/utils/chat_template_constraints.py +164 -0
- package/src/pytorch/python/utils/prompt_builder.py +54 -0
- package/src/pytorch/python/utils/template_render.py +80 -0
- package/src/pytorch/python/utils/token_utils.py +376 -0
- package/src/pytorch/python/uv.lock +694 -0
- package/dist/mlx-ml/process/process-communication.d.ts +0 -45
- package/dist/mlx-ml/process/process-communication.d.ts.map +0 -1
- package/dist/mlx-ml/process/process-communication.js.map +0 -1
- package/dist/mlx-ml/process/queue.d.ts +0 -35
- package/dist/mlx-ml/process/queue.d.ts.map +0 -1
- package/dist/mlx-ml/process/queue.js.map +0 -1
- package/scripts/setup-mlx.js +0 -53
|
@@ -1,434 +1,57 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { formatCompletionPrompt } from '../formatter/completion-formatter.js';
|
|
1
|
+
import { LocalInferenceDriver } from '../local-inference/driver.js';
|
|
2
|
+
import { hasMessageElement } from '../local-inference/prompt-utils.js';
|
|
4
3
|
import { MlxProcess } from './process/index.js';
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import { extractJSON } from '@modular-prompt/utils';
|
|
8
|
-
import { formatToolDefinitionsAsText } from './tool-call-parser/index.js';
|
|
9
|
-
import { convertMessages, convertToolDefinitions, extractImagePaths } from './mlx-message-utils.js';
|
|
10
|
-
import { QueryLogger } from '../query-logger.js';
|
|
11
|
-
import { extractCacheablePrefix } from '../cache-utils.js';
|
|
4
|
+
import { mlxLocalInferenceAdapters } from './mlx-local-inference-adapters.js';
|
|
5
|
+
import { bindMlxCacheOnCapabilitiesLoaded, createMlxCacheSupport, } from './mlx-cache-support.js';
|
|
12
6
|
import { MlxCacheController } from './mlx-cache-controller.js';
|
|
13
|
-
|
|
14
|
-
// ========================================================================
|
|
15
|
-
// Utility Functions (exported for testing)
|
|
16
|
-
// ========================================================================
|
|
7
|
+
export { hasMessageElement };
|
|
17
8
|
/**
|
|
18
|
-
*
|
|
9
|
+
* MLX ML driver using Python subprocess.
|
|
10
|
+
* 共通ロジックは LocalInferenceDriver に委譲する。
|
|
19
11
|
*/
|
|
20
|
-
export
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
return elements.some(element => {
|
|
25
|
-
const el = element;
|
|
26
|
-
return el?.type === 'message';
|
|
27
|
-
});
|
|
28
|
-
};
|
|
29
|
-
return checkElements(prompt.instructions) ||
|
|
30
|
-
checkElements(prompt.data) ||
|
|
31
|
-
checkElements(prompt.output);
|
|
32
|
-
}
|
|
33
|
-
const META_MARKER = '\x1e__META__:';
|
|
34
|
-
function extractStreamMeta(content) {
|
|
35
|
-
const idx = content.lastIndexOf(META_MARKER);
|
|
36
|
-
if (idx === -1)
|
|
37
|
-
return { content, meta: {} };
|
|
38
|
-
const jsonStr = content.slice(idx + META_MARKER.length);
|
|
39
|
-
try {
|
|
40
|
-
return { content: content.slice(0, idx), meta: JSON.parse(jsonStr) };
|
|
41
|
-
}
|
|
42
|
-
catch {
|
|
43
|
-
return { content: content.slice(0, idx), meta: {} };
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
function createStreamIterable(stream, isAborted) {
|
|
47
|
-
const chunks = [];
|
|
48
|
-
let resolveCompletion;
|
|
49
|
-
let settled = false;
|
|
50
|
-
const settle = (error) => {
|
|
51
|
-
if (settled)
|
|
52
|
-
return;
|
|
53
|
-
settled = true;
|
|
54
|
-
const raw = chunks.join('');
|
|
55
|
-
const { content, meta } = extractStreamMeta(raw);
|
|
56
|
-
const aborted = isAborted?.() ?? false;
|
|
57
|
-
resolveCompletion({ content, meta, error: aborted ? null : error });
|
|
58
|
-
};
|
|
59
|
-
const completion = new Promise((resolve) => {
|
|
60
|
-
resolveCompletion = resolve;
|
|
61
|
-
});
|
|
62
|
-
const iterable = {
|
|
63
|
-
async *[Symbol.asyncIterator]() {
|
|
64
|
-
try {
|
|
65
|
-
let buffer = '';
|
|
66
|
-
let markerFound = false;
|
|
67
|
-
for await (const chunk of stream) {
|
|
68
|
-
if (isAborted?.()) {
|
|
69
|
-
break;
|
|
70
|
-
}
|
|
71
|
-
const str = chunk.toString();
|
|
72
|
-
chunks.push(str);
|
|
73
|
-
if (markerFound)
|
|
74
|
-
continue;
|
|
75
|
-
buffer += str;
|
|
76
|
-
const markerIdx = buffer.indexOf(META_MARKER);
|
|
77
|
-
if (markerIdx !== -1) {
|
|
78
|
-
const text = buffer.slice(0, markerIdx);
|
|
79
|
-
if (text)
|
|
80
|
-
yield text;
|
|
81
|
-
markerFound = true;
|
|
82
|
-
}
|
|
83
|
-
else {
|
|
84
|
-
const safeLen = buffer.length - (META_MARKER.length - 1);
|
|
85
|
-
if (safeLen > 0) {
|
|
86
|
-
yield buffer.slice(0, safeLen);
|
|
87
|
-
buffer = buffer.slice(safeLen);
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
if (!markerFound && buffer)
|
|
92
|
-
yield buffer;
|
|
93
|
-
}
|
|
94
|
-
catch (error) {
|
|
95
|
-
settle(error);
|
|
96
|
-
const aborted = isAborted?.() ?? false;
|
|
97
|
-
if (!aborted) {
|
|
98
|
-
throw error;
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
finally {
|
|
102
|
-
settle(null);
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
};
|
|
106
|
-
return { iterable, completion };
|
|
107
|
-
}
|
|
108
|
-
/**
|
|
109
|
-
* MLX ML driver using Python subprocess
|
|
110
|
-
*/
|
|
111
|
-
export class MlxDriver {
|
|
112
|
-
process;
|
|
113
|
-
model;
|
|
114
|
-
_defaultOptions;
|
|
115
|
-
runtimeInfo = null;
|
|
116
|
-
modelProcessor;
|
|
117
|
-
formatterOptions;
|
|
118
|
-
maxImageSize;
|
|
119
|
-
queryLogger = new QueryLogger('MLX');
|
|
120
|
-
cacheController;
|
|
121
|
-
cacheControllerBound = false;
|
|
122
|
-
get defaultOptions() {
|
|
123
|
-
return this._defaultOptions;
|
|
124
|
-
}
|
|
125
|
-
set defaultOptions(value) {
|
|
126
|
-
this._defaultOptions = value;
|
|
127
|
-
}
|
|
12
|
+
export class MlxDriver extends LocalInferenceDriver {
|
|
13
|
+
cacheControllerRaw;
|
|
14
|
+
cacheDisabledForVlm = false;
|
|
15
|
+
cacheBindingState = { bound: false };
|
|
128
16
|
constructor(config) {
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
this.formatterOptions = config.formatterOptions || {};
|
|
132
|
-
this.maxImageSize = config.maxImageSize ?? 768;
|
|
133
|
-
this.process = new MlxProcess(config.model, {
|
|
17
|
+
const mlxProcess = new MlxProcess(config.model, {
|
|
18
|
+
backend: config.backend,
|
|
134
19
|
textOnly: config.textOnly,
|
|
135
20
|
drafterModel: config.drafterModel,
|
|
136
|
-
draftBlockSize: config.draftBlockSize
|
|
21
|
+
draftBlockSize: config.draftBlockSize,
|
|
137
22
|
});
|
|
138
|
-
|
|
139
|
-
|
|
23
|
+
const cacheSupport = config.cacheController
|
|
24
|
+
? createMlxCacheSupport(config.cacheController)
|
|
25
|
+
: undefined;
|
|
26
|
+
super({
|
|
27
|
+
model: config.model,
|
|
28
|
+
process: mlxProcess,
|
|
29
|
+
adapters: mlxLocalInferenceAdapters,
|
|
30
|
+
formatterOptions: config.formatterOptions,
|
|
31
|
+
maxImageSize: config.maxImageSize,
|
|
32
|
+
defaultOptions: config.defaultOptions,
|
|
33
|
+
loggerPrefix: 'MLX',
|
|
34
|
+
cache: cacheSupport,
|
|
35
|
+
onCapabilitiesLoaded: async (runtimeInfo, ctx) => {
|
|
36
|
+
if (!cacheSupport)
|
|
37
|
+
return;
|
|
38
|
+
await bindMlxCacheOnCapabilitiesLoaded(cacheSupport, this.cacheBindingState, runtimeInfo, ctx, () => {
|
|
39
|
+
this.queryLogger.log.info('VLM models do not support prompt caching — cacheController disabled');
|
|
40
|
+
this.cacheDisabledForVlm = true;
|
|
41
|
+
this.disableCacheSupport();
|
|
42
|
+
});
|
|
43
|
+
},
|
|
44
|
+
});
|
|
45
|
+
this.cacheControllerRaw = config.cacheController;
|
|
140
46
|
if (config.drafterModel) {
|
|
141
47
|
this.queryLogger.log.info(`Drafter model: ${config.drafterModel}`);
|
|
142
48
|
}
|
|
143
49
|
}
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
*/
|
|
147
|
-
async ensureInitialized() {
|
|
148
|
-
// Ensure process is initialized
|
|
149
|
-
await this.process.ensureInitialized();
|
|
150
|
-
// Cache runtime info if not already cached
|
|
151
|
-
if (!this.runtimeInfo) {
|
|
152
|
-
try {
|
|
153
|
-
this.runtimeInfo = await this.process.getCapabilities();
|
|
154
|
-
// Update formatterOptions with special tokens from runtime info
|
|
155
|
-
if (this.runtimeInfo.special_tokens) {
|
|
156
|
-
this.formatterOptions.specialTokens = this.runtimeInfo.special_tokens;
|
|
157
|
-
}
|
|
158
|
-
// Update model processor with runtime context
|
|
159
|
-
this.modelProcessor.setRuntimeContext({
|
|
160
|
-
chatRestrictions: this.runtimeInfo.chat_restrictions,
|
|
161
|
-
modelKind: this.runtimeInfo.model_kind,
|
|
162
|
-
});
|
|
163
|
-
// Bind cache controller if provided and not yet bound
|
|
164
|
-
// NOTE: instanceof guard means VLM check only covers MlxCacheController.
|
|
165
|
-
// A custom PromptCacheController on a VLM model would bypass this — add a
|
|
166
|
-
// model-kind guard here if another implementation is introduced.
|
|
167
|
-
if (this.cacheController instanceof MlxCacheController && !this.cacheControllerBound) {
|
|
168
|
-
if (this.runtimeInfo.model_kind === 'vlm') {
|
|
169
|
-
this.queryLogger.log.info('VLM models do not support prompt caching — cacheController disabled');
|
|
170
|
-
this.cacheController = undefined;
|
|
171
|
-
}
|
|
172
|
-
else {
|
|
173
|
-
await this.cacheController.bind(this.process, this.formatterOptions, (msgs) => this.modelProcessor.applyChatSpecificProcessing(msgs));
|
|
174
|
-
this.cacheControllerBound = true;
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
catch (error) {
|
|
179
|
-
this.queryLogger.log.error('Failed to get MLX runtime info:', error instanceof Error ? error.message : String(error));
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
/**
|
|
184
|
-
* VLMモデルかどうかを判定
|
|
185
|
-
*/
|
|
186
|
-
isVLM() {
|
|
187
|
-
return this.runtimeInfo?.model_kind === 'vlm';
|
|
188
|
-
}
|
|
189
|
-
/**
|
|
190
|
-
* Determine which API to use (chat or completion)
|
|
191
|
-
* Simple logic based on runtime info only
|
|
192
|
-
*/
|
|
193
|
-
determineApi(options) {
|
|
194
|
-
return selectApi(options?.apiStrategy || 'auto', options?.mode, !!this.runtimeInfo?.features.apply_chat_template, this.modelProcessor.hasCompletionProcessor());
|
|
195
|
-
}
|
|
196
|
-
/**
|
|
197
|
-
* モデルがnativeツール対応かを判定
|
|
198
|
-
* tool_call_format(Python側検出結果)を唯一の判断基準とする
|
|
199
|
-
*/
|
|
200
|
-
hasNativeToolSupport() {
|
|
201
|
-
return !!this.runtimeInfo?.features?.chat_template?.tool_call_format?.call_start;
|
|
202
|
-
}
|
|
203
|
-
/**
|
|
204
|
-
* Execute query and return stream
|
|
205
|
-
* Common logic for query and streamQuery
|
|
206
|
-
*/
|
|
207
|
-
async executeQuery(prompt, mlxOptions, options) {
|
|
208
|
-
// APIを選択
|
|
209
|
-
const api = this.determineApi(options);
|
|
210
|
-
// tools変換
|
|
211
|
-
const tools = options?.tools ? convertToolDefinitions(options.tools) : undefined;
|
|
212
|
-
// completion API または nativeツール非対応の場合、tool定義をテキストとしてプロンプトに注入
|
|
213
|
-
let augmentedPrompt = prompt;
|
|
214
|
-
if (options?.tools && options.tools.length > 0 && (api === 'completion' || !this.hasNativeToolSupport())) {
|
|
215
|
-
const toolsText = formatToolDefinitionsAsText(options.tools, this.runtimeInfo?.special_tokens, this.runtimeInfo?.features?.chat_template?.tool_call_format);
|
|
216
|
-
augmentedPrompt = {
|
|
217
|
-
...prompt,
|
|
218
|
-
instructions: [
|
|
219
|
-
...prompt.instructions,
|
|
220
|
-
{ type: 'text', content: toolsText }
|
|
221
|
-
]
|
|
222
|
-
};
|
|
223
|
-
}
|
|
224
|
-
// Record all queries, regardless of API mode or cache usage
|
|
225
|
-
this.cacheController?.recordQuery?.();
|
|
226
|
-
let stream;
|
|
227
|
-
if (api === 'completion') {
|
|
228
|
-
let formattedPrompt = formatCompletionPrompt(augmentedPrompt, this.formatterOptions);
|
|
229
|
-
formattedPrompt = this.modelProcessor.applyCompletionSpecificProcessing(formattedPrompt);
|
|
230
|
-
stream = await this.process.completion(formattedPrompt, mlxOptions);
|
|
231
|
-
}
|
|
232
|
-
else {
|
|
233
|
-
const messages = formatPromptAsMessages(augmentedPrompt, this.formatterOptions);
|
|
234
|
-
const vlm = this.isVLM();
|
|
235
|
-
let mlxMessages = convertMessages(messages, vlm);
|
|
236
|
-
mlxMessages = this.modelProcessor.applyChatSpecificProcessing(mlxMessages);
|
|
237
|
-
const nativeTools = this.hasNativeToolSupport() && tools?.length ? tools : undefined;
|
|
238
|
-
const images = vlm
|
|
239
|
-
? messages.flatMap(m => 'content' in m && !isToolResult(m) ? extractImagePaths(m.content) : [])
|
|
240
|
-
: [];
|
|
241
|
-
// Cache: chat APIのみ、以下の条件を全て満たす場合にキャッシュを使用
|
|
242
|
-
// - options.cache !== false(呼び出し側が明示的に無効化していない)
|
|
243
|
-
// - trustRemoteCode未指定(明示的なtrue/falseどちらもapply_chat_template kwargsに影響)
|
|
244
|
-
let cachePath;
|
|
245
|
-
let cacheTrimTokens;
|
|
246
|
-
let cacheWriteTokens = 0;
|
|
247
|
-
const cacheGrowthBefore = this.cacheController instanceof MlxCacheController
|
|
248
|
-
? this.cacheController.getStats().cacheGrowthTokens
|
|
249
|
-
: 0;
|
|
250
|
-
const trustRemoteCode = mlxOptions.trustRemoteCode;
|
|
251
|
-
if (this.cacheController && options?.cache !== false && trustRemoteCode === undefined) {
|
|
252
|
-
const prefix = extractCacheablePrefix(augmentedPrompt);
|
|
253
|
-
const hasCacheableContent = prefix.instructions.length > 0 ||
|
|
254
|
-
prefix.data.length > 0;
|
|
255
|
-
if (hasCacheableContent) {
|
|
256
|
-
const cacheStart = performance.now();
|
|
257
|
-
const handle = await this.cacheController.prepare({
|
|
258
|
-
model: this.model,
|
|
259
|
-
instructions: prefix.instructions,
|
|
260
|
-
data: prefix.data,
|
|
261
|
-
tools: nativeTools ? options.tools : undefined,
|
|
262
|
-
reasoningEffort: options?.reasoningEffort,
|
|
263
|
-
readOnly: options?.cache === 'read-only',
|
|
264
|
-
});
|
|
265
|
-
cachePath = handle.ref || undefined;
|
|
266
|
-
cacheTrimTokens = handle.trimTokens;
|
|
267
|
-
if (cachePath) {
|
|
268
|
-
this.queryLogger.log.debug(`cache prepare ${(performance.now() - cacheStart).toFixed(0)}ms`, `(${prefix.instructions.length}i+${prefix.data.length}d)`, cacheTrimTokens != null ? `trim=${cacheTrimTokens}` : '');
|
|
269
|
-
}
|
|
270
|
-
}
|
|
271
|
-
}
|
|
272
|
-
if (this.cacheController instanceof MlxCacheController) {
|
|
273
|
-
cacheWriteTokens = Math.max(0, this.cacheController.getStats().cacheGrowthTokens - cacheGrowthBefore);
|
|
274
|
-
}
|
|
275
|
-
stream = await this.process.chat(mlxMessages, undefined, mlxOptions, nativeTools, images.length > 0 ? images : undefined, images.length > 0 ? this.maxImageSize : undefined, options?.reasoningEffort, cachePath, cacheTrimTokens);
|
|
276
|
-
const cacheTokensUsed = cachePath
|
|
277
|
-
? (cacheTrimTokens ?? (this.cacheController instanceof MlxCacheController
|
|
278
|
-
? this.cacheController.readCacheTokenCount(cachePath) : 0))
|
|
279
|
-
: 0;
|
|
280
|
-
return { stream, cacheTokensUsed, cacheWriteTokens };
|
|
281
|
-
}
|
|
282
|
-
return { stream, cacheTokensUsed: 0, cacheWriteTokens: 0 };
|
|
283
|
-
}
|
|
284
|
-
/**
|
|
285
|
-
* Query the AI model with a compiled prompt
|
|
286
|
-
*/
|
|
287
|
-
async query(prompt, options) {
|
|
288
|
-
// Use streamQuery for consistency with other drivers
|
|
289
|
-
const { stream, result } = await this.streamQuery(prompt, options);
|
|
290
|
-
// Consume the stream to trigger completion
|
|
291
|
-
// This is necessary because the result promise only resolves when the stream is fully consumed
|
|
292
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
293
|
-
for await (const _chunk of stream) {
|
|
294
|
-
// Just consume the stream, don't need to do anything with the chunks
|
|
295
|
-
}
|
|
296
|
-
return result;
|
|
50
|
+
get defaultOptions() {
|
|
51
|
+
return super.defaultOptions;
|
|
297
52
|
}
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
*/
|
|
301
|
-
async streamQuery(prompt, options) {
|
|
302
|
-
await this.ensureInitialized();
|
|
303
|
-
const signal = options?.signal;
|
|
304
|
-
if (isAborted(signal)) {
|
|
305
|
-
return createAbortedStreamResult(this.queryLogger.collect());
|
|
306
|
-
}
|
|
307
|
-
let abortRequested = false;
|
|
308
|
-
const cleanupAbort = watchAbortSignal(signal, () => {
|
|
309
|
-
abortRequested = true;
|
|
310
|
-
this.process.cancelActiveRequest();
|
|
311
|
-
});
|
|
312
|
-
const checkAborted = () => abortRequested || isAborted(signal);
|
|
313
|
-
// Merge options (only override if explicitly provided)
|
|
314
|
-
const mlxOptions = {
|
|
315
|
-
...this.defaultOptions,
|
|
316
|
-
...(options?.maxTokens !== undefined && { maxTokens: options.maxTokens }),
|
|
317
|
-
...(options?.temperature !== undefined && { temperature: options.temperature }),
|
|
318
|
-
...(options?.topP !== undefined && { topP: options.topP }),
|
|
319
|
-
...(options?.topK !== undefined && { topK: options.topK }),
|
|
320
|
-
};
|
|
321
|
-
this.queryLogger.mark(mlxOptions);
|
|
322
|
-
const queryStart = performance.now();
|
|
323
|
-
const { stream, cacheTokensUsed, cacheWriteTokens } = await this.executeQuery(prompt, mlxOptions, options);
|
|
324
|
-
if (checkAborted()) {
|
|
325
|
-
this.process.cancelActiveRequest();
|
|
326
|
-
}
|
|
327
|
-
const streamStart = performance.now();
|
|
328
|
-
this.queryLogger.log.debug(`setup ${(streamStart - queryStart).toFixed(0)}ms`);
|
|
329
|
-
const { iterable, completion } = createStreamIterable(stream, checkAborted);
|
|
330
|
-
const queryLogger = this.queryLogger;
|
|
331
|
-
let firstChunkTime = 0;
|
|
332
|
-
const wrappedIterable = {
|
|
333
|
-
[Symbol.asyncIterator]() {
|
|
334
|
-
const inner = iterable[Symbol.asyncIterator]();
|
|
335
|
-
let firstChunk = true;
|
|
336
|
-
return {
|
|
337
|
-
async next() {
|
|
338
|
-
if (checkAborted()) {
|
|
339
|
-
void inner.return?.();
|
|
340
|
-
return { done: true, value: undefined };
|
|
341
|
-
}
|
|
342
|
-
const result = await inner.next();
|
|
343
|
-
if (!result.done) {
|
|
344
|
-
if (firstChunk) {
|
|
345
|
-
firstChunk = false;
|
|
346
|
-
firstChunkTime = performance.now();
|
|
347
|
-
queryLogger.log.debug(`TTFT ${(firstChunkTime - streamStart).toFixed(0)}ms`);
|
|
348
|
-
}
|
|
349
|
-
}
|
|
350
|
-
if (result.done) {
|
|
351
|
-
const now = performance.now();
|
|
352
|
-
if (firstChunkTime > 0) {
|
|
353
|
-
const genMs = now - firstChunkTime;
|
|
354
|
-
queryLogger.log.debug(`generation ${genMs.toFixed(0)}ms (query total ${(now - queryStart).toFixed(0)}ms)`);
|
|
355
|
-
}
|
|
356
|
-
else {
|
|
357
|
-
queryLogger.log.debug(`query total ${(performance.now() - queryStart).toFixed(0)}ms`);
|
|
358
|
-
}
|
|
359
|
-
}
|
|
360
|
-
return result;
|
|
361
|
-
},
|
|
362
|
-
async return(value) {
|
|
363
|
-
cleanupAbort();
|
|
364
|
-
return inner.return?.(value) ?? { done: true, value: undefined };
|
|
365
|
-
},
|
|
366
|
-
async throw(e) {
|
|
367
|
-
cleanupAbort();
|
|
368
|
-
return inner.throw?.(e) ?? { done: true, value: undefined };
|
|
369
|
-
},
|
|
370
|
-
};
|
|
371
|
-
},
|
|
372
|
-
};
|
|
373
|
-
const cacheController = this.cacheController;
|
|
374
|
-
const resultPromise = completion
|
|
375
|
-
.then(({ content, meta, error }) => {
|
|
376
|
-
const aborted = checkAborted();
|
|
377
|
-
if (error && !aborted) {
|
|
378
|
-
this.queryLogger.log.error('Stream error:', error.message);
|
|
379
|
-
throw error;
|
|
380
|
-
}
|
|
381
|
-
if (cacheController instanceof MlxCacheController && meta.prompt_tokens != null) {
|
|
382
|
-
cacheController.recordPromptTokens(meta.prompt_tokens, cacheTokensUsed);
|
|
383
|
-
}
|
|
384
|
-
if (meta.generation_tokens != null && firstChunkTime > 0) {
|
|
385
|
-
const genMs = performance.now() - firstChunkTime;
|
|
386
|
-
const actualTps = (meta.generation_tokens / genMs * 1000).toFixed(1);
|
|
387
|
-
this.queryLogger.log.debug(`${meta.generation_tokens} tokens, ${actualTps} tok/s`);
|
|
388
|
-
}
|
|
389
|
-
const hasTools = options?.tools && options.tools.length > 0;
|
|
390
|
-
const responseProcessor = selectResponseProcessor(this.model, this.runtimeInfo, { enableToolParsing: !!hasTools });
|
|
391
|
-
const parsed = responseProcessor(content);
|
|
392
|
-
const finalContent = parsed.content;
|
|
393
|
-
const thinkingContent = parsed.thinkingContent;
|
|
394
|
-
const toolCalls = parsed.toolCalls;
|
|
395
|
-
if (thinkingContent) {
|
|
396
|
-
this.queryLogger.log.verbose('Thinking content:', thinkingContent);
|
|
397
|
-
}
|
|
398
|
-
let structuredOutput;
|
|
399
|
-
if (prompt.metadata?.outputSchema && finalContent) {
|
|
400
|
-
const extracted = extractJSON(finalContent, { multiple: false });
|
|
401
|
-
if (extracted.source !== 'none' && extracted.data !== null) {
|
|
402
|
-
structuredOutput = extracted.data;
|
|
403
|
-
}
|
|
404
|
-
}
|
|
405
|
-
const finishReason = aborted
|
|
406
|
-
? 'error'
|
|
407
|
-
: toolCalls
|
|
408
|
-
? 'tool_calls'
|
|
409
|
-
: 'stop';
|
|
410
|
-
return {
|
|
411
|
-
content: finalContent,
|
|
412
|
-
thinkingContent,
|
|
413
|
-
structuredOutput,
|
|
414
|
-
toolCalls,
|
|
415
|
-
finishReason,
|
|
416
|
-
usage: buildQueryUsage({
|
|
417
|
-
promptTokens: meta.prompt_tokens,
|
|
418
|
-
completionTokens: meta.generation_tokens,
|
|
419
|
-
cacheReadTokens: cacheTokensUsed,
|
|
420
|
-
cacheWriteTokens,
|
|
421
|
-
}),
|
|
422
|
-
...this.queryLogger.collect(),
|
|
423
|
-
};
|
|
424
|
-
})
|
|
425
|
-
.finally(() => {
|
|
426
|
-
cleanupAbort();
|
|
427
|
-
});
|
|
428
|
-
return {
|
|
429
|
-
stream: wrappedIterable,
|
|
430
|
-
result: resultPromise,
|
|
431
|
-
};
|
|
53
|
+
set defaultOptions(value) {
|
|
54
|
+
super.defaultOptions = value ?? {};
|
|
432
55
|
}
|
|
433
56
|
/**
|
|
434
57
|
* Get model capabilities (public API)
|
|
@@ -437,51 +60,62 @@ export class MlxDriver {
|
|
|
437
60
|
*/
|
|
438
61
|
async getCapabilities() {
|
|
439
62
|
await this.ensureInitialized();
|
|
440
|
-
|
|
63
|
+
const runtimeInfo = this.getRuntimeInfo();
|
|
64
|
+
if (!runtimeInfo) {
|
|
441
65
|
throw new Error('Failed to retrieve model capabilities');
|
|
442
66
|
}
|
|
443
|
-
// Convert snake_case to camelCase
|
|
444
67
|
return {
|
|
445
|
-
methods:
|
|
446
|
-
specialTokens:
|
|
68
|
+
methods: runtimeInfo.methods,
|
|
69
|
+
specialTokens: runtimeInfo.special_tokens,
|
|
447
70
|
features: {
|
|
448
|
-
hasChatTemplate:
|
|
449
|
-
vocabSize:
|
|
450
|
-
modelMaxLength:
|
|
451
|
-
chatTemplate:
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
71
|
+
hasChatTemplate: runtimeInfo.features.apply_chat_template,
|
|
72
|
+
vocabSize: runtimeInfo.features.vocab_size,
|
|
73
|
+
modelMaxLength: runtimeInfo.features.model_max_length,
|
|
74
|
+
chatTemplate: runtimeInfo.features.chat_template
|
|
75
|
+
? {
|
|
76
|
+
supportedRoles: runtimeInfo.features.chat_template.supported_roles,
|
|
77
|
+
preview: runtimeInfo.features.chat_template.preview,
|
|
78
|
+
constraints: runtimeInfo.features.chat_template.constraints,
|
|
79
|
+
toolCallFormat: runtimeInfo.features.chat_template.tool_call_format
|
|
80
|
+
? {
|
|
81
|
+
toolParserType: runtimeInfo.features.chat_template.tool_call_format.tool_parser_type,
|
|
82
|
+
callStart: runtimeInfo.features.chat_template.tool_call_format.call_start,
|
|
83
|
+
callEnd: runtimeInfo.features.chat_template.tool_call_format.call_end,
|
|
84
|
+
responseStart: runtimeInfo.features.chat_template.tool_call_format.response_start,
|
|
85
|
+
responseEnd: runtimeInfo.features.chat_template.tool_call_format.response_end,
|
|
86
|
+
}
|
|
87
|
+
: undefined,
|
|
88
|
+
}
|
|
89
|
+
: undefined,
|
|
463
90
|
},
|
|
464
|
-
chatRestrictions:
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
91
|
+
chatRestrictions: runtimeInfo.chat_restrictions
|
|
92
|
+
? {
|
|
93
|
+
singleSystemAtStart: runtimeInfo.chat_restrictions.single_system_at_start,
|
|
94
|
+
maxSystemMessages: runtimeInfo.chat_restrictions.max_system_messages,
|
|
95
|
+
alternatingTurns: runtimeInfo.chat_restrictions.alternating_turns,
|
|
96
|
+
requiresUserLast: runtimeInfo.chat_restrictions.requires_user_last,
|
|
97
|
+
allowEmptyMessages: runtimeInfo.chat_restrictions.allow_empty_messages,
|
|
98
|
+
}
|
|
99
|
+
: undefined,
|
|
471
100
|
};
|
|
472
101
|
}
|
|
102
|
+
async close() {
|
|
103
|
+
this.logCacheStats();
|
|
104
|
+
if (this.cacheDisabledForVlm) {
|
|
105
|
+
await this.cacheControllerRaw?.close();
|
|
106
|
+
}
|
|
107
|
+
await super.close();
|
|
108
|
+
}
|
|
473
109
|
logCacheStats() {
|
|
474
|
-
if (
|
|
110
|
+
if (this.cacheDisabledForVlm)
|
|
111
|
+
return;
|
|
112
|
+
if (!(this.cacheControllerRaw instanceof MlxCacheController))
|
|
475
113
|
return;
|
|
476
|
-
const s = this.
|
|
114
|
+
const s = this.cacheControllerRaw.getStats();
|
|
477
115
|
if (s.totalQueries === 0)
|
|
478
116
|
return;
|
|
479
|
-
const queryBreakdown = s.incremental + s.fresh > 0
|
|
480
|
-
|
|
481
|
-
: '';
|
|
482
|
-
const parts = [
|
|
483
|
-
`cache stats: ${s.totalQueries} queries${queryBreakdown}`,
|
|
484
|
-
];
|
|
117
|
+
const queryBreakdown = s.incremental + s.fresh > 0 ? ` (incremental ${s.incremental}, fresh ${s.fresh})` : '';
|
|
118
|
+
const parts = [`cache stats: ${s.totalQueries} queries${queryBreakdown}`];
|
|
485
119
|
if (s.totalPromptTokens > 0) {
|
|
486
120
|
const reusedRate = ((s.prefillReusedTokens / s.totalPromptTokens) * 100).toFixed(0);
|
|
487
121
|
parts.push(`prompt ${s.totalPromptTokens} tokens, ${s.prefillReusedTokens} reused (${reusedRate}%)`);
|
|
@@ -491,13 +125,5 @@ export class MlxDriver {
|
|
|
491
125
|
}
|
|
492
126
|
this.queryLogger.log.verbose(parts.join(' | '));
|
|
493
127
|
}
|
|
494
|
-
/**
|
|
495
|
-
* Close the process
|
|
496
|
-
*/
|
|
497
|
-
async close() {
|
|
498
|
-
this.logCacheStats();
|
|
499
|
-
await this.cacheController?.close();
|
|
500
|
-
await this.process.exit();
|
|
501
|
-
}
|
|
502
128
|
}
|
|
503
129
|
//# sourceMappingURL=mlx-driver.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mlx-driver.js","sourceRoot":"","sources":["../../src/mlx-ml/mlx-driver.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mlx-driver.js","sourceRoot":"","sources":["../../src/mlx-ml/mlx-driver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mlx-local-inference-adapters.d.ts","sourceRoot":"","sources":["../../src/mlx-ml/mlx-local-inference-adapters.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAE7E,eAAO,MAAM,yBAAyB,EAAE,sBAavC,CAAC"}
|