@modular-prompt/driver 0.4.5

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 (175) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +597 -0
  3. package/dist/anthropic/anthropic-driver.d.ts +47 -0
  4. package/dist/anthropic/anthropic-driver.d.ts.map +1 -0
  5. package/dist/anthropic/anthropic-driver.js +217 -0
  6. package/dist/anthropic/anthropic-driver.js.map +1 -0
  7. package/dist/driver-registry/ai-service.d.ts +43 -0
  8. package/dist/driver-registry/ai-service.d.ts.map +1 -0
  9. package/dist/driver-registry/ai-service.js +77 -0
  10. package/dist/driver-registry/ai-service.js.map +1 -0
  11. package/dist/driver-registry/config-based-factory.d.ts +64 -0
  12. package/dist/driver-registry/config-based-factory.d.ts.map +1 -0
  13. package/dist/driver-registry/config-based-factory.js +90 -0
  14. package/dist/driver-registry/config-based-factory.js.map +1 -0
  15. package/dist/driver-registry/factory-helper.d.ts +49 -0
  16. package/dist/driver-registry/factory-helper.d.ts.map +1 -0
  17. package/dist/driver-registry/factory-helper.js +109 -0
  18. package/dist/driver-registry/factory-helper.js.map +1 -0
  19. package/dist/driver-registry/index.d.ts +9 -0
  20. package/dist/driver-registry/index.d.ts.map +1 -0
  21. package/dist/driver-registry/index.js +8 -0
  22. package/dist/driver-registry/index.js.map +1 -0
  23. package/dist/driver-registry/registry.d.ts +50 -0
  24. package/dist/driver-registry/registry.d.ts.map +1 -0
  25. package/dist/driver-registry/registry.js +208 -0
  26. package/dist/driver-registry/registry.js.map +1 -0
  27. package/dist/driver-registry/types.d.ts +108 -0
  28. package/dist/driver-registry/types.d.ts.map +1 -0
  29. package/dist/driver-registry/types.js +6 -0
  30. package/dist/driver-registry/types.js.map +1 -0
  31. package/dist/echo-driver.d.ts +88 -0
  32. package/dist/echo-driver.d.ts.map +1 -0
  33. package/dist/echo-driver.js +198 -0
  34. package/dist/echo-driver.js.map +1 -0
  35. package/dist/formatter/completion-formatter.d.ts +27 -0
  36. package/dist/formatter/completion-formatter.d.ts.map +1 -0
  37. package/dist/formatter/completion-formatter.js +84 -0
  38. package/dist/formatter/completion-formatter.js.map +1 -0
  39. package/dist/formatter/converter.d.ts +20 -0
  40. package/dist/formatter/converter.d.ts.map +1 -0
  41. package/dist/formatter/converter.js +176 -0
  42. package/dist/formatter/converter.js.map +1 -0
  43. package/dist/formatter/element-formatters/base.d.ts +34 -0
  44. package/dist/formatter/element-formatters/base.d.ts.map +1 -0
  45. package/dist/formatter/element-formatters/base.js +36 -0
  46. package/dist/formatter/element-formatters/base.js.map +1 -0
  47. package/dist/formatter/element-formatters/chunk.d.ts +11 -0
  48. package/dist/formatter/element-formatters/chunk.d.ts.map +1 -0
  49. package/dist/formatter/element-formatters/chunk.js +12 -0
  50. package/dist/formatter/element-formatters/chunk.js.map +1 -0
  51. package/dist/formatter/element-formatters/index.d.ts +14 -0
  52. package/dist/formatter/element-formatters/index.d.ts.map +1 -0
  53. package/dist/formatter/element-formatters/index.js +15 -0
  54. package/dist/formatter/element-formatters/index.js.map +1 -0
  55. package/dist/formatter/element-formatters/json.d.ts +11 -0
  56. package/dist/formatter/element-formatters/json.d.ts.map +1 -0
  57. package/dist/formatter/element-formatters/json.js +27 -0
  58. package/dist/formatter/element-formatters/json.js.map +1 -0
  59. package/dist/formatter/element-formatters/material.d.ts +11 -0
  60. package/dist/formatter/element-formatters/material.d.ts.map +1 -0
  61. package/dist/formatter/element-formatters/material.js +35 -0
  62. package/dist/formatter/element-formatters/material.js.map +1 -0
  63. package/dist/formatter/element-formatters/message.d.ts +13 -0
  64. package/dist/formatter/element-formatters/message.d.ts.map +1 -0
  65. package/dist/formatter/element-formatters/message.js +35 -0
  66. package/dist/formatter/element-formatters/message.js.map +1 -0
  67. package/dist/formatter/element-formatters/registry.d.ts +29 -0
  68. package/dist/formatter/element-formatters/registry.d.ts.map +1 -0
  69. package/dist/formatter/element-formatters/registry.js +82 -0
  70. package/dist/formatter/element-formatters/registry.js.map +1 -0
  71. package/dist/formatter/element-formatters/section.d.ts +18 -0
  72. package/dist/formatter/element-formatters/section.d.ts.map +1 -0
  73. package/dist/formatter/element-formatters/section.js +46 -0
  74. package/dist/formatter/element-formatters/section.js.map +1 -0
  75. package/dist/formatter/element-formatters/string-pattern.d.ts +22 -0
  76. package/dist/formatter/element-formatters/string-pattern.d.ts.map +1 -0
  77. package/dist/formatter/element-formatters/string-pattern.js +124 -0
  78. package/dist/formatter/element-formatters/string-pattern.js.map +1 -0
  79. package/dist/formatter/element-formatters/text.d.ts +11 -0
  80. package/dist/formatter/element-formatters/text.d.ts.map +1 -0
  81. package/dist/formatter/element-formatters/text.js +11 -0
  82. package/dist/formatter/element-formatters/text.js.map +1 -0
  83. package/dist/formatter/formatter.d.ts +24 -0
  84. package/dist/formatter/formatter.d.ts.map +1 -0
  85. package/dist/formatter/formatter.js +252 -0
  86. package/dist/formatter/formatter.js.map +1 -0
  87. package/dist/formatter/types.d.ts +91 -0
  88. package/dist/formatter/types.d.ts.map +1 -0
  89. package/dist/formatter/types.js +2 -0
  90. package/dist/formatter/types.js.map +1 -0
  91. package/dist/google-genai/google-genai-driver.d.ts +67 -0
  92. package/dist/google-genai/google-genai-driver.d.ts.map +1 -0
  93. package/dist/google-genai/google-genai-driver.js +351 -0
  94. package/dist/google-genai/google-genai-driver.js.map +1 -0
  95. package/dist/index.d.ts +17 -0
  96. package/dist/index.d.ts.map +1 -0
  97. package/dist/index.js +23 -0
  98. package/dist/index.js.map +1 -0
  99. package/dist/mlx-ml/mlx-driver.d.ts +65 -0
  100. package/dist/mlx-ml/mlx-driver.d.ts.map +1 -0
  101. package/dist/mlx-ml/mlx-driver.js +235 -0
  102. package/dist/mlx-ml/mlx-driver.js.map +1 -0
  103. package/dist/mlx-ml/model-spec/index.d.ts +7 -0
  104. package/dist/mlx-ml/model-spec/index.d.ts.map +1 -0
  105. package/dist/mlx-ml/model-spec/index.js +7 -0
  106. package/dist/mlx-ml/model-spec/index.js.map +1 -0
  107. package/dist/mlx-ml/model-spec/types.d.ts +30 -0
  108. package/dist/mlx-ml/model-spec/types.d.ts.map +1 -0
  109. package/dist/mlx-ml/model-spec/types.js +7 -0
  110. package/dist/mlx-ml/model-spec/types.js.map +1 -0
  111. package/dist/mlx-ml/process/index.d.ts +33 -0
  112. package/dist/mlx-ml/process/index.d.ts.map +1 -0
  113. package/dist/mlx-ml/process/index.js +65 -0
  114. package/dist/mlx-ml/process/index.js.map +1 -0
  115. package/dist/mlx-ml/process/model-handlers.d.ts +58 -0
  116. package/dist/mlx-ml/process/model-handlers.d.ts.map +1 -0
  117. package/dist/mlx-ml/process/model-handlers.js +197 -0
  118. package/dist/mlx-ml/process/model-handlers.js.map +1 -0
  119. package/dist/mlx-ml/process/model-specific.d.ts +35 -0
  120. package/dist/mlx-ml/process/model-specific.d.ts.map +1 -0
  121. package/dist/mlx-ml/process/model-specific.js +35 -0
  122. package/dist/mlx-ml/process/model-specific.js.map +1 -0
  123. package/dist/mlx-ml/process/parameter-mapper.d.ts +17 -0
  124. package/dist/mlx-ml/process/parameter-mapper.d.ts.map +1 -0
  125. package/dist/mlx-ml/process/parameter-mapper.js +91 -0
  126. package/dist/mlx-ml/process/parameter-mapper.js.map +1 -0
  127. package/dist/mlx-ml/process/parameter-validator.d.ts +55 -0
  128. package/dist/mlx-ml/process/parameter-validator.d.ts.map +1 -0
  129. package/dist/mlx-ml/process/parameter-validator.js +203 -0
  130. package/dist/mlx-ml/process/parameter-validator.js.map +1 -0
  131. package/dist/mlx-ml/process/process-communication.d.ts +25 -0
  132. package/dist/mlx-ml/process/process-communication.d.ts.map +1 -0
  133. package/dist/mlx-ml/process/process-communication.js +117 -0
  134. package/dist/mlx-ml/process/process-communication.js.map +1 -0
  135. package/dist/mlx-ml/process/queue.d.ts +30 -0
  136. package/dist/mlx-ml/process/queue.d.ts.map +1 -0
  137. package/dist/mlx-ml/process/queue.js +147 -0
  138. package/dist/mlx-ml/process/queue.js.map +1 -0
  139. package/dist/mlx-ml/process/types.d.ts +97 -0
  140. package/dist/mlx-ml/process/types.d.ts.map +1 -0
  141. package/dist/mlx-ml/process/types.js +2 -0
  142. package/dist/mlx-ml/process/types.js.map +1 -0
  143. package/dist/mlx-ml/types.d.ts +66 -0
  144. package/dist/mlx-ml/types.d.ts.map +1 -0
  145. package/dist/mlx-ml/types.js +7 -0
  146. package/dist/mlx-ml/types.js.map +1 -0
  147. package/dist/ollama/ollama-driver.d.ts +15 -0
  148. package/dist/ollama/ollama-driver.d.ts.map +1 -0
  149. package/dist/ollama/ollama-driver.js +15 -0
  150. package/dist/ollama/ollama-driver.js.map +1 -0
  151. package/dist/openai/openai-driver.d.ts +71 -0
  152. package/dist/openai/openai-driver.d.ts.map +1 -0
  153. package/dist/openai/openai-driver.js +230 -0
  154. package/dist/openai/openai-driver.js.map +1 -0
  155. package/dist/test-driver.d.ts +78 -0
  156. package/dist/test-driver.d.ts.map +1 -0
  157. package/dist/test-driver.js +193 -0
  158. package/dist/test-driver.js.map +1 -0
  159. package/dist/types.d.ts +90 -0
  160. package/dist/types.d.ts.map +1 -0
  161. package/dist/types.js +2 -0
  162. package/dist/types.js.map +1 -0
  163. package/dist/vertexai/vertexai-driver.d.ts +63 -0
  164. package/dist/vertexai/vertexai-driver.d.ts.map +1 -0
  165. package/dist/vertexai/vertexai-driver.js +335 -0
  166. package/dist/vertexai/vertexai-driver.js.map +1 -0
  167. package/package.json +61 -0
  168. package/scripts/download-model.js +40 -0
  169. package/scripts/setup-mlx.js +53 -0
  170. package/src/mlx-ml/python/.python-version +1 -0
  171. package/src/mlx-ml/python/__main__.py +312 -0
  172. package/src/mlx-ml/python/chat_template_constraints.py +164 -0
  173. package/src/mlx-ml/python/pyproject.toml +19 -0
  174. package/src/mlx-ml/python/token_utils.py +262 -0
  175. package/src/mlx-ml/python/uv.lock +1029 -0
