@memberjunction/ai 2.61.0 → 2.62.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/dist/generic/baseLLM.d.ts.map +1 -1
- package/dist/generic/baseLLM.js +3 -0
- package/dist/generic/baseLLM.js.map +1 -1
- package/dist/generic/baseModel.d.ts +2 -0
- package/dist/generic/baseModel.d.ts.map +1 -1
- package/dist/generic/baseModel.js.map +1 -1
- package/dist/generic/errorAnalyzer.d.ts +11 -0
- package/dist/generic/errorAnalyzer.d.ts.map +1 -0
- package/dist/generic/errorAnalyzer.js +155 -0
- package/dist/generic/errorAnalyzer.js.map +1 -0
- package/dist/generic/errorTypes.d.ts +12 -0
- package/dist/generic/errorTypes.d.ts.map +1 -0
- package/dist/generic/errorTypes.js +3 -0
- package/dist/generic/errorTypes.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/readme.md +159 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"baseLLM.d.ts","sourceRoot":"","sources":["../../src/generic/baseLLM.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAE,SAAS,EAAc,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,UAAU,EAA0B,gCAAgC,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACvI,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"baseLLM.d.ts","sourceRoot":"","sources":["../../src/generic/baseLLM.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAE,SAAS,EAAc,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,UAAU,EAA0B,gCAAgC,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACvI,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAMlE,KAAK,mBAAmB,GAAG;IACvB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,eAAe,EAAE,OAAO,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,OAAO,CAAC;CAC7B,CAAC;AAMF,8BAAsB,OAAQ,SAAQ,SAAS;IAI3C,SAAS,CAAC,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAM;IAKxD,IAAW,kBAAkB,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAEnD;IAQM,qBAAqB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IAS1D,uBAAuB,IAAI,IAAI;IAQzB,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAwBvD,eAAe,CACxB,WAAW,EAAE,UAAU,EAAE,EACzB,SAAS,CAAC,EAAE,gCAAgC,GAC7C,OAAO,CAAC,UAAU,EAAE,CAAC;IAgExB,SAAS,CAAC,QAAQ,CAAC,0BAA0B,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;aAEtE,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;aAC7D,aAAa,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;IAMhF,IAAW,iBAAiB,IAAI,OAAO,CAGtC;cAOe,6BAA6B,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAiHtF,SAAS,CAAC,QAAQ,CAAC,sBAAsB,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC;IAO3E,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,KAAK,EAAE,GAAG,GAAG;QAClD,OAAO,EAAE,MAAM,CAAC;QAChB,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAClC,KAAK,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC;KACtB;IASD,SAAS,CAAC,QAAQ,CAAC,yBAAyB,CACxC,kBAAkB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAC7C,SAAS,EAAE,GAAG,GAAG,IAAI,GAAG,SAAS,EACjC,KAAK,EAAE,GAAG,GAAG,IAAI,GAAG,SAAS,GAC9B,UAAU;IAQb,SAAS,CAAC,mBAAmB,EAAE,mBAAmB,GAAG,IAAI,CAAQ;IAMjE,SAAS,CAAC,sBAAsB,IAAI,OAAO;IAQ3C,SAAS,CAAC,oBAAoB,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;IAQjE,SAAS,CAAC,0BAA0B,CAAC,OAAO,EAAE,MAAM,GAAG;QACnD,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACrB;IA2BD,SAAS,CAAC,6BAA6B,IAAI,IAAI;IAY/C,SAAS,CAAC,wBAAwB,IAAI,IAAI;IAQ1C,SAAS,CAAC,8BAA8B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAqEpE,SAAS,CAAC,oBAAoB,CAC1B,OAAO,EAAE,qBAAqB,EAC9B,eAAe,CAAC,EAAE,MAAM,GACzB,qBAAqB;CAM3B"}
|
package/dist/generic/baseLLM.js
CHANGED
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.BaseLLM = void 0;
|
|
4
4
|
const baseModel_1 = require("./baseModel");
|
|
5
5
|
const chat_types_1 = require("./chat.types");
|
|
6
|
+
const errorAnalyzer_1 = require("./errorAnalyzer");
|
|
6
7
|
class BaseLLM extends baseModel_1.BaseModel {
|
|
7
8
|
constructor() {
|
|
8
9
|
super(...arguments);
|
|
@@ -64,6 +65,7 @@ class BaseLLM extends baseModel_1.BaseModel {
|
|
|
64
65
|
errorResult.statusText = 'error';
|
|
65
66
|
errorResult.errorMessage = result.reason?.message || 'Unknown error';
|
|
66
67
|
errorResult.exception = { exception: result.reason };
|
|
68
|
+
errorResult.errorInfo = errorAnalyzer_1.ErrorAnalyzer.analyzeError(result.reason, this.constructor.name);
|
|
67
69
|
return errorResult;
|
|
68
70
|
}
|
|
69
71
|
});
|
|
@@ -143,6 +145,7 @@ class BaseLLM extends baseModel_1.BaseModel {
|
|
|
143
145
|
errorResult.statusText = 'error';
|
|
144
146
|
errorResult.errorMessage = error?.message || 'Unknown error';
|
|
145
147
|
errorResult.exception = { exception: error };
|
|
148
|
+
errorResult.errorInfo = errorAnalyzer_1.ErrorAnalyzer.analyzeError(error, this.constructor.name);
|
|
146
149
|
reject(errorResult);
|
|
147
150
|
}
|
|
148
151
|
})();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"baseLLM.js","sourceRoot":"","sources":["../../src/generic/baseLLM.ts"],"names":[],"mappings":";;;AACA,2CAAoD;AACpD,6CAAuI;
|
|
1
|
+
{"version":3,"file":"baseLLM.js","sourceRoot":"","sources":["../../src/generic/baseLLM.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
import { AIErrorInfo } from './errorTypes.js';
|
|
1
2
|
export declare class BaseResult {
|
|
2
3
|
success: boolean;
|
|
3
4
|
startTime: Date;
|
|
4
5
|
endTime: Date;
|
|
5
6
|
errorMessage: string;
|
|
6
7
|
exception: any;
|
|
8
|
+
errorInfo?: AIErrorInfo;
|
|
7
9
|
get timeElapsed(): number;
|
|
8
10
|
constructor(success: boolean, startTime: Date, endTime: Date);
|
|
9
11
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"baseModel.d.ts","sourceRoot":"","sources":["../../src/generic/baseModel.ts"],"names":[],"mappings":"AAAA,qBAAa,UAAU;IACnB,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,EAAE,IAAI,CAAA;IACf,OAAO,EAAE,IAAI,CAAA;IACb,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,GAAG,CAAA;
|
|
1
|
+
{"version":3,"file":"baseModel.d.ts","sourceRoot":"","sources":["../../src/generic/baseModel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,qBAAa,UAAU;IACnB,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,EAAE,IAAI,CAAA;IACf,OAAO,EAAE,IAAI,CAAA;IACb,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,GAAG,CAAA;IAId,SAAS,CAAC,EAAE,WAAW,CAAA;IACvB,IAAI,WAAW,IAAI,MAAM,CAExB;gBACY,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI;CAKhE;AAED,qBAAa,UAAU;IAInB,KAAK,EAAE,MAAM,CAAA;IAKb,WAAW,CAAC,EAAE,MAAM,CAAA;IAKpB,cAAc,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG,eAAe,CAAS;IAKhF,2BAA2B,CAAC,EAAE,GAAG,CAAA;IAKjC,eAAe,CAAC,EAAE,MAAM,CAAA;IAKxB,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAO9B,IAAI,CAAC,EAAE,MAAM,CAAA;IAMb,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;CAC3B;AAYD,qBAAa,UAAU;gBASP,YAAY,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM;IAgBhG,YAAY,EAAE,MAAM,CAAA;IAMpB,gBAAgB,EAAE,MAAM,CAAA;IAOxB,IAAI,CAAC,EAAE,MAAM,CAAA;IAOb,YAAY,CAAC,EAAE,MAAM,CAAA;IAQrB,IAAI,WAAW,IAAI,MAAM,CAExB;CACJ;AAKD,8BAAsB,SAAS;IAC3B,OAAO,CAAC,OAAO,CAAS;IAIxB,SAAS,KAAK,MAAM,IAAI,MAAM,CAE7B;gBACY,MAAM,EAAE,MAAM;CAM9B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"baseModel.js","sourceRoot":"","sources":["../../src/generic/baseModel.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"baseModel.js","sourceRoot":"","sources":["../../src/generic/baseModel.ts"],"names":[],"mappings":";;;AAEA,MAAa,UAAU;IAUnB,IAAI,WAAW;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;IAC7D,CAAC;IACD,YAAa,OAAgB,EAAE,SAAe,EAAE,OAAa;QACzD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IAC3B,CAAC;CACJ;AAlBD,gCAkBC;AAED,MAAa,UAAU;IAAvB;QAcI,mBAAc,GAA4D,KAAK,CAAC;IA6BpF,CAAC;CAAA;AA3CD,gCA2CC;AAYD,MAAa,UAAU;IASnB,YAAY,YAAoB,EAAE,gBAAwB,EAAE,IAAa,EAAE,YAAqB;QAC5F,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QACzC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACrB,CAAC;QACD,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAC7B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACrC,CAAC;IACL,CAAC;IAmCD,IAAI,WAAW;QACX,OAAO,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC;IACrD,CAAC;CACJ;AAxDD,gCAwDC;AAKD,MAAsB,SAAS;IAK3B,IAAc,MAAM;QAChB,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IACD,YAAa,MAAc;QACvB,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;YACrC,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;QAE5E,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IAC1B,CAAC;CACJ;AAdD,8BAcC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { AIErrorInfo } from './errorTypes.js';
|
|
2
|
+
export declare class ErrorAnalyzer {
|
|
3
|
+
static analyzeError(error: any, providerName?: string): AIErrorInfo;
|
|
4
|
+
private static extractHttpStatusCode;
|
|
5
|
+
private static determineErrorType;
|
|
6
|
+
private static determineSeverity;
|
|
7
|
+
private static canFailoverForError;
|
|
8
|
+
private static extractRetryDelay;
|
|
9
|
+
private static extractProviderErrorCode;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=errorAnalyzer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errorAnalyzer.d.ts","sourceRoot":"","sources":["../../src/generic/errorAnalyzer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAA8B,MAAM,iBAAiB,CAAC;AAqB1E,qBAAa,aAAa;IAkBtB,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,WAAW;IA2CnE,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAoBpC,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAkFjC,OAAO,CAAC,MAAM,CAAC,iBAAiB;IA6BhC,OAAO,CAAC,MAAM,CAAC,mBAAmB;IA2BlC,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAqChC,OAAO,CAAC,MAAM,CAAC,wBAAwB;CAO1C"}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ErrorAnalyzer = void 0;
|
|
4
|
+
class ErrorAnalyzer {
|
|
5
|
+
static analyzeError(error, providerName) {
|
|
6
|
+
const httpStatusCode = this.extractHttpStatusCode(error);
|
|
7
|
+
const errorType = this.determineErrorType(error, httpStatusCode);
|
|
8
|
+
const severity = this.determineSeverity(errorType);
|
|
9
|
+
const canFailover = this.canFailoverForError(errorType);
|
|
10
|
+
const suggestedRetryDelaySeconds = this.extractRetryDelay(error);
|
|
11
|
+
const providerErrorCode = this.extractProviderErrorCode(error);
|
|
12
|
+
return {
|
|
13
|
+
httpStatusCode,
|
|
14
|
+
errorType,
|
|
15
|
+
severity,
|
|
16
|
+
canFailover,
|
|
17
|
+
suggestedRetryDelaySeconds,
|
|
18
|
+
providerErrorCode,
|
|
19
|
+
context: {
|
|
20
|
+
provider: providerName,
|
|
21
|
+
errorName: error?.name,
|
|
22
|
+
errorConstructor: error?.constructor?.name
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
static extractHttpStatusCode(error) {
|
|
27
|
+
return error?.status ||
|
|
28
|
+
error?.statusCode ||
|
|
29
|
+
error?.response?.status ||
|
|
30
|
+
error?.response?.statusCode ||
|
|
31
|
+
error?.code ||
|
|
32
|
+
undefined;
|
|
33
|
+
}
|
|
34
|
+
static determineErrorType(error, statusCode) {
|
|
35
|
+
if (statusCode) {
|
|
36
|
+
switch (statusCode) {
|
|
37
|
+
case 429:
|
|
38
|
+
return 'RateLimit';
|
|
39
|
+
case 401:
|
|
40
|
+
case 403:
|
|
41
|
+
return 'Authentication';
|
|
42
|
+
case 503:
|
|
43
|
+
return 'ServiceUnavailable';
|
|
44
|
+
case 500:
|
|
45
|
+
case 502:
|
|
46
|
+
case 504:
|
|
47
|
+
return 'InternalServerError';
|
|
48
|
+
case 400:
|
|
49
|
+
case 422:
|
|
50
|
+
return 'InvalidRequest';
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
const errorString = (error?.message || error?.name || '').toLowerCase();
|
|
54
|
+
if (errorString.includes('rate limit') ||
|
|
55
|
+
errorString.includes('too many requests') ||
|
|
56
|
+
errorString.includes('quota exceeded')) {
|
|
57
|
+
return 'RateLimit';
|
|
58
|
+
}
|
|
59
|
+
if (errorString.includes('unauthorized') ||
|
|
60
|
+
errorString.includes('authentication') ||
|
|
61
|
+
errorString.includes('api key') ||
|
|
62
|
+
errorString.includes('invalid key')) {
|
|
63
|
+
return 'Authentication';
|
|
64
|
+
}
|
|
65
|
+
if (errorString.includes('service unavailable') ||
|
|
66
|
+
errorString.includes('service is down') ||
|
|
67
|
+
errorString.includes('maintenance')) {
|
|
68
|
+
return 'ServiceUnavailable';
|
|
69
|
+
}
|
|
70
|
+
if (errorString.includes('network') ||
|
|
71
|
+
errorString.includes('timeout') ||
|
|
72
|
+
errorString.includes('econnrefused') ||
|
|
73
|
+
errorString.includes('dns')) {
|
|
74
|
+
return 'NetworkError';
|
|
75
|
+
}
|
|
76
|
+
if (errorString.includes('model') &&
|
|
77
|
+
(errorString.includes('not found') ||
|
|
78
|
+
errorString.includes('does not exist') ||
|
|
79
|
+
errorString.includes('overloaded'))) {
|
|
80
|
+
return 'ModelError';
|
|
81
|
+
}
|
|
82
|
+
if (errorString.includes('invalid') ||
|
|
83
|
+
errorString.includes('bad request') ||
|
|
84
|
+
errorString.includes('malformed')) {
|
|
85
|
+
return 'InvalidRequest';
|
|
86
|
+
}
|
|
87
|
+
const errorTypeName = error?.constructor?.name || error?.name || '';
|
|
88
|
+
if (errorTypeName.includes('RateLimit'))
|
|
89
|
+
return 'RateLimit';
|
|
90
|
+
if (errorTypeName.includes('Authentication'))
|
|
91
|
+
return 'Authentication';
|
|
92
|
+
if (errorTypeName.includes('APIError') && statusCode === 500)
|
|
93
|
+
return 'InternalServerError';
|
|
94
|
+
return 'Unknown';
|
|
95
|
+
}
|
|
96
|
+
static determineSeverity(errorType) {
|
|
97
|
+
switch (errorType) {
|
|
98
|
+
case 'RateLimit':
|
|
99
|
+
case 'ServiceUnavailable':
|
|
100
|
+
case 'NetworkError':
|
|
101
|
+
return 'Retriable';
|
|
102
|
+
case 'InternalServerError':
|
|
103
|
+
case 'ModelError':
|
|
104
|
+
return 'Transient';
|
|
105
|
+
case 'Authentication':
|
|
106
|
+
case 'InvalidRequest':
|
|
107
|
+
return 'Fatal';
|
|
108
|
+
default:
|
|
109
|
+
return 'Transient';
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
static canFailoverForError(errorType) {
|
|
113
|
+
switch (errorType) {
|
|
114
|
+
case 'RateLimit':
|
|
115
|
+
case 'ServiceUnavailable':
|
|
116
|
+
case 'InternalServerError':
|
|
117
|
+
case 'NetworkError':
|
|
118
|
+
case 'ModelError':
|
|
119
|
+
return true;
|
|
120
|
+
case 'Authentication':
|
|
121
|
+
case 'InvalidRequest':
|
|
122
|
+
return false;
|
|
123
|
+
default:
|
|
124
|
+
return true;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
static extractRetryDelay(error) {
|
|
128
|
+
const retryAfter = error?.response?.headers?.['retry-after'] ||
|
|
129
|
+
error?.headers?.['retry-after'];
|
|
130
|
+
if (retryAfter) {
|
|
131
|
+
const seconds = parseInt(retryAfter);
|
|
132
|
+
if (!isNaN(seconds)) {
|
|
133
|
+
return seconds;
|
|
134
|
+
}
|
|
135
|
+
return 60;
|
|
136
|
+
}
|
|
137
|
+
if (error?.retryDelay) {
|
|
138
|
+
return error.retryDelay;
|
|
139
|
+
}
|
|
140
|
+
const statusCode = this.extractHttpStatusCode(error);
|
|
141
|
+
if (statusCode === 429) {
|
|
142
|
+
return 30;
|
|
143
|
+
}
|
|
144
|
+
return undefined;
|
|
145
|
+
}
|
|
146
|
+
static extractProviderErrorCode(error) {
|
|
147
|
+
return error?.code ||
|
|
148
|
+
error?.errorCode ||
|
|
149
|
+
error?.error?.code ||
|
|
150
|
+
error?.response?.data?.error?.code ||
|
|
151
|
+
undefined;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
exports.ErrorAnalyzer = ErrorAnalyzer;
|
|
155
|
+
//# sourceMappingURL=errorAnalyzer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errorAnalyzer.js","sourceRoot":"","sources":["../../src/generic/errorAnalyzer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export type AIErrorType = 'RateLimit' | 'Authentication' | 'ServiceUnavailable' | 'InternalServerError' | 'NetworkError' | 'InvalidRequest' | 'ModelError' | 'Unknown';
|
|
2
|
+
export type ErrorSeverity = 'Transient' | 'Retriable' | 'Fatal';
|
|
3
|
+
export interface AIErrorInfo {
|
|
4
|
+
httpStatusCode?: number;
|
|
5
|
+
errorType: AIErrorType;
|
|
6
|
+
severity: ErrorSeverity;
|
|
7
|
+
suggestedRetryDelaySeconds?: number;
|
|
8
|
+
canFailover: boolean;
|
|
9
|
+
providerErrorCode?: string;
|
|
10
|
+
context?: Record<string, any>;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=errorTypes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errorTypes.d.ts","sourceRoot":"","sources":["../../src/generic/errorTypes.ts"],"names":[],"mappings":"AAkBA,MAAM,MAAM,WAAW,GACjB,WAAW,GACX,gBAAgB,GAChB,oBAAoB,GACpB,qBAAqB,GACrB,cAAc,GACd,gBAAgB,GAChB,YAAY,GACZ,SAAS,CAAC;AAchB,MAAM,MAAM,aAAa,GACnB,WAAW,GACX,WAAW,GACX,OAAO,CAAC;AAqBd,MAAM,WAAW,WAAW;IAYxB,cAAc,CAAC,EAAE,MAAM,CAAC;IASxB,SAAS,EAAE,WAAW,CAAC;IASvB,QAAQ,EAAE,aAAa,CAAC;IAUxB,0BAA0B,CAAC,EAAE,MAAM,CAAC;IAUpC,WAAW,EAAE,OAAO,CAAC;IAUrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAU3B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACjC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errorTypes.js","sourceRoot":"","sources":["../../src/generic/errorTypes.ts"],"names":[],"mappings":""}
|
package/dist/index.d.ts
CHANGED
|
@@ -9,4 +9,6 @@ export * from './generic/embed.types';
|
|
|
9
9
|
export * from './generic/baseEmbeddings';
|
|
10
10
|
export * from './generic/baseAudio';
|
|
11
11
|
export * from './generic/baseVideo';
|
|
12
|
+
export * from './generic/errorTypes';
|
|
13
|
+
export * from './generic/errorAnalyzer';
|
|
12
14
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -25,4 +25,6 @@ __exportStar(require("./generic/embed.types"), exports);
|
|
|
25
25
|
__exportStar(require("./generic/baseEmbeddings"), exports);
|
|
26
26
|
__exportStar(require("./generic/baseAudio"), exports);
|
|
27
27
|
__exportStar(require("./generic/baseVideo"), exports);
|
|
28
|
+
__exportStar(require("./generic/errorTypes"), exports);
|
|
29
|
+
__exportStar(require("./generic/errorAnalyzer"), exports);
|
|
28
30
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAmC;AACnC,oDAAkC;AAClC,0DAAwC;AACxC,uDAAqC;AACrC,2DAAyC;AACzC,4DAA0C;AAC1C,6DAA2C;AAC3C,wDAAsC;AACtC,2DAAyC;AACzC,sDAAoC;AACpC,sDAAoC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAmC;AACnC,oDAAkC;AAClC,0DAAwC;AACxC,uDAAqC;AACrC,2DAAyC;AACzC,4DAA0C;AAC1C,6DAA2C;AAC3C,wDAAsC;AACtC,2DAAyC;AACzC,sDAAoC;AACpC,sDAAoC;AACpC,uDAAqC;AACrC,0DAAwC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@memberjunction/ai",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.62.0",
|
|
4
4
|
"description": "MemberJunction: AI - core components for abstracting LLMs and other AI model types that are usable anywhere without ANY other MJ dependencies past @memberjunction/global which itself has zero additional dependencies.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"author": "MemberJunction.com",
|
|
16
16
|
"license": "ISC",
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@memberjunction/global": "2.
|
|
18
|
+
"@memberjunction/global": "2.62.0",
|
|
19
19
|
"dotenv": "^16.4.1",
|
|
20
20
|
"rxjs": "^7.8.1"
|
|
21
21
|
},
|
package/readme.md
CHANGED
|
@@ -490,7 +490,11 @@ const customFormatParams: ChatParams = {
|
|
|
490
490
|
|
|
491
491
|
## Error Handling
|
|
492
492
|
|
|
493
|
-
|
|
493
|
+
### Enhanced Error Information (v2.47.0+)
|
|
494
|
+
|
|
495
|
+
The MemberJunction AI Core package now provides rich, structured error information to enable intelligent retry logic and provider failover. All operations return results extending `BaseResult` which now includes detailed error information.
|
|
496
|
+
|
|
497
|
+
#### Basic Error Handling
|
|
494
498
|
|
|
495
499
|
```typescript
|
|
496
500
|
const result = await llm.ChatCompletion(params);
|
|
@@ -505,6 +509,148 @@ if (!result.success) {
|
|
|
505
509
|
}
|
|
506
510
|
```
|
|
507
511
|
|
|
512
|
+
#### Advanced Error Handling with Error Info
|
|
513
|
+
|
|
514
|
+
```typescript
|
|
515
|
+
const result = await llm.ChatCompletion(params);
|
|
516
|
+
|
|
517
|
+
if (!result.success && result.errorInfo) {
|
|
518
|
+
const { errorInfo } = result;
|
|
519
|
+
|
|
520
|
+
console.log(`Error Type: ${errorInfo.errorType}`);
|
|
521
|
+
console.log(`HTTP Status: ${errorInfo.httpStatusCode}`);
|
|
522
|
+
console.log(`Severity: ${errorInfo.severity}`);
|
|
523
|
+
console.log(`Can Failover: ${errorInfo.canFailover}`);
|
|
524
|
+
|
|
525
|
+
// Handle based on error type
|
|
526
|
+
switch (errorInfo.errorType) {
|
|
527
|
+
case 'RateLimit':
|
|
528
|
+
// Wait and retry or switch providers
|
|
529
|
+
const delay = errorInfo.suggestedRetryDelaySeconds || 30;
|
|
530
|
+
console.log(`Rate limited. Retry after ${delay} seconds`);
|
|
531
|
+
break;
|
|
532
|
+
|
|
533
|
+
case 'Authentication':
|
|
534
|
+
// Fatal error - check API keys
|
|
535
|
+
console.error('Authentication failed. Check API key configuration.');
|
|
536
|
+
break;
|
|
537
|
+
|
|
538
|
+
case 'ServiceUnavailable':
|
|
539
|
+
// Try another provider
|
|
540
|
+
if (errorInfo.canFailover) {
|
|
541
|
+
console.log('Service unavailable. Switching to backup provider...');
|
|
542
|
+
}
|
|
543
|
+
break;
|
|
544
|
+
}
|
|
545
|
+
}
|
|
546
|
+
```
|
|
547
|
+
|
|
548
|
+
### Error Types
|
|
549
|
+
|
|
550
|
+
The package categorizes errors into the following types:
|
|
551
|
+
|
|
552
|
+
- **`RateLimit`**: Rate limit exceeded (HTTP 429). Suggests switching providers or waiting
|
|
553
|
+
- **`Authentication`**: Auth failure (HTTP 401/403). Usually indicates invalid API key
|
|
554
|
+
- **`ServiceUnavailable`**: Service down (HTTP 503). Provider temporarily unavailable
|
|
555
|
+
- **`InternalServerError`**: Server error (HTTP 500). Problem on provider's side
|
|
556
|
+
- **`NetworkError`**: Connection issues, timeouts, DNS failures
|
|
557
|
+
- **`InvalidRequest`**: Bad request format (HTTP 400). Problem with request parameters
|
|
558
|
+
- **`ModelError`**: Model-specific issues (not found, overloaded)
|
|
559
|
+
- **`Unknown`**: Unclassified errors
|
|
560
|
+
|
|
561
|
+
### Error Severity Levels
|
|
562
|
+
|
|
563
|
+
Errors are classified by severity to guide retry strategies:
|
|
564
|
+
|
|
565
|
+
- **`Transient`**: Temporary error that may resolve with immediate retry
|
|
566
|
+
- **`Retriable`**: Error requiring waiting or provider switching before retry
|
|
567
|
+
- **`Fatal`**: Permanent error that won't be resolved by retrying
|
|
568
|
+
|
|
569
|
+
### Error Analysis Utility
|
|
570
|
+
|
|
571
|
+
The package includes an `ErrorAnalyzer` utility for providers to use:
|
|
572
|
+
|
|
573
|
+
```typescript
|
|
574
|
+
import { ErrorAnalyzer } from '@memberjunction/ai';
|
|
575
|
+
|
|
576
|
+
try {
|
|
577
|
+
// Provider API call
|
|
578
|
+
} catch (error) {
|
|
579
|
+
const errorInfo = ErrorAnalyzer.analyzeError(error, 'OpenAI');
|
|
580
|
+
// errorInfo now contains structured error details
|
|
581
|
+
}
|
|
582
|
+
```
|
|
583
|
+
|
|
584
|
+
### Implementing Intelligent Failover
|
|
585
|
+
|
|
586
|
+
```typescript
|
|
587
|
+
import { BaseLLM, ChatParams, AIErrorInfo } from '@memberjunction/ai';
|
|
588
|
+
|
|
589
|
+
class ResilientAIClient {
|
|
590
|
+
private providers: Array<{ name: string; llm: BaseLLM }> = [];
|
|
591
|
+
|
|
592
|
+
async chatWithFailover(params: ChatParams): Promise<ChatResult> {
|
|
593
|
+
for (const provider of this.providers) {
|
|
594
|
+
try {
|
|
595
|
+
const result = await provider.llm.ChatCompletion(params);
|
|
596
|
+
|
|
597
|
+
if (result.success) {
|
|
598
|
+
return result;
|
|
599
|
+
}
|
|
600
|
+
|
|
601
|
+
// Check if we should try another provider
|
|
602
|
+
if (result.errorInfo?.canFailover) {
|
|
603
|
+
console.log(`Provider ${provider.name} failed. Trying next...`);
|
|
604
|
+
continue;
|
|
605
|
+
} else {
|
|
606
|
+
// Fatal error - don't try other providers
|
|
607
|
+
return result;
|
|
608
|
+
}
|
|
609
|
+
|
|
610
|
+
} catch (error) {
|
|
611
|
+
console.error(`Provider ${provider.name} threw exception:`, error);
|
|
612
|
+
}
|
|
613
|
+
}
|
|
614
|
+
|
|
615
|
+
throw new Error('All providers failed');
|
|
616
|
+
}
|
|
617
|
+
}
|
|
618
|
+
```
|
|
619
|
+
|
|
620
|
+
### Retry with Backoff
|
|
621
|
+
|
|
622
|
+
```typescript
|
|
623
|
+
async function retryWithBackoff(
|
|
624
|
+
operation: () => Promise<ChatResult>,
|
|
625
|
+
maxRetries: number = 3
|
|
626
|
+
): Promise<ChatResult> {
|
|
627
|
+
let lastResult: ChatResult;
|
|
628
|
+
|
|
629
|
+
for (let attempt = 1; attempt <= maxRetries; attempt++) {
|
|
630
|
+
lastResult = await operation();
|
|
631
|
+
|
|
632
|
+
if (lastResult.success) {
|
|
633
|
+
return lastResult;
|
|
634
|
+
}
|
|
635
|
+
|
|
636
|
+
const errorInfo = lastResult.errorInfo;
|
|
637
|
+
if (!errorInfo || errorInfo.severity === 'Fatal') {
|
|
638
|
+
// Don't retry fatal errors
|
|
639
|
+
return lastResult;
|
|
640
|
+
}
|
|
641
|
+
|
|
642
|
+
// Calculate delay
|
|
643
|
+
const delay = errorInfo.suggestedRetryDelaySeconds ||
|
|
644
|
+
Math.pow(2, attempt - 1) * 1000; // Exponential backoff
|
|
645
|
+
|
|
646
|
+
console.log(`Retry ${attempt}/${maxRetries} after ${delay}s...`);
|
|
647
|
+
await new Promise(resolve => setTimeout(resolve, delay * 1000));
|
|
648
|
+
}
|
|
649
|
+
|
|
650
|
+
return lastResult!;
|
|
651
|
+
}
|
|
652
|
+
```
|
|
653
|
+
|
|
508
654
|
## Token Usage Tracking
|
|
509
655
|
|
|
510
656
|
Monitor token usage consistently across different providers:
|
|
@@ -610,8 +756,20 @@ class BaseResult {
|
|
|
610
756
|
endTime: Date;
|
|
611
757
|
errorMessage: string;
|
|
612
758
|
exception: any;
|
|
759
|
+
errorInfo?: AIErrorInfo; // Enhanced error details (v2.47.0+)
|
|
613
760
|
timeElapsed: number; // Computed getter
|
|
614
761
|
}
|
|
762
|
+
|
|
763
|
+
// Enhanced error information structure
|
|
764
|
+
interface AIErrorInfo {
|
|
765
|
+
httpStatusCode?: number; // HTTP status code (429, 500, etc.)
|
|
766
|
+
errorType: AIErrorType; // Categorized error type
|
|
767
|
+
severity: ErrorSeverity; // Transient, Retriable, or Fatal
|
|
768
|
+
suggestedRetryDelaySeconds?: number; // Provider-suggested retry delay
|
|
769
|
+
canFailover: boolean; // Whether switching providers might help
|
|
770
|
+
providerErrorCode?: string; // Original provider error code
|
|
771
|
+
context?: Record<string, any>; // Additional error context
|
|
772
|
+
}
|
|
615
773
|
```
|
|
616
774
|
|
|
617
775
|
#### ChatResult
|