@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.
- package/LICENSE +21 -0
- package/README.md +597 -0
- package/dist/anthropic/anthropic-driver.d.ts +47 -0
- package/dist/anthropic/anthropic-driver.d.ts.map +1 -0
- package/dist/anthropic/anthropic-driver.js +217 -0
- package/dist/anthropic/anthropic-driver.js.map +1 -0
- package/dist/driver-registry/ai-service.d.ts +43 -0
- package/dist/driver-registry/ai-service.d.ts.map +1 -0
- package/dist/driver-registry/ai-service.js +77 -0
- package/dist/driver-registry/ai-service.js.map +1 -0
- package/dist/driver-registry/config-based-factory.d.ts +64 -0
- package/dist/driver-registry/config-based-factory.d.ts.map +1 -0
- package/dist/driver-registry/config-based-factory.js +90 -0
- package/dist/driver-registry/config-based-factory.js.map +1 -0
- package/dist/driver-registry/factory-helper.d.ts +49 -0
- package/dist/driver-registry/factory-helper.d.ts.map +1 -0
- package/dist/driver-registry/factory-helper.js +109 -0
- package/dist/driver-registry/factory-helper.js.map +1 -0
- package/dist/driver-registry/index.d.ts +9 -0
- package/dist/driver-registry/index.d.ts.map +1 -0
- package/dist/driver-registry/index.js +8 -0
- package/dist/driver-registry/index.js.map +1 -0
- package/dist/driver-registry/registry.d.ts +50 -0
- package/dist/driver-registry/registry.d.ts.map +1 -0
- package/dist/driver-registry/registry.js +208 -0
- package/dist/driver-registry/registry.js.map +1 -0
- package/dist/driver-registry/types.d.ts +108 -0
- package/dist/driver-registry/types.d.ts.map +1 -0
- package/dist/driver-registry/types.js +6 -0
- package/dist/driver-registry/types.js.map +1 -0
- package/dist/echo-driver.d.ts +88 -0
- package/dist/echo-driver.d.ts.map +1 -0
- package/dist/echo-driver.js +198 -0
- package/dist/echo-driver.js.map +1 -0
- package/dist/formatter/completion-formatter.d.ts +27 -0
- package/dist/formatter/completion-formatter.d.ts.map +1 -0
- package/dist/formatter/completion-formatter.js +84 -0
- package/dist/formatter/completion-formatter.js.map +1 -0
- package/dist/formatter/converter.d.ts +20 -0
- package/dist/formatter/converter.d.ts.map +1 -0
- package/dist/formatter/converter.js +176 -0
- package/dist/formatter/converter.js.map +1 -0
- package/dist/formatter/element-formatters/base.d.ts +34 -0
- package/dist/formatter/element-formatters/base.d.ts.map +1 -0
- package/dist/formatter/element-formatters/base.js +36 -0
- package/dist/formatter/element-formatters/base.js.map +1 -0
- package/dist/formatter/element-formatters/chunk.d.ts +11 -0
- package/dist/formatter/element-formatters/chunk.d.ts.map +1 -0
- package/dist/formatter/element-formatters/chunk.js +12 -0
- package/dist/formatter/element-formatters/chunk.js.map +1 -0
- package/dist/formatter/element-formatters/index.d.ts +14 -0
- package/dist/formatter/element-formatters/index.d.ts.map +1 -0
- package/dist/formatter/element-formatters/index.js +15 -0
- package/dist/formatter/element-formatters/index.js.map +1 -0
- package/dist/formatter/element-formatters/json.d.ts +11 -0
- package/dist/formatter/element-formatters/json.d.ts.map +1 -0
- package/dist/formatter/element-formatters/json.js +27 -0
- package/dist/formatter/element-formatters/json.js.map +1 -0
- package/dist/formatter/element-formatters/material.d.ts +11 -0
- package/dist/formatter/element-formatters/material.d.ts.map +1 -0
- package/dist/formatter/element-formatters/material.js +35 -0
- package/dist/formatter/element-formatters/material.js.map +1 -0
- package/dist/formatter/element-formatters/message.d.ts +13 -0
- package/dist/formatter/element-formatters/message.d.ts.map +1 -0
- package/dist/formatter/element-formatters/message.js +35 -0
- package/dist/formatter/element-formatters/message.js.map +1 -0
- package/dist/formatter/element-formatters/registry.d.ts +29 -0
- package/dist/formatter/element-formatters/registry.d.ts.map +1 -0
- package/dist/formatter/element-formatters/registry.js +82 -0
- package/dist/formatter/element-formatters/registry.js.map +1 -0
- package/dist/formatter/element-formatters/section.d.ts +18 -0
- package/dist/formatter/element-formatters/section.d.ts.map +1 -0
- package/dist/formatter/element-formatters/section.js +46 -0
- package/dist/formatter/element-formatters/section.js.map +1 -0
- package/dist/formatter/element-formatters/string-pattern.d.ts +22 -0
- package/dist/formatter/element-formatters/string-pattern.d.ts.map +1 -0
- package/dist/formatter/element-formatters/string-pattern.js +124 -0
- package/dist/formatter/element-formatters/string-pattern.js.map +1 -0
- package/dist/formatter/element-formatters/text.d.ts +11 -0
- package/dist/formatter/element-formatters/text.d.ts.map +1 -0
- package/dist/formatter/element-formatters/text.js +11 -0
- package/dist/formatter/element-formatters/text.js.map +1 -0
- package/dist/formatter/formatter.d.ts +24 -0
- package/dist/formatter/formatter.d.ts.map +1 -0
- package/dist/formatter/formatter.js +252 -0
- package/dist/formatter/formatter.js.map +1 -0
- package/dist/formatter/types.d.ts +91 -0
- package/dist/formatter/types.d.ts.map +1 -0
- package/dist/formatter/types.js +2 -0
- package/dist/formatter/types.js.map +1 -0
- package/dist/google-genai/google-genai-driver.d.ts +67 -0
- package/dist/google-genai/google-genai-driver.d.ts.map +1 -0
- package/dist/google-genai/google-genai-driver.js +351 -0
- package/dist/google-genai/google-genai-driver.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +23 -0
- package/dist/index.js.map +1 -0
- package/dist/mlx-ml/mlx-driver.d.ts +65 -0
- package/dist/mlx-ml/mlx-driver.d.ts.map +1 -0
- package/dist/mlx-ml/mlx-driver.js +235 -0
- package/dist/mlx-ml/mlx-driver.js.map +1 -0
- package/dist/mlx-ml/model-spec/index.d.ts +7 -0
- package/dist/mlx-ml/model-spec/index.d.ts.map +1 -0
- package/dist/mlx-ml/model-spec/index.js +7 -0
- package/dist/mlx-ml/model-spec/index.js.map +1 -0
- package/dist/mlx-ml/model-spec/types.d.ts +30 -0
- package/dist/mlx-ml/model-spec/types.d.ts.map +1 -0
- package/dist/mlx-ml/model-spec/types.js +7 -0
- package/dist/mlx-ml/model-spec/types.js.map +1 -0
- package/dist/mlx-ml/process/index.d.ts +33 -0
- package/dist/mlx-ml/process/index.d.ts.map +1 -0
- package/dist/mlx-ml/process/index.js +65 -0
- package/dist/mlx-ml/process/index.js.map +1 -0
- package/dist/mlx-ml/process/model-handlers.d.ts +58 -0
- package/dist/mlx-ml/process/model-handlers.d.ts.map +1 -0
- package/dist/mlx-ml/process/model-handlers.js +197 -0
- package/dist/mlx-ml/process/model-handlers.js.map +1 -0
- package/dist/mlx-ml/process/model-specific.d.ts +35 -0
- package/dist/mlx-ml/process/model-specific.d.ts.map +1 -0
- package/dist/mlx-ml/process/model-specific.js +35 -0
- package/dist/mlx-ml/process/model-specific.js.map +1 -0
- package/dist/mlx-ml/process/parameter-mapper.d.ts +17 -0
- package/dist/mlx-ml/process/parameter-mapper.d.ts.map +1 -0
- package/dist/mlx-ml/process/parameter-mapper.js +91 -0
- package/dist/mlx-ml/process/parameter-mapper.js.map +1 -0
- package/dist/mlx-ml/process/parameter-validator.d.ts +55 -0
- package/dist/mlx-ml/process/parameter-validator.d.ts.map +1 -0
- package/dist/mlx-ml/process/parameter-validator.js +203 -0
- package/dist/mlx-ml/process/parameter-validator.js.map +1 -0
- package/dist/mlx-ml/process/process-communication.d.ts +25 -0
- package/dist/mlx-ml/process/process-communication.d.ts.map +1 -0
- package/dist/mlx-ml/process/process-communication.js +117 -0
- package/dist/mlx-ml/process/process-communication.js.map +1 -0
- package/dist/mlx-ml/process/queue.d.ts +30 -0
- package/dist/mlx-ml/process/queue.d.ts.map +1 -0
- package/dist/mlx-ml/process/queue.js +147 -0
- package/dist/mlx-ml/process/queue.js.map +1 -0
- package/dist/mlx-ml/process/types.d.ts +97 -0
- package/dist/mlx-ml/process/types.d.ts.map +1 -0
- package/dist/mlx-ml/process/types.js +2 -0
- package/dist/mlx-ml/process/types.js.map +1 -0
- package/dist/mlx-ml/types.d.ts +66 -0
- package/dist/mlx-ml/types.d.ts.map +1 -0
- package/dist/mlx-ml/types.js +7 -0
- package/dist/mlx-ml/types.js.map +1 -0
- package/dist/ollama/ollama-driver.d.ts +15 -0
- package/dist/ollama/ollama-driver.d.ts.map +1 -0
- package/dist/ollama/ollama-driver.js +15 -0
- package/dist/ollama/ollama-driver.js.map +1 -0
- package/dist/openai/openai-driver.d.ts +71 -0
- package/dist/openai/openai-driver.d.ts.map +1 -0
- package/dist/openai/openai-driver.js +230 -0
- package/dist/openai/openai-driver.js.map +1 -0
- package/dist/test-driver.d.ts +78 -0
- package/dist/test-driver.d.ts.map +1 -0
- package/dist/test-driver.js +193 -0
- package/dist/test-driver.js.map +1 -0
- package/dist/types.d.ts +90 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/vertexai/vertexai-driver.d.ts +63 -0
- package/dist/vertexai/vertexai-driver.d.ts.map +1 -0
- package/dist/vertexai/vertexai-driver.js +335 -0
- package/dist/vertexai/vertexai-driver.js.map +1 -0
- package/package.json +61 -0
- package/scripts/download-model.js +40 -0
- package/scripts/setup-mlx.js +53 -0
- package/src/mlx-ml/python/.python-version +1 -0
- package/src/mlx-ml/python/__main__.py +312 -0
- package/src/mlx-ml/python/chat_template_constraints.py +164 -0
- package/src/mlx-ml/python/pyproject.toml +19 -0
- package/src/mlx-ml/python/token_utils.py +262 -0
- 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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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"}
|