@modular-prompt/driver 0.11.15 → 0.13.1

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 (122) hide show
  1. package/README.md +25 -0
  2. package/dist/anthropic/anthropic-driver.d.ts +38 -8
  3. package/dist/anthropic/anthropic-driver.d.ts.map +1 -1
  4. package/dist/anthropic/anthropic-driver.js +180 -164
  5. package/dist/anthropic/anthropic-driver.js.map +1 -1
  6. package/dist/cache-controller.d.ts +28 -0
  7. package/dist/cache-controller.d.ts.map +1 -0
  8. package/dist/cache-controller.js +2 -0
  9. package/dist/cache-controller.js.map +1 -0
  10. package/dist/cache-utils.d.ts +20 -0
  11. package/dist/cache-utils.d.ts.map +1 -0
  12. package/dist/cache-utils.js +71 -0
  13. package/dist/cache-utils.js.map +1 -0
  14. package/dist/content-utils.d.ts +9 -0
  15. package/dist/content-utils.d.ts.map +1 -1
  16. package/dist/content-utils.js +47 -0
  17. package/dist/content-utils.js.map +1 -1
  18. package/dist/driver-registry/config-based-factory.d.ts.map +1 -1
  19. package/dist/driver-registry/config-based-factory.js +7 -0
  20. package/dist/driver-registry/config-based-factory.js.map +1 -1
  21. package/dist/driver-registry/factory-helper.d.ts.map +1 -1
  22. package/dist/driver-registry/factory-helper.js +7 -4
  23. package/dist/driver-registry/factory-helper.js.map +1 -1
  24. package/dist/driver-registry/types.d.ts +6 -0
  25. package/dist/driver-registry/types.d.ts.map +1 -1
  26. package/dist/formatter/converter.js +1 -1
  27. package/dist/formatter/converter.js.map +1 -1
  28. package/dist/google-genai/element-converter.d.ts +11 -0
  29. package/dist/google-genai/element-converter.d.ts.map +1 -0
  30. package/dist/google-genai/element-converter.js +126 -0
  31. package/dist/google-genai/element-converter.js.map +1 -0
  32. package/dist/google-genai/google-genai-cache-controller.d.ts +24 -0
  33. package/dist/google-genai/google-genai-cache-controller.d.ts.map +1 -0
  34. package/dist/google-genai/google-genai-cache-controller.js +127 -0
  35. package/dist/google-genai/google-genai-cache-controller.js.map +1 -0
  36. package/dist/google-genai/google-genai-driver.d.ts +5 -29
  37. package/dist/google-genai/google-genai-driver.d.ts.map +1 -1
  38. package/dist/google-genai/google-genai-driver.js +92 -255
  39. package/dist/google-genai/google-genai-driver.js.map +1 -1
  40. package/dist/index.d.ts +4 -0
  41. package/dist/index.d.ts.map +1 -1
  42. package/dist/index.js +3 -0
  43. package/dist/index.js.map +1 -1
  44. package/dist/mlx-ml/mlx-cache-controller.d.ts +66 -0
  45. package/dist/mlx-ml/mlx-cache-controller.d.ts.map +1 -0
  46. package/dist/mlx-ml/mlx-cache-controller.js +600 -0
  47. package/dist/mlx-ml/mlx-cache-controller.js.map +1 -0
  48. package/dist/mlx-ml/mlx-driver.d.ts +13 -8
  49. package/dist/mlx-ml/mlx-driver.d.ts.map +1 -1
  50. package/dist/mlx-ml/mlx-driver.js +202 -143
  51. package/dist/mlx-ml/mlx-driver.js.map +1 -1
  52. package/dist/mlx-ml/mlx-message-utils.d.ts +9 -0
  53. package/dist/mlx-ml/mlx-message-utils.d.ts.map +1 -0
  54. package/dist/mlx-ml/mlx-message-utils.js +71 -0
  55. package/dist/mlx-ml/mlx-message-utils.js.map +1 -0
  56. package/dist/mlx-ml/process/harmony-parser.d.ts +3 -0
  57. package/dist/mlx-ml/process/harmony-parser.d.ts.map +1 -0
  58. package/dist/mlx-ml/process/harmony-parser.js +175 -0
  59. package/dist/mlx-ml/process/harmony-parser.js.map +1 -0
  60. package/dist/mlx-ml/process/index.d.ts +7 -3
  61. package/dist/mlx-ml/process/index.d.ts.map +1 -1
  62. package/dist/mlx-ml/process/index.js +22 -7
  63. package/dist/mlx-ml/process/index.js.map +1 -1
  64. package/dist/mlx-ml/process/model-handlers.d.ts +11 -58
  65. package/dist/mlx-ml/process/model-handlers.d.ts.map +1 -1
  66. package/dist/mlx-ml/process/model-handlers.js +29 -11
  67. package/dist/mlx-ml/process/model-handlers.js.map +1 -1
  68. package/dist/mlx-ml/process/model-specific.d.ts +7 -0
  69. package/dist/mlx-ml/process/model-specific.d.ts.map +1 -1
  70. package/dist/mlx-ml/process/model-specific.js +3 -0
  71. package/dist/mlx-ml/process/model-specific.js.map +1 -1
  72. package/dist/mlx-ml/process/parameter-validator.d.ts.map +1 -1
  73. package/dist/mlx-ml/process/parameter-validator.js +10 -3
  74. package/dist/mlx-ml/process/parameter-validator.js.map +1 -1
  75. package/dist/mlx-ml/process/process-communication.d.ts +3 -0
  76. package/dist/mlx-ml/process/process-communication.d.ts.map +1 -1
  77. package/dist/mlx-ml/process/process-communication.js +13 -0
  78. package/dist/mlx-ml/process/process-communication.js.map +1 -1
  79. package/dist/mlx-ml/process/queue.d.ts +5 -2
  80. package/dist/mlx-ml/process/queue.d.ts.map +1 -1
  81. package/dist/mlx-ml/process/queue.js +103 -15
  82. package/dist/mlx-ml/process/queue.js.map +1 -1
  83. package/dist/mlx-ml/process/response-processor.d.ts +18 -0
  84. package/dist/mlx-ml/process/response-processor.d.ts.map +1 -0
  85. package/dist/mlx-ml/process/response-processor.js +24 -0
  86. package/dist/mlx-ml/process/response-processor.js.map +1 -0
  87. package/dist/mlx-ml/process/types.d.ts +51 -4
  88. package/dist/mlx-ml/process/types.d.ts.map +1 -1
  89. package/dist/mlx-ml/tool-call-parser.d.ts.map +1 -1
  90. package/dist/mlx-ml/tool-call-parser.js +44 -68
  91. package/dist/mlx-ml/tool-call-parser.js.map +1 -1
  92. package/dist/mlx-ml/types.d.ts +1 -0
  93. package/dist/mlx-ml/types.d.ts.map +1 -1
  94. package/dist/openai/openai-driver.d.ts +0 -2
  95. package/dist/openai/openai-driver.d.ts.map +1 -1
  96. package/dist/openai/openai-driver.js.map +1 -1
  97. package/dist/types.d.ts +9 -0
  98. package/dist/types.d.ts.map +1 -1
  99. package/package.json +7 -4
  100. package/src/mlx-ml/python/__main__.py +41 -425
  101. package/src/mlx-ml/python/backends/__init__.py +3 -0
  102. package/src/mlx-ml/python/backends/base.py +84 -0
  103. package/src/mlx-ml/python/backends/mlx_lm.py +202 -0
  104. package/src/mlx-ml/python/backends/mlx_vlm.py +99 -0
  105. package/src/mlx-ml/python/examples/example_basic.py +93 -0
  106. package/src/mlx-ml/python/examples/example_tool_call.py +165 -0
  107. package/src/mlx-ml/python/handlers/__init__.py +6 -0
  108. package/src/mlx-ml/python/handlers/cache.py +81 -0
  109. package/src/mlx-ml/python/handlers/capabilities.py +6 -0
  110. package/src/mlx-ml/python/handlers/chat.py +221 -0
  111. package/src/mlx-ml/python/handlers/completion.py +36 -0
  112. package/src/mlx-ml/python/handlers/format_test.py +70 -0
  113. package/src/mlx-ml/python/handlers/tokenize.py +63 -0
  114. package/src/mlx-ml/python/pyproject.toml +15 -5
  115. package/src/mlx-ml/python/server.py +126 -0
  116. package/src/mlx-ml/python/tests/__init__.py +0 -0
  117. package/src/mlx-ml/python/utils/__init__.py +0 -0
  118. package/src/mlx-ml/python/utils/prompt_builder.py +54 -0
  119. package/src/mlx-ml/python/{token_utils.py → utils/token_utils.py} +13 -5
  120. package/src/mlx-ml/python/uv.lock +299 -57
  121. /package/src/mlx-ml/python/{chat_template_constraints.py → utils/chat_template_constraints.py} +0 -0
  122. /package/src/mlx-ml/python/{vlm_utils.py → utils/vlm_utils.py} +0 -0
