@nx-ddd/any-func 19.51.0 → 19.81.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.
|
@@ -12,13 +12,12 @@ import { ValidatorAdapter } from '@nx-ddd/any-func/adapters/validator';
|
|
|
12
12
|
import pLimit from 'p-limit';
|
|
13
13
|
import { provideOpenaiService } from '@nx-ddd/common/infrastructure/externals/openai/impl';
|
|
14
14
|
|
|
15
|
-
// 環境差異を吸収するため、try-catchでdynamic importしてdefaultMetadataStorageを取得します。
|
|
16
15
|
let defaultMetadataStorage;
|
|
17
16
|
try {
|
|
18
17
|
({ defaultMetadataStorage } = require('class-transformer/cjs/storage'));
|
|
19
18
|
}
|
|
20
19
|
catch {
|
|
21
|
-
|
|
20
|
+
void 0;
|
|
22
21
|
}
|
|
23
22
|
function getMetadataStorage() {
|
|
24
23
|
return defaultMetadataStorage;
|
|
@@ -27,8 +26,6 @@ function setMetadataStorage(metadataStorage) {
|
|
|
27
26
|
defaultMetadataStorage = metadataStorage;
|
|
28
27
|
}
|
|
29
28
|
|
|
30
|
-
// import { defaultMetadataStorage } from 'c/lass-transformer/esm5/storage';
|
|
31
|
-
// setMetadataStorage(defaultMetadataStorage);
|
|
32
29
|
function getPropType(target, property) {
|
|
33
30
|
return Reflect.getMetadata('design:type', target, property);
|
|
34
31
|
}
|
|
@@ -62,7 +59,7 @@ const additionalConverters = {
|
|
|
62
59
|
isDayjs: (meta) => {
|
|
63
60
|
return {
|
|
64
61
|
type: 'string',
|
|
65
|
-
format: 'date-time',
|
|
62
|
+
format: 'date-time',
|
|
66
63
|
};
|
|
67
64
|
},
|
|
68
65
|
};
|
|
@@ -100,7 +97,6 @@ function buildToolFromSchema(name, description, schema) {
|
|
|
100
97
|
}
|
|
101
98
|
function AiFunction(params) {
|
|
102
99
|
return function (target, propertyKey, descriptor) {
|
|
103
|
-
// 引数の型を取得
|
|
104
100
|
const args = Reflect.getMetadata('design:paramtypes', target, propertyKey);
|
|
105
101
|
const tool = buildToolFromSchema(propertyKey, params?.description ?? '', args[0]);
|
|
106
102
|
addTool(target, tool);
|
|
@@ -192,34 +188,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
192
188
|
type: Injectable
|
|
193
189
|
}] });
|
|
194
190
|
|
|
195
|
-
/**
|
|
196
|
-
* InjectionToken for AnyFuncService
|
|
197
|
-
*/
|
|
198
191
|
const ANY_FUNC_SERVICE = new InjectionToken('[@nx-ddd/any-func] AnyFuncService');
|
|
199
|
-
/**
|
|
200
|
-
* InjectionToken for AnyFuncConfig
|
|
201
|
-
*/
|
|
202
192
|
const ANY_FUNC_CONFIG = new InjectionToken('[@nx-ddd/any-func] AnyFuncConfig');
|
|
203
|
-
/**
|
|
204
|
-
* Injects the AnyFuncService
|
|
205
|
-
*/
|
|
206
193
|
function injectAnyFunc() {
|
|
207
194
|
return inject(ANY_FUNC_SERVICE, { optional: true }) ?? {};
|
|
208
195
|
}
|
|
209
196
|
|
|
210
|
-
/**
|
|
211
|
-
* Type guard for browser File object
|
|
212
|
-
*/
|
|
213
197
|
function isBrowserFile(obj) {
|
|
214
198
|
return typeof File !== 'undefined' && obj instanceof File;
|
|
215
199
|
}
|
|
216
|
-
/**
|
|
217
|
-
* Helper class for building OpenAI message content
|
|
218
|
-
*/
|
|
219
200
|
class OpenAiMessageHelper {
|
|
220
|
-
/**
|
|
221
|
-
* Converts an image file to base64 string
|
|
222
|
-
*/
|
|
223
201
|
static async imageToBase64(imageFile) {
|
|
224
202
|
return new Promise((resolve, reject) => {
|
|
225
203
|
const reader = new FileReader();
|
|
@@ -231,9 +209,6 @@ class OpenAiMessageHelper {
|
|
|
231
209
|
reader.readAsDataURL(imageFile);
|
|
232
210
|
});
|
|
233
211
|
}
|
|
234
|
-
/**
|
|
235
|
-
* Builds message content from files
|
|
236
|
-
*/
|
|
237
212
|
static async buildFilesMessage(files) {
|
|
238
213
|
return await Promise.all(files.map(async (file) => ({
|
|
239
214
|
type: 'image_url',
|
|
@@ -242,9 +217,6 @@ class OpenAiMessageHelper {
|
|
|
242
217
|
}
|
|
243
218
|
}
|
|
244
219
|
|
|
245
|
-
/**
|
|
246
|
-
* Embedding-related utilities for AnyFuncService
|
|
247
|
-
*/
|
|
248
220
|
class EmbeddingsHelper {
|
|
249
221
|
cache;
|
|
250
222
|
openai;
|
|
@@ -271,9 +243,6 @@ class EmbeddingsHelper {
|
|
|
271
243
|
}
|
|
272
244
|
}
|
|
273
245
|
|
|
274
|
-
/**
|
|
275
|
-
* Provides the AnyFuncService with configuration
|
|
276
|
-
*/
|
|
277
246
|
function provideAnyFunc(useFactory) {
|
|
278
247
|
const config = useFactory?.() ?? {};
|
|
279
248
|
return [
|
|
@@ -296,7 +265,6 @@ class AnyFuncService {
|
|
|
296
265
|
constructor() {
|
|
297
266
|
this.embeddingsHelper = new EmbeddingsHelper(this.cache, this.openai);
|
|
298
267
|
}
|
|
299
|
-
/** @deprecated use callByJsonSchema instead */
|
|
300
268
|
async jsonSchema(_input, jsonSchema, options = {}) {
|
|
301
269
|
return this.callByJsonSchema(_input, jsonSchema, options);
|
|
302
270
|
}
|
|
@@ -392,8 +360,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
392
360
|
type: Injectable
|
|
393
361
|
}], ctorParameters: () => [] });
|
|
394
362
|
|
|
395
|
-
// Re-export from impl to maintain backwards compatibility
|
|
396
|
-
|
|
397
363
|
/**
|
|
398
364
|
* Generated bundle index. Do not edit.
|
|
399
365
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nx-ddd-any-func.mjs","sources":["../../../../../packages/@nx-ddd/any-func/src/lib/impl/json-schema/default-metadata-storage.ts","../../../../../packages/@nx-ddd/any-func/src/lib/impl/json-schema/json-schema.ts","../../../../../packages/@nx-ddd/any-func/src/lib/agent/agent.ts","../../../../../packages/@nx-ddd/any-func/src/lib/impl/adapters/cache/cache.adapter.ts","../../../../../packages/@nx-ddd/any-func/src/lib/any-func/tokens.ts","../../../../../packages/@nx-ddd/any-func/src/lib/any-func/message-helper.ts","../../../../../packages/@nx-ddd/any-func/src/lib/any-func/embeddings.ts","../../../../../packages/@nx-ddd/any-func/src/lib/any-func/providers.ts","../../../../../packages/@nx-ddd/any-func/src/lib/any-func/any-func.service.impl.ts","../../../../../packages/@nx-ddd/any-func/src/lib/any-func/any-func.service.ts","../../../../../packages/@nx-ddd/any-func/src/lib/nx-ddd-any-func.ts"],"sourcesContent":["// 環境差異を吸収するため、try-catchでdynamic importしてdefaultMetadataStorageを取得します。\nlet defaultMetadataStorage: any;\n\ntry {\n ({ defaultMetadataStorage } = require('class-transformer/cjs/storage'));\n} catch {\n // Ignore error if class-transformer is not available\n}\n\nexport function getMetadataStorage() {\n return defaultMetadataStorage;\n}\n\nexport function setMetadataStorage(metadataStorage: any) {\n defaultMetadataStorage = metadataStorage;\n}\n","import { ValidationTypes } from \"class-validator\"\nimport { targetConstructorToSchema as _targetConstructorToSchema } from \"class-validator-jsonschema\"\nimport { IOptions } from \"class-validator-jsonschema/build/options\";\nimport { JSONSchema7 } from 'json-schema';\nimport { getMetadataStorage } from \"./default-metadata-storage\";\n// import { defaultMetadataStorage } from 'c/lass-transformer/esm5/storage';\n\n// setMetadataStorage(defaultMetadataStorage);\n\nfunction getPropType(target: object, property: string) {\n return Reflect.getMetadata('design:type', target, property)\n}\n\nfunction targetToSchema(\n type: any,\n options: any\n): any {\n if (typeof type === 'function') {\n if (\n type.prototype === String.prototype ||\n type.prototype === Symbol.prototype\n ) {\n return { type: 'string' }\n } else if (type.prototype === Number.prototype) {\n return { type: 'number' }\n } else if (type.prototype === Boolean.prototype) {\n return { type: 'boolean' }\n }\n\n return targetConstructorToSchema(type, options)\n }\n}\n\nconst additionalConverters= {\n [ValidationTypes.NESTED_VALIDATION]: (meta: any, options: any) => {\n if (typeof meta.target === 'function') {\n const typeMeta = options.classTransformerMetadataStorage\n ? options.classTransformerMetadataStorage.findTypeMetadata(\n meta.target,\n meta.propertyName\n )\n : null\n const childType = typeMeta\n ? typeMeta.typeFunction()\n : getPropType(meta.target.prototype, meta.propertyName)\n return targetToSchema(childType, options)\n }\n },\n isDayjs: (meta: any): JSONSchema7 => {\n return {\n type: 'string',\n format: 'date-time', // JSON Schemaで日付型を指定\n };\n },\n};\n\nexport function targetConstructorToSchema(target: Function, options: Partial<IOptions> = {}): JSONSchema7 {\n return _targetConstructorToSchema(target, {\n ...options,\n additionalConverters,\n classTransformerMetadataStorage: getMetadataStorage(),\n }) as JSONSchema7;\n}\n","import { ChatCompletionMessageParam, FunctionParameters, } from \"openai/resources\";\nimport { FunctionTool } from \"openai/resources/beta/assistants\";\nimport { ChatCompletionCreateParamsBase } from \"openai/resources/chat/completions\";\nimport { OpenAiServiceImpl } from '@nx-ddd/common/infrastructure/externals/openai/impl';\nimport { targetConstructorToSchema } from '../impl/json-schema';\n\nconst AI_TOOLS = '[ai-tools]' as const;\nconst AI_SYSTEM = '[ai-system]' as const;\n\nexport function addTool(obj: {[AI_TOOLS]: object[]}, tool: object) {\n obj[AI_TOOLS] = obj[AI_TOOLS] ?? [];\n obj[AI_TOOLS].push(tool);\n return obj;\n}\n\nexport function getTools(obj: {[AI_TOOLS]: object[]}): any[] {\n return obj[AI_TOOLS] ?? [];\n}\n\nexport function buildFunctionTool(params: {\n name: string,\n description: string,\n parameters: FunctionParameters,\n}): FunctionTool {\n return {\n type: 'function',\n function: {\n name: params.name,\n description: params.description,\n parameters: params.parameters,\n },\n }\n}\n\nexport function buildToolFromSchema(name: string, description: string, schema: Function): FunctionTool {\n const parameters = targetConstructorToSchema(schema) as FunctionParameters;\n return buildFunctionTool({ name, description, parameters });\n}\n\nexport function AiFunction(params?: {description?: string}) {\n return function (target: any, propertyKey: string, descriptor: PropertyDescriptor) {\n // 引数の型を取得\n const args = Reflect.getMetadata('design:paramtypes', target, propertyKey);\n const tool = buildToolFromSchema(propertyKey, params?.description ?? '', args[0]);\n addTool(target, tool);\n return descriptor;\n };\n}\n\nexport interface AiSystemConfig {\n model?: ChatCompletionCreateParamsBase['model'];\n instructions?: string;\n shots?: {input: string, output: string}[];\n}\n\nexport function setAiSystemConfig(obj: {[AI_SYSTEM]: AiSystemConfig}, config: AiSystemConfig) {\n obj[AI_SYSTEM] = config;\n return obj;\n}\n\nexport function getAiSystemConfig(obj: {[AI_SYSTEM]: AiSystemConfig}): AiSystemConfig {\n return obj[AI_SYSTEM];\n}\n\nexport function AiSystem({\n model = 'gpt-4-1106-preview',\n instructions = ``,\n shots = [],\n}: AiSystemConfig) {\n return function (target: any) {\n setAiSystemConfig(target, {model, instructions, shots});\n return target;\n };\n}\n\nexport class AiToolsAgent {\n constructor (protected openai: OpenAiServiceImpl) { }\n \n messages: ChatCompletionMessageParam[] = [\n { role: 'system' as const, content: '' },\n ];\n\n results: any[] = [];\n\n get tools() {\n return getTools(this.constructor as any);\n }\n\n get config() {\n return getAiSystemConfig(this.constructor as any);\n }\n\n async completion(tools: any[] = this.tools) {\n const message = await this.openai.chat.completions.create({\n model: this.config.model!,\n messages: this.messages,\n tools,\n });\n for (const call of message.choices?.[0]?.message?.tool_calls ?? []) {\n if (call.type === 'function') {\n const func = (this as any)[call.function.name];\n const result = func(JSON.parse(call.function.arguments));\n this.results.push(result);\n }\n }\n }\n\n async execute<T=any>(message: string, options: {tools?: any[]} = {}): Promise<T> {\n this.messages.push({role: 'user', content: message});\n await this.completion(options.tools);\n return this.results.at(-1) as any;\n }\n}\n\n","import { Injectable } from \"@angular/core\";\nimport { LOCAL_STORAGE } from '@nx-ddd/any-func/adapters/local-storage';\nimport CryptoJS from 'crypto-js';\n\n@Injectable()\nexport class CacheAdapter {\n protected localStorage = LOCAL_STORAGE.inject();\n\n async get<T>(keyOrObj: string | object): Promise<T | null> {\n const key = this.makeKey(keyOrObj);\n return this.parseJson(this.localStorage.getItem(key)) as T | null;\n }\n\n async set(keyOrObj: string | object, value: any): Promise<void> {\n const key = this.makeKey(keyOrObj);\n this.localStorage.setItem(key, this.makeJson(value));\n }\n\n async call<P extends (string | object), T>(props: P, callback: (props: P) => Promise<T>): Promise<T> {\n const key = this.makeKey(props);\n let value = await this.get<T>(key);\n if (value) return value;\n value = await callback(props);\n await this.set(key, value);\n return value; \n }\n\n protected makeKey(keyOrObj: string | object): string {\n const value = typeof keyOrObj === 'string' ? keyOrObj : JSON.stringify(keyOrObj);\n return CryptoJS.SHA256(value).toString();\n }\n\n protected makeJson(valueOrObj: any): string {\n return JSON.stringify(valueOrObj);\n }\n\n protected parseJson(value: string): any {\n return JSON.parse(value);\n }\n}\n","import { inject, InjectionToken } from '@angular/core';\nimport type { AnyFuncConfig } from './types';\n\n/**\n * InjectionToken for AnyFuncService\n */\nexport const ANY_FUNC_SERVICE = new InjectionToken<any>('[@nx-ddd/any-func] AnyFuncService');\n\n/**\n * InjectionToken for AnyFuncConfig\n */\nexport const ANY_FUNC_CONFIG = new InjectionToken<AnyFuncConfig>('[@nx-ddd/any-func] AnyFuncConfig');\n\n/**\n * Injects the AnyFuncService\n */\nexport function injectAnyFunc<T = any>(): T {\n return inject(ANY_FUNC_SERVICE, {optional: true}) ?? {} as T;\n}\n","import type { ChatCompletionMessageParam } from 'openai/resources';\n\n/**\n * Type guard for browser File object\n */\nexport function isBrowserFile(obj: unknown): obj is File {\n return typeof File !== 'undefined' && obj instanceof File;\n}\n\n/**\n * Helper class for building OpenAI message content\n */\nexport class OpenAiMessageHelper {\n /**\n * Converts an image file to base64 string\n */\n static async imageToBase64(imageFile: File): Promise<string> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => {\n const base64String = reader.result as string;\n resolve(base64String.split(',')[1]);\n };\n reader.onerror = reject;\n reader.readAsDataURL(imageFile);\n });\n }\n\n /**\n * Builds message content from files\n */\n static async buildFilesMessage(files: File[]): Promise<ChatCompletionMessageParam['content']> {\n return await Promise.all(files.map(async (file) => ({\n type: 'image_url' as const,\n image_url: { url: `data:image/jpeg;base64,${await this.imageToBase64(file)}` },\n })));\n }\n}\n","import pLimit from 'p-limit';\nimport { CacheAdapter } from '../impl/adapters/cache';\n\n/**\n * Embedding-related utilities for AnyFuncService\n */\nexport class EmbeddingsHelper {\n constructor(\n private cache: CacheAdapter,\n private openai: { embeddings: { create: (params: { model: string; input: string }) => Promise<{ data: { embedding: number[] }[] }> } }\n ) {}\n\n async getEmbeddings<T>(item: T, accessor: (item: T) => string): Promise<number[]> {\n const props = { item, model: 'text-embedding-3-small' };\n const cached = await this.cache.get<number[]>(props);\n if (cached) return cached;\n const embedding = await this.openai.embeddings.create({ model: props.model, input: accessor(item) }).then(res => res.data[0].embedding);\n await this.cache.set(props, embedding);\n return embedding;\n }\n\n async sort<T>(items: T[], accessor: (item: T) => string, target: string): Promise<T[]> {\n const dist = (a: number[], b: number[]) => Math.sqrt(a.reduce((acc, v, i) => acc + (v - b[i]) ** 2, 0));\n const targetEmbeddings = await this.getEmbeddings(target, s => s);\n const limit = pLimit(10);\n const embeddings = await Promise.all(items.map(item => limit(() => this.getEmbeddings(item, accessor))));\n const items_ = items.map((item, i) => ({ item, embedding: embeddings[i], distance: dist(embeddings[i], targetEmbeddings) }));\n return items_.sort((a, b) => a.distance - b.distance).map(({item}) => item);\n }\n}\n","import { provideOpenaiService } from '@nx-ddd/common/infrastructure/externals/openai/impl';\nimport { CacheAdapter } from '../impl/adapters/cache';\nimport { ANY_FUNC_SERVICE, ANY_FUNC_CONFIG } from './tokens';\nimport { AnyFuncConfig } from './types';\nimport { AnyFuncService } from './any-func.service.impl';\n\n/**\n * Provides the AnyFuncService with configuration\n */\nexport function provideAnyFunc(useFactory?: () => AnyFuncConfig) {\n const config = useFactory?.() ?? ({} as AnyFuncConfig);\n return [\n { provide: ANY_FUNC_SERVICE, useClass: AnyFuncService },\n { provide: ANY_FUNC_CONFIG, useFactory },\n CacheAdapter,\n provideOpenaiService(() => ({\n apiKey: config.openaiApiKey,\n dangerouslyAllowBrowser: config.dangerouslyAllowBrowser\n })),\n ]\n}\n","import { inject, Injectable } from '@angular/core';\nimport { injectOpenAiService } from '@nx-ddd/common/infrastructure/externals/openai';\nimport { catchError, lastValueFrom, map, of, retry, switchMap, tap } from 'rxjs';\nimport type { ChatCompletionMessageParam, FunctionParameters } from 'openai/resources';\nimport { ZodSchema } from 'zod';\nimport zodToJsonSchema from 'zod-to-json-schema';\nimport { buildFunctionTool } from '../agent';\nimport { targetConstructorToSchema } from '../impl/json-schema';\nimport { CacheAdapter } from '../impl/adapters/cache';\nimport { ValidatorAdapter } from '@nx-ddd/any-func/adapters/validator';\nimport { JsonSchema } from 'json-schema-library';\nimport { CallOptions, AnyFuncConfig } from './types';\nimport { ANY_FUNC_CONFIG } from './tokens';\nimport { isBrowserFile, OpenAiMessageHelper } from './message-helper';\nimport { EmbeddingsHelper } from './embeddings';\n\n// Re-export for backward compatibility\nexport { CallOptions, AnyFuncConfig } from './types';\nexport { ANY_FUNC_SERVICE, ANY_FUNC_CONFIG, injectAnyFunc } from './tokens';\nexport { provideAnyFunc } from './providers';\n\n@Injectable()\nexport class AnyFuncService {\n protected readonly openai = injectOpenAiService();\n protected readonly config = inject(ANY_FUNC_CONFIG, {optional: true}) ?? { debug: false };\n protected cache = inject(CacheAdapter);\n protected validator = inject(ValidatorAdapter);\n private embeddingsHelper: EmbeddingsHelper;\n\n constructor() {\n this.embeddingsHelper = new EmbeddingsHelper(this.cache, this.openai);\n }\n\n /** @deprecated use callByJsonSchema instead */\n async jsonSchema(_input: any, jsonSchema: FunctionParameters, options: CallOptions<any, any> = {}): Promise<any> {\n return this.callByJsonSchema(_input, jsonSchema, options);\n }\n\n async callByJsonSchema(_input: any, jsonSchema: FunctionParameters, {\n instructions = '', model = 'gpt-4o', specs = [], embeddings = false,\n sample = 3, temperature = 0, maxRetry = 3,\n validator = (data: any) => this.validator.validate(jsonSchema, data),\n }: CallOptions<any, any> = {}): Promise<any> {\n for (const spec of specs) {\n const errors = await validator(spec.output);\n if (errors.length > 0) throw new Error(JSON.stringify(errors, null, 2));\n }\n const content = await this.parseInput(_input);\n const sortedSpecs = embeddings ? await this.embeddingsHelper.sort(specs, embeddings, _input) : specs;\n const messages: ChatCompletionMessageParam[] = [\n { role: 'system', content: instructions },\n ...(await this.buildChatMessages(sortedSpecs.slice(0, sample).reverse())),\n { role: 'user', content },\n ];\n return lastValueFrom(of(null).pipe(\n map(() => messages),\n switchMap(() => this.complete(_input, jsonSchema, messages, { model, sample, temperature })),\n tap(message => messages.push(message)),\n switchMap(async (message) => {\n const toolCall = message.tool_calls![0];\n if (toolCall.type !== 'function') throw new Error('Unexpected tool call type');\n const output = JSON.parse(toolCall.function.arguments);\n console.debug('[AnyFuncService#complete] output:', output);\n const errors = await validator(output);\n console.debug('[AnyFuncService#complete] errors:', errors);\n if (errors.length > 0) {\n messages.push({ role: 'tool', content: JSON.stringify(errors), tool_call_id: message.tool_calls![0].id });\n if (this.config.debug) console.debug('messages', JSON.stringify(messages, null, 2));\n throw new Error(JSON.stringify(errors, null, 2));\n } else {\n messages.push({ role: 'tool', content: JSON.stringify(output), tool_call_id: message.tool_calls![0].id });\n if (this.config.debug) console.debug('messages', JSON.stringify(messages, null, 2));\n }\n return output;\n }),\n catchError((error) => { console.error(error); throw error; }),\n retry(maxRetry),\n ));\n }\n\n async callByZod<I, O>(_input: I, zod: ZodSchema<O>, options: CallOptions<I, O> = {}): Promise<O> {\n const schema = zodToJsonSchema(zod as any, { $refStrategy: 'none' });\n const validator = options.validator ?? ((data: any) => this.validator.validate(schema, data));\n return this.jsonSchema(_input, schema, { ...options, validator });\n }\n\n async callByClassValidator<I, O>(_input: I, args: {new (): O}, options: CallOptions<I, O> = {}): Promise<O> {\n const parameters = targetConstructorToSchema(args) as FunctionParameters;\n const validator = options.validator ?? ((data: any) => this.validator.validate(parameters, data));\n console.debug('[AnyFuncService#call] parameters:', parameters);\n return this.jsonSchema(_input, parameters, { ...options, validator });\n }\n\n async call<I, O>(_input: I, args: {new (): O} | ZodSchema<O> | JsonSchema, params: CallOptions<I, O> = {}): Promise<O> {\n if (args instanceof ZodSchema) return this.callByZod(_input, args, params);\n if (args instanceof Function) return this.callByClassValidator(_input, args, params);\n if (typeof args === 'object' && args !== null && 'type' in args && args.type === 'object') {\n return this.callByJsonSchema(_input, args, params);\n }\n throw new Error('Invalid args type');\n }\n\n protected async complete<I, O>(\n _input: any, jsonSchema: FunctionParameters, messages: ChatCompletionMessageParam[],\n { model = 'gpt-4o', temperature = 0 }: CallOptions<I, O> & {functionOutput?: object} = {}\n ) {\n const tool = buildFunctionTool({name: 'function', description: '', parameters: jsonSchema});\n const props = {\n model, messages, tools: [tool],\n tool_choice: { type: 'function' as const, function: { name: 'function' } },\n temperature,\n };\n const res = await this.cache.call(props, props => this.openai.chat.completions.create(props));\n return res.choices[0].message;\n }\n\n protected async buildChatMessages(specs: { input: any; output: any }[]): Promise<{role: 'assistant' | 'user', content: string}[]> {\n const messages = await Promise.all(specs.map(async ({ input, output }) => {\n const parsedInput = await this.parseInput(input);\n return <ChatCompletionMessageParam[]>[\n { role: 'user', content: parsedInput },\n { role: 'assistant', content: null, tool_calls: [{ id: 'call-example', type: 'function', function: { name: 'function', arguments: JSON.stringify(output) } }] },\n { role: 'tool', content: 'success', tool_call_id: 'call-example' },\n ];\n }));\n return messages.flat() as {role: 'assistant' | 'user', content: string}[];\n }\n\n private async parseInput(input: any) {\n if (isBrowserFile(input)) return await OpenAiMessageHelper.buildFilesMessage([input]);\n else if (input === 'string') return input;\n else return JSON.stringify(input);\n }\n}\n","// Re-export from impl to maintain backwards compatibility\nexport {\n ANY_FUNC_SERVICE,\n ANY_FUNC_CONFIG,\n injectAnyFunc,\n provideAnyFunc,\n AnyFuncService,\n CallOptions,\n AnyFuncConfig,\n} from './any-func.service.impl';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["_targetConstructorToSchema"],"mappings":";;;;;;;;;;;;;;AAAA;AACA,IAAI,sBAA2B;AAE/B,IAAI;IACF,CAAC,EAAE,sBAAsB,EAAE,GAAG,OAAO,CAAC,+BAA+B,CAAC;AACxE;AAAE,MAAM;;AAER;SAEgB,kBAAkB,GAAA;AAChC,IAAA,OAAO,sBAAsB;AAC/B;AAEM,SAAU,kBAAkB,CAAC,eAAoB,EAAA;IACrD,sBAAsB,GAAG,eAAe;AAC1C;;ACVA;AAEA;AAEA,SAAS,WAAW,CAAC,MAAc,EAAE,QAAgB,EAAA;IACnD,OAAO,OAAO,CAAC,WAAW,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,CAAC;AAC7D;AAEA,SAAS,cAAc,CACrB,IAAS,EACT,OAAY,EAAA;AAEZ,IAAA,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE;AAC9B,QAAA,IACE,IAAI,CAAC,SAAS,KAAK,MAAM,CAAC,SAAS;AACnC,YAAA,IAAI,CAAC,SAAS,KAAK,MAAM,CAAC,SAAS,EACnC;AACA,YAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC3B;aAAO,IAAI,IAAI,CAAC,SAAS,KAAK,MAAM,CAAC,SAAS,EAAE;AAC9C,YAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC3B;aAAO,IAAI,IAAI,CAAC,SAAS,KAAK,OAAO,CAAC,SAAS,EAAE;AAC/C,YAAA,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;QAC5B;AAEA,QAAA,OAAO,yBAAyB,CAAC,IAAI,EAAE,OAAO,CAAC;IACjD;AACF;AAEA,MAAM,oBAAoB,GAAE;IAC1B,CAAC,eAAe,CAAC,iBAAiB,GAAG,CAAC,IAAS,EAAE,OAAY,KAAI;AAC/D,QAAA,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,UAAU,EAAE;AACrC,YAAA,MAAM,QAAQ,GAAG,OAAO,CAAC;AACvB,kBAAE,OAAO,CAAC,+BAA+B,CAAC,gBAAgB,CACtD,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,YAAY;kBAEnB,IAAI;YACR,MAAM,SAAS,GAAG;AAChB,kBAAE,QAAQ,CAAC,YAAY;AACvB,kBAAE,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC;AACzD,YAAA,OAAO,cAAc,CAAC,SAAS,EAAE,OAAO,CAAC;QAC3C;IACF,CAAC;AACD,IAAA,OAAO,EAAE,CAAC,IAAS,KAAiB;QAClC,OAAO;AACL,YAAA,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,WAAW;SACpB;IACH,CAAC;CACF;SAEe,yBAAyB,CAAC,MAAgB,EAAE,UAA6B,EAAE,EAAA;IACzF,OAAOA,2BAA0B,CAAC,MAAM,EAAE;AACxC,QAAA,GAAG,OAAO;QACV,oBAAoB;QACpB,+BAA+B,EAAE,kBAAkB,EAAE;AACtD,KAAA,CAAgB;AACnB;;ACxDA,MAAM,QAAQ,GAAG,YAAqB;AACtC,MAAM,SAAS,GAAG,aAAsB;AAElC,SAAU,OAAO,CAAC,GAA2B,EAAE,IAAY,EAAA;IAC/D,GAAG,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE;IACnC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AACxB,IAAA,OAAO,GAAG;AACZ;AAEM,SAAU,QAAQ,CAAC,GAA2B,EAAA;AAClD,IAAA,OAAO,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC5B;AAEM,SAAU,iBAAiB,CAAC,MAIjC,EAAA;IACC,OAAO;AACL,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,QAAQ,EAAE;YACR,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,UAAU,EAAE,MAAM,CAAC,UAAU;AAC9B,SAAA;KACF;AACH;SAEgB,mBAAmB,CAAC,IAAY,EAAE,WAAmB,EAAE,MAAgB,EAAA;AACrF,IAAA,MAAM,UAAU,GAAG,yBAAyB,CAAC,MAAM,CAAuB;IAC1E,OAAO,iBAAiB,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;AAC7D;AAEM,SAAU,UAAU,CAAC,MAA+B,EAAA;AACxD,IAAA,OAAO,UAAU,MAAW,EAAE,WAAmB,EAAE,UAA8B,EAAA;;AAE/E,QAAA,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,mBAAmB,EAAE,MAAM,EAAE,WAAW,CAAC;AAC1E,QAAA,MAAM,IAAI,GAAG,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AACjF,QAAA,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC;AACrB,QAAA,OAAO,UAAU;AACnB,IAAA,CAAC;AACH;AAQM,SAAU,iBAAiB,CAAC,GAAkC,EAAE,MAAsB,EAAA;AAC1F,IAAA,GAAG,CAAC,SAAS,CAAC,GAAG,MAAM;AACvB,IAAA,OAAO,GAAG;AACZ;AAEM,SAAU,iBAAiB,CAAC,GAAkC,EAAA;AAClE,IAAA,OAAO,GAAG,CAAC,SAAS,CAAC;AACvB;AAEM,SAAU,QAAQ,CAAC,EACvB,KAAK,GAAG,oBAAoB,EAC5B,YAAY,GAAG,CAAA,CAAE,EACjB,KAAK,GAAG,EAAE,GACK,EAAA;AACf,IAAA,OAAO,UAAU,MAAW,EAAA;QAC1B,iBAAiB,CAAC,MAAM,EAAE,EAAC,KAAK,EAAE,YAAY,EAAE,KAAK,EAAC,CAAC;AACvD,QAAA,OAAO,MAAM;AACf,IAAA,CAAC;AACH;MAEa,YAAY,CAAA;AACA,IAAA,MAAA;AAAvB,IAAA,WAAA,CAAuB,MAAyB,EAAA;QAAzB,IAAA,CAAA,MAAM,GAAN,MAAM;IAAuB;AAEpD,IAAA,QAAQ,GAAiC;AACvC,QAAA,EAAE,IAAI,EAAE,QAAiB,EAAE,OAAO,EAAE,EAAE,EAAE;KACzC;IAED,OAAO,GAAU,EAAE;AAEnB,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,QAAQ,CAAC,IAAI,CAAC,WAAkB,CAAC;IAC1C;AAEA,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,iBAAiB,CAAC,IAAI,CAAC,WAAkB,CAAC;IACnD;AAEA,IAAA,MAAM,UAAU,CAAC,KAAA,GAAe,IAAI,CAAC,KAAK,EAAA;AACxC,QAAA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;AACxD,YAAA,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAM;YACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,KAAK;AACN,SAAA,CAAC;AACF,QAAA,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,IAAI,EAAE,EAAE;AAClE,YAAA,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE;gBAC5B,MAAM,IAAI,GAAI,IAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC9C,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AACxD,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;YAC3B;QACF;IACF;AAEA,IAAA,MAAM,OAAO,CAAQ,OAAe,EAAE,UAA2B,EAAE,EAAA;AACjE,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAC,CAAC;QACpD,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC;QACpC,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAQ;IACnC;AACD;;MC3GY,YAAY,CAAA;AACb,IAAA,YAAY,GAAG,aAAa,CAAC,MAAM,EAAE;IAE/C,MAAM,GAAG,CAAI,QAAyB,EAAA;QACpC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;AAClC,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAa;IACnE;AAEA,IAAA,MAAM,GAAG,CAAC,QAAyB,EAAE,KAAU,EAAA;QAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;AAClC,QAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACtD;AAEA,IAAA,MAAM,IAAI,CAAiC,KAAQ,EAAE,QAAkC,EAAA;QACrF,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QAC/B,IAAI,KAAK,GAAG,MAAM,IAAI,CAAC,GAAG,CAAI,GAAG,CAAC;AAClC,QAAA,IAAI,KAAK;AAAE,YAAA,OAAO,KAAK;AACvB,QAAA,KAAK,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC;QAC7B,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;AAC1B,QAAA,OAAO,KAAK;IACd;AAEU,IAAA,OAAO,CAAC,QAAyB,EAAA;AACzC,QAAA,MAAM,KAAK,GAAG,OAAO,QAAQ,KAAK,QAAQ,GAAG,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;QAChF,OAAO,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;IAC1C;AAEU,IAAA,QAAQ,CAAC,UAAe,EAAA;AAChC,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;IACnC;AAEU,IAAA,SAAS,CAAC,KAAa,EAAA;AAC/B,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;IAC1B;uGAjCW,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;2GAAZ,YAAY,EAAA,CAAA;;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBADxB;;;ACDD;;AAEG;MACU,gBAAgB,GAAG,IAAI,cAAc,CAAM,mCAAmC;AAE3F;;AAEG;MACU,eAAe,GAAG,IAAI,cAAc,CAAgB,kCAAkC;AAEnG;;AAEG;SACa,aAAa,GAAA;AAC3B,IAAA,OAAO,MAAM,CAAC,gBAAgB,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,IAAI,EAAO;AAC9D;;AChBA;;AAEG;AACG,SAAU,aAAa,CAAC,GAAY,EAAA;IACxC,OAAO,OAAO,IAAI,KAAK,WAAW,IAAI,GAAG,YAAY,IAAI;AAC3D;AAEA;;AAEG;MACU,mBAAmB,CAAA;AAC9B;;AAEG;AACH,IAAA,aAAa,aAAa,CAAC,SAAe,EAAA;QACxC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACrC,YAAA,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE;AAC/B,YAAA,MAAM,CAAC,MAAM,GAAG,MAAK;AACnB,gBAAA,MAAM,YAAY,GAAG,MAAM,CAAC,MAAgB;gBAC5C,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,YAAA,CAAC;AACD,YAAA,MAAM,CAAC,OAAO,GAAG,MAAM;AACvB,YAAA,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC;AACjC,QAAA,CAAC,CAAC;IACJ;AAEA;;AAEG;AACH,IAAA,aAAa,iBAAiB,CAAC,KAAa,EAAA;AAC1C,QAAA,OAAO,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,IAAI,MAAM;AAClD,YAAA,IAAI,EAAE,WAAoB;AAC1B,YAAA,SAAS,EAAE,EAAE,GAAG,EAAE,CAAA,uBAAA,EAA0B,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,EAAE;SAC/E,CAAC,CAAC,CAAC;IACN;AACD;;AClCD;;AAEG;MACU,gBAAgB,CAAA;AAEjB,IAAA,KAAA;AACA,IAAA,MAAA;IAFV,WAAA,CACU,KAAmB,EACnB,MAA8H,EAAA;QAD9H,IAAA,CAAA,KAAK,GAAL,KAAK;QACL,IAAA,CAAA,MAAM,GAAN,MAAM;IACb;AAEH,IAAA,MAAM,aAAa,CAAI,IAAO,EAAE,QAA6B,EAAA;QAC3D,MAAM,KAAK,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,wBAAwB,EAAE;QACvD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAW,KAAK,CAAC;AACpD,QAAA,IAAI,MAAM;AAAE,YAAA,OAAO,MAAM;AACzB,QAAA,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACvI,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC;AACtC,QAAA,OAAO,SAAS;IAClB;AAEA,IAAA,MAAM,IAAI,CAAI,KAAU,EAAE,QAA6B,EAAE,MAAc,EAAA;AACrE,QAAA,MAAM,IAAI,GAAG,CAAC,CAAW,EAAE,CAAW,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AACvG,QAAA,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC;AACjE,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,EAAE,CAAC;AACxB,QAAA,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;AACxG,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,EAAE,CAAC,CAAC;AAC5H,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,EAAC,IAAI,EAAC,KAAK,IAAI,CAAC;IAC7E;AACD;;ACvBD;;AAEG;AACG,SAAU,cAAc,CAAC,UAAgC,EAAA;AAC7D,IAAA,MAAM,MAAM,GAAG,UAAU,IAAI,IAAK,EAAoB;IACtD,OAAO;AACL,QAAA,EAAE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,cAAc,EAAE;AACvD,QAAA,EAAE,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE;QACxC,YAAY;AACZ,QAAA,oBAAoB,CAAC,OAAO;YAC1B,MAAM,EAAE,MAAM,CAAC,YAAY;YAC3B,uBAAuB,EAAE,MAAM,CAAC;AACjC,SAAA,CAAC,CAAC;KACJ;AACH;;MCEa,cAAc,CAAA;IACN,MAAM,GAAG,mBAAmB,EAAE;AAC9B,IAAA,MAAM,GAAG,MAAM,CAAC,eAAe,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE;AAC/E,IAAA,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC;AAC5B,IAAA,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACtC,IAAA,gBAAgB;AAExB,IAAA,WAAA,GAAA;AACE,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC;IACvE;;IAGA,MAAM,UAAU,CAAC,MAAW,EAAE,UAA8B,EAAE,UAAiC,EAAE,EAAA;QAC/F,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC;IAC3D;IAEA,MAAM,gBAAgB,CAAC,MAAW,EAAE,UAA8B,EAAE,EAClE,YAAY,GAAG,EAAE,EAAE,KAAK,GAAG,QAAQ,EAAE,KAAK,GAAG,EAAE,EAAE,UAAU,GAAG,KAAK,EACnE,MAAM,GAAG,CAAC,EAAE,WAAW,GAAG,CAAC,EAAE,QAAQ,GAAG,CAAC,EACzC,SAAS,GAAG,CAAC,IAAS,KAAK,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,GAAA,GAC3C,EAAE,EAAA;AAC3B,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACxB,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;AAC3C,YAAA,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;AAAE,gBAAA,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACzE;QACA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;QAC7C,MAAM,WAAW,GAAG,UAAU,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,GAAG,KAAK;AACpG,QAAA,MAAM,QAAQ,GAAiC;AAC7C,YAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE;AACzC,YAAA,IAAI,MAAM,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;AACzE,YAAA,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE;SAC1B;AACD,QAAA,OAAO,aAAa,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAChC,GAAG,CAAC,MAAM,QAAQ,CAAC,EACnB,SAAS,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC,EAC5F,GAAG,CAAC,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EACtC,SAAS,CAAC,OAAO,OAAO,KAAI;YAC1B,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAW,CAAC,CAAC,CAAC;AACvC,YAAA,IAAI,QAAQ,CAAC,IAAI,KAAK,UAAU;AAAE,gBAAA,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC;AAC9E,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC;AACtD,YAAA,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,MAAM,CAAC;AAC1D,YAAA,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC;AACtC,YAAA,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,MAAM,CAAC;AAC1D,YAAA,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACrB,gBAAA,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,UAAW,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AACzG,gBAAA,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK;AAAE,oBAAA,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACnF,gBAAA,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YAClD;iBAAO;AACL,gBAAA,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,UAAW,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AACzG,gBAAA,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK;AAAE,oBAAA,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YACrF;AACA,YAAA,OAAO,MAAM;AACf,QAAA,CAAC,CAAC,EACF,UAAU,CAAC,CAAC,KAAK,KAAI,EAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAC7D,KAAK,CAAC,QAAQ,CAAC,CAChB,CAAC;IACJ;IAEA,MAAM,SAAS,CAAO,MAAS,EAAE,GAAiB,EAAE,UAA6B,EAAE,EAAA;AACjF,QAAA,MAAM,MAAM,GAAG,eAAe,CAAC,GAAU,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC;QACpE,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,KAAK,CAAC,IAAS,KAAK,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAC7F,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,CAAC;IACnE;IAEA,MAAM,oBAAoB,CAAO,MAAS,EAAE,IAAiB,EAAE,UAA6B,EAAE,EAAA;AAC5F,QAAA,MAAM,UAAU,GAAG,yBAAyB,CAAC,IAAI,CAAuB;QACxE,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,KAAK,CAAC,IAAS,KAAK,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;AACjG,QAAA,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,UAAU,CAAC;AAC9D,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,CAAC;IACvE;IAEA,MAAM,IAAI,CAAO,MAAS,EAAE,IAA6C,EAAE,SAA4B,EAAE,EAAA;QACvG,IAAI,IAAI,YAAY,SAAS;YAAE,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC;QAC1E,IAAI,IAAI,YAAY,QAAQ;YAAE,OAAO,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC;AACpF,QAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE;YACzF,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC;QACpD;AACA,QAAA,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC;IACtC;AAEU,IAAA,MAAM,QAAQ,CACtB,MAAW,EAAE,UAA8B,EAAE,QAAsC,EACnF,EAAE,KAAK,GAAG,QAAQ,EAAE,WAAW,GAAG,CAAC,KAAoD,EAAE,EAAA;AAEzF,QAAA,MAAM,IAAI,GAAG,iBAAiB,CAAC,EAAC,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,EAAE,EAAE,UAAU,EAAE,UAAU,EAAC,CAAC;AAC3F,QAAA,MAAM,KAAK,GAAG;AACZ,YAAA,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC;AAC9B,YAAA,WAAW,EAAE,EAAE,IAAI,EAAE,UAAmB,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE;YAC1E,WAAW;SACZ;AACD,QAAA,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC7F,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO;IAC/B;IAEU,MAAM,iBAAiB,CAAC,KAAoC,EAAA;AACpE,QAAA,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,KAAI;YACvE,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;YAChD,OAAqC;AACnC,gBAAA,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE;AACtC,gBAAA,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,EAAE;gBAC/J,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,cAAc,EAAE;aACnE;QACH,CAAC,CAAC,CAAC;AACH,QAAA,OAAO,QAAQ,CAAC,IAAI,EAAqD;IAC3E;IAEQ,MAAM,UAAU,CAAC,KAAU,EAAA;QACjC,IAAI,aAAa,CAAC,KAAK,CAAC;YAAE,OAAO,MAAM,mBAAmB,CAAC,iBAAiB,CAAC,CAAC,KAAK,CAAC,CAAC;aAChF,IAAI,KAAK,KAAK,QAAQ;AAAE,YAAA,OAAO,KAAK;;AACpC,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;IACnC;uGA9GW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;2GAAd,cAAc,EAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B;;;ACrBD;;ACAA;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"nx-ddd-any-func.mjs","sources":["../../../../../packages/@nx-ddd/any-func/src/lib/impl/json-schema/default-metadata-storage.ts","../../../../../packages/@nx-ddd/any-func/src/lib/impl/json-schema/json-schema.ts","../../../../../packages/@nx-ddd/any-func/src/lib/agent/agent.ts","../../../../../packages/@nx-ddd/any-func/src/lib/impl/adapters/cache/cache.adapter.ts","../../../../../packages/@nx-ddd/any-func/src/lib/any-func/tokens.ts","../../../../../packages/@nx-ddd/any-func/src/lib/any-func/message-helper.ts","../../../../../packages/@nx-ddd/any-func/src/lib/any-func/embeddings.ts","../../../../../packages/@nx-ddd/any-func/src/lib/any-func/providers.ts","../../../../../packages/@nx-ddd/any-func/src/lib/any-func/any-func.service.impl.ts","../../../../../packages/@nx-ddd/any-func/src/lib/nx-ddd-any-func.ts"],"sourcesContent":["\nlet defaultMetadataStorage: any;\n\ntry {\n ({ defaultMetadataStorage } = require('class-transformer/cjs/storage'));\n} catch {\n void 0;\n}\n\nexport function getMetadataStorage() {\n return defaultMetadataStorage;\n}\n\nexport function setMetadataStorage(metadataStorage: any) {\n defaultMetadataStorage = metadataStorage;\n}\n","import { ValidationTypes } from \"class-validator\"\nimport { targetConstructorToSchema as _targetConstructorToSchema } from \"class-validator-jsonschema\"\nimport { IOptions } from \"class-validator-jsonschema/build/options\";\nimport { JSONSchema7 } from 'json-schema';\nimport { getMetadataStorage } from \"./default-metadata-storage\";\n\n\n\n\nfunction getPropType(target: object, property: string) {\n return Reflect.getMetadata('design:type', target, property)\n}\n\nfunction targetToSchema(\n type: any,\n options: any\n): any {\n if (typeof type === 'function') {\n if (\n type.prototype === String.prototype ||\n type.prototype === Symbol.prototype\n ) {\n return { type: 'string' }\n } else if (type.prototype === Number.prototype) {\n return { type: 'number' }\n } else if (type.prototype === Boolean.prototype) {\n return { type: 'boolean' }\n }\n\n return targetConstructorToSchema(type, options)\n }\n}\n\nconst additionalConverters= {\n [ValidationTypes.NESTED_VALIDATION]: (meta: any, options: any) => {\n if (typeof meta.target === 'function') {\n const typeMeta = options.classTransformerMetadataStorage\n ? options.classTransformerMetadataStorage.findTypeMetadata(\n meta.target,\n meta.propertyName\n )\n : null\n const childType = typeMeta\n ? typeMeta.typeFunction()\n : getPropType(meta.target.prototype, meta.propertyName)\n return targetToSchema(childType, options)\n }\n },\n isDayjs: (meta: any): JSONSchema7 => {\n return {\n type: 'string',\n format: 'date-time', \n };\n },\n};\n\nexport function targetConstructorToSchema(target: Function, options: Partial<IOptions> = {}): JSONSchema7 {\n return _targetConstructorToSchema(target, {\n ...options,\n additionalConverters,\n classTransformerMetadataStorage: getMetadataStorage(),\n }) as JSONSchema7;\n}\n","import { ChatCompletionMessageParam, FunctionParameters, } from \"openai/resources\";\nimport { FunctionTool } from \"openai/resources/beta/assistants\";\nimport { ChatCompletionCreateParamsBase } from \"openai/resources/chat/completions\";\nimport { OpenAiServiceImpl } from '@nx-ddd/common/infrastructure/externals/openai/impl';\nimport { targetConstructorToSchema } from '../impl/json-schema';\n\nconst AI_TOOLS = '[ai-tools]' as const;\nconst AI_SYSTEM = '[ai-system]' as const;\n\nexport function addTool(obj: {[AI_TOOLS]: object[]}, tool: object) {\n obj[AI_TOOLS] = obj[AI_TOOLS] ?? [];\n obj[AI_TOOLS].push(tool);\n return obj;\n}\n\nexport function getTools(obj: {[AI_TOOLS]: object[]}): any[] {\n return obj[AI_TOOLS] ?? [];\n}\n\nexport function buildFunctionTool(params: {\n name: string,\n description: string,\n parameters: FunctionParameters,\n}): FunctionTool {\n return {\n type: 'function',\n function: {\n name: params.name,\n description: params.description,\n parameters: params.parameters,\n },\n }\n}\n\nexport function buildToolFromSchema(name: string, description: string, schema: Function): FunctionTool {\n const parameters = targetConstructorToSchema(schema) as FunctionParameters;\n return buildFunctionTool({ name, description, parameters });\n}\n\nexport function AiFunction(params?: {description?: string}) {\n return function (target: any, propertyKey: string, descriptor: PropertyDescriptor) {\n \n const args = Reflect.getMetadata('design:paramtypes', target, propertyKey);\n const tool = buildToolFromSchema(propertyKey, params?.description ?? '', args[0]);\n addTool(target, tool);\n return descriptor;\n };\n}\n\nexport interface AiSystemConfig {\n model?: ChatCompletionCreateParamsBase['model'];\n instructions?: string;\n shots?: {input: string, output: string}[];\n}\n\nexport function setAiSystemConfig(obj: {[AI_SYSTEM]: AiSystemConfig}, config: AiSystemConfig) {\n obj[AI_SYSTEM] = config;\n return obj;\n}\n\nexport function getAiSystemConfig(obj: {[AI_SYSTEM]: AiSystemConfig}): AiSystemConfig {\n return obj[AI_SYSTEM];\n}\n\nexport function AiSystem({\n model = 'gpt-4-1106-preview',\n instructions = ``,\n shots = [],\n}: AiSystemConfig) {\n return function (target: any) {\n setAiSystemConfig(target, {model, instructions, shots});\n return target;\n };\n}\n\nexport class AiToolsAgent {\n constructor (protected openai: OpenAiServiceImpl) { }\n \n messages: ChatCompletionMessageParam[] = [\n { role: 'system' as const, content: '' },\n ];\n\n results: any[] = [];\n\n get tools() {\n return getTools(this.constructor as any);\n }\n\n get config() {\n return getAiSystemConfig(this.constructor as any);\n }\n\n async completion(tools: any[] = this.tools) {\n const message = await this.openai.chat.completions.create({\n model: this.config.model!,\n messages: this.messages,\n tools,\n });\n for (const call of message.choices?.[0]?.message?.tool_calls ?? []) {\n if (call.type === 'function') {\n const func = (this as any)[call.function.name];\n const result = func(JSON.parse(call.function.arguments));\n this.results.push(result);\n }\n }\n }\n\n async execute<T=any>(message: string, options: {tools?: any[]} = {}): Promise<T> {\n this.messages.push({role: 'user', content: message});\n await this.completion(options.tools);\n return this.results.at(-1) as any;\n }\n}\n\n","import { Injectable } from \"@angular/core\";\nimport { LOCAL_STORAGE } from '@nx-ddd/any-func/adapters/local-storage';\nimport CryptoJS from 'crypto-js';\n\n@Injectable()\nexport class CacheAdapter {\n protected localStorage = LOCAL_STORAGE.inject();\n\n async get<T>(keyOrObj: string | object): Promise<T | null> {\n const key = this.makeKey(keyOrObj);\n return this.parseJson(this.localStorage.getItem(key)) as T | null;\n }\n\n async set(keyOrObj: string | object, value: any): Promise<void> {\n const key = this.makeKey(keyOrObj);\n this.localStorage.setItem(key, this.makeJson(value));\n }\n\n async call<P extends (string | object), T>(props: P, callback: (props: P) => Promise<T>): Promise<T> {\n const key = this.makeKey(props);\n let value = await this.get<T>(key);\n if (value) return value;\n value = await callback(props);\n await this.set(key, value);\n return value; \n }\n\n protected makeKey(keyOrObj: string | object): string {\n const value = typeof keyOrObj === 'string' ? keyOrObj : JSON.stringify(keyOrObj);\n return CryptoJS.SHA256(value).toString();\n }\n\n protected makeJson(valueOrObj: any): string {\n return JSON.stringify(valueOrObj);\n }\n\n protected parseJson(value: string): any {\n return JSON.parse(value);\n }\n}\n","import { inject, InjectionToken } from '@angular/core';\nimport type { AnyFuncConfig } from './types';\n\n\nexport const ANY_FUNC_SERVICE = new InjectionToken<any>('[@nx-ddd/any-func] AnyFuncService');\n\n\nexport const ANY_FUNC_CONFIG = new InjectionToken<AnyFuncConfig>('[@nx-ddd/any-func] AnyFuncConfig');\n\n\nexport function injectAnyFunc<T = any>(): T {\n return inject(ANY_FUNC_SERVICE, {optional: true}) ?? {} as T;\n}\n","import type { ChatCompletionMessageParam } from 'openai/resources';\n\n\nexport function isBrowserFile(obj: unknown): obj is File {\n return typeof File !== 'undefined' && obj instanceof File;\n}\n\n\nexport class OpenAiMessageHelper {\n \n static async imageToBase64(imageFile: File): Promise<string> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => {\n const base64String = reader.result as string;\n resolve(base64String.split(',')[1]);\n };\n reader.onerror = reject;\n reader.readAsDataURL(imageFile);\n });\n }\n\n \n static async buildFilesMessage(files: File[]): Promise<ChatCompletionMessageParam['content']> {\n return await Promise.all(files.map(async (file) => ({\n type: 'image_url' as const,\n image_url: { url: `data:image/jpeg;base64,${await this.imageToBase64(file)}` },\n })));\n }\n}\n","import pLimit from 'p-limit';\nimport { CacheAdapter } from '../impl/adapters/cache';\n\n\nexport class EmbeddingsHelper {\n constructor(\n private cache: CacheAdapter,\n private openai: { embeddings: { create: (params: { model: string; input: string }) => Promise<{ data: { embedding: number[] }[] }> } }\n ) {}\n\n async getEmbeddings<T>(item: T, accessor: (item: T) => string): Promise<number[]> {\n const props = { item, model: 'text-embedding-3-small' };\n const cached = await this.cache.get<number[]>(props);\n if (cached) return cached;\n const embedding = await this.openai.embeddings.create({ model: props.model, input: accessor(item) }).then(res => res.data[0].embedding);\n await this.cache.set(props, embedding);\n return embedding;\n }\n\n async sort<T>(items: T[], accessor: (item: T) => string, target: string): Promise<T[]> {\n const dist = (a: number[], b: number[]) => Math.sqrt(a.reduce((acc, v, i) => acc + (v - b[i]) ** 2, 0));\n const targetEmbeddings = await this.getEmbeddings(target, s => s);\n const limit = pLimit(10);\n const embeddings = await Promise.all(items.map(item => limit(() => this.getEmbeddings(item, accessor))));\n const items_ = items.map((item, i) => ({ item, embedding: embeddings[i], distance: dist(embeddings[i], targetEmbeddings) }));\n return items_.sort((a, b) => a.distance - b.distance).map(({item}) => item);\n }\n}\n","import { provideOpenaiService } from '@nx-ddd/common/infrastructure/externals/openai/impl';\nimport { CacheAdapter } from '../impl/adapters/cache';\nimport { ANY_FUNC_SERVICE, ANY_FUNC_CONFIG } from './tokens';\nimport { AnyFuncConfig } from './types';\nimport { AnyFuncService } from './any-func.service.impl';\n\n\nexport function provideAnyFunc(useFactory?: () => AnyFuncConfig) {\n const config = useFactory?.() ?? ({} as AnyFuncConfig);\n return [\n { provide: ANY_FUNC_SERVICE, useClass: AnyFuncService },\n { provide: ANY_FUNC_CONFIG, useFactory },\n CacheAdapter,\n provideOpenaiService(() => ({\n apiKey: config.openaiApiKey,\n dangerouslyAllowBrowser: config.dangerouslyAllowBrowser\n })),\n ]\n}\n","import { inject, Injectable } from '@angular/core';\nimport { injectOpenAiService } from '@nx-ddd/common/infrastructure/externals/openai';\nimport { catchError, lastValueFrom, map, of, retry, switchMap, tap } from 'rxjs';\nimport type { ChatCompletionMessageParam, FunctionParameters } from 'openai/resources';\nimport { ZodSchema } from 'zod';\nimport zodToJsonSchema from 'zod-to-json-schema';\nimport { buildFunctionTool } from '../agent';\nimport { targetConstructorToSchema } from '../impl/json-schema';\nimport { CacheAdapter } from '../impl/adapters/cache';\nimport { ValidatorAdapter } from '@nx-ddd/any-func/adapters/validator';\nimport { JsonSchema } from 'json-schema-library';\nimport { CallOptions, AnyFuncConfig } from './types';\nimport { ANY_FUNC_CONFIG } from './tokens';\nimport { isBrowserFile, OpenAiMessageHelper } from './message-helper';\nimport { EmbeddingsHelper } from './embeddings';\n\n\nexport { CallOptions, AnyFuncConfig } from './types';\nexport { ANY_FUNC_SERVICE, ANY_FUNC_CONFIG, injectAnyFunc } from './tokens';\nexport { provideAnyFunc } from './providers';\n\n@Injectable()\nexport class AnyFuncService {\n protected readonly openai = injectOpenAiService();\n protected readonly config = inject(ANY_FUNC_CONFIG, {optional: true}) ?? { debug: false };\n protected cache = inject(CacheAdapter);\n protected validator = inject(ValidatorAdapter);\n private embeddingsHelper: EmbeddingsHelper;\n\n constructor() {\n this.embeddingsHelper = new EmbeddingsHelper(this.cache, this.openai);\n }\n\n \n async jsonSchema(_input: any, jsonSchema: FunctionParameters, options: CallOptions<any, any> = {}): Promise<any> {\n return this.callByJsonSchema(_input, jsonSchema, options);\n }\n\n async callByJsonSchema(_input: any, jsonSchema: FunctionParameters, {\n instructions = '', model = 'gpt-4o', specs = [], embeddings = false,\n sample = 3, temperature = 0, maxRetry = 3,\n validator = (data: any) => this.validator.validate(jsonSchema, data),\n }: CallOptions<any, any> = {}): Promise<any> {\n for (const spec of specs) {\n const errors = await validator(spec.output);\n if (errors.length > 0) throw new Error(JSON.stringify(errors, null, 2));\n }\n const content = await this.parseInput(_input);\n const sortedSpecs = embeddings ? await this.embeddingsHelper.sort(specs, embeddings, _input) : specs;\n const messages: ChatCompletionMessageParam[] = [\n { role: 'system', content: instructions },\n ...(await this.buildChatMessages(sortedSpecs.slice(0, sample).reverse())),\n { role: 'user', content },\n ];\n return lastValueFrom(of(null).pipe(\n map(() => messages),\n switchMap(() => this.complete(_input, jsonSchema, messages, { model, sample, temperature })),\n tap(message => messages.push(message)),\n switchMap(async (message) => {\n const toolCall = message.tool_calls![0];\n if (toolCall.type !== 'function') throw new Error('Unexpected tool call type');\n const output = JSON.parse(toolCall.function.arguments);\n console.debug('[AnyFuncService#complete] output:', output);\n const errors = await validator(output);\n console.debug('[AnyFuncService#complete] errors:', errors);\n if (errors.length > 0) {\n messages.push({ role: 'tool', content: JSON.stringify(errors), tool_call_id: message.tool_calls![0].id });\n if (this.config.debug) console.debug('messages', JSON.stringify(messages, null, 2));\n throw new Error(JSON.stringify(errors, null, 2));\n } else {\n messages.push({ role: 'tool', content: JSON.stringify(output), tool_call_id: message.tool_calls![0].id });\n if (this.config.debug) console.debug('messages', JSON.stringify(messages, null, 2));\n }\n return output;\n }),\n catchError((error) => { console.error(error); throw error; }),\n retry(maxRetry),\n ));\n }\n\n async callByZod<I, O>(_input: I, zod: ZodSchema<O>, options: CallOptions<I, O> = {}): Promise<O> {\n const schema = zodToJsonSchema(zod as any, { $refStrategy: 'none' });\n const validator = options.validator ?? ((data: any) => this.validator.validate(schema, data));\n return this.jsonSchema(_input, schema, { ...options, validator });\n }\n\n async callByClassValidator<I, O>(_input: I, args: {new (): O}, options: CallOptions<I, O> = {}): Promise<O> {\n const parameters = targetConstructorToSchema(args) as FunctionParameters;\n const validator = options.validator ?? ((data: any) => this.validator.validate(parameters, data));\n console.debug('[AnyFuncService#call] parameters:', parameters);\n return this.jsonSchema(_input, parameters, { ...options, validator });\n }\n\n async call<I, O>(_input: I, args: {new (): O} | ZodSchema<O> | JsonSchema, params: CallOptions<I, O> = {}): Promise<O> {\n if (args instanceof ZodSchema) return this.callByZod(_input, args, params);\n if (args instanceof Function) return this.callByClassValidator(_input, args, params);\n if (typeof args === 'object' && args !== null && 'type' in args && args.type === 'object') {\n return this.callByJsonSchema(_input, args, params);\n }\n throw new Error('Invalid args type');\n }\n\n protected async complete<I, O>(\n _input: any, jsonSchema: FunctionParameters, messages: ChatCompletionMessageParam[],\n { model = 'gpt-4o', temperature = 0 }: CallOptions<I, O> & {functionOutput?: object} = {}\n ) {\n const tool = buildFunctionTool({name: 'function', description: '', parameters: jsonSchema});\n const props = {\n model, messages, tools: [tool],\n tool_choice: { type: 'function' as const, function: { name: 'function' } },\n temperature,\n };\n const res = await this.cache.call(props, props => this.openai.chat.completions.create(props));\n return res.choices[0].message;\n }\n\n protected async buildChatMessages(specs: { input: any; output: any }[]): Promise<{role: 'assistant' | 'user', content: string}[]> {\n const messages = await Promise.all(specs.map(async ({ input, output }) => {\n const parsedInput = await this.parseInput(input);\n return <ChatCompletionMessageParam[]>[\n { role: 'user', content: parsedInput },\n { role: 'assistant', content: null, tool_calls: [{ id: 'call-example', type: 'function', function: { name: 'function', arguments: JSON.stringify(output) } }] },\n { role: 'tool', content: 'success', tool_call_id: 'call-example' },\n ];\n }));\n return messages.flat() as {role: 'assistant' | 'user', content: string}[];\n }\n\n private async parseInput(input: any) {\n if (isBrowserFile(input)) return await OpenAiMessageHelper.buildFilesMessage([input]);\n else if (input === 'string') return input;\n else return JSON.stringify(input);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["_targetConstructorToSchema"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nx-ddd/any-func",
|
|
3
|
-
"version": "19.
|
|
3
|
+
"version": "19.81.0",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@angular/core": ">=17.0.0",
|
|
6
|
-
"@nx-ddd/common": "19.
|
|
6
|
+
"@nx-ddd/common": "19.81.0",
|
|
7
7
|
"class-transformer": "^0.5.1",
|
|
8
8
|
"class-validator": "^0.14.0",
|
|
9
9
|
"class-validator-jsonschema": "^5.0.0",
|
|
@@ -74,9 +74,6 @@ declare class CacheAdapter {
|
|
|
74
74
|
static ɵprov: i0.ɵɵInjectableDeclaration<CacheAdapter>;
|
|
75
75
|
}
|
|
76
76
|
|
|
77
|
-
/**
|
|
78
|
-
* Options for AnyFuncService call methods
|
|
79
|
-
*/
|
|
80
77
|
interface CallOptions<I, O, S extends {
|
|
81
78
|
input: I;
|
|
82
79
|
output: O;
|
|
@@ -93,30 +90,15 @@ interface CallOptions<I, O, S extends {
|
|
|
93
90
|
maxRetry?: number;
|
|
94
91
|
validator?: (output: O) => Promise<any>;
|
|
95
92
|
}
|
|
96
|
-
/**
|
|
97
|
-
* Configuration for AnyFuncService
|
|
98
|
-
*/
|
|
99
93
|
interface AnyFuncConfig extends ClientOptions {
|
|
100
94
|
debug: boolean;
|
|
101
95
|
openaiApiKey: string;
|
|
102
96
|
}
|
|
103
97
|
|
|
104
|
-
/**
|
|
105
|
-
* InjectionToken for AnyFuncService
|
|
106
|
-
*/
|
|
107
98
|
declare const ANY_FUNC_SERVICE: InjectionToken<any>;
|
|
108
|
-
/**
|
|
109
|
-
* InjectionToken for AnyFuncConfig
|
|
110
|
-
*/
|
|
111
99
|
declare const ANY_FUNC_CONFIG: InjectionToken<AnyFuncConfig>;
|
|
112
|
-
/**
|
|
113
|
-
* Injects the AnyFuncService
|
|
114
|
-
*/
|
|
115
100
|
declare function injectAnyFunc<T = any>(): T;
|
|
116
101
|
|
|
117
|
-
/**
|
|
118
|
-
* Provides the AnyFuncService with configuration
|
|
119
|
-
*/
|
|
120
102
|
declare function provideAnyFunc(useFactory?: () => AnyFuncConfig): (typeof CacheAdapter | i0.Provider[] | {
|
|
121
103
|
provide: i0.InjectionToken<any>;
|
|
122
104
|
useClass: typeof AnyFuncService;
|
|
@@ -136,7 +118,6 @@ declare class AnyFuncService {
|
|
|
136
118
|
protected validator: ValidatorAdapter;
|
|
137
119
|
private embeddingsHelper;
|
|
138
120
|
constructor();
|
|
139
|
-
/** @deprecated use callByJsonSchema instead */
|
|
140
121
|
jsonSchema(_input: any, jsonSchema: FunctionParameters, options?: CallOptions<any, any>): Promise<any>;
|
|
141
122
|
callByJsonSchema(_input: any, jsonSchema: FunctionParameters, { instructions, model, specs, embeddings, sample, temperature, maxRetry, validator, }?: CallOptions<any, any>): Promise<any>;
|
|
142
123
|
callByZod<I, O>(_input: I, zod: ZodSchema<O>, options?: CallOptions<I, O>): Promise<O>;
|