llmjs2 0.0.2 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +486 -1
- package/dist/agent.d.ts +80 -0
- package/dist/agent.d.ts.map +1 -0
- package/dist/agent.js +189 -0
- package/dist/agent.js.map +1 -0
- package/dist/index.d.ts +74 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +191 -0
- package/dist/index.js.map +1 -0
- package/dist/providers/base.d.ts +58 -0
- package/dist/providers/base.d.ts.map +1 -0
- package/dist/providers/base.js +149 -0
- package/dist/providers/base.js.map +1 -0
- package/dist/providers/index.d.ts +8 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +7 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/ollama.d.ts +42 -0
- package/dist/providers/ollama.d.ts.map +1 -0
- package/dist/providers/ollama.js +260 -0
- package/dist/providers/ollama.js.map +1 -0
- package/dist/providers/openai.d.ts +38 -0
- package/dist/providers/openai.d.ts.map +1 -0
- package/dist/providers/openai.js +289 -0
- package/dist/providers/openai.js.map +1 -0
- package/dist/types.d.ts +182 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/package.json +44 -10
- package/src/agent.ts +285 -0
- package/src/index.ts +268 -0
- package/src/providers/base.ts +216 -0
- package/src/providers/index.ts +8 -0
- package/src/providers/ollama.ts +429 -0
- package/src/providers/openai.ts +485 -0
- package/src/types.ts +231 -0
- package/llmjs.js +0 -61
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenAI provider implementation
|
|
3
|
+
*/
|
|
4
|
+
import https from 'https';
|
|
5
|
+
import http from 'http';
|
|
6
|
+
import { URL } from 'url';
|
|
7
|
+
import { BaseProvider, validateCompletionRequest, withRetry, LLMError, } from './base.js';
|
|
8
|
+
/**
|
|
9
|
+
* OpenAI Provider implementation
|
|
10
|
+
*/
|
|
11
|
+
export class OpenAIProvider extends BaseProvider {
|
|
12
|
+
constructor(config) {
|
|
13
|
+
super(config);
|
|
14
|
+
this.baseUrl = 'https://api.openai.com/v1';
|
|
15
|
+
if (!config.apiKey) {
|
|
16
|
+
throw new Error('OpenAI API key is required');
|
|
17
|
+
}
|
|
18
|
+
this.apiKey = config.apiKey;
|
|
19
|
+
if (config.baseUrl) {
|
|
20
|
+
this.baseUrl = config.baseUrl;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Parse model string (e.g., 'openai/gpt-4' -> 'gpt-4')
|
|
25
|
+
*/
|
|
26
|
+
parseModel(model) {
|
|
27
|
+
if (model.startsWith('openai/')) {
|
|
28
|
+
return model.slice(7); // Remove 'openai/' prefix
|
|
29
|
+
}
|
|
30
|
+
return model;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Validate configuration
|
|
34
|
+
*/
|
|
35
|
+
async validate() {
|
|
36
|
+
try {
|
|
37
|
+
// Make a simple request to verify API key
|
|
38
|
+
await this.makeRequest('/models', 'GET');
|
|
39
|
+
this.logger('info', 'OpenAI API validation successful');
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
throw new LLMError(`OpenAI validation failed: ${error instanceof Error ? error.message : String(error)}`, 'VALIDATION_FAILED');
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Create a completion
|
|
47
|
+
*/
|
|
48
|
+
async complete(request) {
|
|
49
|
+
validateCompletionRequest(request);
|
|
50
|
+
const model = this.parseModel(request.model);
|
|
51
|
+
return withRetry(async () => {
|
|
52
|
+
const openaiRequest = {
|
|
53
|
+
model,
|
|
54
|
+
messages: request.messages.map((msg) => ({
|
|
55
|
+
role: msg.role,
|
|
56
|
+
content: msg.content,
|
|
57
|
+
})),
|
|
58
|
+
};
|
|
59
|
+
// Add optional parameters
|
|
60
|
+
if (request.maxTokens)
|
|
61
|
+
openaiRequest.max_tokens = request.maxTokens;
|
|
62
|
+
if (request.temperature !== undefined)
|
|
63
|
+
openaiRequest.temperature = request.temperature;
|
|
64
|
+
if (request.topP !== undefined)
|
|
65
|
+
openaiRequest.top_p = request.topP;
|
|
66
|
+
if (request.frequencyPenalty !== undefined)
|
|
67
|
+
openaiRequest.frequency_penalty = request.frequencyPenalty;
|
|
68
|
+
if (request.presencePenalty !== undefined)
|
|
69
|
+
openaiRequest.presence_penalty = request.presencePenalty;
|
|
70
|
+
if (request.stop)
|
|
71
|
+
openaiRequest.stop = request.stop;
|
|
72
|
+
if (request.tools)
|
|
73
|
+
openaiRequest.tools = request.tools;
|
|
74
|
+
if (request.toolChoice)
|
|
75
|
+
openaiRequest.tool_choice = request.toolChoice;
|
|
76
|
+
this.logger('debug', 'OpenAI completion request', {
|
|
77
|
+
model,
|
|
78
|
+
messageCount: request.messages.length,
|
|
79
|
+
});
|
|
80
|
+
const response = await this.makeRequest('/chat/completions', 'POST', openaiRequest, request);
|
|
81
|
+
if (!response.choices || response.choices.length === 0) {
|
|
82
|
+
throw new LLMError('No choices in OpenAI response', 'NO_CHOICES');
|
|
83
|
+
}
|
|
84
|
+
const choice = response.choices[0];
|
|
85
|
+
const message = choice.message;
|
|
86
|
+
if (!message) {
|
|
87
|
+
throw new LLMError('No message in OpenAI response choice', 'NO_MESSAGE');
|
|
88
|
+
}
|
|
89
|
+
const result = {
|
|
90
|
+
content: message.content || '',
|
|
91
|
+
model: response.model,
|
|
92
|
+
stopReason: choice.finish_reason,
|
|
93
|
+
raw: response,
|
|
94
|
+
};
|
|
95
|
+
if (response.usage) {
|
|
96
|
+
result.usage = {
|
|
97
|
+
promptTokens: response.usage.prompt_tokens,
|
|
98
|
+
completionTokens: response.usage.completion_tokens,
|
|
99
|
+
totalTokens: response.usage.total_tokens,
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
if (message.tool_calls && message.tool_calls.length > 0) {
|
|
103
|
+
result.toolCalls = message.tool_calls.map((call) => ({
|
|
104
|
+
id: call.id,
|
|
105
|
+
name: call.function.name,
|
|
106
|
+
arguments: JSON.parse(call.function.arguments),
|
|
107
|
+
}));
|
|
108
|
+
}
|
|
109
|
+
this.logger('debug', 'OpenAI completion response', {
|
|
110
|
+
model: response.model,
|
|
111
|
+
tokens: response.usage?.total_tokens,
|
|
112
|
+
});
|
|
113
|
+
return result;
|
|
114
|
+
}, this.getRetryConfig(request));
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Stream completion
|
|
118
|
+
*/
|
|
119
|
+
async *completeStream(request) {
|
|
120
|
+
validateCompletionRequest(request);
|
|
121
|
+
const model = this.parseModel(request.model);
|
|
122
|
+
const openaiRequest = {
|
|
123
|
+
model,
|
|
124
|
+
stream: true,
|
|
125
|
+
messages: request.messages.map((msg) => ({
|
|
126
|
+
role: msg.role,
|
|
127
|
+
content: msg.content,
|
|
128
|
+
})),
|
|
129
|
+
};
|
|
130
|
+
if (request.maxTokens)
|
|
131
|
+
openaiRequest.max_tokens = request.maxTokens;
|
|
132
|
+
if (request.temperature !== undefined)
|
|
133
|
+
openaiRequest.temperature = request.temperature;
|
|
134
|
+
if (request.topP !== undefined)
|
|
135
|
+
openaiRequest.top_p = request.topP;
|
|
136
|
+
if (request.frequencyPenalty !== undefined)
|
|
137
|
+
openaiRequest.frequency_penalty = request.frequencyPenalty;
|
|
138
|
+
if (request.presencePenalty !== undefined)
|
|
139
|
+
openaiRequest.presence_penalty = request.presencePenalty;
|
|
140
|
+
if (request.stop)
|
|
141
|
+
openaiRequest.stop = request.stop;
|
|
142
|
+
if (request.tools)
|
|
143
|
+
openaiRequest.tools = request.tools;
|
|
144
|
+
if (request.toolChoice)
|
|
145
|
+
openaiRequest.tool_choice = request.toolChoice;
|
|
146
|
+
this.logger('debug', 'OpenAI stream request', { model });
|
|
147
|
+
const stream = await this.makeStreamRequest('/chat/completions', 'POST', openaiRequest, request);
|
|
148
|
+
for await (const chunk of stream) {
|
|
149
|
+
if (chunk.choices && chunk.choices.length > 0) {
|
|
150
|
+
const choice = chunk.choices[0];
|
|
151
|
+
if (choice.delta?.content) {
|
|
152
|
+
yield {
|
|
153
|
+
delta: choice.delta.content,
|
|
154
|
+
stopReason: choice.finish_reason,
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Make HTTP request to OpenAI API
|
|
162
|
+
*/
|
|
163
|
+
makeRequest(path, method = 'POST', body, request) {
|
|
164
|
+
return new Promise((resolve, reject) => {
|
|
165
|
+
const url = new URL(path, this.baseUrl);
|
|
166
|
+
const timeout = this.getTimeout(request);
|
|
167
|
+
const requestOptions = {
|
|
168
|
+
method,
|
|
169
|
+
headers: {
|
|
170
|
+
'Content-Type': 'application/json',
|
|
171
|
+
Authorization: `Bearer ${this.apiKey}`,
|
|
172
|
+
...this.getHeaders(request),
|
|
173
|
+
},
|
|
174
|
+
timeout,
|
|
175
|
+
};
|
|
176
|
+
const protocol = this.baseUrl.startsWith('https') ? https : http;
|
|
177
|
+
const req = protocol.request(url, requestOptions, (res) => {
|
|
178
|
+
let data = '';
|
|
179
|
+
res.on('data', (chunk) => {
|
|
180
|
+
data += chunk;
|
|
181
|
+
});
|
|
182
|
+
res.on('end', () => {
|
|
183
|
+
if (!res.statusCode || res.statusCode >= 400) {
|
|
184
|
+
try {
|
|
185
|
+
const errorData = JSON.parse(data);
|
|
186
|
+
reject(new LLMError(errorData.error?.message || 'OpenAI API error', errorData.error?.code, res.statusCode, errorData, res.statusCode === 429 ||
|
|
187
|
+
res.statusCode === 502 ||
|
|
188
|
+
res.statusCode === 503));
|
|
189
|
+
}
|
|
190
|
+
catch {
|
|
191
|
+
reject(new LLMError(`OpenAI API error: ${data}`, 'API_ERROR', res.statusCode, null, false));
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
else {
|
|
195
|
+
try {
|
|
196
|
+
resolve(JSON.parse(data));
|
|
197
|
+
}
|
|
198
|
+
catch (error) {
|
|
199
|
+
reject(new LLMError('Failed to parse OpenAI response', 'PARSE_ERROR', undefined, { data }));
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
});
|
|
203
|
+
});
|
|
204
|
+
req.on('error', (error) => {
|
|
205
|
+
reject(new LLMError(`OpenAI request failed: ${error.message}`, 'REQUEST_FAILED', undefined, { error: error.message }, true));
|
|
206
|
+
});
|
|
207
|
+
if (body) {
|
|
208
|
+
req.write(JSON.stringify(body));
|
|
209
|
+
}
|
|
210
|
+
req.end();
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Stream HTTP request
|
|
215
|
+
*/
|
|
216
|
+
makeStreamRequest(path, method = 'POST', body, request) {
|
|
217
|
+
const self = this;
|
|
218
|
+
return {
|
|
219
|
+
async *[Symbol.asyncIterator]() {
|
|
220
|
+
const url = new URL(path, self.baseUrl);
|
|
221
|
+
const timeout = self.getTimeout(request);
|
|
222
|
+
const requestOptions = {
|
|
223
|
+
method,
|
|
224
|
+
headers: {
|
|
225
|
+
'Content-Type': 'application/json',
|
|
226
|
+
Authorization: `Bearer ${self.apiKey}`,
|
|
227
|
+
...self.getHeaders(request),
|
|
228
|
+
},
|
|
229
|
+
timeout,
|
|
230
|
+
};
|
|
231
|
+
const protocol = self.baseUrl.startsWith('https') ? https : http;
|
|
232
|
+
const chunks = [];
|
|
233
|
+
await new Promise((resolve, reject) => {
|
|
234
|
+
const req = protocol.request(url, requestOptions, (res) => {
|
|
235
|
+
if (!res.statusCode || res.statusCode >= 400) {
|
|
236
|
+
let errorData = '';
|
|
237
|
+
res.on('data', (chunk) => {
|
|
238
|
+
errorData += chunk;
|
|
239
|
+
});
|
|
240
|
+
res.on('end', () => {
|
|
241
|
+
reject(new LLMError(`OpenAI stream error: ${errorData}`, 'STREAM_ERROR', res.statusCode));
|
|
242
|
+
});
|
|
243
|
+
return;
|
|
244
|
+
}
|
|
245
|
+
let buffer = '';
|
|
246
|
+
res.on('data', (chunk) => {
|
|
247
|
+
buffer += chunk.toString();
|
|
248
|
+
const lines = buffer.split('\n');
|
|
249
|
+
buffer = lines[lines.length - 1];
|
|
250
|
+
for (let i = 0; i < lines.length - 1; i++) {
|
|
251
|
+
const line = lines[i].trim();
|
|
252
|
+
if (!line || line === '[DONE]')
|
|
253
|
+
continue;
|
|
254
|
+
if (line.startsWith('data: ')) {
|
|
255
|
+
try {
|
|
256
|
+
const data = JSON.parse(line.slice(6));
|
|
257
|
+
chunks.push(data);
|
|
258
|
+
}
|
|
259
|
+
catch (error) {
|
|
260
|
+
// Ignore parse errors in stream
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
});
|
|
265
|
+
res.on('end', () => {
|
|
266
|
+
resolve();
|
|
267
|
+
});
|
|
268
|
+
});
|
|
269
|
+
req.on('error', (error) => {
|
|
270
|
+
reject(new LLMError(`OpenAI stream request failed: ${error.message}`, 'REQUEST_FAILED', undefined, { error: error.message }, true));
|
|
271
|
+
});
|
|
272
|
+
req.on('timeout', () => {
|
|
273
|
+
req.destroy();
|
|
274
|
+
reject(new LLMError('OpenAI stream request timeout', 'TIMEOUT', undefined, null, true));
|
|
275
|
+
});
|
|
276
|
+
if (body) {
|
|
277
|
+
req.write(JSON.stringify(body));
|
|
278
|
+
}
|
|
279
|
+
req.end();
|
|
280
|
+
});
|
|
281
|
+
// Yield collected chunks
|
|
282
|
+
for (const chunk of chunks) {
|
|
283
|
+
yield chunk;
|
|
284
|
+
}
|
|
285
|
+
},
|
|
286
|
+
};
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
//# sourceMappingURL=openai.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/providers/openai.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unified type definitions for llmjs2
|
|
3
|
+
* Enterprise-grade LLM abstraction layer supporting OpenAI and Ollama
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Supported LLM providers
|
|
7
|
+
*/
|
|
8
|
+
export type ProviderType = 'openai' | 'ollama';
|
|
9
|
+
/**
|
|
10
|
+
* Role of a message in a conversation
|
|
11
|
+
*/
|
|
12
|
+
export type MessageRole = 'system' | 'user' | 'assistant';
|
|
13
|
+
/**
|
|
14
|
+
* A single message in a conversation
|
|
15
|
+
*/
|
|
16
|
+
export interface Message {
|
|
17
|
+
role: MessageRole;
|
|
18
|
+
content: string;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Tool/function definition for function calling
|
|
22
|
+
*/
|
|
23
|
+
export interface Tool {
|
|
24
|
+
type: 'function';
|
|
25
|
+
function: {
|
|
26
|
+
name: string;
|
|
27
|
+
description?: string;
|
|
28
|
+
parameters?: Record<string, unknown>;
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Configuration for a completion request
|
|
33
|
+
*/
|
|
34
|
+
export interface CompletionRequest {
|
|
35
|
+
/** Model identifier (e.g., 'openai/gpt-4', 'ollama/mistral') */
|
|
36
|
+
model: string;
|
|
37
|
+
/** API key or authentication token */
|
|
38
|
+
apiKey?: string;
|
|
39
|
+
/** Base URL for the API (mainly for Ollama) */
|
|
40
|
+
baseUrl?: string;
|
|
41
|
+
/** Messages for the completion */
|
|
42
|
+
messages: Message[];
|
|
43
|
+
/** Maximum tokens to generate */
|
|
44
|
+
maxTokens?: number;
|
|
45
|
+
/** Sampling temperature (0-2 for OpenAI, typically 0-1) */
|
|
46
|
+
temperature?: number;
|
|
47
|
+
/** Top-p (nucleus sampling) */
|
|
48
|
+
topP?: number;
|
|
49
|
+
/** Top-k sampling parameter */
|
|
50
|
+
topK?: number;
|
|
51
|
+
/** Frequency penalty (-2 to 2 for OpenAI) */
|
|
52
|
+
frequencyPenalty?: number;
|
|
53
|
+
/** Presence penalty (-2 to 2 for OpenAI) */
|
|
54
|
+
presencePenalty?: number;
|
|
55
|
+
/** Stop sequences */
|
|
56
|
+
stop?: string[];
|
|
57
|
+
/** Available tools for function calling */
|
|
58
|
+
tools?: Tool[];
|
|
59
|
+
/** Force tool usage */
|
|
60
|
+
toolChoice?: 'auto' | 'required' | string;
|
|
61
|
+
/** Custom headers to send with requests */
|
|
62
|
+
headers?: Record<string, string>;
|
|
63
|
+
/** Request timeout in milliseconds */
|
|
64
|
+
timeout?: number;
|
|
65
|
+
/** Retry configuration */
|
|
66
|
+
retry?: {
|
|
67
|
+
maxRetries?: number;
|
|
68
|
+
backoffMultiplier?: number;
|
|
69
|
+
initialDelayMs?: number;
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Completion response
|
|
74
|
+
*/
|
|
75
|
+
export interface CompletionResponse {
|
|
76
|
+
/** Generated text content */
|
|
77
|
+
content: string;
|
|
78
|
+
/** The model used */
|
|
79
|
+
model: string;
|
|
80
|
+
/** Stop reason */
|
|
81
|
+
stopReason?: 'stop_sequence' | 'length' | 'tool_calls' | 'end_turn' | string;
|
|
82
|
+
/** Total tokens used (if available) */
|
|
83
|
+
usage?: {
|
|
84
|
+
promptTokens?: number;
|
|
85
|
+
completionTokens?: number;
|
|
86
|
+
totalTokens?: number;
|
|
87
|
+
};
|
|
88
|
+
/** Raw provider response for advanced use cases */
|
|
89
|
+
raw?: unknown;
|
|
90
|
+
/** Finish reason from provider */
|
|
91
|
+
finishReason?: string;
|
|
92
|
+
/** Tool calls if function calling was used */
|
|
93
|
+
toolCalls?: Array<{
|
|
94
|
+
id?: string;
|
|
95
|
+
name: string;
|
|
96
|
+
arguments: Record<string, unknown>;
|
|
97
|
+
}>;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Streaming completion chunk
|
|
101
|
+
*/
|
|
102
|
+
export interface CompletionChunk {
|
|
103
|
+
/** Delta content */
|
|
104
|
+
delta: string;
|
|
105
|
+
/** Stop reason if stream ended */
|
|
106
|
+
stopReason?: string;
|
|
107
|
+
/** Usage at end of stream */
|
|
108
|
+
usage?: {
|
|
109
|
+
promptTokens?: number;
|
|
110
|
+
completionTokens?: number;
|
|
111
|
+
totalTokens?: number;
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Provider configuration options
|
|
116
|
+
*/
|
|
117
|
+
export interface ProviderConfig {
|
|
118
|
+
/** Provider type */
|
|
119
|
+
type: ProviderType;
|
|
120
|
+
/** API key */
|
|
121
|
+
apiKey?: string;
|
|
122
|
+
/** Base URL for API */
|
|
123
|
+
baseUrl?: string;
|
|
124
|
+
/** Default model */
|
|
125
|
+
model?: string;
|
|
126
|
+
/** Request timeout */
|
|
127
|
+
timeout?: number;
|
|
128
|
+
/** Retry configuration */
|
|
129
|
+
retry?: {
|
|
130
|
+
maxRetries?: number;
|
|
131
|
+
backoffMultiplier?: number;
|
|
132
|
+
initialDelayMs?: number;
|
|
133
|
+
};
|
|
134
|
+
/** Custom headers */
|
|
135
|
+
headers?: Record<string, string>;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Error response from provider
|
|
139
|
+
*/
|
|
140
|
+
export interface ProviderError extends Error {
|
|
141
|
+
name: string;
|
|
142
|
+
message: string;
|
|
143
|
+
code?: string;
|
|
144
|
+
statusCode?: number;
|
|
145
|
+
details?: unknown;
|
|
146
|
+
retryable?: boolean;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Provider interface that all providers must implement
|
|
150
|
+
*/
|
|
151
|
+
export interface IProvider {
|
|
152
|
+
/** Create a completion request */
|
|
153
|
+
complete(request: CompletionRequest): Promise<CompletionResponse>;
|
|
154
|
+
/** Stream a completion request */
|
|
155
|
+
completeStream(request: CompletionRequest): AsyncIterable<CompletionChunk>;
|
|
156
|
+
/** Validate that the configuration is correct */
|
|
157
|
+
validate(): Promise<void>;
|
|
158
|
+
/** Parse model string (e.g., 'openai/gpt-4' -> 'gpt-4') */
|
|
159
|
+
parseModel(model: string): string;
|
|
160
|
+
/** Enable or disable debug mode */
|
|
161
|
+
setDebug(debug: boolean): void;
|
|
162
|
+
/** Set custom logger function */
|
|
163
|
+
setLogger(logger: (level: string, message: string, data?: unknown) => void): void;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Global completion options
|
|
167
|
+
*/
|
|
168
|
+
export interface CompletionOptions {
|
|
169
|
+
/** Enable request logging for debugging */
|
|
170
|
+
debug?: boolean;
|
|
171
|
+
/** Custom logger function */
|
|
172
|
+
logger?: (level: string, message: string, data?: unknown) => void;
|
|
173
|
+
/** Global timeout override */
|
|
174
|
+
globalTimeout?: number;
|
|
175
|
+
/** Retry configuration override */
|
|
176
|
+
globalRetry?: {
|
|
177
|
+
maxRetries?: number;
|
|
178
|
+
backoffMultiplier?: number;
|
|
179
|
+
initialDelayMs?: number;
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
package/package.json
CHANGED
|
@@ -1,21 +1,55 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "llmjs2",
|
|
3
|
-
"version": "0.0
|
|
4
|
-
"description": "
|
|
5
|
-
"main": "
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "LLM abstraction layer for Node.js. Unified API for OpenAI and Ollama with error handling and retry logic.",
|
|
5
|
+
"main": "dist/dex.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
6
7
|
"type": "module",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"import": "./dist/index.js",
|
|
11
|
+
"types": "./dist/index.d.ts"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
7
14
|
"keywords": [
|
|
8
|
-
"llmjs",
|
|
9
15
|
"llm",
|
|
10
|
-
|
|
16
|
+
"llmjs2",
|
|
17
|
+
"openai",
|
|
18
|
+
"ollama",
|
|
19
|
+
"ai",
|
|
20
|
+
"machine-learning",
|
|
21
|
+
"abstraction",
|
|
22
|
+
"unified-api"
|
|
11
23
|
],
|
|
12
24
|
"author": "littlellmjs",
|
|
13
|
-
"files": [
|
|
14
|
-
"llmjs.js",
|
|
15
|
-
"README.md"
|
|
16
|
-
],
|
|
17
25
|
"license": "MIT",
|
|
26
|
+
"files": [
|
|
27
|
+
"dist",
|
|
28
|
+
"src",
|
|
29
|
+
"README.md",
|
|
30
|
+
"LICENSE"
|
|
31
|
+
],
|
|
18
32
|
"engines": {
|
|
19
33
|
"node": ">=16.0.0"
|
|
20
|
-
}
|
|
34
|
+
},
|
|
35
|
+
"scripts": {
|
|
36
|
+
"build": "tsc",
|
|
37
|
+
"build:watch": "tsc --watch",
|
|
38
|
+
"clean": "rm -rf dist",
|
|
39
|
+
"test": "node --test test.js",
|
|
40
|
+
"test:watch": "node --watch test.js",
|
|
41
|
+
"prepublishOnly": "npm run build && npm run test"
|
|
42
|
+
},
|
|
43
|
+
"devDependencies": {
|
|
44
|
+
"@types/node": "^20.10.0",
|
|
45
|
+
"typescript": "^5.9.3"
|
|
46
|
+
},
|
|
47
|
+
"repository": {
|
|
48
|
+
"type": "git",
|
|
49
|
+
"url": "https://github.com/littlellmjs/llmjs2"
|
|
50
|
+
},
|
|
51
|
+
"bugs": {
|
|
52
|
+
"url": "https://github.com/littlellmjs/llmjs2/issues"
|
|
53
|
+
},
|
|
54
|
+
"homepage": "https://github.com/littlellmjs/llmjs2#readme"
|
|
21
55
|
}
|