@@ -1,16 +1,12 @@
1
1
  import type { AIDriver, QueryOptions, QueryResult, StreamResult } from '../types.js';
2
- import type { FormatterOptions, ChatMessage } from '../formatter/types.js';
3
- import type { MlxMessage, MlxMlModelOptions, MlxModelCapabilities } from './types.js';
2
+ import type { FormatterOptions } from '../formatter/types.js';
3
+ import type { MlxMlModelOptions, MlxModelCapabilities } from './types.js';
4
4
  import type { CompiledPrompt } from '@modular-prompt/core';
5
+ import type { PromptCacheController } from '../cache-controller.js';
5
6
  /**
6
7
  * Check if the prompt contains MessageElement
7
8
  */
8
9
  export declare function hasMessageElement(prompt: CompiledPrompt): boolean;
9
- /**
10
- * Convert ChatMessage format to MLX format
11
- * VLM mode preserves image placeholders as structured content parts
12
- */
13
- export declare function convertMessages(messages: ChatMessage[], vlm?: boolean): MlxMessage[];
14
10
  /**
15
11
  * MLX ML driver configuration
16
12
  */
@@ -22,6 +18,12 @@ export interface MlxDriverConfig {
22
18
  maxImageSize?: number;
23
19
  /** VLMモデルをtext-onlyモードで使用する(VLM判定を抑制) */
24
20
  textOnly?: boolean;
21
+ /** Speculative decoding用のdrafter model名 */
22
+ drafterModel?: string;
23
+ /** Speculative decoding用のdraft block size(デフォルト: モデル依存) */
24
+ draftBlockSize?: number;
25
+ /** 外部で生成したキャッシュコントローラー */
26
+ cacheController?: PromptCacheController;
25
27
  }
