@ax-llm/ax 10.0.21 → 10.0.22
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/ai/balance.d.ts +18 -1
- package/ai/balance.js +21 -10
- package/ai/balance.js.map +1 -1
- package/cjs/ai/balance.d.ts +18 -1
- package/cjs/ai/balance.js +24 -11
- package/cjs/ai/balance.js.map +1 -1
- package/package.json +1 -1
package/ai/balance.d.ts
CHANGED
|
@@ -1,10 +1,27 @@
|
|
|
1
1
|
import type { ReadableStream } from 'stream/web';
|
|
2
2
|
import type { AxAIModelMap, AxAIPromptConfig, AxAIService, AxAIServiceActionOptions, AxAIServiceOptions, AxChatRequest, AxChatResponse, AxEmbedRequest, AxEmbedResponse, AxModelConfig, AxModelInfoWithProvider } from './types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Service comparator that sorts services by cost.
|
|
5
|
+
*/
|
|
6
|
+
export declare const axCostComparator: (a: AxAIService, b: AxAIService) => number;
|
|
7
|
+
/**
|
|
8
|
+
* Service comparator that respects the input order of services.
|
|
9
|
+
*/
|
|
10
|
+
export declare const axInputOrderComparator: () => number;
|
|
11
|
+
/**
|
|
12
|
+
* Options for the balancer.
|
|
13
|
+
*/
|
|
14
|
+
export type AxBalancerOptions = {
|
|
15
|
+
comparator?: (a: AxAIService, b: AxAIService) => number;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Balancer that rotates through services.
|
|
19
|
+
*/
|
|
3
20
|
export declare class AxBalancer implements AxAIService {
|
|
4
21
|
private services;
|
|
5
22
|
private currentServiceIndex;
|
|
6
23
|
private currentService;
|
|
7
|
-
constructor(services: readonly AxAIService[]);
|
|
24
|
+
constructor(services: readonly AxAIService[], options?: AxBalancerOptions);
|
|
8
25
|
getModelMap(): AxAIModelMap | undefined;
|
|
9
26
|
private getNextService;
|
|
10
27
|
private reset;
|
package/ai/balance.js
CHANGED
|
@@ -1,20 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Service comparator that sorts services by cost.
|
|
3
|
+
*/
|
|
4
|
+
export const axCostComparator = (a, b) => {
|
|
5
|
+
const aInfo = a.getModelInfo();
|
|
6
|
+
const bInfo = b.getModelInfo();
|
|
7
|
+
const aTotalCost = (aInfo.promptTokenCostPer1M || Infinity) +
|
|
8
|
+
(aInfo.completionTokenCostPer1M || Infinity);
|
|
9
|
+
const bTotalCost = (bInfo.promptTokenCostPer1M || Infinity) +
|
|
10
|
+
(bInfo.completionTokenCostPer1M || Infinity);
|
|
11
|
+
return aTotalCost - bTotalCost;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Service comparator that respects the input order of services.
|
|
15
|
+
*/
|
|
16
|
+
export const axInputOrderComparator = () => 0;
|
|
17
|
+
/**
|
|
18
|
+
* Balancer that rotates through services.
|
|
19
|
+
*/
|
|
1
20
|
export class AxBalancer {
|
|
2
21
|
services;
|
|
3
22
|
currentServiceIndex = 0;
|
|
4
23
|
currentService;
|
|
5
|
-
constructor(services) {
|
|
24
|
+
constructor(services, options) {
|
|
6
25
|
if (services.length === 0) {
|
|
7
26
|
throw new Error('No AI services provided.');
|
|
8
27
|
}
|
|
9
|
-
this.services = [...services].sort(
|
|
10
|
-
const aInfo = a.getModelInfo();
|
|
11
|
-
const bInfo = b.getModelInfo();
|
|
12
|
-
const aTotalCost = (aInfo.promptTokenCostPer1M || Infinity) +
|
|
13
|
-
(aInfo.completionTokenCostPer1M || Infinity);
|
|
14
|
-
const bTotalCost = (bInfo.promptTokenCostPer1M || Infinity) +
|
|
15
|
-
(bInfo.completionTokenCostPer1M || Infinity);
|
|
16
|
-
return aTotalCost - bTotalCost;
|
|
17
|
-
});
|
|
28
|
+
this.services = [...services].sort(options?.comparator ?? axCostComparator);
|
|
18
29
|
const cs = this.services[this.currentServiceIndex];
|
|
19
30
|
if (cs === undefined) {
|
|
20
31
|
throw new Error('Error initializing the AI services.'); // More specific error message
|
package/ai/balance.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"balance.js","sourceRoot":"","sources":["../../ai/balance.ts"],"names":[],"mappings":"AAgBA,MAAM,
|
|
1
|
+
{"version":3,"file":"balance.js","sourceRoot":"","sources":["../../ai/balance.ts"],"names":[],"mappings":"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"}
|
package/cjs/ai/balance.d.ts
CHANGED
|
@@ -1,10 +1,27 @@
|
|
|
1
1
|
import type { ReadableStream } from 'stream/web';
|
|
2
2
|
import type { AxAIModelMap, AxAIPromptConfig, AxAIService, AxAIServiceActionOptions, AxAIServiceOptions, AxChatRequest, AxChatResponse, AxEmbedRequest, AxEmbedResponse, AxModelConfig, AxModelInfoWithProvider } from './types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Service comparator that sorts services by cost.
|
|
5
|
+
*/
|
|
6
|
+
export declare const axCostComparator: (a: AxAIService, b: AxAIService) => number;
|
|
7
|
+
/**
|
|
8
|
+
* Service comparator that respects the input order of services.
|
|
9
|
+
*/
|
|
10
|
+
export declare const axInputOrderComparator: () => number;
|
|
11
|
+
/**
|
|
12
|
+
* Options for the balancer.
|
|
13
|
+
*/
|
|
14
|
+
export type AxBalancerOptions = {
|
|
15
|
+
comparator?: (a: AxAIService, b: AxAIService) => number;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Balancer that rotates through services.
|
|
19
|
+
*/
|
|
3
20
|
export declare class AxBalancer implements AxAIService {
|
|
4
21
|
private services;
|
|
5
22
|
private currentServiceIndex;
|
|
6
23
|
private currentService;
|
|
7
|
-
constructor(services: readonly AxAIService[]);
|
|
24
|
+
constructor(services: readonly AxAIService[], options?: AxBalancerOptions);
|
|
8
25
|
getModelMap(): AxAIModelMap | undefined;
|
|
9
26
|
private getNextService;
|
|
10
27
|
private reset;
|
package/cjs/ai/balance.js
CHANGED
|
@@ -1,23 +1,36 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.AxBalancer = void 0;
|
|
3
|
+
exports.AxBalancer = exports.axInputOrderComparator = exports.axCostComparator = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Service comparator that sorts services by cost.
|
|
6
|
+
*/
|
|
7
|
+
const axCostComparator = (a, b) => {
|
|
8
|
+
const aInfo = a.getModelInfo();
|
|
9
|
+
const bInfo = b.getModelInfo();
|
|
10
|
+
const aTotalCost = (aInfo.promptTokenCostPer1M || Infinity) +
|
|
11
|
+
(aInfo.completionTokenCostPer1M || Infinity);
|
|
12
|
+
const bTotalCost = (bInfo.promptTokenCostPer1M || Infinity) +
|
|
13
|
+
(bInfo.completionTokenCostPer1M || Infinity);
|
|
14
|
+
return aTotalCost - bTotalCost;
|
|
15
|
+
};
|
|
16
|
+
exports.axCostComparator = axCostComparator;
|
|
17
|
+
/**
|
|
18
|
+
* Service comparator that respects the input order of services.
|
|
19
|
+
*/
|
|
20
|
+
const axInputOrderComparator = () => 0;
|
|
21
|
+
exports.axInputOrderComparator = axInputOrderComparator;
|
|
22
|
+
/**
|
|
23
|
+
* Balancer that rotates through services.
|
|
24
|
+
*/
|
|
4
25
|
class AxBalancer {
|
|
5
26
|
services;
|
|
6
27
|
currentServiceIndex = 0;
|
|
7
28
|
currentService;
|
|
8
|
-
constructor(services) {
|
|
29
|
+
constructor(services, options) {
|
|
9
30
|
if (services.length === 0) {
|
|
10
31
|
throw new Error('No AI services provided.');
|
|
11
32
|
}
|
|
12
|
-
this.services = [...services].sort(
|
|
13
|
-
const aInfo = a.getModelInfo();
|
|
14
|
-
const bInfo = b.getModelInfo();
|
|
15
|
-
const aTotalCost = (aInfo.promptTokenCostPer1M || Infinity) +
|
|
16
|
-
(aInfo.completionTokenCostPer1M || Infinity);
|
|
17
|
-
const bTotalCost = (bInfo.promptTokenCostPer1M || Infinity) +
|
|
18
|
-
(bInfo.completionTokenCostPer1M || Infinity);
|
|
19
|
-
return aTotalCost - bTotalCost;
|
|
20
|
-
});
|
|
33
|
+
this.services = [...services].sort(options?.comparator ?? exports.axCostComparator);
|
|
21
34
|
const cs = this.services[this.currentServiceIndex];
|
|
22
35
|
if (cs === undefined) {
|
|
23
36
|
throw new Error('Error initializing the AI services.'); // More specific error message
|
package/cjs/ai/balance.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"balance.js","sourceRoot":"","sources":["../../../ai/balance.ts"],"names":[],"mappings":";;;AAgBA
|
|
1
|
+
{"version":3,"file":"balance.js","sourceRoot":"","sources":["../../../ai/balance.ts"],"names":[],"mappings":"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"}
|