@encodeagent/platform-helper-util 1.2508.1241505
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/README.md +121 -0
- package/dist/__tests__/core.test.d.ts +5 -0
- package/dist/__tests__/core.test.d.ts.map +1 -0
- package/dist/__tests__/core.test.js +128 -0
- package/dist/__tests__/core.test.js.map +1 -0
- package/dist/__tests__/shortid.test.d.ts +5 -0
- package/dist/__tests__/shortid.test.d.ts.map +1 -0
- package/dist/__tests__/shortid.test.js +72 -0
- package/dist/__tests__/shortid.test.js.map +1 -0
- package/dist/__tests__/slug.test.d.ts +5 -0
- package/dist/__tests__/slug.test.d.ts.map +1 -0
- package/dist/__tests__/slug.test.js +31 -0
- package/dist/__tests__/slug.test.js.map +1 -0
- package/dist/__tests__/token.test.d.ts +5 -0
- package/dist/__tests__/token.test.d.ts.map +1 -0
- package/dist/__tests__/token.test.js +49 -0
- package/dist/__tests__/token.test.js.map +1 -0
- package/dist/__tests__/uuid.test.d.ts +5 -0
- package/dist/__tests__/uuid.test.d.ts.map +1 -0
- package/dist/__tests__/uuid.test.js +42 -0
- package/dist/__tests__/uuid.test.js.map +1 -0
- package/dist/__tests__/value-of-object.test.d.ts +5 -0
- package/dist/__tests__/value-of-object.test.d.ts.map +1 -0
- package/dist/__tests__/value-of-object.test.js +49 -0
- package/dist/__tests__/value-of-object.test.js.map +1 -0
- package/dist/ai/llm.d.ts +90 -0
- package/dist/ai/llm.d.ts.map +1 -0
- package/dist/ai/llm.js +524 -0
- package/dist/ai/llm.js.map +1 -0
- package/dist/ai/model.d.ts +14 -0
- package/dist/ai/model.d.ts.map +1 -0
- package/dist/ai/model.js +120 -0
- package/dist/ai/model.js.map +1 -0
- package/dist/ai/types.d.ts +85 -0
- package/dist/ai/types.d.ts.map +1 -0
- package/dist/ai/types.js +15 -0
- package/dist/ai/types.js.map +1 -0
- package/dist/ai/util.d.ts +28 -0
- package/dist/ai/util.d.ts.map +1 -0
- package/dist/ai/util.js +43 -0
- package/dist/ai/util.js.map +1 -0
- package/dist/auth.d.ts +34 -0
- package/dist/auth.d.ts.map +1 -0
- package/dist/auth.js +568 -0
- package/dist/auth.js.map +1 -0
- package/dist/colors.d.ts +79 -0
- package/dist/colors.d.ts.map +1 -0
- package/dist/colors.js +492 -0
- package/dist/colors.js.map +1 -0
- package/dist/constants.d.ts +86 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +2578 -0
- package/dist/constants.js.map +1 -0
- package/dist/core.d.ts +337 -0
- package/dist/core.d.ts.map +1 -0
- package/dist/core.js +1165 -0
- package/dist/core.js.map +1 -0
- package/dist/cost.d.ts +35 -0
- package/dist/cost.d.ts.map +1 -0
- package/dist/cost.js +143 -0
- package/dist/cost.js.map +1 -0
- package/dist/file.d.ts +55 -0
- package/dist/file.d.ts.map +1 -0
- package/dist/file.js +273 -0
- package/dist/file.js.map +1 -0
- package/dist/html.d.ts +44 -0
- package/dist/html.d.ts.map +1 -0
- package/dist/html.js +420 -0
- package/dist/html.js.map +1 -0
- package/dist/index.d.ts +53 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +313 -0
- package/dist/index.js.map +1 -0
- package/dist/markdown.d.ts +20 -0
- package/dist/markdown.d.ts.map +1 -0
- package/dist/markdown.js +38 -0
- package/dist/markdown.js.map +1 -0
- package/dist/metadata.d.ts +39 -0
- package/dist/metadata.d.ts.map +1 -0
- package/dist/metadata.js +110 -0
- package/dist/metadata.js.map +1 -0
- package/dist/record.d.ts +67 -0
- package/dist/record.d.ts.map +1 -0
- package/dist/record.js +404 -0
- package/dist/record.js.map +1 -0
- package/dist/shortid.d.ts +42 -0
- package/dist/shortid.d.ts.map +1 -0
- package/dist/shortid.js +42 -0
- package/dist/shortid.js.map +1 -0
- package/dist/slug.d.ts +24 -0
- package/dist/slug.d.ts.map +1 -0
- package/dist/slug.js +43 -0
- package/dist/slug.js.map +1 -0
- package/dist/token.d.ts +34 -0
- package/dist/token.d.ts.map +1 -0
- package/dist/token.js +20 -0
- package/dist/token.js.map +1 -0
- package/dist/tree.d.ts +27 -0
- package/dist/tree.d.ts.map +1 -0
- package/dist/tree.js +193 -0
- package/dist/tree.js.map +1 -0
- package/dist/types.d.ts +270 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +29 -0
- package/dist/types.js.map +1 -0
- package/dist/uuid.d.ts +25 -0
- package/dist/uuid.d.ts.map +1 -0
- package/dist/uuid.js +32 -0
- package/dist/uuid.js.map +1 -0
- package/dist/value-of-object.d.ts +25 -0
- package/dist/value-of-object.d.ts.map +1 -0
- package/dist/value-of-object.js +123 -0
- package/dist/value-of-object.js.map +1 -0
- package/dist/web-content.d.ts +54 -0
- package/dist/web-content.d.ts.map +1 -0
- package/dist/web-content.js +268 -0
- package/dist/web-content.js.map +1 -0
- package/dist/web.d.ts +36 -0
- package/dist/web.d.ts.map +1 -0
- package/dist/web.js +162 -0
- package/dist/web.js.map +1 -0
- package/package.json +68 -0
package/dist/ai/llm.d.ts
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview LLM (Large Language Model) utilities for the EncodeAgent platform
|
|
3
|
+
* @author EncodeAgent Team
|
|
4
|
+
* @license MIT
|
|
5
|
+
* @copyright EncodeAgent Platform (C) 2024 All Rights Reserved
|
|
6
|
+
*
|
|
7
|
+
* This source code is part of the EncodeAgent platform helper utilities.
|
|
8
|
+
*
|
|
9
|
+
* THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY
|
|
10
|
+
* OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT
|
|
11
|
+
* LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
|
12
|
+
* FITNESS FOR A PARTICULAR PURPOSE.
|
|
13
|
+
*/
|
|
14
|
+
import { IKey, IService } from "../types";
|
|
15
|
+
import { TLLMPromptParameter, TLLMParameters, ILLMParameters, TLLMMessage, TLLMRequest, TPromptContent, TAIContext } from "./types";
|
|
16
|
+
import { ICalculateCostProps } from "../cost";
|
|
17
|
+
/**
|
|
18
|
+
* Gets the runtime identifier for an AI model based on the platform
|
|
19
|
+
* @param aiModel - The AI service configuration
|
|
20
|
+
* @param aiKey - The AI key containing platform information
|
|
21
|
+
* @returns The runtime identifier string
|
|
22
|
+
*/
|
|
23
|
+
export declare const getLLMRuntime: (aiModel: IService, aiKey: IKey) => string;
|
|
24
|
+
export type TCalculateCostProps = {
|
|
25
|
+
inputTokens?: number;
|
|
26
|
+
outputTokens?: number;
|
|
27
|
+
} & ICalculateCostProps;
|
|
28
|
+
export type TLLMRequestProps = ILLMParameters & {
|
|
29
|
+
context: TAIContext;
|
|
30
|
+
aiKey: IKey;
|
|
31
|
+
messages?: TLLMMessage[];
|
|
32
|
+
tools?: Record<string, any>[];
|
|
33
|
+
prompt?: TPromptContent;
|
|
34
|
+
stream?: boolean;
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Constructs a complete LLM request object from the provided parameters
|
|
38
|
+
* @param props - The request properties including context, AI key, messages, and parameters
|
|
39
|
+
* @returns A formatted LLM request object ready for API calls
|
|
40
|
+
* @throws Error if the AI service for the specified model ID doesn't exist
|
|
41
|
+
*/
|
|
42
|
+
export declare const getLLMRequest: (props: TLLMRequestProps) => TLLMRequest;
|
|
43
|
+
export type TLLMParametersProps = {
|
|
44
|
+
context: TAIContext;
|
|
45
|
+
modelId: string;
|
|
46
|
+
maxTokens?: number;
|
|
47
|
+
temperature?: number;
|
|
48
|
+
vectorRequired?: boolean;
|
|
49
|
+
vectorMinScore?: number;
|
|
50
|
+
vectorTop?: number;
|
|
51
|
+
};
|
|
52
|
+
/**
|
|
53
|
+
* Validates and constructs LLM parameters with proper defaults and constraints
|
|
54
|
+
* @param props - The parameter properties including context, model ID, and optional settings
|
|
55
|
+
* @returns Validated LLM parameters with applied defaults and constraints
|
|
56
|
+
* @throws Error if the AI service for the specified model ID doesn't exist
|
|
57
|
+
*/
|
|
58
|
+
export declare const getLLMParameters: (props: TLLMParametersProps) => TLLMParameters;
|
|
59
|
+
export type TGetLLMPromptResult = {
|
|
60
|
+
type: "success" | "error";
|
|
61
|
+
content: TPromptContent;
|
|
62
|
+
messages?: TLLMMessage[];
|
|
63
|
+
tools?: Record<string, any>[];
|
|
64
|
+
error?: any;
|
|
65
|
+
};
|
|
66
|
+
/**
|
|
67
|
+
* Pre-processes LLM prompt parameters, converting checkbox types to text and applying transformations
|
|
68
|
+
* @param parameters - Array of prompt parameters to process
|
|
69
|
+
* @returns Array of processed prompt parameters with type conversions applied
|
|
70
|
+
*/
|
|
71
|
+
export declare const preProcessLLMPromptParameters: (parameters: TLLMPromptParameter[]) => TLLMPromptParameter[];
|
|
72
|
+
export type TOutputFormat = "any" | "markdown" | "plain-text" | "html" | "json" | "xml" | "number";
|
|
73
|
+
export type TGetLLMPrompt = {
|
|
74
|
+
aiContext: TAIContext;
|
|
75
|
+
modelId: string;
|
|
76
|
+
visionId?: string;
|
|
77
|
+
template: string;
|
|
78
|
+
parameters: TLLMPromptParameter[];
|
|
79
|
+
messages?: TLLMMessage[];
|
|
80
|
+
tools?: Record<string, any>[];
|
|
81
|
+
outputFormat?: TOutputFormat;
|
|
82
|
+
};
|
|
83
|
+
/**
|
|
84
|
+
* Processes a template with parameters to generate a complete LLM prompt
|
|
85
|
+
* Handles parameter substitution, media attachments, output formatting, and validation
|
|
86
|
+
* @param props - The prompt generation properties including template, parameters, and context
|
|
87
|
+
* @returns Result object containing the processed prompt content, messages, and tools, or error information
|
|
88
|
+
*/
|
|
89
|
+
export declare const getLLMPrompt: (props: TGetLLMPrompt) => TGetLLMPromptResult;
|
|
90
|
+
//# sourceMappingURL=llm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"llm.d.ts","sourceRoot":"","sources":["../../src/ai/llm.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAsBH,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EACH,mBAAmB,EACnB,cAAc,EACd,cAAc,EACd,WAAW,EACX,WAAW,EACX,cAAc,EAEd,UAAU,EACb,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAI9C;;;;;GAKG;AACH,eAAO,MAAM,aAAa,GAAI,SAAS,QAAQ,EAAE,OAAO,IAAI,KAAG,MAY9D,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB,GAAG,mBAAmB,CAAC;AAExB,MAAM,MAAM,gBAAgB,GAAG,cAAc,GAAG;IAC5C,OAAO,EAAE,UAAU,CAAC;IACpB,KAAK,EAAE,IAAI,CAAC;IACZ,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;IAC9B,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,MAAM,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,aAAa,GAAI,OAAO,gBAAgB,KAAG,WA4KvD,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAC9B,OAAO,EAAE,UAAU,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,GACzB,OAAO,mBAAmB,KAC3B,cAyCF,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAC9B,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC;IAC1B,OAAO,EAAE,cAAc,CAAC;IACxB,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;IAC9B,KAAK,CAAC,EAAE,GAAG,CAAC;CACf,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,6BAA6B,GACtC,YAAY,mBAAmB,EAAE,KAClC,mBAAmB,EAyBrB,CAAC;AAEF,MAAM,MAAM,aAAa,GACnB,KAAK,GACL,UAAU,GACV,YAAY,GACZ,MAAM,GACN,MAAM,GACN,KAAK,GACL,QAAQ,CAAC;AAEf,MAAM,MAAM,aAAa,GAAG;IACxB,SAAS,EAAE,UAAU,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,mBAAmB,EAAE,CAAC;IAClC,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;IAC9B,YAAY,CAAC,EAAE,aAAa,CAAC;CAChC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,YAAY,GAAI,OAAO,aAAa,KAAG,mBAiSnD,CAAC"}
|
package/dist/ai/llm.js
ADDED
|
@@ -0,0 +1,524 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview LLM (Large Language Model) utilities for the EncodeAgent platform
|
|
4
|
+
* @author EncodeAgent Team
|
|
5
|
+
* @license MIT
|
|
6
|
+
* @copyright EncodeAgent Platform (C) 2024 All Rights Reserved
|
|
7
|
+
*
|
|
8
|
+
* This source code is part of the EncodeAgent platform helper utilities.
|
|
9
|
+
*
|
|
10
|
+
* THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY
|
|
11
|
+
* OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT
|
|
12
|
+
* LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
|
13
|
+
* FITNESS FOR A PARTICULAR PURPOSE.
|
|
14
|
+
*/
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.getLLMPrompt = exports.preProcessLLMPromptParameters = exports.getLLMParameters = exports.getLLMRequest = exports.getLLMRuntime = void 0;
|
|
17
|
+
const lodash_1 = require("lodash");
|
|
18
|
+
const core_1 = require("../core");
|
|
19
|
+
const web_1 = require("../web");
|
|
20
|
+
const model_1 = require("./model");
|
|
21
|
+
/**
|
|
22
|
+
* Gets the runtime identifier for an AI model based on the platform
|
|
23
|
+
* @param aiModel - The AI service configuration
|
|
24
|
+
* @param aiKey - The AI key containing platform information
|
|
25
|
+
* @returns The runtime identifier string
|
|
26
|
+
*/
|
|
27
|
+
const getLLMRuntime = (aiModel, aiKey) => {
|
|
28
|
+
const { platform } = aiKey;
|
|
29
|
+
const runtime = aiModel.runtime;
|
|
30
|
+
switch (platform) {
|
|
31
|
+
case "openai":
|
|
32
|
+
case "azure": {
|
|
33
|
+
const runtimeAr = runtime.split("/");
|
|
34
|
+
return runtimeAr.length == 2 ? runtimeAr[1] : runtime;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return runtime;
|
|
38
|
+
};
|
|
39
|
+
exports.getLLMRuntime = getLLMRuntime;
|
|
40
|
+
/**
|
|
41
|
+
* Constructs a complete LLM request object from the provided parameters
|
|
42
|
+
* @param props - The request properties including context, AI key, messages, and parameters
|
|
43
|
+
* @returns A formatted LLM request object ready for API calls
|
|
44
|
+
* @throws Error if the AI service for the specified model ID doesn't exist
|
|
45
|
+
*/
|
|
46
|
+
const getLLMRequest = (props) => {
|
|
47
|
+
const { modelId, stream, maxTokens, aiKey, context, tools } = props;
|
|
48
|
+
const aiService = (0, model_1.getAIService)(context, modelId);
|
|
49
|
+
if (!aiService) {
|
|
50
|
+
throw `ai-service-not-exist-${modelId}`;
|
|
51
|
+
}
|
|
52
|
+
(0, core_1.libTrackIsOn)() &&
|
|
53
|
+
console.log({
|
|
54
|
+
name: "getLLMRequest",
|
|
55
|
+
modelId,
|
|
56
|
+
aiModel: JSON.stringify(aiService)
|
|
57
|
+
});
|
|
58
|
+
const request = {
|
|
59
|
+
model: aiService.runtime,
|
|
60
|
+
temperature: props.temperature ?? 0,
|
|
61
|
+
frequency_penalty: props.frequencyPenalty ?? 0,
|
|
62
|
+
presence_penalty: props.presencePenalty ?? 0,
|
|
63
|
+
repetition_penalty: props.repetitionPenalty ?? 1,
|
|
64
|
+
top_p: props.topP ?? 1,
|
|
65
|
+
top_k: props.topK ?? 0,
|
|
66
|
+
top_a: props.topK ?? 0,
|
|
67
|
+
min_p: props.minP ?? 0,
|
|
68
|
+
messages: [],
|
|
69
|
+
tools
|
|
70
|
+
};
|
|
71
|
+
const prompt = props.prompt ?? {};
|
|
72
|
+
// const lastMessage = last(props.messages);
|
|
73
|
+
let gptMessages = (0, lodash_1.filter)((0, lodash_1.map)(props.messages ?? [], (m) => {
|
|
74
|
+
const { role } = m;
|
|
75
|
+
// const content = isNonEmptyString(m.prompt)
|
|
76
|
+
// ? m.prompt
|
|
77
|
+
// : m.content ?? "";
|
|
78
|
+
// content =
|
|
79
|
+
// prompt.user &&
|
|
80
|
+
// isNonEmptyString(prompt.user) &&
|
|
81
|
+
// lastMessage?.id == m.id
|
|
82
|
+
// ? prompt.user
|
|
83
|
+
// : content;
|
|
84
|
+
const isGoodRole = role.indexOf("system") >= 0 ||
|
|
85
|
+
role.indexOf("user") >= 0 ||
|
|
86
|
+
role.indexOf("assistant") >= 0;
|
|
87
|
+
if (!isGoodRole)
|
|
88
|
+
return undefined;
|
|
89
|
+
if (isGoodRole && (0, core_1.isNonEmptyString)(m.content)) {
|
|
90
|
+
return {
|
|
91
|
+
role,
|
|
92
|
+
content: m.content
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
if (isGoodRole && (0, lodash_1.isArray)(m.content) && m.content.length > 0) {
|
|
96
|
+
return m;
|
|
97
|
+
}
|
|
98
|
+
return undefined;
|
|
99
|
+
}), (message) => {
|
|
100
|
+
return !(0, lodash_1.isNil)(message);
|
|
101
|
+
});
|
|
102
|
+
if (prompt.system && (0, core_1.isNonEmptyString)(prompt?.system)) {
|
|
103
|
+
gptMessages.unshift({ role: "system", content: prompt.system });
|
|
104
|
+
}
|
|
105
|
+
if (prompt?.user && (0, core_1.isNonEmptyString)(prompt?.user)) {
|
|
106
|
+
gptMessages.push({ role: "user", content: prompt.user });
|
|
107
|
+
}
|
|
108
|
+
const mediaContentList = [];
|
|
109
|
+
const mediaToAIList = [];
|
|
110
|
+
if (prompt.medias && prompt.medias.length > 0) {
|
|
111
|
+
(0, lodash_1.each)(prompt.medias, (media) => {
|
|
112
|
+
switch (media.type) {
|
|
113
|
+
case "image": {
|
|
114
|
+
const visionService = media.modelId
|
|
115
|
+
? (0, model_1.getAIService)(context, media.modelId) ?? aiService
|
|
116
|
+
: aiService;
|
|
117
|
+
if (aiService.runtime == visionService.runtime) {
|
|
118
|
+
mediaContentList.push({
|
|
119
|
+
type: "image_url",
|
|
120
|
+
image_url: { url: media.content }
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
mediaToAIList.push({
|
|
125
|
+
type: "image_to_ai",
|
|
126
|
+
modelId: visionService.id,
|
|
127
|
+
url: media.content
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
break;
|
|
131
|
+
}
|
|
132
|
+
default: {
|
|
133
|
+
//TODO: video and audio
|
|
134
|
+
break;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
if (mediaContentList.length > 0) {
|
|
140
|
+
//change the last message
|
|
141
|
+
gptMessages[gptMessages.length - 1].content = [
|
|
142
|
+
{
|
|
143
|
+
type: "text",
|
|
144
|
+
text: gptMessages[gptMessages.length - 1].content
|
|
145
|
+
},
|
|
146
|
+
...mediaContentList
|
|
147
|
+
];
|
|
148
|
+
}
|
|
149
|
+
if (mediaToAIList.length > 0) {
|
|
150
|
+
//append a new last message with the user prompt
|
|
151
|
+
const lastMessage = (0, lodash_1.cloneDeep)(gptMessages[gptMessages.length - 1]);
|
|
152
|
+
lastMessage.type = "media_to_ai_text";
|
|
153
|
+
gptMessages.pop();
|
|
154
|
+
gptMessages = [
|
|
155
|
+
...gptMessages,
|
|
156
|
+
...mediaToAIList,
|
|
157
|
+
lastMessage
|
|
158
|
+
];
|
|
159
|
+
}
|
|
160
|
+
const runtime = (0, exports.getLLMRuntime)(aiService, aiKey);
|
|
161
|
+
(0, core_1.libTrackIsOn)() &&
|
|
162
|
+
console.log({
|
|
163
|
+
runtime,
|
|
164
|
+
aiKey
|
|
165
|
+
});
|
|
166
|
+
const llmRequest = {
|
|
167
|
+
...request,
|
|
168
|
+
model: runtime
|
|
169
|
+
};
|
|
170
|
+
if (aiKey.platform == "openai" && llmRequest.stream) {
|
|
171
|
+
llmRequest.stream_options = { include_usage: true };
|
|
172
|
+
}
|
|
173
|
+
switch (aiKey.platform) {
|
|
174
|
+
case "openai":
|
|
175
|
+
case "azure": {
|
|
176
|
+
delete llmRequest.repetition_penalty;
|
|
177
|
+
delete llmRequest.top_k;
|
|
178
|
+
delete llmRequest.top_a;
|
|
179
|
+
delete llmRequest.min_p;
|
|
180
|
+
break;
|
|
181
|
+
}
|
|
182
|
+
default: {
|
|
183
|
+
break;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
return {
|
|
187
|
+
...llmRequest,
|
|
188
|
+
max_tokens: aiService.output.maxTokens && maxTokens > aiService.output.maxTokens
|
|
189
|
+
? aiService.output.maxTokens
|
|
190
|
+
: maxTokens,
|
|
191
|
+
messages: gptMessages,
|
|
192
|
+
stream: stream == true
|
|
193
|
+
};
|
|
194
|
+
};
|
|
195
|
+
exports.getLLMRequest = getLLMRequest;
|
|
196
|
+
/**
|
|
197
|
+
* Validates and constructs LLM parameters with proper defaults and constraints
|
|
198
|
+
* @param props - The parameter properties including context, model ID, and optional settings
|
|
199
|
+
* @returns Validated LLM parameters with applied defaults and constraints
|
|
200
|
+
* @throws Error if the AI service for the specified model ID doesn't exist
|
|
201
|
+
*/
|
|
202
|
+
const getLLMParameters = (props) => {
|
|
203
|
+
const { context, modelId } = props;
|
|
204
|
+
const aiService = (0, model_1.getAIService)(context, modelId);
|
|
205
|
+
if (!aiService) {
|
|
206
|
+
throw `ai-service-not-exist-${modelId}`;
|
|
207
|
+
}
|
|
208
|
+
const maxTokens = props.maxTokens &&
|
|
209
|
+
aiService.output.maxTokens &&
|
|
210
|
+
props.maxTokens > aiService.output.maxTokens
|
|
211
|
+
? aiService.output.maxTokens
|
|
212
|
+
: props.maxTokens ?? 256;
|
|
213
|
+
const result = {
|
|
214
|
+
maxTokens,
|
|
215
|
+
temperature: props?.temperature &&
|
|
216
|
+
(0, lodash_1.isNumber)(props?.temperature) &&
|
|
217
|
+
props?.temperature >= 0 &&
|
|
218
|
+
props?.temperature <= 2
|
|
219
|
+
? props?.temperature
|
|
220
|
+
: 0,
|
|
221
|
+
modelId: aiService.id,
|
|
222
|
+
vectorRequired: props?.vectorRequired == true,
|
|
223
|
+
vectorMinScore: props?.vectorMinScore &&
|
|
224
|
+
(0, lodash_1.isNumber)(props?.vectorMinScore) &&
|
|
225
|
+
props?.vectorMinScore <= 1
|
|
226
|
+
? props?.vectorMinScore
|
|
227
|
+
: 0.81,
|
|
228
|
+
vectorTop: props?.vectorTop &&
|
|
229
|
+
(0, lodash_1.isNumber)(props?.vectorTop) &&
|
|
230
|
+
props?.vectorTop > 0
|
|
231
|
+
? props?.vectorTop
|
|
232
|
+
: 4
|
|
233
|
+
};
|
|
234
|
+
return result;
|
|
235
|
+
};
|
|
236
|
+
exports.getLLMParameters = getLLMParameters;
|
|
237
|
+
/**
|
|
238
|
+
* Pre-processes LLM prompt parameters, converting checkbox types to text and applying transformations
|
|
239
|
+
* @param parameters - Array of prompt parameters to process
|
|
240
|
+
* @returns Array of processed prompt parameters with type conversions applied
|
|
241
|
+
*/
|
|
242
|
+
const preProcessLLMPromptParameters = (parameters) => {
|
|
243
|
+
return (0, lodash_1.map)(parameters, (p) => {
|
|
244
|
+
switch (p.type) {
|
|
245
|
+
case "checkbox": {
|
|
246
|
+
let value = (0, core_1.isNonEmptyString)(p.value) ? p.value : p.default;
|
|
247
|
+
if (((0, core_1.isNonEmptyString)(p.label) &&
|
|
248
|
+
value != "ignore" &&
|
|
249
|
+
value != "false") ||
|
|
250
|
+
value == "apply" ||
|
|
251
|
+
value == p.label ||
|
|
252
|
+
value == true ||
|
|
253
|
+
value == "true") {
|
|
254
|
+
value = p.label;
|
|
255
|
+
}
|
|
256
|
+
else {
|
|
257
|
+
value = "";
|
|
258
|
+
}
|
|
259
|
+
p.value = value;
|
|
260
|
+
p.type = "text";
|
|
261
|
+
break;
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
return p;
|
|
265
|
+
});
|
|
266
|
+
};
|
|
267
|
+
exports.preProcessLLMPromptParameters = preProcessLLMPromptParameters;
|
|
268
|
+
/**
|
|
269
|
+
* Processes a template with parameters to generate a complete LLM prompt
|
|
270
|
+
* Handles parameter substitution, media attachments, output formatting, and validation
|
|
271
|
+
* @param props - The prompt generation properties including template, parameters, and context
|
|
272
|
+
* @returns Result object containing the processed prompt content, messages, and tools, or error information
|
|
273
|
+
*/
|
|
274
|
+
const getLLMPrompt = (props) => {
|
|
275
|
+
const { aiContext, modelId, visionId, template, parameters, outputFormat, tools } = props;
|
|
276
|
+
const outputFormatPrompts = aiContext?.solution?.ai?.default?.prompt?.outputFormat ?? {};
|
|
277
|
+
//modelId maybe used in the future
|
|
278
|
+
(0, core_1.doNothing)(modelId);
|
|
279
|
+
const messages = props.messages ?? [];
|
|
280
|
+
let outputFormatPrompt = outputFormatPrompts[`${outputFormat}`];
|
|
281
|
+
if (!(0, core_1.isNonEmptyString)(outputFormatPrompt)) {
|
|
282
|
+
switch (outputFormat) {
|
|
283
|
+
case "plain-text":
|
|
284
|
+
case "markdown": {
|
|
285
|
+
outputFormatPrompt = `The output has to be in a ${outputFormat} format.`;
|
|
286
|
+
break;
|
|
287
|
+
}
|
|
288
|
+
case "html": {
|
|
289
|
+
outputFormatPrompt =
|
|
290
|
+
"The output has to be in HTML format without having HTML page elements and without using markdown.";
|
|
291
|
+
break;
|
|
292
|
+
}
|
|
293
|
+
case "json": {
|
|
294
|
+
outputFormatPrompt = "The output has to be in a JSON format.";
|
|
295
|
+
break;
|
|
296
|
+
}
|
|
297
|
+
case "xml": {
|
|
298
|
+
outputFormatPrompt = "The output has to be in a XML format.";
|
|
299
|
+
break;
|
|
300
|
+
}
|
|
301
|
+
case "number": {
|
|
302
|
+
outputFormatPrompt = "The output has to be a number.";
|
|
303
|
+
break;
|
|
304
|
+
}
|
|
305
|
+
default: {
|
|
306
|
+
break;
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
if ((0, core_1.isNonEmptyString)(outputFormatPrompt)) {
|
|
311
|
+
messages.unshift({
|
|
312
|
+
role: "system",
|
|
313
|
+
content: outputFormatPrompt
|
|
314
|
+
});
|
|
315
|
+
}
|
|
316
|
+
let result = {
|
|
317
|
+
type: "success",
|
|
318
|
+
content: {},
|
|
319
|
+
messages,
|
|
320
|
+
tools
|
|
321
|
+
};
|
|
322
|
+
const medias = [];
|
|
323
|
+
let prompt = template;
|
|
324
|
+
let user = "";
|
|
325
|
+
const promptParameters = (0, exports.preProcessLLMPromptParameters)(parameters);
|
|
326
|
+
for (let i = 0; i < promptParameters.length; i++) {
|
|
327
|
+
const p = promptParameters[i];
|
|
328
|
+
let curValue = p.value;
|
|
329
|
+
if (curValue == "undefined") {
|
|
330
|
+
curValue = undefined;
|
|
331
|
+
}
|
|
332
|
+
if ((0, lodash_1.isNil)(curValue) && !(0, lodash_1.isNil)(p.default)) {
|
|
333
|
+
curValue = p.default;
|
|
334
|
+
}
|
|
335
|
+
let isMessage = false;
|
|
336
|
+
let isImage = false;
|
|
337
|
+
let goodValue = false;
|
|
338
|
+
// if (p.type == "content" && p.name != "content") {
|
|
339
|
+
// curValue = undefined;
|
|
340
|
+
// p.required = false;
|
|
341
|
+
// result = result.replace(new RegExp(`{{${p.name}}}`, "g"), "");
|
|
342
|
+
// }
|
|
343
|
+
if (!(0, lodash_1.isNil)(curValue)) {
|
|
344
|
+
switch (p.type) {
|
|
345
|
+
case "array": {
|
|
346
|
+
if ((0, lodash_1.isArray)(curValue)) {
|
|
347
|
+
curValue = JSON.stringify(curValue);
|
|
348
|
+
goodValue = true;
|
|
349
|
+
}
|
|
350
|
+
break;
|
|
351
|
+
}
|
|
352
|
+
case "object": {
|
|
353
|
+
if ((0, lodash_1.isObject)(curValue)) {
|
|
354
|
+
curValue = JSON.stringify(curValue);
|
|
355
|
+
goodValue = true;
|
|
356
|
+
}
|
|
357
|
+
break;
|
|
358
|
+
}
|
|
359
|
+
case "boolean": {
|
|
360
|
+
const n = (0, lodash_1.isBoolean)(curValue)
|
|
361
|
+
? curValue
|
|
362
|
+
: (0, core_1.isNonEmptyString)(curValue)
|
|
363
|
+
? curValue.toLowerCase() == "true"
|
|
364
|
+
: false;
|
|
365
|
+
if ((0, lodash_1.isBoolean)(n)) {
|
|
366
|
+
goodValue = true;
|
|
367
|
+
}
|
|
368
|
+
break;
|
|
369
|
+
}
|
|
370
|
+
case "int": {
|
|
371
|
+
const n = (0, lodash_1.isString)(curValue)
|
|
372
|
+
? parseInt(curValue)
|
|
373
|
+
: curValue;
|
|
374
|
+
if ((0, lodash_1.isInteger)(n)) {
|
|
375
|
+
goodValue = true;
|
|
376
|
+
}
|
|
377
|
+
break;
|
|
378
|
+
}
|
|
379
|
+
case "float": {
|
|
380
|
+
const n = (0, lodash_1.isString)(curValue)
|
|
381
|
+
? parseFloat(curValue)
|
|
382
|
+
: curValue;
|
|
383
|
+
if ((0, lodash_1.isNumber)(n)) {
|
|
384
|
+
goodValue = true;
|
|
385
|
+
}
|
|
386
|
+
break;
|
|
387
|
+
}
|
|
388
|
+
case "list": {
|
|
389
|
+
if (curValue && (0, lodash_1.isString)(curValue) && curValue.length > 0) {
|
|
390
|
+
goodValue = true;
|
|
391
|
+
const items = (0, lodash_1.map)((0, lodash_1.filter)((0, lodash_1.map)(curValue.replace(/\n/g, ",").split(","), (v) => {
|
|
392
|
+
return v.trim().length > 0
|
|
393
|
+
? v.trim()
|
|
394
|
+
: "";
|
|
395
|
+
}), (v) => {
|
|
396
|
+
return v.length > 0;
|
|
397
|
+
}), (v, index) => {
|
|
398
|
+
return v.trim().length > 0
|
|
399
|
+
? `${index > 0 ? "\n" : ""}${index + 1}. ${v.trim()}`
|
|
400
|
+
: "";
|
|
401
|
+
});
|
|
402
|
+
curValue = items.join("");
|
|
403
|
+
}
|
|
404
|
+
break;
|
|
405
|
+
}
|
|
406
|
+
case "message": {
|
|
407
|
+
isMessage = true;
|
|
408
|
+
break;
|
|
409
|
+
}
|
|
410
|
+
case "image": {
|
|
411
|
+
medias.push({
|
|
412
|
+
type: "image",
|
|
413
|
+
content: curValue,
|
|
414
|
+
modelId: visionId
|
|
415
|
+
});
|
|
416
|
+
isImage = true;
|
|
417
|
+
break;
|
|
418
|
+
}
|
|
419
|
+
default: {
|
|
420
|
+
//text, string, textarea
|
|
421
|
+
if (curValue.length > 0) {
|
|
422
|
+
goodValue = true;
|
|
423
|
+
}
|
|
424
|
+
break;
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
else {
|
|
429
|
+
if (!p.required)
|
|
430
|
+
goodValue = true;
|
|
431
|
+
}
|
|
432
|
+
if (!isImage && !isMessage) {
|
|
433
|
+
if (goodValue) {
|
|
434
|
+
prompt = prompt
|
|
435
|
+
.replace(new RegExp(`{{${p.name}}}`, "g"), `${curValue}`)
|
|
436
|
+
.replace(new RegExp(`{${p.name}}`, "g"), `${curValue}`);
|
|
437
|
+
}
|
|
438
|
+
else {
|
|
439
|
+
if (!p.required) {
|
|
440
|
+
prompt = prompt
|
|
441
|
+
.replace(new RegExp(`{{${p.name}}}`, "g"), "")
|
|
442
|
+
.replace(new RegExp(`{${p.name}}`, "g"), "");
|
|
443
|
+
}
|
|
444
|
+
else {
|
|
445
|
+
return {
|
|
446
|
+
type: "error",
|
|
447
|
+
content: {
|
|
448
|
+
system: `The parameter "${p.name}" does not have a good value.`
|
|
449
|
+
}
|
|
450
|
+
};
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
else {
|
|
455
|
+
if (!(0, core_1.isNonEmptyString)(curValue)) {
|
|
456
|
+
return {
|
|
457
|
+
type: "error",
|
|
458
|
+
content: {
|
|
459
|
+
system: `The parameter "${p.name}" does not have a good value.`
|
|
460
|
+
}
|
|
461
|
+
};
|
|
462
|
+
}
|
|
463
|
+
if (isImage && !(0, web_1.isValidUrl)(curValue)) {
|
|
464
|
+
return {
|
|
465
|
+
type: "error",
|
|
466
|
+
content: {
|
|
467
|
+
system: `The parameter "${p.name}" does not have a good value.`
|
|
468
|
+
}
|
|
469
|
+
};
|
|
470
|
+
}
|
|
471
|
+
user = "";
|
|
472
|
+
if (isMessage) {
|
|
473
|
+
prompt = prompt.replace(new RegExp(`{{${p.name}}}`, "g"), `${p.label?.toLowerCase() ?? p.name} (below the "MESSAGE" line). The result must NOT include "MESSAGE" line itself.`);
|
|
474
|
+
user = `MESSAGE\r\n${curValue ?? ""}`;
|
|
475
|
+
}
|
|
476
|
+
// if (isImage) {
|
|
477
|
+
// prompt = prompt.replace(
|
|
478
|
+
// new RegExp(`{{${p.name}}}`, "g"),
|
|
479
|
+
// `${
|
|
480
|
+
// p.label?.toLowerCase() ?? p.name
|
|
481
|
+
// } (below PHOTO line). The result must NOT include "MESSAGE" line itself.`
|
|
482
|
+
// );
|
|
483
|
+
// user = `PHOTO\r\n${curValue ?? ""}`;
|
|
484
|
+
// }
|
|
485
|
+
if (isImage) {
|
|
486
|
+
prompt = prompt.replace(new RegExp(`{{${p.name}}}`, "g"), "image");
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
if (prompt?.indexOf("{{") >= 0 || prompt?.indexOf("}}") >= 0) {
|
|
491
|
+
const regex = /{{([^{}]+)}}/g;
|
|
492
|
+
let matches = [];
|
|
493
|
+
let match;
|
|
494
|
+
// Use regex.exec() in a loop to find all matches in the string
|
|
495
|
+
while ((match = regex.exec(prompt)) !== null) {
|
|
496
|
+
// The first capture group is the content inside the braces
|
|
497
|
+
matches.push(match[1]);
|
|
498
|
+
}
|
|
499
|
+
(0, core_1.libTrackIsOn)() && console.log({ matches });
|
|
500
|
+
(0, core_1.libTrackIsOn)() &&
|
|
501
|
+
console.log({ parameters: JSON.stringify(parameters) });
|
|
502
|
+
return {
|
|
503
|
+
type: "error",
|
|
504
|
+
content: { system: "parameter-missing-value" },
|
|
505
|
+
error: matches
|
|
506
|
+
};
|
|
507
|
+
}
|
|
508
|
+
//For some reason, when put a \n\n at the end of the prompt, it works better
|
|
509
|
+
//I noticed in some prompt people use Final Answer: at the end of the prompt, this is confusing
|
|
510
|
+
//It seems double \n will do the same
|
|
511
|
+
//remove all \n at the end of prompt first
|
|
512
|
+
prompt = `${(0, core_1.trimNewLine)(prompt)}`;
|
|
513
|
+
if (user.length == 0) {
|
|
514
|
+
//if there is no value in user part, we do not need system
|
|
515
|
+
//instead we put content in system to user
|
|
516
|
+
result.content = { user: prompt, medias };
|
|
517
|
+
}
|
|
518
|
+
else {
|
|
519
|
+
result.content = { user: `${prompt}\r\n${user}`, medias };
|
|
520
|
+
}
|
|
521
|
+
return result;
|
|
522
|
+
};
|
|
523
|
+
exports.getLLMPrompt = getLLMPrompt;
|
|
524
|
+
//# sourceMappingURL=llm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"llm.js","sourceRoot":"","sources":["../../src/ai/llm.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { IService } from "../types";
|
|
2
|
+
import { TAIContext } from "./types";
|
|
3
|
+
export declare const getAIProviders: (context: TAIContext) => Record<string, any>[];
|
|
4
|
+
export declare const getAIProvider: (context: TAIContext, id: string) => Record<string, any> | undefined;
|
|
5
|
+
export declare const getAIPlatforms: (context: TAIContext) => Record<string, any>[];
|
|
6
|
+
export declare const getAIPlatform: (context: TAIContext, id: string) => Record<string, any> | undefined;
|
|
7
|
+
export declare const getAIModels: (context: TAIContext, type?: string) => Record<string, any>[];
|
|
8
|
+
export declare const getAIModel: (context: TAIContext, id: string, defaultId?: string) => Record<string, any> | undefined;
|
|
9
|
+
export declare const getAIServices: (context: TAIContext, type?: string) => IService[];
|
|
10
|
+
export declare const getDefaultAIServiceId: (context: TAIContext, type: string) => string;
|
|
11
|
+
export declare const getDefaultAIService: (context: TAIContext, type: string) => IService;
|
|
12
|
+
export declare const getAIService: (context: TAIContext, id: string, defaultId?: string) => IService | undefined;
|
|
13
|
+
export declare const convertAIModelRecordsToAIServices: (records: Record<string, any>[]) => IService[];
|
|
14
|
+
//# sourceMappingURL=model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/ai/model.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAGrC,eAAO,MAAM,cAAc,GAAI,SAAS,UAAU,KAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAGvE,CAAC;AAEF,eAAO,MAAM,aAAa,GACtB,SAAS,UAAU,EACnB,IAAI,MAAM,KACX,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAExB,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,SAAS,UAAU,KAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAGvE,CAAC;AAEF,eAAO,MAAM,aAAa,GACtB,SAAS,UAAU,EACnB,IAAI,MAAM,KACX,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAExB,CAAC;AAEF,eAAO,MAAM,WAAW,GACpB,SAAS,UAAU,EACnB,OAAO,MAAM,KACd,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAMrB,CAAC;AAEF,eAAO,MAAM,UAAU,GACnB,SAAS,UAAU,EACnB,IAAI,MAAM,EACV,YAAY,MAAM,KACnB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SASxB,CAAC;AAEF,eAAO,MAAM,aAAa,GACtB,SAAS,UAAU,EACnB,OAAO,MAAM,KACd,QAAQ,EAKV,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAC9B,SAAS,UAAU,EACnB,MAAM,MAAM,KACb,MAsBF,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAC5B,SAAS,UAAU,EACnB,MAAM,MAAM,KACb,QAKF,CAAC;AAEF,eAAO,MAAM,YAAY,GACrB,SAAS,UAAU,EACnB,IAAI,MAAM,EACV,YAAY,MAAM,KACnB,QAAQ,GAAG,SAeb,CAAC;AAEF,eAAO,MAAM,iCAAiC,GAC1C,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,KAC/B,QAAQ,EAoDV,CAAC"}
|