26
28
  /**
27
29
  * MLX ML driver using Python subprocess
@@ -35,6 +37,8 @@ export declare class MlxDriver implements AIDriver {
35
37
  private formatterOptions;
36
38
  private maxImageSize;
37
39
  private queryLogger;
40
+ private cacheController?;
41
+ private cacheControllerBound;
38
42
  get defaultOptions(): Partial<MlxMlModelOptions>;
39
43
  set defaultOptions(value: Partial<MlxMlModelOptions>);
40
44
  constructor(config: MlxDriverConfig);
@@ -53,7 +57,7 @@ export declare class MlxDriver implements AIDriver {
53
57
  private determineApi;
54
58
  /**
55
59
  * モデルがnativeツール対応かを判定
56
- * 複数のシグナルから総合的に判定する
60
+ * tool_call_format(Python側検出結果)を唯一の判断基準とする
57
61
  */
58
62
  private hasNativeToolSupport;
59
63
  /**
@@ -75,6 +79,7 @@ export declare class MlxDriver implements AIDriver {
75
79
  * Returns runtime information converted to camelCase
76
80
  */
77
81
  getCapabilities(): Promise<MlxModelCapabilities>;
82
+ private logCacheStats;
78
83
  /**
79
84
  * Close the process
80
85
  */
