@nx-ddd/any-func 17.12.0 → 17.13.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/lib/any-func/any-func.service.impl.d.ts +3 -0
- package/lib/any-func/any-func.service.impl.js +23 -13
- package/lib/any-func/any-func.service.impl.js.map +1 -1
- package/lib/impl/adapters/cache/cache.adapter.d.ts +10 -0
- package/lib/impl/adapters/cache/cache.adapter.js +50 -0
- package/lib/impl/adapters/cache/cache.adapter.js.map +1 -0
- package/lib/impl/adapters/cache/index.d.ts +1 -0
- package/lib/impl/adapters/cache/index.js +5 -0
- package/lib/impl/adapters/cache/index.js.map +1 -0
- package/package.json +1 -1
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { InjectionToken } from '@angular/core';
|
|
2
2
|
import type { ChatCompletionMessageParam, FunctionParameters } from 'openai/resources';
|
|
3
|
+
import { CacheAdapter } from '../impl/adapters/cache';
|
|
3
4
|
export interface CallOptions<I, O, S extends {
|
|
4
5
|
input: I;
|
|
5
6
|
output: O;
|
|
@@ -28,6 +29,7 @@ export declare function provideAnyFunc(config?: AnyFuncConfig): ({
|
|
|
28
29
|
export declare class AnyFuncService {
|
|
29
30
|
protected readonly openai: import("../../../../../../dist/packages/@nx-ddd/common/infrastructure/externals/openai/open-ai.service.impl").OpenAiServiceImpl;
|
|
30
31
|
protected readonly config: AnyFuncConfig;
|
|
32
|
+
protected cache: CacheAdapter;
|
|
31
33
|
jsonSchema(_input: any, jsonSchema: FunctionParameters, { instructions, model, specs, embeddings, sample, temperature, maxRetry, }?: CallOptions<any, any>): Promise<any>;
|
|
32
34
|
call<I, O>(_input: I, args: {
|
|
33
35
|
new (): O;
|
|
@@ -42,6 +44,7 @@ export declare class AnyFuncService {
|
|
|
42
44
|
role: 'assistant' | 'user';
|
|
43
45
|
content: string;
|
|
44
46
|
}[];
|
|
47
|
+
getEmbeddings<T>(item: T, accessor: (item: T) => string): Promise<number[]>;
|
|
45
48
|
sort<T>(items: T[], accessor: (item: T) => string, target: string): Promise<T[]>;
|
|
46
49
|
private parseInput;
|
|
47
50
|
}
|
|
@@ -9,6 +9,8 @@ const json_schema_library_1 = require("json-schema-library");
|
|
|
9
9
|
const agent_1 = require("../agent");
|
|
10
10
|
const json_schema_1 = require("../impl/json-schema");
|
|
11
11
|
const any_func_service_1 = require("./any-func.service");
|
|
12
|
+
const cache_1 = require("../impl/adapters/cache");
|
|
13
|
+
const p_limit_1 = tslib_1.__importDefault(require("p-limit"));
|
|
12
14
|
const ANY_FUNC_CONFIG = new core_1.InjectionToken('[@nx-ddd/any-func] AnyFuncConfig');
|
|
13
15
|
function provideAnyFuncConfig(config) {
|
|
14
16
|
return [
|
|
@@ -27,6 +29,7 @@ let AnyFuncService = class AnyFuncService {
|
|
|
27
29
|
var _a;
|
|
28
30
|
this.openai = (0, openai_1.injectOpenAiService)();
|
|
29
31
|
this.config = (_a = (0, core_1.inject)(ANY_FUNC_CONFIG, { optional: true })) !== null && _a !== void 0 ? _a : { debug: false };
|
|
32
|
+
this.cache = (0, core_1.inject)(cache_1.CacheAdapter);
|
|
30
33
|
}
|
|
31
34
|
jsonSchema(_input, jsonSchema, { instructions = '', model = 'gpt-4o', specs = [], embeddings = false, sample = 3, temperature = 0, maxRetry = 3, } = {}) {
|
|
32
35
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
@@ -95,7 +98,7 @@ let AnyFuncService = class AnyFuncService {
|
|
|
95
98
|
complete(_input, jsonSchema, messages, { model = 'gpt-4o', temperature = 0, } = {}) {
|
|
96
99
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
97
100
|
const tool = (0, agent_1.buildFunctionTool)({ name: 'function', description: '', parameters: jsonSchema });
|
|
98
|
-
const
|
|
101
|
+
const props = {
|
|
99
102
|
model,
|
|
100
103
|
messages,
|
|
101
104
|
tools: [tool],
|
|
@@ -104,7 +107,8 @@ let AnyFuncService = class AnyFuncService {
|
|
|
104
107
|
function: { name: 'function' }
|
|
105
108
|
},
|
|
106
109
|
temperature,
|
|
107
|
-
}
|
|
110
|
+
};
|
|
111
|
+
const res = yield this.cache.call(props, props => this.openai.chat.completions.create(props));
|
|
108
112
|
return res.choices[0].message;
|
|
109
113
|
});
|
|
110
114
|
}
|
|
@@ -130,20 +134,26 @@ let AnyFuncService = class AnyFuncService {
|
|
|
130
134
|
];
|
|
131
135
|
}).flat();
|
|
132
136
|
}
|
|
137
|
+
getEmbeddings(item, accessor) {
|
|
138
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
139
|
+
const props = { item, model: 'text-embedding-3-small' };
|
|
140
|
+
let embedding = yield this.cache.get(props);
|
|
141
|
+
if (embedding)
|
|
142
|
+
return embedding;
|
|
143
|
+
embedding = yield this.openai.embeddings.create({
|
|
144
|
+
model: props.model,
|
|
145
|
+
input: accessor(item),
|
|
146
|
+
}).then(res => res.data[0].embedding);
|
|
147
|
+
yield this.cache.set(props, embedding);
|
|
148
|
+
return embedding;
|
|
149
|
+
});
|
|
150
|
+
}
|
|
133
151
|
sort(items, accessor, target) {
|
|
134
152
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
135
|
-
const getEmbeddings = (item) => {
|
|
136
|
-
return this.openai.embeddings.create({
|
|
137
|
-
model: 'text-embedding-3-small',
|
|
138
|
-
input: accessor(item),
|
|
139
|
-
}).then(res => res.data[0].embedding);
|
|
140
|
-
};
|
|
141
153
|
const dist = (a, b) => Math.sqrt(a.reduce((acc, v, i) => acc + Math.pow((v - b[i]), 2), 0));
|
|
142
|
-
const targetEmbeddings = yield this.
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
}).then(res => res.data[0].embedding);
|
|
146
|
-
const embeddings = yield Promise.all(items.map(getEmbeddings));
|
|
154
|
+
const targetEmbeddings = yield this.getEmbeddings(target, s => s);
|
|
155
|
+
const limit = (0, p_limit_1.default)(10);
|
|
156
|
+
const embeddings = yield Promise.all(items.map(item => limit(() => this.getEmbeddings(item, accessor))));
|
|
147
157
|
const items_ = items.map((item, i) => ({
|
|
148
158
|
item,
|
|
149
159
|
embedding: embeddings[i],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"any-func.service.impl.js","sourceRoot":"","sources":["../../../../../../packages/@nx-ddd/any-func/src/lib/any-func/any-func.service.impl.ts"],"names":[],"mappings":";;;;AAAA,wCAAmE;AACnE,2EAAqF;AACrF,+BAAiF;AAEjF,6DAA8C;AAC9C,oCAA6C;AAC7C,qDAAgE;AAChE,yDAAsD;
|
|
1
|
+
{"version":3,"file":"any-func.service.impl.js","sourceRoot":"","sources":["../../../../../../packages/@nx-ddd/any-func/src/lib/any-func/any-func.service.impl.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { LocalStorage } from "node-localstorage";
|
|
2
|
+
export declare class CacheAdapter {
|
|
3
|
+
protected localStorage: LocalStorage;
|
|
4
|
+
get<T>(keyOrObj: string | object): Promise<T | null>;
|
|
5
|
+
set(keyOrObj: string | object, value: any): Promise<void>;
|
|
6
|
+
call<P extends (string | object), T>(props: P, callback: (props: P) => Promise<T>): Promise<T>;
|
|
7
|
+
protected makeKey(keyOrObj: string | object): string;
|
|
8
|
+
protected makeJson(valueOrObj: any): string;
|
|
9
|
+
protected parseJson(value: string): any;
|
|
10
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CacheAdapter = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const core_1 = require("@angular/core");
|
|
6
|
+
const node_localstorage_1 = require("node-localstorage");
|
|
7
|
+
const CryptoJS = tslib_1.__importStar(require("crypto-js"));
|
|
8
|
+
let CacheAdapter = class CacheAdapter {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.localStorage = global.localStorage || new node_localstorage_1.LocalStorage('node_modules/.cache/any-func', 5 * 1024 * 1024 * 1024);
|
|
11
|
+
}
|
|
12
|
+
get(keyOrObj) {
|
|
13
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
14
|
+
const key = this.makeKey(keyOrObj);
|
|
15
|
+
return this.parseJson(this.localStorage.getItem(key));
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
set(keyOrObj, value) {
|
|
19
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
20
|
+
const key = this.makeKey(keyOrObj);
|
|
21
|
+
this.localStorage.setItem(key, this.makeJson(value));
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
call(props, callback) {
|
|
25
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
26
|
+
const key = this.makeKey(props);
|
|
27
|
+
let value = yield this.get(key);
|
|
28
|
+
if (value)
|
|
29
|
+
return value;
|
|
30
|
+
value = yield callback(props);
|
|
31
|
+
yield this.set(key, value);
|
|
32
|
+
return value;
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
makeKey(keyOrObj) {
|
|
36
|
+
const value = typeof keyOrObj === 'string' ? keyOrObj : JSON.stringify(keyOrObj);
|
|
37
|
+
return CryptoJS.SHA256(value).toString();
|
|
38
|
+
}
|
|
39
|
+
makeJson(valueOrObj) {
|
|
40
|
+
return JSON.stringify(valueOrObj);
|
|
41
|
+
}
|
|
42
|
+
parseJson(value) {
|
|
43
|
+
return JSON.parse(value);
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
exports.CacheAdapter = CacheAdapter;
|
|
47
|
+
exports.CacheAdapter = CacheAdapter = tslib_1.__decorate([
|
|
48
|
+
(0, core_1.Injectable)({ providedIn: 'root' })
|
|
49
|
+
], CacheAdapter);
|
|
50
|
+
//# sourceMappingURL=cache.adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.adapter.js","sourceRoot":"","sources":["../../../../../../../../packages/@nx-ddd/any-func/src/lib/impl/adapters/cache/cache.adapter.ts"],"names":[],"mappings":";;;;AAAA,wCAA2C;AAC3C,yDAAiD;AACjD,4DAAsC;AAG/B,IAAM,YAAY,GAAlB,MAAM,YAAY;IAAlB;QACK,iBAAY,GAAiB,MAAM,CAAC,YAAY,IAAI,IAAI,gCAAY,CAAC,8BAA8B,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;IAiCzI,CAAC;IA/BO,GAAG,CAAI,QAAyB;;YACpC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACnC,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAa,CAAC;QACpE,CAAC;KAAA;IAEK,GAAG,CAAC,QAAyB,EAAE,KAAU;;YAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACnC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QACvD,CAAC;KAAA;IAEK,IAAI,CAAiC,KAAQ,EAAE,QAAkC;;YACrF,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAChC,IAAI,KAAK,GAAG,MAAM,IAAI,CAAC,GAAG,CAAI,GAAG,CAAC,CAAC;YACnC,IAAI,KAAK;gBAAE,OAAO,KAAK,CAAC;YACxB,KAAK,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC9B,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC3B,OAAO,KAAK,CAAC;QACf,CAAC;KAAA;IAES,OAAO,CAAC,QAAyB;QACzC,MAAM,KAAK,GAAG,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACjF,OAAO,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC3C,CAAC;IAES,QAAQ,CAAC,UAAe;QAChC,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IACpC,CAAC;IAES,SAAS,CAAC,KAAa;QAC/B,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;CACF,CAAA;AAlCY,oCAAY;uBAAZ,YAAY;IADxB,IAAA,iBAAU,EAAC,EAAC,UAAU,EAAE,MAAM,EAAC,CAAC;GACpB,YAAY,CAkCxB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './cache.adapter';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../packages/@nx-ddd/any-func/src/lib/impl/adapters/cache/index.ts"],"names":[],"mappings":";;;AAAA,0DAAgC"}
|