@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
@@ -0,0 +1,71 @@
1
+ import { hasToolCalls, isToolResult } from '../types.js';
2
+ import { contentToString, extractImagePaths } from '../content-utils.js';
3
+ export { extractImagePaths };
4
+ export function convertToolDefinitions(tools) {
5
+ return tools.map(tool => ({
6
+ type: 'function',
7
+ function: {
8
+ name: tool.name,
9
+ description: tool.description,
10
+ parameters: tool.parameters
11
+ }
12
+ }));
13
+ }
14
+ export function convertMessages(messages, vlm = false) {
15
+ return messages.map(msg => {
16
+ // AssistantToolCallMessage - tool_calls付きメッセージ
17
+ if (hasToolCalls(msg)) {
18
+ return {
19
+ role: 'assistant',
20
+ content: msg.content,
21
+ tool_calls: msg.toolCalls.map(tc => ({
22
+ id: tc.id,
23
+ type: 'function',
24
+ function: {
25
+ name: tc.name,
26
+ arguments: JSON.stringify(tc.arguments)
27
+ }
28
+ }))
29
+ };
30
+ }
31
+ // ToolResultMessage - ツール結果メッセージ
32
+ if (isToolResult(msg)) {
33
+ let content;
34
+ if (msg.kind === 'text') {
35
+ content = String(msg.value);
36
+ }
37
+ else if (msg.kind === 'data') {
38
+ content = JSON.stringify(msg.value);
39
+ }
40
+ else {
41
+ content = String(msg.value);
42
+ }
43
+ return {
44
+ role: 'tool',
45
+ content,
46
+ tool_call_id: msg.toolCallId,
47
+ name: msg.name
48
+ };
49
+ }
50
+ // StandardChatMessage - 通常メッセージ(VLM対応含む)
51
+ if (vlm && Array.isArray(msg.content)) {
52
+ const parts = [];
53
+ for (const att of msg.content) {
54
+ if (att.type === 'image_url' && att.image_url?.url) {
55
+ parts.push({ type: 'image' });
56
+ }
57
+ else if (att.type === 'text' && att.text) {
58
+ parts.push({ type: 'text', text: att.text });
59
+ }
60
+ }
61
+ if (parts.length > 0) {
62
+ return { role: msg.role, content: parts };
63
+ }
64
+ }
65
+ return {
66
+ role: msg.role,
67
+ content: contentToString(msg.content)
68
+ };
69
+ });
70
+ }
71
+ //# sourceMappingURL=mlx-message-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mlx-message-utils.js","sourceRoot":"","sources":["../../src/mlx-ml/mlx-message-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { ResponseProcessor } from './response-processor.js';
2
+ export declare const parseHarmonyResponse: ResponseProcessor;
3
+ //# sourceMappingURL=harmony-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"harmony-parser.d.ts","sourceRoot":"","sources":["../../../src/mlx-ml/process/harmony-parser.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAuB,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAmBtF,eAAO,MAAM,oBAAoB,EAAE,iBAsClC,CAAC"}
@@ -0,0 +1,175 @@
1
+ const START_TOKEN = '<|start|>';
2
+ const END_TOKEN = '<|end|>';
3
+ const RETURN_TOKEN = '<|return|>';
4
+ const CHANNEL_TOKEN = '<|channel|>';
5
+ const MESSAGE_TOKEN = '<|message|>';
6
+ const CALL_TOKEN = '<|call|>';
7
+ const CONSTRAIN_TOKEN = '<|constrain|>';
8
+ const MESSAGE_END_TOKENS = [CALL_TOKEN, END_TOKEN, RETURN_TOKEN];
9
+ const FUNCTION_ROLE_PREFIX = 'assistant to=functions.';
10
+ export const parseHarmonyResponse = (rawText) => {
11
+ const messages = extractHarmonyMessages(rawText);
12
+ const finalParts = [];
13
+ const thinkingParts = [];
14
+ const toolCalls = [];
15
+ for (const message of messages) {
16
+ const channelBase = getChannelBase(message.channel);
17
+ if (message.role.startsWith('functions.') && message.role.includes(' to=assistant')) {
18
+ continue;
19
+ }
20
+ if (channelBase === 'analysis') {
21
+ if (message.content) {
22
+ thinkingParts.push(message.content);
23
+ }
24
+ continue;
25
+ }
26
+ if (channelBase === 'final') {
27
+ if (message.content) {
28
+ finalParts.push(message.content);
29
+ }
30
+ continue;
31
+ }
32
+ const toolCall = parseToolCallMessage(message, toolCalls.length);
33
+ if (toolCall) {
34
+ toolCalls.push(toolCall);
35
+ }
36
+ }
37
+ return {
38
+ content: finalParts.join('\n'),
39
+ thinkingContent: thinkingParts.length > 0 ? thinkingParts.join('\n') : undefined,
40
+ toolCalls: toolCalls.length > 0 ? toolCalls : undefined,
41
+ };
42
+ };
43
+ function extractHarmonyMessages(rawText) {
44
+ const messages = [];
45
+ let cursor = 0;
46
+ // ストリーム出力では最初の <|start|>assistant が含まれない場合がある
47
+ // (chat templateのadd_generation_promptで付与されるため)
48
+ // <|channel|> から始まるテキストを最初のメッセージとして処理
49
+ const firstStart = rawText.indexOf(START_TOKEN);
50
+ const firstChannel = rawText.indexOf(CHANNEL_TOKEN);
51
+ if (firstChannel !== -1 && (firstStart === -1 || firstChannel < firstStart)) {
52
+ const implicitMessage = parseMessageAt(rawText, -START_TOKEN.length, true);
53
+ if (implicitMessage) {
54
+ messages.push(implicitMessage.value);
55
+ cursor = implicitMessage.nextIndex;
56
+ }
57
+ }
58
+ while (cursor < rawText.length) {
59
+ const startIndex = rawText.indexOf(START_TOKEN, cursor);
60
+ if (startIndex === -1) {
61
+ break;
62
+ }
63
+ const message = parseMessageAt(rawText, startIndex);
64
+ if (!message) {
65
+ cursor = startIndex + START_TOKEN.length;
66
+ continue;
67
+ }
68
+ messages.push(message.value);
69
+ cursor = message.nextIndex;
70
+ }
71
+ return messages;
72
+ }
73
+ function parseMessageAt(rawText, startIndex, implicitRole) {
74
+ let role;
75
+ let channelIndex;
76
+ if (implicitRole) {
77
+ // <|start|> が省略されたケース: roleは "assistant" と推定
78
+ role = 'assistant';
79
+ channelIndex = rawText.indexOf(CHANNEL_TOKEN, 0);
80
+ }
81
+ else {
82
+ const roleStart = startIndex + START_TOKEN.length;
83
+ channelIndex = rawText.indexOf(CHANNEL_TOKEN, roleStart);
84
+ if (channelIndex === -1) {
85
+ return null;
86
+ }
87
+ role = rawText.slice(roleStart, channelIndex).trim();
88
+ }
89
+ if (channelIndex === -1) {
90
+ return null;
91
+ }
92
+ const messageIndex = rawText.indexOf(MESSAGE_TOKEN, channelIndex + CHANNEL_TOKEN.length);
93
+ if (messageIndex === -1) {
94
+ return null;
95
+ }
96
+ let channel = rawText.slice(channelIndex + CHANNEL_TOKEN.length, messageIndex);
97
+ channel = stripTrailingConstraint(channel).trim();
98
+ const contentStart = messageIndex + MESSAGE_TOKEN.length;
99
+ const endInfo = findMessageEnd(rawText, contentStart);
100
+ const contentEnd = endInfo?.index ?? rawText.length;
101
+ const content = rawText.slice(contentStart, contentEnd).trim();
102
+ return {
103
+ value: {
104
+ role,
105
+ channel,
106
+ content,
107
+ },
108
+ nextIndex: endInfo ? endInfo.index + endInfo.token.length : rawText.length,
109
+ };
110
+ }
111
+ function stripTrailingConstraint(channel) {
112
+ const constrainIndex = channel.indexOf(CONSTRAIN_TOKEN);
113
+ return constrainIndex === -1 ? channel : channel.slice(0, constrainIndex);
114
+ }
115
+ function findMessageEnd(rawText, contentStart) {
116
+ let nearestIndex = -1;
117
+ let nearestToken = null;
118
+ for (const token of MESSAGE_END_TOKENS) {
119
+ const index = rawText.indexOf(token, contentStart);
120
+ if (index !== -1 && (nearestIndex === -1 || index < nearestIndex)) {
121
+ nearestIndex = index;
122
+ nearestToken = token;
123
+ }
124
+ }
125
+ if (nearestIndex === -1 || nearestToken === null) {
126
+ return null;
127
+ }
128
+ return { index: nearestIndex, token: nearestToken };
129
+ }
130
+ function parseToolCallMessage(message, index) {
131
+ if (!message.role.startsWith(FUNCTION_ROLE_PREFIX)) {
132
+ return null;
133
+ }
134
+ const name = message.role.slice(FUNCTION_ROLE_PREFIX.length).trim();
135
+ if (!name) {
136
+ return null;
137
+ }
138
+ const channelBase = getChannelBase(message.channel);
139
+ if (channelBase !== 'commentary') {
140
+ return null;
141
+ }
142
+ const parsedArguments = parseToolArguments(message.content);
143
+ if (!parsedArguments) {
144
+ return null;
145
+ }
146
+ return {
147
+ id: `harmony_call_${index}`,
148
+ name,
149
+ arguments: parsedArguments,
150
+ };
151
+ }
152
+ function getChannelBase(channel) {
153
+ const trimmed = channel.trim();
154
+ const spaceIndex = trimmed.indexOf(' ');
155
+ return spaceIndex === -1 ? trimmed : trimmed.slice(0, spaceIndex);
156
+ }
157
+ function parseToolArguments(content) {
158
+ if (!content) {
159
+ return {};
160
+ }
161
+ try {
162
+ const parsed = JSON.parse(content);
163
+ if (isRecord(parsed)) {
164
+ return parsed;
165
+ }
166
+ }
167
+ catch {
168
+ return null;
169
+ }
170
+ return null;
171
+ }
172
+ function isRecord(value) {
173
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
174
+ }
175
+ //# sourceMappingURL=harmony-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"harmony-parser.js","sourceRoot":"","sources":["../../../src/mlx-ml/process/harmony-parser.ts"],"names":[],"mappings":"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"}
@@ -5,10 +5,12 @@
5
5
  * 機能をモジュール化し、役割を分離