@@ -0,0 +1,235 @@
1
+ import { formatPromptAsMessages } from '../formatter/converter.js';
2
+ import { formatCompletionPrompt } from '../formatter/completion-formatter.js';
3
+ import { MlxProcess } from './process/index.js';
4
+ import { createModelSpecificProcessor } from './process/model-specific.js';
5
+ import { extractJSON } from '@modular-prompt/utils';
6
+ // ========================================================================
7
+ // Utility Functions (exported for testing)
8
+ // ========================================================================
9
+ /**
10
+ * Check if the prompt contains MessageElement
11
+ */
12
+ export function hasMessageElement(prompt) {
13
+ const checkElements = (elements) => {
14
+ if (!elements)
15
+ return false;
16
+ return elements.some(element => {
17
+ const el = element;
18
+ return el?.type === 'message';
19
+ });
20
+ };
21
+ return checkElements(prompt.instructions) ||
22
+ checkElements(prompt.data) ||
23
+ checkElements(prompt.output);
24
+ }
25
+ /**
26
+ * Convert ChatMessage format to MLX format
27
+ */
28
+ export function convertMessages(messages) {
29
+ return messages.map(msg => ({
30
+ role: msg.role,
31
+ content: msg.content
32
+ }));
33
+ }
34
+ /**
35
+ * Creates an async iterable from a readable stream with content collection
36
+ */
37
+ function createStreamIterable(stream) {
38
+ const chunks = [];
39
+ let resolveCompletion;
40
+ const completion = new Promise((resolve) => {
41
+ resolveCompletion = resolve;
42
+ });
43
+ // Create async iterable that collects chunks and handles completion
44
+ const iterable = {
45
+ async *[Symbol.asyncIterator]() {
46
+ try {
47
+ for await (const chunk of stream) {
48
+ const str = chunk.toString();
49
+ chunks.push(str);
50
+ yield str;
51
+ }
52
+ // Stream ended successfully
53
+ resolveCompletion({ content: chunks.join(''), error: null });
54
+ }
55
+ catch (error) {
56
+ // Stream errored
57
+ resolveCompletion({ content: chunks.join(''), error: error });
58
+ throw error;
59
+ }
60
+ }
61
+ };
62
+ return { iterable, completion };
63
+ }
64
+ /**
65
+ * MLX ML driver using Python subprocess
66
+ */
67
+ export class MlxDriver {
68
+ process;
69
+ model;
70
+ defaultOptions;
71
+ runtimeInfo = null;
72
+ modelProcessor;
73
+ formatterOptions;
74
+ constructor(config) {
75
+ this.model = config.model;
76
+ this.defaultOptions = config.defaultOptions || {};
77
+ this.formatterOptions = config.formatterOptions || {};
78
+ this.process = new MlxProcess(config.model);
79
+ this.modelProcessor = createModelSpecificProcessor(config.model);
80
+ }
81
+ /**
82
+ * Initialize process and cache runtime info
83
+ */
84
+ async ensureInitialized() {
85
+ // Ensure process is initialized
86
+ await this.process.ensureInitialized();
87
+ // Cache runtime info if not already cached
88
+ if (!this.runtimeInfo) {
89
+ try {
90
+ this.runtimeInfo = await this.process.getCapabilities();
91
+ // Update formatterOptions with special tokens from runtime info
92
+ if (this.runtimeInfo.special_tokens) {
93
+ this.formatterOptions.specialTokens = this.runtimeInfo.special_tokens;
94
+ }
95
+ }
96
+ catch (error) {
97
+ console.error('Failed to get MLX runtime info:', error);
98
+ }
99
+ }
100
+ }
101
+ /**
102
+ * Determine which API to use (chat or completion)
103
+ * Simple logic based on runtime info only
104
+ */
105
+ determineApi(options) {
106
+ const strategy = options?.apiStrategy || 'auto';
107
+ if (strategy === 'force-completion')
108
+ return 'completion';
109
+ if (strategy === 'force-chat')
110
+ return 'chat';
111
+ // auto: use chat if chat template is available
112
+ return this.runtimeInfo?.features.apply_chat_template ? 'chat' : 'completion';
113
+ }
114
+ /**
115
+ * Execute query and return stream
116
+ * Common logic for query and streamQuery
117
+ */
118
+ async executeQuery(prompt, mlxOptions, options) {
119
+ // APIを選択
120
+ const api = this.determineApi(options);
121
+ let stream;
122
+ if (api === 'completion') {
123
+ // completion APIを使用 - 標準フォーマッターを使用
124
+ let formattedPrompt = formatCompletionPrompt(prompt, this.formatterOptions);
125
+ // モデル固有の後処理を適用
126
+ formattedPrompt = this.modelProcessor.applyCompletionSpecificProcessing(formattedPrompt);
127
+ stream = await this.process.completion(formattedPrompt, mlxOptions);
128
+ }
129
+ else {
130
+ // chat APIを使用 - メッセージ変換して処理
131
+ const messages = formatPromptAsMessages(prompt, this.formatterOptions);
132
+ let mlxMessages = convertMessages(messages);
133
+ // chat APIではチャット処理を適用
134
+ mlxMessages = this.modelProcessor.applyChatSpecificProcessing(mlxMessages);
135
+ stream = await this.process.chat(mlxMessages, undefined, mlxOptions);
136
+ }
137
+ return stream;
138
+ }
139
+ /**
140
+ * Query the AI model with a compiled prompt
141
+ */
142
+ async query(prompt, options) {
143
+ // Use streamQuery for consistency with other drivers
144
+ const { stream, result } = await this.streamQuery(prompt, options);
145
+ // Consume the stream to trigger completion
146
+ // This is necessary because the result promise only resolves when the stream is fully consumed
147
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
148
+ for await (const _chunk of stream) {
149
+ // Just consume the stream, don't need to do anything with the chunks
150
+ }
151
+ return result;
152
+ }
153
+ /**
154
+ * Stream query implementation
155
+ */
156
+ async streamQuery(prompt, options) {
157
+ await this.ensureInitialized();
158
+ // Merge options (only override if explicitly provided)
159
+ const mlxOptions = {
160
+ ...this.defaultOptions,
161
+ ...(options?.maxTokens !== undefined && { maxTokens: options.maxTokens }),
162
+ ...(options?.temperature !== undefined && { temperature: options.temperature }),
163
+ ...(options?.topP !== undefined && { topP: options.topP })
164
+ };
165
+ // Use executeQuery for the actual stream generation
166
+ const stream = await this.executeQuery(prompt, mlxOptions, options);
167
+ // Convert stream to async iterable with collection
168
+ const { iterable, completion } = createStreamIterable(stream);
169
+ // Create result promise that waits for stream completion
170
+ const resultPromise = completion.then(({ content, error }) => {
171
+ // If there was an error, throw it
172
+ if (error) {
173
+ throw error;
174
+ }
175
+ // Handle structured output if schema is provided
176
+ let structuredOutput;
177
+ if (prompt.metadata?.outputSchema && content) {
178
+ const extracted = extractJSON(content, { multiple: false });
179
+ if (extracted.source !== 'none' && extracted.data !== null) {
180
+ structuredOutput = extracted.data;
181
+ }
182
+ }
183
+ return {
184
+ content,
185
+ structuredOutput,
186
+ finishReason: 'stop'
187
+ };
188
+ });
189
+ return {
190
+ stream: iterable,
191
+ result: resultPromise
192
+ };
193
+ }
194
+ /**
195
+ * Get model capabilities (public API)
196
+ *
197
+ * Returns runtime information converted to camelCase
198
+ */
199
+ async getCapabilities() {
200
+ await this.ensureInitialized();
201
+ if (!this.runtimeInfo) {
202
+ throw new Error('Failed to retrieve model capabilities');
203
+ }
204
+ // Convert snake_case to camelCase
205
+ return {
206
+ methods: this.runtimeInfo.methods,
207
+ specialTokens: this.runtimeInfo.special_tokens,
208
+ features: {
209
+ hasChatTemplate: this.runtimeInfo.features.apply_chat_template,
210
+ vocabSize: this.runtimeInfo.features.vocab_size,
211
+ modelMaxLength: this.runtimeInfo.features.model_max_length,
212
+ chatTemplate: this.runtimeInfo.features.chat_template ? {
213
+ templateString: this.runtimeInfo.features.chat_template.template_string,
214
+ supportedRoles: this.runtimeInfo.features.chat_template.supported_roles,
215
+ preview: this.runtimeInfo.features.chat_template.preview,
216
+ constraints: this.runtimeInfo.features.chat_template.constraints
217
+ } : undefined
218
+ },
219
+ chatRestrictions: this.runtimeInfo.chat_restrictions ? {
220
+ singleSystemAtStart: this.runtimeInfo.chat_restrictions.single_system_at_start,
221
+ maxSystemMessages: this.runtimeInfo.chat_restrictions.max_system_messages,
222
+ alternatingTurns: this.runtimeInfo.chat_restrictions.alternating_turns,
223
+ requiresUserLast: this.runtimeInfo.chat_restrictions.requires_user_last,
224
+ allowEmptyMessages: this.runtimeInfo.chat_restrictions.allow_empty_messages,
225
+ } : undefined
226
+ };
227
+ }
228
+ /**
229
+ * Close the process
230
+ */
231
+ async close() {
232
+ await this.process.exit();
233
+ }
234
+ }
235
+ //# sourceMappingURL=mlx-driver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mlx-driver.js","sourceRoot":"","sources":["../../src/mlx-ml/mlx-driver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * MLX Driver Model Specification Module
3
+ *
4
+ * 簡素化後のエクスポート
5
+ */
6
+ export type { ChatRestrictions, ApiStrategy } from './types.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mlx-ml/model-spec/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * MLX Driver Model Specification Module
3
+ *
4
+ * 簡素化後のエクスポート
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mlx-ml/model-spec/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * MLX Driver Model Specification Types
3
+ *
4
+ * モデルの特性・制限・振る舞いを定義(簡素化版)
5
+ */
6
+ /**
7
+ * チャットテンプレートの制限事項
8
+ *
9
+ * Note: 現在は未使用だが、将来的にPython側から提供される可能性があるため
10
+ * 型定義として保持
11
+ */
12
+ export interface ChatRestrictions {
13
+ /** systemメッセージは先頭に1つだけ */
14
+ singleSystemAtStart?: boolean;
15
+ /** user/assistantメッセージが交互に出現する必要がある */
16
+ alternatingTurns?: boolean;
17
+ /** 最後のメッセージはuserでなければならない */
18
+ requiresUserLast?: boolean;
19
+ /** システムメッセージの最大数 */
20
+ maxSystemMessages?: number;
21
+ /** 空のメッセージを許可するか */
22
+ allowEmptyMessages?: boolean;
23
+ }
24
+ /**
25
+ * API選択の戦略
26
+ *
27
+ * QueryOptionsのapiStrategyフィールドで使用
28
+ */
29
+ export type ApiStrategy = 'auto' | 'force-chat' | 'force-completion';
30
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/mlx-ml/model-spec/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,0BAA0B;IAC1B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B,uCAAuC;IACvC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B,6BAA6B;IAC7B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B,oBAAoB;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,oBAAoB;IACpB,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED;;;;GAIG;AACH,MAAM,MAAM,WAAW,GACnB,MAAM,GACN,YAAY,GACZ,kBAAkB,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * MLX Driver Model Specification Types
3
+ *
4
+ * モデルの特性・制限・振る舞いを定義(簡素化版)
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/mlx-ml/model-spec/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * MLX Driver 外部インターフェース
3
+ *
4
+ * mlx-ml.tsドライバーからアクセスされるメイン API
5
+ * 機能をモジュール化し、役割を分離
6
+ */
7
+ import { Readable } from 'stream';
8
+ import type { MlxMlModelOptions, MlxMessage, MlxRuntimeInfo, MlxFormatTestResult } from './types.js';
9
+ export type { MlxMlModelOptions, MlxMessage, MlxRuntimeInfo, MlxFormatTestResult };
10
+ export declare class MlxProcess {
11
+ modelName: string;
12
+ private queueManager;
13
+ private processComm;
14
+ constructor(modelName: string);
15
+ /**
16
+ * 初期化(何もしない - 互換性のために残す)
17
+ */
18
+ ensureInitialized(): Promise<void>;
19
+ getCapabilities(): Promise<MlxRuntimeInfo>;
20
+ formatTest(messages: MlxMessage[], options?: {
21
+ primer?: string;
22
+ }): Promise<MlxFormatTestResult>;
23
+ chat(messages: MlxMessage[], primer?: string, options?: MlxMlModelOptions): Promise<Readable>;
24
+ completion(prompt: string, options?: MlxMlModelOptions): Promise<Readable>;
25
+ exit(): Promise<void>;
26
+ getStatus(): {
27
+ modelName: string;
28
+ queueLength: number;
29
+ isStreamingActive: boolean;
30
+ isJsonBuffering: boolean;
31
+ };
32
+ }
33
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +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,EACpB,MAAM,YAAY,CAAC;AAKpB,YAAY,EACV,iBAAiB,EACjB,UAAU,EACV,cAAc,EACd,mBAAmB,EACpB,CAAC;AAEF,qBAAa,UAAU;IACrB,SAAS,EAAE,MAAM,CAAC;IAElB,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,WAAW,CAAuB;gBAE9B,SAAS,EAAE,MAAM;IAmB7B;;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,GAAG,OAAO,CAAC,QAAQ,CAAC;IAM7F,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAM1E,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAK3B,SAAS;;;;;;CAQV"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * MLX Driver 外部インターフェース
3
+ *
4
+ * mlx-ml.tsドライバーからアクセスされるメイン API
5
+ * 機能をモジュール化し、役割を分離
6
+ */
7
+ import { QueueManager } from './queue.js';
8
+ import { ProcessCommunication } from './process-communication.js';
9
+ export class MlxProcess {
10
+ modelName;
11
+ queueManager;
12
+ processComm;
13
+ constructor(modelName) {
14
+ this.modelName = modelName;
15
+ // コールバック設定
16
+ const processCallbacks = {
17
+ onJsonResponse: (jsonData) => this.queueManager.handleJsonResponse(jsonData),
18
+ onRequestCompleted: () => this.queueManager.onRequestCompleted()
19
+ };
20
+ const queueCallbacks = {
21
+ sendToProcess: (data) => this.processComm.sendToProcess(data),
22
+ createNewStream: () => this.processComm.createNewStream()
23
+ };
24
+ // 各コンポーネント初期化
25
+ this.processComm = new ProcessCommunication(modelName, processCallbacks);
26
+ this.queueManager = new QueueManager(queueCallbacks);
27
+ }
28
+ /**
29
+ * 初期化(何もしない - 互換性のために残す)
30
+ */
31
+ async ensureInitialized() {
32
+ // No-op for compatibility
33
+ }
34
+ // API v2.0 Capabilities
35
+ async getCapabilities() {
36
+ return this.queueManager.addCapabilitiesRequest();
37
+ }
38
+ // API v2.0 Format Test
39
+ async formatTest(messages, options) {
40
+ return this.queueManager.addFormatTestRequest(messages, options);
41
+ }
42
+ // API v2.0 Chat - chat APIを直接使用
43
+ async chat(messages, primer, options) {
44
+ // chat APIを直接使用(前処理はドライバーで実施済み)
45
+ return this.queueManager.addChatRequest(messages, primer, options);
46
+ }
47
+ // API v2.0 Completion - completion APIを直接使用
48
+ async completion(prompt, options) {
49
+ // completion APIを直接使用(前処理はドライバーで実施済み)
50
+ return this.queueManager.addCompletionRequest(prompt, options);
51
+ }
52
+ async exit() {
53
+ await this.processComm.exit();
54
+ }
55
+ // デバッグ・ステータス情報
56
+ getStatus() {
57
+ return {
58
+ modelName: this.modelName,
59
+ queueLength: this.queueManager.length,
60
+ isStreamingActive: this.processComm.isStreamingActive(),
61
+ isJsonBuffering: this.processComm.isJsonBuffering()
62
+ };
63
+ }
64
+ }
65
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mlx-ml/process/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,OAAO,EAAE,YAAY,EAAyB,MAAM,YAAY,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAiC,MAAM,4BAA4B,CAAC;AAUjG,MAAM,OAAO,UAAU;IACrB,SAAS,CAAS;IAEV,YAAY,CAAe;IAC3B,WAAW,CAAuB;IAE1C,YAAY,SAAiB;QAC3B,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,CAAC,CAAC;QACzE,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;QAC7E,gCAAgC;QAChC,OAAO,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IACrE,CAAC;IAED,4CAA4C;IAC5C,KAAK,CAAC,UAAU,CAAC,MAAc,EAAE,OAA2B;QAC1D,sCAAsC;QACtC,OAAO,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjE,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"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * モデル固有の処理ハンドラー
3
+ *
4
+ * 各モデル特有のメッセージ変換やプロンプト生成処理を管理
5
+ */
6
+ import type { MlxMessage } from './types.js';
7
+ /**
8
+ * システムメッセージをマージ(末尾の改行をtrim)
9
+ */
10
+ 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
+ */
18
+ export declare function processCodeLlamaChat(messages: MlxMessage[]): MlxMessage[];
19
+ /**
20
+ * Gemma-3用のChat処理
21
+ */
22
+ export declare function processGemmaChat(messages: MlxMessage[]): MlxMessage[];
23
+ /**
24
+ * llm-jp-3.1用のCompletion処理
25
+ * chat_templateに厳密に準拠した形式
26
+ * Note: llm-jp-3.1はforce-completion設定のため、chat APIは使用されない
27
+ */
28
+ export declare function processLlmJpCompletion(prompt: string): string;
29
+ /**
30
+ * Tanuki-8B用のCompletion処理
31
+ */
32
+ export declare function processTanukiCompletion(prompt: string): string;
33
+ /**
34
+ * Gemma-3用のCompletion処理
35
+ */
36
+ export declare function processGemmaCompletion(prompt: string): string;
37
+ /**
38
+ * ELYZA (Llama 2ベース) 用のCompletion処理
39
+ *
40
+ * ELYZAはLlama 2のinstruction formatを使用:
41
+ * <s>[INST] <<SYS>>
42
+ * システムプロンプト
43
+ * <</SYS>>
44
+ *
45
+ * ユーザープロンプト [/INST]
46
+ *
47
+ * Note: <<SYS>>, [INST]などはspecial tokensではなく、複数トークンに分割される
48
+ */
49
+ export declare function processElyzaCompletion(prompt: string): string;
50
+ /**
51
+ * モデル名に基づいてChat処理を選択
52
+ */
53
+ export declare function selectChatProcessor(modelName: string): ((messages: MlxMessage[]) => MlxMessage[]) | null;
54
+ /**
55
+ * モデル名に基づいてCompletion処理を選択
56
+ */
57
+ export declare function selectCompletionProcessor(modelName: string): ((prompt: string) => string) | null;
58
+ //# sourceMappingURL=model-handlers.d.ts.map
@@ -0,0 +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,CAiBpE;AA2BD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,UAAU,EAAE,CA6BtE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,UAAU,EAAE,CAUzE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,UAAU,EAAE,CAUrE;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;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,UAAU,EAAE,CAAC,GAAG,IAAI,CAYxG;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,IAAI,CAmBhG"}