@@ -1 +1 @@
1
- {"version":3,"file":"mlx-driver.d.ts","sourceRoot":"","sources":["../../src/mlx-ml/mlx-driver.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAA0C,MAAM,aAAa,CAAC;AAE7H,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAI3E,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,oBAAoB,EAAkB,MAAM,YAAY,CAAC;AAGtG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAwB3D;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAYjE;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,GAAG,GAAE,OAAe,GAAG,UAAU,EAAE,CAuD3F;AAMD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC5C,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,iCAAiC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yCAAyC;IACzC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAsCD;;GAEG;AACH,qBAAa,SAAU,YAAW,QAAQ;IACxC,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,eAAe,CAA6B;IACpD,OAAO,CAAC,WAAW,CAA+B;IAClD,OAAO,CAAC,cAAc,CAAC;IACvB,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,WAAW,CAA0B;IAE7C,IAAI,cAAc,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAE/C;IAED,IAAI,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,iBAAiB,CAAC,EAEnD;gBAEW,MAAM,EAAE,eAAe;IASnC;;OAEG;YACW,iBAAiB;IAyB/B;;OAEG;IACH,OAAO,CAAC,KAAK;IAIb;;;OAGG;IACH,OAAO,CAAC,YAAY;IASpB;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAkC5B;;;OAGG;YACW,YAAY;IAwD1B;;OAEG;IACG,KAAK,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC;IAajF;;OAEG;IACG,WAAW,CACf,MAAM,EAAE,cAAc,EACtB,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,YAAY,CAAC;IA+DxB;;;;OAIG;IACG,eAAe,IAAI,OAAO,CAAC,oBAAoB,CAAC;IAsCtD;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7B"}
1
+ {"version":3,"file":"mlx-driver.d.ts","sourceRoot":"","sources":["../../src/mlx-ml/mlx-driver.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAgB,MAAM,aAAa,CAAC;AAEnG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAI9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAI1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAK3D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAQpE;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAYjE;AAMD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC5C,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,iCAAiC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yCAAyC;IACzC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,2CAA2C;IAC3C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,2DAA2D;IAC3D,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,0BAA0B;IAC1B,eAAe,CAAC,EAAE,qBAAqB,CAAC;CACzC;AAyED;;GAEG;AACH,qBAAa,SAAU,YAAW,QAAQ;IACxC,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,eAAe,CAA6B;IACpD,OAAO,CAAC,WAAW,CAA+B;IAClD,OAAO,CAAC,cAAc,CAAC;IACvB,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,WAAW,CAA0B;IAC7C,OAAO,CAAC,eAAe,CAAC,CAAwB;IAChD,OAAO,CAAC,oBAAoB,CAAS;IAErC,IAAI,cAAc,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAE/C;IAED,IAAI,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,iBAAiB,CAAC,EAEnD;gBAEW,MAAM,EAAE,eAAe;IAiBnC;;OAEG;YACW,iBAAiB;IA2C/B;;OAEG;IACH,OAAO,CAAC,KAAK;IAIb;;;OAGG;IACH,OAAO,CAAC,YAAY;IASpB;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAI5B;;;OAGG;YACW,YAAY;IA2F1B;;OAEG;IACG,KAAK,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC;IAajF;;OAEG;IACG,WAAW,CACf,MAAM,EAAE,cAAc,EACtB,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,YAAY,CAAC;IA2HxB;;;;OAIG;IACG,eAAe,IAAI,OAAO,CAAC,oBAAoB,CAAC;IAsCtD,OAAO,CAAC,aAAa;IAqBrB;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAK7B"}
@@ -1,28 +1,18 @@
1
- import { hasToolCalls, isToolResult } from '../types.js';
1
+ import { isToolResult } from '../types.js';
2
2
  import { formatPromptAsMessages } from '../formatter/converter.js';
3
3
  import { formatCompletionPrompt } from '../formatter/completion-formatter.js';
4
4
  import { MlxProcess } from './process/index.js';
5
5
  import { createModelSpecificProcessor, selectApi } from './process/model-specific.js';
6
+ import { selectResponseProcessor } from './process/model-handlers.js';
6
7
  import { extractJSON } from '@modular-prompt/utils';
7
- import { parseToolCalls, formatToolDefinitionsAsText } from './tool-call-parser.js';
8
- import { contentToString, extractImagePaths } from '../content-utils.js';
8
+ import { formatToolDefinitionsAsText } from './tool-call-parser.js';
9
+ import { convertMessages, convertToolDefinitions, extractImagePaths } from './mlx-message-utils.js';
9
10
  import { QueryLogger } from '../query-logger.js';
11
+ import { extractCacheablePrefix } from '../cache-utils.js';
12
+ import { MlxCacheController } from './mlx-cache-controller.js';
10
13
  // ========================================================================
11
14
  // Utility Functions (exported for testing)
12
15
  // ========================================================================
13
- /**
14
- * Convert ToolDefinition to MlxToolDefinition
15
- */
16
- function convertToolDefinitions(tools) {
17
- return tools.map(tool => ({
18
- type: 'function',
19
- function: {
20
- name: tool.name,
21
- description: tool.description,
22
- parameters: tool.parameters
23
- }
24
- }));
25
- }
26
16
  /**
27
17
  * Check if the prompt contains MessageElement
28
18
  */
@@ -39,91 +29,61 @@ export function hasMessageElement(prompt) {
39
29
  checkElements(prompt.data) ||
40
30
  checkElements(prompt.output);
41
31
  }
42
- /**
43
- * Convert ChatMessage format to MLX format
44
- * VLM mode preserves image placeholders as structured content parts
45
- */
46
- export function convertMessages(messages, vlm = false) {
47
- return messages.map(msg => {
48
- // AssistantToolCallMessage - tool_calls付きメッセージ
49
- if (hasToolCalls(msg)) {
50
- return {
51
- role: 'assistant',
52
- content: msg.content,
53
- tool_calls: msg.toolCalls.map(tc => ({
54
- id: tc.id,
55
- type: 'function',
56
- function: {
57
- name: tc.name,
58
- arguments: JSON.stringify(tc.arguments)
59
- }
60
- }))
61
- };
62
- }
63
- // ToolResultMessage - ツール結果メッセージ
64
- if (isToolResult(msg)) {
65
- let content;
66
- if (msg.kind === 'text') {
67
- content = String(msg.value);
68
- }
69
- else if (msg.kind === 'data') {
70
- content = JSON.stringify(msg.value);
71
- }
72
- else {
73
- content = String(msg.value);
74
- }
75
- return {
76
- role: 'tool',
77
- content,
78
- tool_call_id: msg.toolCallId,
79
- name: msg.name
80
- };
81
- }
82
- // StandardChatMessage - 通常メッセージ(VLM対応含む)
83
- if (vlm && Array.isArray(msg.content)) {
84
- const parts = [];
85
- for (const att of msg.content) {
86
- if (att.type === 'image_url' && att.image_url?.url) {
87
- parts.push({ type: 'image' });
88
- }
89
- else if (att.type === 'text' && att.text) {
90
- parts.push({ type: 'text', text: att.text });
91
- }
92
- }
93
- if (parts.length > 0) {
94
- return { role: msg.role, content: parts };
95
- }
96
- }
97
- return {
98
- role: msg.role,
99
- content: contentToString(msg.content)
100
- };
101
- });
32
+ const META_MARKER = '\x1e__META__:';
33
+ function extractStreamMeta(content) {
34
+ const idx = content.lastIndexOf(META_MARKER);
35
+ if (idx === -1)
36
+ return { content, meta: {} };
37
+ const jsonStr = content.slice(idx + META_MARKER.length);
38
+ try {
39
+ return { content: content.slice(0, idx), meta: JSON.parse(jsonStr) };
40
+ }
41
+ catch {
42
+ return { content: content.slice(0, idx), meta: {} };
43
+ }
102
44
  }
103
- /**
104
- * Creates an async iterable from a readable stream with content collection
105
- */
106
45
  function createStreamIterable(stream) {
107
46
  const chunks = [];
108
47
  let resolveCompletion;
109
48
  const completion = new Promise((resolve) => {
110
49
  resolveCompletion = resolve;
111
50
  });
112
- // Create async iterable that collects chunks and handles completion
113
51
  const iterable = {
114
52
  async *[Symbol.asyncIterator]() {
115
53
  try {
54
+ let buffer = '';
55
+ let markerFound = false;
116
56
  for await (const chunk of stream) {
117
57
  const str = chunk.toString();
118
58
  chunks.push(str);
119
- yield str;
59
+ if (markerFound)
60
+ continue;
61
+ buffer += str;
62
+ const markerIdx = buffer.indexOf(META_MARKER);
63
+ if (markerIdx !== -1) {
64
+ const text = buffer.slice(0, markerIdx);
65
+ if (text)
66
+ yield text;
67
+ markerFound = true;
68
+ }
69
+ else {
70
+ const safeLen = buffer.length - (META_MARKER.length - 1);
71
+ if (safeLen > 0) {
72
+ yield buffer.slice(0, safeLen);
73
+ buffer = buffer.slice(safeLen);
74
+ }
75
+ }
120
76
  }
121
- // Stream ended successfully
122
- resolveCompletion({ content: chunks.join(''), error: null });
77
+ if (!markerFound && buffer)
78
+ yield buffer;
79
+ const raw = chunks.join('');
80
+ const { content, meta } = extractStreamMeta(raw);
81
+ resolveCompletion({ content, meta, error: null });
123
82
  }
124
83
  catch (error) {
125
- // Stream errored
126
- resolveCompletion({ content: chunks.join(''), error: error });
84
+ const raw = chunks.join('');
85
+ const { content, meta } = extractStreamMeta(raw);
86
+ resolveCompletion({ content, meta, error: error });
127
87
  throw error;
128
88
  }
129
89
  }
@@ -142,6 +102,8 @@ export class MlxDriver {
142
102
  formatterOptions;
143
103
  maxImageSize;
144
104
  queryLogger = new QueryLogger('MLX');
105
+ cacheController;
106
+ cacheControllerBound = false;
145
107
  get defaultOptions() {
146
108
  return this._defaultOptions;
147
109
  }
@@ -153,8 +115,16 @@ export class MlxDriver {
153
115
  this._defaultOptions = config.defaultOptions || {};
154
116
  this.formatterOptions = config.formatterOptions || {};
155
117
  this.maxImageSize = config.maxImageSize ?? 768;
156
- this.process = new MlxProcess(config.model, { textOnly: config.textOnly });
118
+ this.process = new MlxProcess(config.model, {
119
+ textOnly: config.textOnly,
120
+ drafterModel: config.drafterModel,
121
+ draftBlockSize: config.draftBlockSize
122
+ });
157
123
  this.modelProcessor = createModelSpecificProcessor(config.model);
124
+ this.cacheController = config.cacheController;
125
+ if (config.drafterModel) {
126
+ this.queryLogger.log.info(`Drafter model: ${config.drafterModel}`);
127
+ }
158
128
  }
159
129
  /**
160
130
  * Initialize process and cache runtime info
@@ -175,6 +145,20 @@ export class MlxDriver {
175
145
  chatRestrictions: this.runtimeInfo.chat_restrictions,
176
146
  modelKind: this.runtimeInfo.model_kind,
177
147
  });
148
+ // Bind cache controller if provided and not yet bound
149
+ // NOTE: instanceof guard means VLM check only covers MlxCacheController.
150
+ // A custom PromptCacheController on a VLM model would bypass this — add a
151
+ // model-kind guard here if another implementation is introduced.
152
+ if (this.cacheController instanceof MlxCacheController && !this.cacheControllerBound) {
153
+ if (this.runtimeInfo.model_kind === 'vlm') {
154
+ this.queryLogger.log.info('VLM models do not support prompt caching — cacheController disabled');
155
+ this.cacheController = undefined;
156
+ }
157
+ else {
158
+ this.cacheController.bind(this.process, this.formatterOptions, (msgs) => this.modelProcessor.applyChatSpecificProcessing(msgs));
159
+ this.cacheControllerBound = true;
160
+ }
161
+ }
178
162
  }
179
163
  catch (error) {
180
164
  this.queryLogger.log.error('Failed to get MLX runtime info:', error instanceof Error ? error.message : String(error));
@@ -196,38 +180,10 @@ export class MlxDriver {
196
180
  }
197
181
  /**
198
182
  * モデルがnativeツール対応かを判定
199
- * 複数のシグナルから総合的に判定する
183
+ * tool_call_format(Python側検出結果)を唯一の判断基準とする
200
184
  */
201
185
  hasNativeToolSupport() {
202
- // 1. chat_template 由来の tool_call_format
203
- const toolCallFormat = this.runtimeInfo?.features?.chat_template?.tool_call_format;
204
- if (toolCallFormat?.call_start) {
205
- return true;
206
- }
207
- // 2. special_tokens にtool_call関連トークンが存在するか
208
- if (this.runtimeInfo?.special_tokens) {
209
- const tokens = this.runtimeInfo.special_tokens;
210
- const toolCallKeys = [
211
- 'tool_call', 'tool_call_explicit', 'tool_call_xml',
212
- 'tool_calls_section', 'function_call_tags',
213
- 'longcat_tool_call', 'minimax_tool_call'
214
- ];
215
- for (const key of toolCallKeys) {
216
- const token = tokens[key];
217
- if (token && typeof token === 'object' && 'start' in token) {
218
- return true;
219
- }
220
- }
221
- // Mistral型の単体マーカー
222
- if (tokens['tool_calls_marker']) {
223
- return true;
224
- }
225
- // context-1型の単体終了トークン
226
- if (tokens['tool_call_end']) {
227
- return true;
228
- }
229
- }
230
- return false;
186
+ return !!this.runtimeInfo?.features?.chat_template?.tool_call_format?.call_start;
231
187
  }
232
188
  /**
233
189
  * Execute query and return stream
@@ -242,7 +198,6 @@ export class MlxDriver {
242
198
  let augmentedPrompt = prompt;
243
199
  if (options?.tools && options.tools.length > 0 && (api === 'completion' || !this.hasNativeToolSupport())) {
244
200
  const toolsText = formatToolDefinitionsAsText(options.tools, this.runtimeInfo?.special_tokens, this.runtimeInfo?.features?.chat_template?.tool_call_format);
245
- // instructions の末尾にTextElementとして追加
246
201
  augmentedPrompt = {
247
202
  ...prompt,
248
203
  instructions: [
@@ -251,31 +206,57 @@ export class MlxDriver {
251
206
  ]
252
207
  };
253
208
  }
209
+ // Record all queries, regardless of API mode or cache usage
210
+ this.cacheController?.recordQuery?.();
254
211
  let stream;
255
212
  if (api === 'completion') {
256
- // completion APIを使用 - 標準フォーマッターを使用
257
- // completion APIではtools非対応
258
213
  let formattedPrompt = formatCompletionPrompt(augmentedPrompt, this.formatterOptions);
259
- // モデル固有の後処理を適用
260
214
  formattedPrompt = this.modelProcessor.applyCompletionSpecificProcessing(formattedPrompt);
261
215
  stream = await this.process.completion(formattedPrompt, mlxOptions);
262
216
  }
263
217
  else {
264
- // chat APIを使用 - メッセージ変換して処理
265
218
  const messages = formatPromptAsMessages(augmentedPrompt, this.formatterOptions);
266
219
  const vlm = this.isVLM();
267
220
  let mlxMessages = convertMessages(messages, vlm);
268
- // chat APIではチャット処理を適用
269
221
  mlxMessages = this.modelProcessor.applyChatSpecificProcessing(mlxMessages);
270
- // nativeツール対応の場合のみPythonにtoolsを渡す
271
- const nativeTools = this.hasNativeToolSupport() ? tools : undefined;
272
- // VLMの場合は画像パスを抽出(ファイル読み込み用)
222
+ const nativeTools = this.hasNativeToolSupport() && tools?.length ? tools : undefined;
273
223
  const images = vlm
274
224
  ? messages.flatMap(m => 'content' in m && !isToolResult(m) ? extractImagePaths(m.content) : [])
275
225
  : [];
276
- stream = await this.process.chat(mlxMessages, undefined, mlxOptions, nativeTools, images.length > 0 ? images : undefined, images.length > 0 ? this.maxImageSize : undefined);
226
+ // Cache: chat APIのみ、以下の条件を全て満たす場合にキャッシュを使用
227
+ // - outputSchema未指定(formatPromptAsMessagesがschemaを挿入し、prefixがずれる)
228
+ // - trustRemoteCode未指定(明示的なtrue/falseどちらもapply_chat_template kwargsに影響)
229
+ let cachePath;
230
+ let cacheTrimTokens;
231
+ const trustRemoteCode = mlxOptions.trustRemoteCode;
232
+ if (this.cacheController && !augmentedPrompt.metadata?.outputSchema && trustRemoteCode === undefined) {
233
+ const prefix = extractCacheablePrefix(augmentedPrompt);
234
+ const hasCacheableContent = prefix.instructions.length > 0 ||
235
+ prefix.data.length > 0;
236
+ if (hasCacheableContent) {
237
+ const cacheStart = performance.now();
238
+ const handle = await this.cacheController.prepare({
239
+ model: this.model,
240
+ instructions: prefix.instructions,
241
+ data: prefix.data,
242
+ tools: nativeTools ? options.tools : undefined,
243
+ reasoningEffort: options?.reasoningEffort,
244
+ });
245
+ cachePath = handle.ref || undefined;
246
+ cacheTrimTokens = handle.trimTokens;
247
+ if (cachePath) {
248
+ this.queryLogger.log.debug(`cache prepare ${(performance.now() - cacheStart).toFixed(0)}ms`, `(${prefix.instructions.length}i+${prefix.data.length}d)`, cacheTrimTokens != null ? `trim=${cacheTrimTokens}` : '');
249
+ }
250
+ }
251
+ }
252
+ stream = await this.process.chat(mlxMessages, undefined, mlxOptions, nativeTools, images.length > 0 ? images : undefined, images.length > 0 ? this.maxImageSize : undefined, options?.reasoningEffort, cachePath, cacheTrimTokens);
253
+ const cacheTokensUsed = cachePath
254
+ ? (cacheTrimTokens ?? (this.cacheController instanceof MlxCacheController
255
+ ? this.cacheController.readCacheTokenCount(cachePath) : 0))
256
+ : 0;
257
+ return { stream, cacheTokensUsed };
277
258
  }
278
- return stream;
259
+ return { stream, cacheTokensUsed: 0 };
279
260
  }
280
261
  /**
281
262
  * Query the AI model with a compiled prompt
@@ -302,41 +283,96 @@ export class MlxDriver {
302
283
  ...(options?.maxTokens !== undefined && { maxTokens: options.maxTokens }),
303
284
  ...(options?.temperature !== undefined && { temperature: options.temperature }),
304
285
  ...(options?.topP !== undefined && { topP: options.topP }),
305
- ...(options?.topK !== undefined && { topK: options.topK })
286
+ ...(options?.topK !== undefined && { topK: options.topK }),
306
287
  };
307
288
  this.queryLogger.mark(mlxOptions);
308
289
  // Use executeQuery for the actual stream generation
309
- const stream = await this.executeQuery(prompt, mlxOptions, options);
290
+ const queryStart = performance.now();
291
+ const { stream, cacheTokensUsed } = await this.executeQuery(prompt, mlxOptions, options);
292
+ const streamStart = performance.now();
293
+ this.queryLogger.log.debug(`setup ${(streamStart - queryStart).toFixed(0)}ms`);
310
294
  // Convert stream to async iterable with collection
311
295
  const { iterable, completion } = createStreamIterable(stream);
296
+ // Wrap iterable with phase-separated timing:
297
+ // TTFT: streamStart → first chunk (inference latency, shows cache benefit)
298
+ // generation: first chunk → last chunk (output speed, tok/s)
299
+ // query total: queryStart → last chunk (end-to-end)
300
+ const queryLogger = this.queryLogger;
301
+ let firstChunkTime = 0;
302
+ const wrappedIterable = {
303
+ [Symbol.asyncIterator]() {
304
+ const inner = iterable[Symbol.asyncIterator]();
305
+ let firstChunk = true;
306
+ return {
307
+ async next() {
308
+ const result = await inner.next();
309
+ if (!result.done) {
310
+ if (firstChunk) {
311
+ firstChunk = false;
312
+ firstChunkTime = performance.now();
313
+ queryLogger.log.debug(`TTFT ${(firstChunkTime - streamStart).toFixed(0)}ms`);
314
+ }
315
+ }
316
+ if (result.done) {
317
+ const now = performance.now();
318
+ if (firstChunkTime > 0) {
319
+ const genMs = now - firstChunkTime;
320
+ queryLogger.log.debug(`generation ${genMs.toFixed(0)}ms (query total ${(now - queryStart).toFixed(0)}ms)`);
321
+ }
322
+ else {
323
+ queryLogger.log.debug(`query total ${(performance.now() - queryStart).toFixed(0)}ms`);
324
+ }
325
+ }
326
+ return result;
327
+ },
328
+ async return(value) {
329
+ return inner.return?.(value) ?? { done: true, value: undefined };
330
+ },
331
+ async throw(e) {
332
+ return inner.throw?.(e) ?? { done: true, value: undefined };
333
+ },
334
+ };
335
+ },
336
+ };
312
337
  // Create result promise that waits for stream completion
313
- const resultPromise = completion.then(({ content, error }) => {
338
+ const cacheController = this.cacheController;
339
+ const resultPromise = completion.then(({ content, meta, error }) => {
314
340
  // If there was an error, log and throw it
315
341
  if (error) {
316
342
  this.queryLogger.log.error('Stream error:', error.message);
317
343
  throw error;
318
344
  }
345
+ if (cacheController instanceof MlxCacheController && meta.prompt_tokens != null) {
346
+ cacheController.recordPromptTokens(meta.prompt_tokens, cacheTokensUsed);
347
+ }
348
+ // Log accurate generation stats if available
349
+ if (meta.generation_tokens != null && firstChunkTime > 0) {
350
+ const genMs = performance.now() - firstChunkTime;
351
+ const actualTps = (meta.generation_tokens / genMs * 1000).toFixed(1);
352
+ this.queryLogger.log.debug(`${meta.generation_tokens} tokens, ${actualTps} tok/s`);
353
+ }
354
+ // Response post-processing: thinking抽出 + tool call解析
355
+ const hasTools = options?.tools && options.tools.length > 0;
356
+ const responseProcessor = selectResponseProcessor(this.model, this.runtimeInfo, { enableToolParsing: !!hasTools });
357
+ const parsed = responseProcessor(content);
358
+ let finalContent = parsed.content;
359
+ const thinkingContent = parsed.thinkingContent;
360
+ const toolCalls = parsed.toolCalls;
361
+ if (thinkingContent) {
362
+ this.queryLogger.log.verbose('Thinking content:', thinkingContent);
363
+ }
319
364
  // Handle structured output if schema is provided
320
365
  let structuredOutput;
321
- if (prompt.metadata?.outputSchema && content) {
322
- const extracted = extractJSON(content, { multiple: false });
366
+ if (prompt.metadata?.outputSchema && finalContent) {
367
+ const extracted = extractJSON(finalContent, { multiple: false });
323
368
  if (extracted.source !== 'none' && extracted.data !== null) {
324
369
  structuredOutput = extracted.data;
325
370
  }
326
371
  }
327
- // Tool call detection
328
- let toolCalls;
329
- let finalContent = content;
330
- if (options?.tools && options.tools.length > 0) {
331
- const parseResult = parseToolCalls(content, this.runtimeInfo);
332
- if (parseResult.toolCalls.length > 0) {
333
- toolCalls = parseResult.toolCalls;
334
- finalContent = parseResult.content;
335
- }
336
- }
337
372
  const finishReason = toolCalls ? 'tool_calls' : 'stop';
338
373
  return {
339
374
  content: finalContent,
375
+ thinkingContent,
340
376
  structuredOutput,
341
377
  toolCalls,
342
378
  finishReason,
@@ -344,7 +380,7 @@ export class MlxDriver {
344
380
  };
345
381
  });
346
382
  return {
347
- stream: iterable,
383
+ stream: wrappedIterable,
348
384
  result: resultPromise
349
385
  };
350
386
  }
@@ -388,10 +424,33 @@ export class MlxDriver {
388
424
  } : undefined
389
425
  };
390
426
  }
427
+ logCacheStats() {
428
+ if (!(this.cacheController instanceof MlxCacheController))
429
+ return;
430
+ const s = this.cacheController.getStats();
431
+ if (s.totalQueries === 0)
432
+ return;
433
+ const queryBreakdown = s.incremental + s.fresh > 0
434
+ ? ` (incremental ${s.incremental}, fresh ${s.fresh})`
435
+ : '';
436
+ const parts = [
437
+ `cache stats: ${s.totalQueries} queries${queryBreakdown}`,
438
+ ];
439
+ if (s.totalPromptTokens > 0) {
440
+ const reusedRate = ((s.prefillReusedTokens / s.totalPromptTokens) * 100).toFixed(0);
441
+ parts.push(`prompt ${s.totalPromptTokens} tokens, ${s.prefillReusedTokens} reused (${reusedRate}%)`);
442
+ }
443
+ if (s.cacheGrowthTokens > 0) {
444
+ parts.push(`cache +${s.cacheGrowthTokens} tokens`);
445
+ }
446
+ this.queryLogger.log.verbose(parts.join(' | '));
447
+ }
391
448
  /**
392
449
  * Close the process
393
450
  */
394
451
  async close() {
452
+ this.logCacheStats();
453
+ await this.cacheController?.close();
395
454
  await this.process.exit();
396
455
  }
397
456
  }
@@ -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,9 @@
1
+ import type { ChatMessage } from '../formatter/types.js';
2
+ import type { ToolDefinition } from '../types.js';
3
+ import type { MlxMessage } from './types.js';
4
+ import type { MlxToolDefinition } from './process/types.js';
5
+ import { extractImagePaths } from '../content-utils.js';
6
+ export { extractImagePaths };
7
+ export declare function convertToolDefinitions(tools: ToolDefinition[]): MlxToolDefinition[];
8
+ export declare function convertMessages(messages: ChatMessage[], vlm?: boolean): MlxMessage[];
9
+ //# sourceMappingURL=mlx-message-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mlx-message-utils.d.ts","sourceRoot":"","sources":["../../src/mlx-ml/mlx-message-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAAkB,MAAM,YAAY,CAAC;AAC7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAmB,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAEzE,OAAO,EAAE,iBAAiB,EAAE,CAAC;AAE7B,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,iBAAiB,EAAE,CASnF;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,GAAG,GAAE,OAAe,GAAG,UAAU,EAAE,CAuD3F"}