6
6
  */
7
7
  import { Readable } from 'stream';
8
- import type { MlxMlModelOptions, MlxMessage, MlxRuntimeInfo, MlxFormatTestResult, MlxToolDefinition } from './types.js';
9
- export type { MlxMlModelOptions, MlxMessage, MlxRuntimeInfo, MlxFormatTestResult, MlxToolDefinition };
8
+ import type { MlxMlModelOptions, MlxMessage, MlxRuntimeInfo, MlxFormatTestResult, MlxTokenizeResult, MlxCachePrefillResult, MlxToolDefinition } from './types.js';
9
+ export type { MlxMlModelOptions, MlxMessage, MlxRuntimeInfo, MlxFormatTestResult, MlxTokenizeResult, MlxCachePrefillResult, MlxToolDefinition };
10
10
  export interface MlxProcessOptions {
11
11
  textOnly?: boolean;
12
+ drafterModel?: string;
13
+ draftBlockSize?: number;
12
14
  }
13
15
  export declare class MlxProcess {
14
16
  modelName: string;
@@ -23,7 +25,9 @@ export declare class MlxProcess {
23
25
  formatTest(messages: MlxMessage[], options?: {
24
26
  primer?: string;
25
27
  }): Promise<MlxFormatTestResult>;
26
- chat(messages: MlxMessage[], primer?: string, options?: MlxMlModelOptions, tools?: MlxToolDefinition[], images?: string[], maxImageSize?: number): Promise<Readable>;
28
+ tokenize(messages: MlxMessage[], tools?: MlxToolDefinition[], reasoningEffort?: 'low' | 'medium' | 'high'): Promise<MlxTokenizeResult>;
29
+ cachePrefill(cachePath: string, messages: MlxMessage[], baseCachePath?: string, trimToTokens?: number, prefixOffsets?: number[], prefixHashes?: string[], tools?: MlxToolDefinition[], reasoningEffort?: 'low' | 'medium' | 'high'): Promise<MlxCachePrefillResult>;
30
+ chat(messages: MlxMessage[], primer?: string, options?: MlxMlModelOptions, tools?: MlxToolDefinition[], images?: string[], maxImageSize?: number, reasoningEffort?: 'low' | 'medium' | 'high', cachePath?: string, cacheTrimTokens?: number): Promise<Readable>;
27
31
  completion(prompt: string, options?: MlxMlModelOptions, images?: string[], maxImageSize?: number): Promise<Readable>;
28
32
  exit(): Promise<void>;
29
33
  getStatus(): {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mlx-ml/process/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,KAAK,EACV,iBAAiB,EACjB,UAAU,EACV,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAKpB,YAAY,EACV,iBAAiB,EACjB,UAAU,EACV,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EAClB,CAAC;AAEF,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,qBAAa,UAAU;IACrB,SAAS,EAAE,MAAM,CAAC;IAElB,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,WAAW,CAAuB;gBAE9B,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB;IAmB1D;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAKlC,eAAe,IAAI,OAAO,CAAC,cAAc,CAAC;IAK1C,UAAU,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAK/F,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,EAAE,KAAK,CAAC,EAAE,iBAAiB,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAMpK,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAMpH,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAK3B,SAAS;;;;;;CAQV"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mlx-ml/process/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAElC,OAAO,KAAK,EACV,iBAAiB,EACjB,UAAU,EACV,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,EACrB,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAOpB,YAAY,EACV,iBAAiB,EACjB,UAAU,EACV,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,EACrB,iBAAiB,EAClB,CAAC;AAEF,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,qBAAa,UAAU;IACrB,SAAS,EAAE,MAAM,CAAC;IAElB,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,WAAW,CAAuB;gBAE9B,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB;IA4B1D;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAKlC,eAAe,IAAI,OAAO,CAAC,cAAc,CAAC;IAK1C,UAAU,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAK/F,QAAQ,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,KAAK,CAAC,EAAE,iBAAiB,EAAE,EAAE,eAAe,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAKtI,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,EAAE,KAAK,CAAC,EAAE,iBAAiB,EAAE,EAAE,eAAe,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAKnQ,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,EAAE,KAAK,CAAC,EAAE,iBAAiB,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAK/P,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAKpH,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAK3B,SAAS;;;;;;CAQV"}
@@ -4,8 +4,10 @@
4
4
  * mlx-ml.tsドライバーからアクセスされるメイン API
5
5
  * 機能をモジュール化し、役割を分離
6
6
  */
7
+ import { Logger } from '@modular-prompt/utils';
7
8
  import { QueueManager } from './queue.js';
8
9
  import { ProcessCommunication } from './process-communication.js';
10
+ const logger = new Logger({ prefix: 'MLX', context: 'process' });
9
11
  export class MlxProcess {
10
12
  modelName;
11
13
  queueManager;
@@ -15,7 +17,14 @@ export class MlxProcess {
15
17
  // コールバック設定
16
18
  const processCallbacks = {
17
19
  onJsonResponse: (jsonData) => this.queueManager.handleJsonResponse(jsonData),
18
- onRequestCompleted: () => this.queueManager.onRequestCompleted()
20
+ onRequestCompleted: () => this.queueManager.onRequestCompleted(),
21
+ onProcessExit: (code, signal) => {
22
+ if (code !== 0) {
23
+ const error = new Error(`MLX process exited unexpectedly (code=${code}, signal=${signal})`);
24
+ logger.error(error.message);
25
+ this.queueManager.rejectAll(error);
26
+ }
27
+ },
19
28
  };
20
29
  const queueCallbacks = {
21
30
  sendToProcess: (data) => this.processComm.sendToProcess(data),
@@ -39,14 +48,20 @@ export class MlxProcess {
39
48
  async formatTest(messages, options) {
40
49
  return this.queueManager.addFormatTestRequest(messages, options);
41
50
  }
42
- // API v2.0 Chat - chat APIを直接使用
43
- async chat(messages, primer, options, tools, images, maxImageSize) {
44
- // chat APIを直接使用(前処理はドライバーで実施済み)
45
- return this.queueManager.addChatRequest(messages, primer, options, tools, images, maxImageSize);
51
+ // API v2.0 Tokenize
52
+ async tokenize(messages, tools, reasoningEffort) {
53
+ return this.queueManager.addTokenizeRequest(messages, tools, reasoningEffort);
46
54
  }
47
- // API v2.0 Completion - completion APIを直接使用
55
+ // Cache operations
56
+ async cachePrefill(cachePath, messages, baseCachePath, trimToTokens, prefixOffsets, prefixHashes, tools, reasoningEffort) {
57
+ return this.queueManager.addCachePrefillRequest(cachePath, messages, baseCachePath, trimToTokens, prefixOffsets, prefixHashes, tools, reasoningEffort);
58
+ }
59
+ // API v2.0 Chat
60
+ async chat(messages, primer, options, tools, images, maxImageSize, reasoningEffort, cachePath, cacheTrimTokens) {
61
+ return this.queueManager.addChatRequest(messages, primer, options, tools, images, maxImageSize, reasoningEffort, cachePath, cacheTrimTokens);
62
+ }
63
+ // API v2.0 Completion
48
64
  async completion(prompt, options, images, maxImageSize) {
49
- // completion APIを直接使用(前処理はドライバーで実施済み)
50
65
  return this.queueManager.addCompletionRequest(prompt, options, images, maxImageSize);
51
66
  }
52
67
  async exit() {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mlx-ml/process/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH,OAAO,EAAE,YAAY,EAAyB,MAAM,YAAY,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAiC,MAAM,4BAA4B,CAAC;AAejG,MAAM,OAAO,UAAU;IACrB,SAAS,CAAS;IAEV,YAAY,CAAe;IAC3B,WAAW,CAAuB;IAE1C,YAAY,SAAiB,EAAE,OAA2B;QACxD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAE3B,WAAW;QACX,MAAM,gBAAgB,GAAkC;YACtD,cAAc,EAAE,CAAC,QAAgB,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,QAAQ,CAAC;YACpF,kBAAkB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE;SACjE,CAAC;QAEF,MAAM,cAAc,GAA0B;YAC5C,aAAa,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC;YACrE,eAAe,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE;SAC1D,CAAC;QAEF,cAAc;QACd,IAAI,CAAC,WAAW,GAAG,IAAI,oBAAoB,CAAC,SAAS,EAAE,gBAAgB,EAAE,OAAO,CAAC,CAAC;QAClF,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,CAAC,cAAc,CAAC,CAAC;IACvD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB;QACrB,0BAA0B;IAC5B,CAAC;IAED,wBAAwB;IACxB,KAAK,CAAC,eAAe;QACnB,OAAO,IAAI,CAAC,YAAY,CAAC,sBAAsB,EAAE,CAAC;IACpD,CAAC;IAED,uBAAuB;IACvB,KAAK,CAAC,UAAU,CAAC,QAAsB,EAAE,OAA6B;QACpE,OAAO,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACnE,CAAC;IAED,gCAAgC;IAChC,KAAK,CAAC,IAAI,CAAC,QAAsB,EAAE,MAAe,EAAE,OAA2B,EAAE,KAA2B,EAAE,MAAiB,EAAE,YAAqB;QACpJ,gCAAgC;QAChC,OAAO,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;IAClG,CAAC;IAED,4CAA4C;IAC5C,KAAK,CAAC,UAAU,CAAC,MAAc,EAAE,OAA2B,EAAE,MAAiB,EAAE,YAAqB;QACpG,sCAAsC;QACtC,OAAO,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;IACvF,CAAC;IAGD,KAAK,CAAC,IAAI;QACR,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;IAChC,CAAC;IAED,eAAe;IACf,SAAS;QACP,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM;YACrC,iBAAiB,EAAE,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE;YACvD,eAAe,EAAE,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE;SACpD,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mlx-ml/process/index.ts"],"names":[],"mappings":"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"}
@@ -3,68 +3,12 @@
3
3
  *
4
4
  * 各モデル特有のメッセージ変換やプロンプト生成処理を管理
5
5
  */
6
- import type { MlxMessage } from './types.js';
6
+ import type { MlxMessage, MlxRuntimeInfo } from './types.js';
7
+ import type { ResponseProcessor } from './response-processor.js';
7
8
  /**
8
9
  * システムメッセージをマージ(末尾の改行をtrim)
9
10
  */
10
11
  export declare function mergeSystemMessages(msgs: MlxMessage[]): MlxMessage[];
11
- /**
12
- * Tanuki-8B-dpo-v1用のChat処理
13
- */
14
- export declare function processTanukiChat(messages: MlxMessage[]): MlxMessage[];
15
- /**
16
- * CodeLlama用のChat処理
17
- * userメッセージ補完は applyChatSpecificProcessing で汎用的に処理
18
- */
19
- export declare function processCodeLlamaChat(messages: MlxMessage[]): MlxMessage[];
20
- /**
21
- * Gemma-3用のChat処理
22
- * userメッセージ補完は applyChatSpecificProcessing で汎用的に処理
23
- */
24
- export declare function processGemmaChat(messages: MlxMessage[]): MlxMessage[];
25
- /**
26
- * Gemma-4用のChat処理
27
- * userメッセージ補完は applyChatSpecificProcessing で汎用的に処理
28
- */
29
- export declare function processGemma4Chat(messages: MlxMessage[]): MlxMessage[];
30
- export declare function processGemma4Completion(prompt: string): string;
31
- /**
32
- * llm-jp-3.1用のCompletion処理
33
- * chat_templateに厳密に準拠した形式
34
- * Note: llm-jp-3.1はforce-completion設定のため、chat APIは使用されない
35
- */
36
- export declare function processLlmJpCompletion(prompt: string): string;
37
- /**
38
- * Tanuki-8B用のCompletion処理
39
- */
40
- export declare function processTanukiCompletion(prompt: string): string;
41
- /**
42
- * Gemma-3用のCompletion処理
43
- */
44
- export declare function processGemmaCompletion(prompt: string): string;
45
- /**
46
- * ELYZA (Llama 2ベース) 用のCompletion処理
47
- *
48
- * ELYZAはLlama 2のinstruction formatを使用:
49
- * <s>[INST] <<SYS>>
50
- * システムプロンプト
51
- * <</SYS>>
52
- *
53
- * ユーザープロンプト [/INST]
54
- *
55
- * Note: <<SYS>>, [INST]などはspecial tokensではなく、複数トークンに分割される
56
- */
57
- export declare function processElyzaCompletion(prompt: string): string;
58
- /**
59
- * LFM用のChat処理
60
- * userメッセージ補完は applyChatSpecificProcessing で汎用的に処理
61
- */
62
- export declare function processLfmChat(messages: MlxMessage[]): MlxMessage[];
63
- /**
64
- * Qwen用のChat処理
65
- * userメッセージ補完は applyChatSpecificProcessing で汎用的に処理
66
- */
67
- export declare function processQwenChat(messages: MlxMessage[]): MlxMessage[];
68
12
  /**
69
13
  * モデル名に基づいてChat処理を選択
70
14
  */
@@ -76,4 +20,13 @@ export declare function selectChatProcessor(modelName: string): ((messages: MlxM
76
20
  * 特定モデルのみ専用の後処理を適用する。
77
21
  */
78
22
  export declare function selectCompletionProcessor(modelName: string): ((prompt: string) => string) | null;
23
+ /**
24
+ * レスポンス後処理を選択
25
+ *
26
+ * tool_parser_type ベースの判定を優先し、モデル名はフォールバック。
27
+ * 常にResponseProcessorを返す(nullは返さない)。
28
+ */
29
+ export declare function selectResponseProcessor(modelName: string, runtimeInfo: MlxRuntimeInfo | null, options?: {
30
+ enableToolParsing?: boolean;
31
+ }): ResponseProcessor;
79
32
  //# sourceMappingURL=model-handlers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"model-handlers.d.ts","sourceRoot":"","sources":["../../../src/mlx-ml/process/model-handlers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,UAAU,EAAE,CAwBpE;AA2BD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,UAAU,EAAE,CA6BtE;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,UAAU,EAAE,CAEzE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,UAAU,EAAE,CAErE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,UAAU,EAAE,CAStE;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAK9D;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAU7D;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAG9D;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAG7D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAU7D;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,UAAU,EAAE,CAEnE;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,UAAU,EAAE,CAEpE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,UAAU,EAAE,CAAC,GAAG,IAAI,CAyBxG;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,IAAI,CAahG"}
1
+ {"version":3,"file":"model-handlers.d.ts","sourceRoot":"","sources":["../../../src/mlx-ml/process/model-handlers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAIjE;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,UAAU,EAAE,CAwBpE;AA4KD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,UAAU,EAAE,CAAC,GAAG,IAAI,CAyBxG;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,IAAI,CAahG;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,cAAc,GAAG,IAAI,EAClC,OAAO,CAAC,EAAE;IAAE,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAAE,GACxC,iBAAiB,CAWnB"}
@@ -3,6 +3,8 @@
3
3
  *
4
4
  * 各モデル特有のメッセージ変換やプロンプト生成処理を管理
5
5
  */
6
+ import { createDefaultProcessor } from './response-processor.js';
7
+ import { parseHarmonyResponse } from './harmony-parser.js';
6
8
  /**
7
9
  * システムメッセージをマージ(末尾の改行をtrim)
8
10
  */
@@ -55,7 +57,7 @@ function mergeSystemMessagesRaw(msgs) {
55
57
  /**
56
58
  * Tanuki-8B-dpo-v1用のChat処理
57
59
  */
58
- export function processTanukiChat(messages) {
60
+ function processTanukiChat(messages) {
59
61
  // まずsystemメッセージをマージ(改行を保持)
60
62
  const mergedMessages = mergeSystemMessagesRaw(messages);
61
63
  const result = [];
@@ -86,21 +88,21 @@ export function processTanukiChat(messages) {
86
88
  * CodeLlama用のChat処理
87
89
  * userメッセージ補完は applyChatSpecificProcessing で汎用的に処理
88
90
  */
89
- export function processCodeLlamaChat(messages) {
91
+ function processCodeLlamaChat(messages) {
90
92
  return mergeSystemMessages(messages);
91
93
  }
92
94
  /**
93
95
  * Gemma-3用のChat処理
94
96
  * userメッセージ補完は applyChatSpecificProcessing で汎用的に処理
95
97
  */
96
- export function processGemmaChat(messages) {
98
+ function processGemmaChat(messages) {
97
99
  return mergeSystemMessages(messages);
98
100
  }
99
101
  /**
100
102
  * Gemma-4用のChat処理
101
103
  * userメッセージ補完は applyChatSpecificProcessing で汎用的に処理
102
104
  */
103
- export function processGemma4Chat(messages) {
105
+ function processGemma4Chat(messages) {
104
106
  const msgs = [
105
107
  {
106
108
  role: 'system',
@@ -110,7 +112,7 @@ export function processGemma4Chat(messages) {
110
112
  ];
111
113
  return msgs;
112
114
  }
113
- export function processGemma4Completion(prompt) {
115
+ function processGemma4Completion(prompt) {
114
116
  return [
115
117
  'You are a helpful assistant.',
116
118
  prompt,
@@ -121,7 +123,7 @@ export function processGemma4Completion(prompt) {
121
123
  * chat_templateに厳密に準拠した形式
122
124
  * Note: llm-jp-3.1はforce-completion設定のため、chat APIは使用されない
123
125
  */
124
- export function processLlmJpCompletion(prompt) {
126
+ function processLlmJpCompletion(prompt) {
125
127
  // llm-jpは複数言語の混ぜ書きに弱い傾向があるため、特定の言語を優先しないよう明示的に指示
126
128
  const llmJpSpecificInstruction = '指示は英語・日本語の混ぜ書きになっているが、どちらの言語も同等の指示として十分に理解すること。\n出力は与えられたタスクに対してふさわしい言語を選択する。\n\n';
127
129
  // chat_templateのsystemメッセージと同じ固定文字列(良好な回答を得るために必要な固定プロンプト)
@@ -134,14 +136,14 @@ export function processLlmJpCompletion(prompt) {
134
136
  /**
135
137
  * Tanuki-8B用のCompletion処理
136
138
  */
137
- export function processTanukiCompletion(prompt) {
139
+ function processTanukiCompletion(prompt) {
138
140
  // completion APIではブロック化トークンを使用可能
139
141
  return `### システム:\n${prompt}\n\n### 応答:\n`;
140
142
  }
141
143
  /**
142
144
  * Gemma-3用のCompletion処理
143
145
  */
144
- export function processGemmaCompletion(prompt) {
146
+ function processGemmaCompletion(prompt) {
145
147
  // Gemma-3はchat形式に依存しないcompletion処理が可能
146
148
  return `<start_of_turn>user\n${prompt}<end_of_turn>\n<start_of_turn>model\n`;
147
149
  }
@@ -157,7 +159,7 @@ export function processGemmaCompletion(prompt) {
157
159
  *
158
160
  * Note: <<SYS>>, [INST]などはspecial tokensではなく、複数トークンに分割される
159
161
  */
160
- export function processElyzaCompletion(prompt) {
162
+ function processElyzaCompletion(prompt) {
161
163
  const B_INST = '[INST]';
162
164
  const E_INST = '[/INST]';
163
165
  const B_SYS = '<<SYS>>\n';
@@ -171,14 +173,14 @@ export function processElyzaCompletion(prompt) {
171
173
  * LFM用のChat処理
172
174
  * userメッセージ補完は applyChatSpecificProcessing で汎用的に処理
173
175
  */
174
- export function processLfmChat(messages) {
176
+ function processLfmChat(messages) {
175
177
  return mergeSystemMessages(messages);
176
178
  }
177
179
  /**
178
180
  * Qwen用のChat処理
179
181
  * userメッセージ補完は applyChatSpecificProcessing で汎用的に処理
180
182
  */
181
- export function processQwenChat(messages) {
183
+ function processQwenChat(messages) {
182
184
  return mergeSystemMessages(messages);
183
185
  }
184
186
  /**
@@ -233,4 +235,20 @@ export function selectCompletionProcessor(modelName) {
233
235
  // デフォルト: 汎用フォーマッタで動作する
234
236
  return (prompt) => prompt;
235
237
  }
238
+ /**
239
+ * レスポンス後処理を選択
240
+ *
241
+ * tool_parser_type ベースの判定を優先し、モデル名はフォールバック。
242
+ * 常にResponseProcessorを返す(nullは返さない)。
243
+ */
244
+ export function selectResponseProcessor(modelName, runtimeInfo, options) {
245
+ const parserType = runtimeInfo?.features?.chat_template?.tool_call_format?.tool_parser_type;
246
+ if (parserType === 'harmony') {
247
+ return parseHarmonyResponse;
248
+ }
249
+ if (modelName.includes('llm-jp-4')) {
250
+ return parseHarmonyResponse;
251
+ }
252
+ return createDefaultProcessor(runtimeInfo, options);
253
+ }
236
254
  //# sourceMappingURL=model-handlers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"model-handlers.js","sourceRoot":"","sources":["../../../src/mlx-ml/process/model-handlers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model-handlers.js","sourceRoot":"","sources":["../../../src/mlx-ml/process/model-handlers.ts"],"names":[],"mappings":"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"}
@@ -31,6 +31,12 @@ export interface ModelSpecificProcessor {
31
31
  * Completion API用のモデル固有プロセッサが存在するか
32
32
  */
33
33
  hasCompletionProcessor(): boolean;
34
+ /**
35
+ * Chat API用のモデル固有プロセッサが存在するか
36
+ * true の場合、chatProcessor はメッセージ全体の文脈に依存する変換を行うため
37
+ * サブセットへの適用は prefix 安定性を保証しない
38
+ */
39
+ hasChatProcessor(): boolean;
34
40
  /**
35
41
  * runtimeInfo取得後に制約・モデル情報を反映
36
42
  */
@@ -63,6 +69,7 @@ export declare class DefaultModelSpecificProcessor implements ModelSpecificProce
63
69
  * Completion API用のモデル固有プロセッサが存在するか
64
70
  */
65
71
  hasCompletionProcessor(): boolean;
72
+ hasChatProcessor(): boolean;
66
73
  /**
67
74
  * Completion API用のモデル固有処理
68
75
  * モデルごとにブロック化トークンやプロンプトフォーマットを適用