@smythos/sre 1.6.8 → 1.6.10
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/CHANGELOG +111 -111
- package/LICENSE +18 -18
- package/README.md +135 -135
- package/dist/bundle-analysis-lazy.html +4949 -0
- package/dist/bundle-analysis.html +4949 -0
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/types/Components/Triggers/Gmail.trigger.d.ts +58 -0
- package/dist/types/Components/Triggers/GmailTrigger.class.d.ts +44 -0
- package/dist/types/Components/Triggers/Trigger.class.d.ts +21 -0
- package/dist/types/Components/Triggers/WhatsApp.trigger.d.ts +22 -0
- package/dist/types/helpers/AIPerformanceAnalyzer.helper.d.ts +45 -0
- package/dist/types/helpers/AIPerformanceCollector.helper.d.ts +111 -0
- package/dist/types/subsystems/IO/Storage.service/connectors/AzureBlobStorage.class.d.ts +211 -0
- package/dist/types/subsystems/IO/VectorDB.service/connectors/WeaviateVectorDB.class.d.ts +187 -0
- package/dist/types/subsystems/PerformanceManager/Performance.service/PerformanceConnector.d.ts +102 -0
- package/dist/types/subsystems/PerformanceManager/Performance.service/connectors/LocalPerformanceConnector.class.d.ts +100 -0
- package/dist/types/subsystems/PerformanceManager/Performance.service/index.d.ts +22 -0
- package/dist/types/subsystems/Security/Credentials/Credentials.class.d.ts +2 -0
- package/dist/types/subsystems/Security/Credentials/ManagedOAuth2Credentials.class.d.ts +18 -0
- package/dist/types/subsystems/Security/Credentials/OAuth2Credentials.class.d.ts +14 -0
- package/dist/types/types/Performance.types.d.ts +468 -0
- package/dist/types/utils/package-manager.utils.d.ts +26 -0
- package/package.json +1 -1
- package/src/Components/APICall/APICall.class.ts +161 -161
- package/src/Components/APICall/AccessTokenManager.ts +166 -166
- package/src/Components/APICall/ArrayBufferResponse.helper.ts +58 -58
- package/src/Components/APICall/OAuth.helper.ts +447 -447
- package/src/Components/APICall/mimeTypeCategories.ts +46 -46
- package/src/Components/APICall/parseData.ts +167 -167
- package/src/Components/APICall/parseHeaders.ts +41 -41
- package/src/Components/APICall/parseProxy.ts +68 -68
- package/src/Components/APICall/parseUrl.ts +91 -91
- package/src/Components/APIEndpoint.class.ts +234 -234
- package/src/Components/APIOutput.class.ts +58 -58
- package/src/Components/AgentPlugin.class.ts +102 -102
- package/src/Components/Async.class.ts +155 -155
- package/src/Components/Await.class.ts +90 -90
- package/src/Components/Classifier.class.ts +158 -158
- package/src/Components/Component.class.ts +147 -147
- package/src/Components/ComponentHost.class.ts +38 -38
- package/src/Components/DataSourceCleaner.class.ts +92 -92
- package/src/Components/DataSourceIndexer.class.ts +181 -181
- package/src/Components/DataSourceLookup.class.ts +161 -161
- package/src/Components/ECMASandbox.class.ts +72 -72
- package/src/Components/FEncDec.class.ts +29 -29
- package/src/Components/FHash.class.ts +33 -33
- package/src/Components/FSign.class.ts +80 -80
- package/src/Components/FSleep.class.ts +25 -25
- package/src/Components/FTimestamp.class.ts +66 -66
- package/src/Components/FileStore.class.ts +78 -78
- package/src/Components/ForEach.class.ts +97 -97
- package/src/Components/GPTPlugin.class.ts +70 -70
- package/src/Components/GenAILLM.class.ts +586 -586
- package/src/Components/HuggingFace.class.ts +313 -313
- package/src/Components/Image/imageSettings.config.ts +70 -70
- package/src/Components/ImageGenerator.class.ts +483 -483
- package/src/Components/JSONFilter.class.ts +54 -54
- package/src/Components/LLMAssistant.class.ts +213 -213
- package/src/Components/LogicAND.class.ts +28 -28
- package/src/Components/LogicAtLeast.class.ts +85 -85
- package/src/Components/LogicAtMost.class.ts +86 -86
- package/src/Components/LogicOR.class.ts +29 -29
- package/src/Components/LogicXOR.class.ts +34 -34
- package/src/Components/MCPClient.class.ts +137 -137
- package/src/Components/MemoryDeleteKeyVal.class.ts +70 -70
- package/src/Components/MemoryReadKeyVal.class.ts +67 -67
- package/src/Components/MemoryWriteKeyVal.class.ts +62 -62
- package/src/Components/MemoryWriteObject.class.ts +97 -97
- package/src/Components/MultimodalLLM.class.ts +128 -128
- package/src/Components/OpenAPI.class.ts +72 -72
- package/src/Components/PromptGenerator.class.ts +122 -122
- package/src/Components/ScrapflyWebScrape.class.ts +183 -183
- package/src/Components/ServerlessCode.class.ts +123 -123
- package/src/Components/TavilyWebSearch.class.ts +103 -103
- package/src/Components/VisionLLM.class.ts +104 -104
- package/src/Components/ZapierAction.class.ts +127 -127
- package/src/Components/index.ts +97 -97
- package/src/Core/AgentProcess.helper.ts +240 -240
- package/src/Core/Connector.class.ts +123 -123
- package/src/Core/ConnectorsService.ts +197 -197
- package/src/Core/DummyConnector.ts +49 -49
- package/src/Core/HookService.ts +105 -105
- package/src/Core/SmythRuntime.class.ts +241 -241
- package/src/Core/SystemEvents.ts +16 -16
- package/src/Core/boot.ts +56 -56
- package/src/config.ts +15 -15
- package/src/constants.ts +126 -126
- package/src/data/hugging-face.params.json +579 -579
- package/src/helpers/AWSLambdaCode.helper.ts +624 -624
- package/src/helpers/BinaryInput.helper.ts +331 -331
- package/src/helpers/Conversation.helper.ts +1157 -1157
- package/src/helpers/ECMASandbox.helper.ts +64 -64
- package/src/helpers/JsonContent.helper.ts +97 -97
- package/src/helpers/LocalCache.helper.ts +97 -97
- package/src/helpers/Log.helper.ts +274 -274
- package/src/helpers/OpenApiParser.helper.ts +150 -150
- package/src/helpers/S3Cache.helper.ts +147 -147
- package/src/helpers/SmythURI.helper.ts +5 -5
- package/src/helpers/Sysconfig.helper.ts +95 -95
- package/src/helpers/TemplateString.helper.ts +243 -243
- package/src/helpers/TypeChecker.helper.ts +329 -329
- package/src/index.ts +3 -3
- package/src/index.ts.bak +3 -3
- package/src/subsystems/AgentManager/Agent.class.ts +1114 -1114
- package/src/subsystems/AgentManager/Agent.helper.ts +3 -3
- package/src/subsystems/AgentManager/AgentData.service/AgentDataConnector.ts +230 -230
- package/src/subsystems/AgentManager/AgentData.service/connectors/CLIAgentDataConnector.class.ts +66 -66
- package/src/subsystems/AgentManager/AgentData.service/connectors/LocalAgentDataConnector.class.ts +145 -145
- package/src/subsystems/AgentManager/AgentData.service/connectors/NullAgentData.class.ts +39 -39
- package/src/subsystems/AgentManager/AgentData.service/index.ts +18 -18
- package/src/subsystems/AgentManager/AgentLogger.class.ts +301 -301
- package/src/subsystems/AgentManager/AgentRequest.class.ts +51 -51
- package/src/subsystems/AgentManager/AgentRuntime.class.ts +557 -557
- package/src/subsystems/AgentManager/AgentSSE.class.ts +101 -101
- package/src/subsystems/AgentManager/AgentSettings.class.ts +52 -52
- package/src/subsystems/AgentManager/Component.service/ComponentConnector.ts +32 -32
- package/src/subsystems/AgentManager/Component.service/connectors/LocalComponentConnector.class.ts +60 -60
- package/src/subsystems/AgentManager/Component.service/index.ts +11 -11
- package/src/subsystems/AgentManager/EmbodimentSettings.class.ts +47 -47
- package/src/subsystems/AgentManager/ForkedAgent.class.ts +154 -154
- package/src/subsystems/AgentManager/OSResourceMonitor.ts +77 -77
- package/src/subsystems/ComputeManager/Code.service/CodeConnector.ts +98 -98
- package/src/subsystems/ComputeManager/Code.service/connectors/AWSLambdaCode.class.ts +171 -171
- package/src/subsystems/ComputeManager/Code.service/connectors/ECMASandbox.class.ts +131 -131
- package/src/subsystems/ComputeManager/Code.service/index.ts +13 -13
- package/src/subsystems/IO/CLI.service/CLIConnector.ts +47 -47
- package/src/subsystems/IO/CLI.service/index.ts +9 -9
- package/src/subsystems/IO/Log.service/LogConnector.ts +32 -32
- package/src/subsystems/IO/Log.service/connectors/ConsoleLog.class.ts +28 -28
- package/src/subsystems/IO/Log.service/index.ts +13 -13
- package/src/subsystems/IO/NKV.service/NKVConnector.ts +43 -43
- package/src/subsystems/IO/NKV.service/connectors/NKVLocalStorage.class.ts +234 -234
- package/src/subsystems/IO/NKV.service/connectors/NKVRAM.class.ts +204 -204
- package/src/subsystems/IO/NKV.service/connectors/NKVRedis.class.ts +182 -182
- package/src/subsystems/IO/NKV.service/index.ts +14 -14
- package/src/subsystems/IO/Router.service/RouterConnector.ts +21 -21
- package/src/subsystems/IO/Router.service/connectors/ExpressRouter.class.ts +48 -48
- package/src/subsystems/IO/Router.service/connectors/NullRouter.class.ts +40 -40
- package/src/subsystems/IO/Router.service/index.ts +11 -11
- package/src/subsystems/IO/Storage.service/SmythFS.class.ts +488 -488
- package/src/subsystems/IO/Storage.service/StorageConnector.ts +66 -66
- package/src/subsystems/IO/Storage.service/connectors/LocalStorage.class.ts +327 -327
- package/src/subsystems/IO/Storage.service/connectors/S3Storage.class.ts +482 -482
- package/src/subsystems/IO/Storage.service/index.ts +13 -13
- package/src/subsystems/IO/VectorDB.service/VectorDBConnector.ts +108 -108
- package/src/subsystems/IO/VectorDB.service/connectors/MilvusVectorDB.class.ts +465 -465
- package/src/subsystems/IO/VectorDB.service/connectors/PineconeVectorDB.class.ts +387 -387
- package/src/subsystems/IO/VectorDB.service/connectors/RAMVecrtorDB.class.ts +408 -408
- package/src/subsystems/IO/VectorDB.service/embed/BaseEmbedding.ts +107 -107
- package/src/subsystems/IO/VectorDB.service/embed/GoogleEmbedding.ts +118 -118
- package/src/subsystems/IO/VectorDB.service/embed/OpenAIEmbedding.ts +109 -109
- package/src/subsystems/IO/VectorDB.service/embed/index.ts +26 -26
- package/src/subsystems/IO/VectorDB.service/index.ts +14 -14
- package/src/subsystems/LLMManager/LLM.helper.ts +251 -251
- package/src/subsystems/LLMManager/LLM.inference.ts +345 -345
- package/src/subsystems/LLMManager/LLM.service/LLMConnector.ts +492 -492
- package/src/subsystems/LLMManager/LLM.service/LLMCredentials.helper.ts +171 -171
- package/src/subsystems/LLMManager/LLM.service/connectors/Anthropic.class.ts +666 -666
- package/src/subsystems/LLMManager/LLM.service/connectors/Bedrock.class.ts +407 -407
- package/src/subsystems/LLMManager/LLM.service/connectors/Echo.class.ts +92 -92
- package/src/subsystems/LLMManager/LLM.service/connectors/GoogleAI.class.ts +983 -983
- package/src/subsystems/LLMManager/LLM.service/connectors/Groq.class.ts +319 -319
- package/src/subsystems/LLMManager/LLM.service/connectors/Ollama.class.ts +361 -361
- package/src/subsystems/LLMManager/LLM.service/connectors/Perplexity.class.ts +257 -257
- package/src/subsystems/LLMManager/LLM.service/connectors/VertexAI.class.ts +430 -430
- package/src/subsystems/LLMManager/LLM.service/connectors/openai/OpenAIConnector.class.ts +503 -503
- package/src/subsystems/LLMManager/LLM.service/connectors/openai/apiInterfaces/ChatCompletionsApiInterface.ts +524 -524
- package/src/subsystems/LLMManager/LLM.service/connectors/openai/apiInterfaces/OpenAIApiInterface.ts +100 -100
- package/src/subsystems/LLMManager/LLM.service/connectors/openai/apiInterfaces/OpenAIApiInterfaceFactory.ts +81 -81
- package/src/subsystems/LLMManager/LLM.service/connectors/openai/apiInterfaces/ResponsesApiInterface.ts +1145 -1145
- package/src/subsystems/LLMManager/LLM.service/connectors/openai/apiInterfaces/constants.ts +13 -13
- package/src/subsystems/LLMManager/LLM.service/connectors/openai/apiInterfaces/index.ts +4 -4
- package/src/subsystems/LLMManager/LLM.service/connectors/openai/apiInterfaces/utils.ts +11 -11
- package/src/subsystems/LLMManager/LLM.service/connectors/openai/types.ts +32 -32
- package/src/subsystems/LLMManager/LLM.service/connectors/xAI.class.ts +478 -478
- package/src/subsystems/LLMManager/LLM.service/index.ts +47 -47
- package/src/subsystems/LLMManager/ModelsProvider.service/ModelsProviderConnector.ts +303 -303
- package/src/subsystems/LLMManager/ModelsProvider.service/connectors/JSONModelsProvider.class.ts +280 -271
- package/src/subsystems/LLMManager/ModelsProvider.service/index.ts +11 -11
- package/src/subsystems/LLMManager/custom-models.ts +854 -854
- package/src/subsystems/LLMManager/models.ts +2540 -2540
- package/src/subsystems/LLMManager/paramMappings.ts +69 -69
- package/src/subsystems/MemoryManager/Cache.service/CacheConnector.ts +86 -86
- package/src/subsystems/MemoryManager/Cache.service/connectors/LocalStorageCache.class.ts +297 -297
- package/src/subsystems/MemoryManager/Cache.service/connectors/RAMCache.class.ts +214 -214
- package/src/subsystems/MemoryManager/Cache.service/connectors/RedisCache.class.ts +252 -252
- package/src/subsystems/MemoryManager/Cache.service/connectors/S3Cache.class.ts +373 -373
- package/src/subsystems/MemoryManager/Cache.service/index.ts +15 -15
- package/src/subsystems/MemoryManager/LLMCache.ts +72 -72
- package/src/subsystems/MemoryManager/LLMContext.ts +124 -124
- package/src/subsystems/MemoryManager/LLMMemory.service/LLMMemoryConnector.ts +26 -26
- package/src/subsystems/MemoryManager/RuntimeContext.ts +277 -277
- package/src/subsystems/Security/AccessControl/ACL.class.ts +208 -208
- package/src/subsystems/Security/AccessControl/AccessCandidate.class.ts +82 -82
- package/src/subsystems/Security/AccessControl/AccessRequest.class.ts +52 -52
- package/src/subsystems/Security/Account.service/AccountConnector.ts +44 -44
- package/src/subsystems/Security/Account.service/connectors/DummyAccount.class.ts +130 -130
- package/src/subsystems/Security/Account.service/connectors/JSONFileAccount.class.ts +170 -170
- package/src/subsystems/Security/Account.service/connectors/MySQLAccount.class.ts +76 -76
- package/src/subsystems/Security/Account.service/index.ts +14 -14
- package/src/subsystems/Security/Credentials.helper.ts +62 -62
- package/src/subsystems/Security/ManagedVault.service/ManagedVaultConnector.ts +38 -38
- package/src/subsystems/Security/ManagedVault.service/connectors/NullManagedVault.class.ts +53 -53
- package/src/subsystems/Security/ManagedVault.service/connectors/SecretManagerManagedVault.ts +154 -154
- package/src/subsystems/Security/ManagedVault.service/index.ts +12 -12
- package/src/subsystems/Security/SecureConnector.class.ts +110 -110
- package/src/subsystems/Security/Vault.service/Vault.helper.ts +30 -30
- package/src/subsystems/Security/Vault.service/VaultConnector.ts +29 -29
- package/src/subsystems/Security/Vault.service/connectors/HashicorpVault.class.ts +46 -46
- package/src/subsystems/Security/Vault.service/connectors/JSONFileVault.class.ts +221 -221
- package/src/subsystems/Security/Vault.service/connectors/NullVault.class.ts +54 -54
- package/src/subsystems/Security/Vault.service/connectors/SecretsManager.class.ts +140 -140
- package/src/subsystems/Security/Vault.service/index.ts +12 -12
- package/src/types/ACL.types.ts +104 -104
- package/src/types/AWS.types.ts +10 -10
- package/src/types/Agent.types.ts +61 -61
- package/src/types/AgentLogger.types.ts +17 -17
- package/src/types/Cache.types.ts +1 -1
- package/src/types/Common.types.ts +2 -2
- package/src/types/LLM.types.ts +520 -520
- package/src/types/Redis.types.ts +8 -8
- package/src/types/SRE.types.ts +64 -64
- package/src/types/Security.types.ts +14 -14
- package/src/types/Storage.types.ts +5 -5
- package/src/types/VectorDB.types.ts +86 -86
- package/src/utils/base64.utils.ts +275 -275
- package/src/utils/cli.utils.ts +68 -68
- package/src/utils/data.utils.ts +322 -322
- package/src/utils/date-time.utils.ts +22 -22
- package/src/utils/general.utils.ts +238 -238
- package/src/utils/index.ts +12 -12
- package/src/utils/lazy-client.ts +261 -261
- package/src/utils/numbers.utils.ts +13 -13
- package/src/utils/oauth.utils.ts +35 -35
- package/src/utils/string.utils.ts +414 -414
- package/src/utils/url.utils.ts +19 -19
- package/src/utils/validation.utils.ts +74 -74
- package/dist/types/subsystems/LLMManager/ModelsProvider.service/connectors/SmythModelsProvider.class.d.ts +0 -39
|
@@ -1,72 +1,72 @@
|
|
|
1
|
-
import Joi from 'joi';
|
|
2
|
-
|
|
3
|
-
import { Agent } from '@sre/AgentManager/Agent.class';
|
|
4
|
-
import { Conversation } from '@sre/helpers/Conversation.helper';
|
|
5
|
-
import { TemplateString } from '@sre/helpers/TemplateString.helper';
|
|
6
|
-
|
|
7
|
-
import { Component } from './Component.class';
|
|
8
|
-
|
|
9
|
-
export class OpenAPI extends Component {
|
|
10
|
-
protected configSchema = Joi.object({
|
|
11
|
-
model: Joi.string().optional(),
|
|
12
|
-
openAiModel: Joi.string().optional(), // for backward compatibility
|
|
13
|
-
specUrl: Joi.string().max(2048).uri().required().description('URL of the OpenAPI specification'),
|
|
14
|
-
descForModel: Joi.string().max(5000).required().allow('').label('Description for Model'),
|
|
15
|
-
name: Joi.string().max(500).required().allow(''),
|
|
16
|
-
desc: Joi.string().max(5000).required().allow('').label('Description'),
|
|
17
|
-
logoUrl: Joi.string().max(8192).allow(''),
|
|
18
|
-
id: Joi.string().max(200),
|
|
19
|
-
version: Joi.string().max(100).allow(''),
|
|
20
|
-
domain: Joi.string().max(253).allow(''),
|
|
21
|
-
});
|
|
22
|
-
|
|
23
|
-
constructor() {
|
|
24
|
-
super();
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
init() {}
|
|
28
|
-
|
|
29
|
-
async process(input, config, agent: Agent) {
|
|
30
|
-
await super.process(input, config, agent);
|
|
31
|
-
const logger = this.createComponentLogger(agent, config);
|
|
32
|
-
|
|
33
|
-
logger.debug(`=== Open API Log ===`);
|
|
34
|
-
|
|
35
|
-
try {
|
|
36
|
-
const specUrl = config?.data?.specUrl;
|
|
37
|
-
|
|
38
|
-
if (!specUrl) {
|
|
39
|
-
return { _error: 'Please provide a Open API Specification URL!', _debug: logger.output };
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
const model = config?.data?.model || config?.data?.openAiModel;
|
|
43
|
-
const descForModel = TemplateString(config?.data?.descForModel).parse(input).result;
|
|
44
|
-
let prompt = '';
|
|
45
|
-
|
|
46
|
-
if (input?.Prompt) {
|
|
47
|
-
prompt = typeof input?.Prompt === 'string' ? input?.Prompt : JSON.stringify(input?.Prompt);
|
|
48
|
-
} else if (input?.Query) {
|
|
49
|
-
prompt = typeof input?.Query === 'string' ? input?.Query : JSON.stringify(input?.Query);
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
if (!prompt) {
|
|
53
|
-
return { _error: 'Please provide a prompt', _debug: logger.output };
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
// TODO [Forhad]: Need to check and validate input prompt token
|
|
57
|
-
|
|
58
|
-
const conv = new Conversation(model, specUrl, { systemPrompt: descForModel, agentId: agent?.id });
|
|
59
|
-
|
|
60
|
-
const result = await conv.prompt(prompt);
|
|
61
|
-
|
|
62
|
-
logger.debug(`Response:\n`, result, '\n');
|
|
63
|
-
|
|
64
|
-
return { Output: result, _debug: logger.output };
|
|
65
|
-
} catch (error: any) {
|
|
66
|
-
console.error('Error on running Open API: ', error);
|
|
67
|
-
return { _error: `Error on running Open API!\n${error?.message || JSON.stringify(error)}`, _debug: logger.output };
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
export default OpenAPI;
|
|
1
|
+
import Joi from 'joi';
|
|
2
|
+
|
|
3
|
+
import { Agent } from '@sre/AgentManager/Agent.class';
|
|
4
|
+
import { Conversation } from '@sre/helpers/Conversation.helper';
|
|
5
|
+
import { TemplateString } from '@sre/helpers/TemplateString.helper';
|
|
6
|
+
|
|
7
|
+
import { Component } from './Component.class';
|
|
8
|
+
|
|
9
|
+
export class OpenAPI extends Component {
|
|
10
|
+
protected configSchema = Joi.object({
|
|
11
|
+
model: Joi.string().optional(),
|
|
12
|
+
openAiModel: Joi.string().optional(), // for backward compatibility
|
|
13
|
+
specUrl: Joi.string().max(2048).uri().required().description('URL of the OpenAPI specification'),
|
|
14
|
+
descForModel: Joi.string().max(5000).required().allow('').label('Description for Model'),
|
|
15
|
+
name: Joi.string().max(500).required().allow(''),
|
|
16
|
+
desc: Joi.string().max(5000).required().allow('').label('Description'),
|
|
17
|
+
logoUrl: Joi.string().max(8192).allow(''),
|
|
18
|
+
id: Joi.string().max(200),
|
|
19
|
+
version: Joi.string().max(100).allow(''),
|
|
20
|
+
domain: Joi.string().max(253).allow(''),
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
constructor() {
|
|
24
|
+
super();
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
init() {}
|
|
28
|
+
|
|
29
|
+
async process(input, config, agent: Agent) {
|
|
30
|
+
await super.process(input, config, agent);
|
|
31
|
+
const logger = this.createComponentLogger(agent, config);
|
|
32
|
+
|
|
33
|
+
logger.debug(`=== Open API Log ===`);
|
|
34
|
+
|
|
35
|
+
try {
|
|
36
|
+
const specUrl = config?.data?.specUrl;
|
|
37
|
+
|
|
38
|
+
if (!specUrl) {
|
|
39
|
+
return { _error: 'Please provide a Open API Specification URL!', _debug: logger.output };
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
const model = config?.data?.model || config?.data?.openAiModel;
|
|
43
|
+
const descForModel = TemplateString(config?.data?.descForModel).parse(input).result;
|
|
44
|
+
let prompt = '';
|
|
45
|
+
|
|
46
|
+
if (input?.Prompt) {
|
|
47
|
+
prompt = typeof input?.Prompt === 'string' ? input?.Prompt : JSON.stringify(input?.Prompt);
|
|
48
|
+
} else if (input?.Query) {
|
|
49
|
+
prompt = typeof input?.Query === 'string' ? input?.Query : JSON.stringify(input?.Query);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
if (!prompt) {
|
|
53
|
+
return { _error: 'Please provide a prompt', _debug: logger.output };
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// TODO [Forhad]: Need to check and validate input prompt token
|
|
57
|
+
|
|
58
|
+
const conv = new Conversation(model, specUrl, { systemPrompt: descForModel, agentId: agent?.id });
|
|
59
|
+
|
|
60
|
+
const result = await conv.prompt(prompt);
|
|
61
|
+
|
|
62
|
+
logger.debug(`Response:\n`, result, '\n');
|
|
63
|
+
|
|
64
|
+
return { Output: result, _debug: logger.output };
|
|
65
|
+
} catch (error: any) {
|
|
66
|
+
console.error('Error on running Open API: ', error);
|
|
67
|
+
return { _error: `Error on running Open API!\n${error?.message || JSON.stringify(error)}`, _debug: logger.output };
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
export default OpenAPI;
|
|
@@ -1,122 +1,122 @@
|
|
|
1
|
-
import Joi from 'joi';
|
|
2
|
-
import { IAgent as Agent } from '@sre/types/Agent.types';
|
|
3
|
-
import { LLMInference } from '@sre/LLMManager/LLM.inference';
|
|
4
|
-
import { TemplateString } from '@sre/helpers/TemplateString.helper';
|
|
5
|
-
import { Component } from './Component.class';
|
|
6
|
-
import { AccessCandidate } from '@sre/Security/AccessControl/AccessCandidate.class';
|
|
7
|
-
|
|
8
|
-
//TODO : better handling of context window exceeding max length
|
|
9
|
-
|
|
10
|
-
export class PromptGenerator extends Component {
|
|
11
|
-
protected configSchema = Joi.object({
|
|
12
|
-
model: Joi.string().max(200).required(),
|
|
13
|
-
prompt: Joi.string().required().max(8_000_000).label('Prompt'), // 2M tokens is around 8M characters
|
|
14
|
-
temperature: Joi.number().min(0).max(5).label('Temperature'), // max temperature is 2 for OpenAI and togetherAI but 5 for cohere
|
|
15
|
-
maxTokens: Joi.number().min(1).label('Maximum Tokens'),
|
|
16
|
-
stopSequences: Joi.string().allow('').max(400).label('Stop Sequences'),
|
|
17
|
-
topP: Joi.number().min(0).max(1).label('Top P'),
|
|
18
|
-
topK: Joi.number().min(0).max(500).label('Top K'), // max top_k is 100 for togetherAI but 500 for cohere
|
|
19
|
-
frequencyPenalty: Joi.number().min(0).max(2).label('Frequency Penalty'),
|
|
20
|
-
presencePenalty: Joi.number().min(0).max(2).label('Presence Penalty'),
|
|
21
|
-
responseFormat: Joi.string().valid('json', 'text').optional().label('Response Format'),
|
|
22
|
-
passthrough: Joi.boolean().optional().label('Passthrough'),
|
|
23
|
-
});
|
|
24
|
-
constructor() {
|
|
25
|
-
super();
|
|
26
|
-
}
|
|
27
|
-
init() {}
|
|
28
|
-
async process(input, config, agent: Agent) {
|
|
29
|
-
await super.process(input, config, agent);
|
|
30
|
-
|
|
31
|
-
//let debugLog = agent.agentRuntime?.debug ? [] : undefined;
|
|
32
|
-
const logger = this.createComponentLogger(agent, config);
|
|
33
|
-
|
|
34
|
-
try {
|
|
35
|
-
logger.debug(`=== LLM Prompt Log ===`);
|
|
36
|
-
let teamId = agent?.teamId;
|
|
37
|
-
|
|
38
|
-
const passThrough: boolean = config.data.passthrough || false;
|
|
39
|
-
const model: string = config.data.model || 'echo';
|
|
40
|
-
const llmInference: LLMInference = await LLMInference.getInstance(model, AccessCandidate.agent(agent.id));
|
|
41
|
-
|
|
42
|
-
// if the llm is undefined, then it means we removed the model from our system
|
|
43
|
-
if (!llmInference.connector) {
|
|
44
|
-
return {
|
|
45
|
-
_error: `The model '${model}' is not available. Please try a different one.`,
|
|
46
|
-
_debug: logger.output,
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
const modelId = await agent.modelsProvider.getModelId(model);
|
|
51
|
-
logger.debug(` Model : ${modelId || model}`);
|
|
52
|
-
|
|
53
|
-
let prompt: any = TemplateString(config.data.prompt).parse(input).result;
|
|
54
|
-
|
|
55
|
-
logger.debug(` Prompt\n`, prompt, '\n');
|
|
56
|
-
|
|
57
|
-
// default to json response format
|
|
58
|
-
config.data.responseFormat = config.data?.responseFormat || 'json';
|
|
59
|
-
|
|
60
|
-
// request to LLM
|
|
61
|
-
let response: any;
|
|
62
|
-
if (passThrough) {
|
|
63
|
-
const contentPromise = new Promise(async (resolve, reject) => {
|
|
64
|
-
let _content = '';
|
|
65
|
-
const eventEmitter: any = await llmInference
|
|
66
|
-
.promptStream({
|
|
67
|
-
query: prompt,
|
|
68
|
-
params: { ...config, model, agentId: agent.id },
|
|
69
|
-
})
|
|
70
|
-
.catch((error) => {
|
|
71
|
-
console.error('Error on promptStream: ', error);
|
|
72
|
-
reject(error);
|
|
73
|
-
});
|
|
74
|
-
eventEmitter.on('content', (content) => {
|
|
75
|
-
if (typeof agent.callback === 'function') {
|
|
76
|
-
agent.callback({ content });
|
|
77
|
-
}
|
|
78
|
-
agent.sse.send('llm/passthrough/content', content);
|
|
79
|
-
_content += content;
|
|
80
|
-
});
|
|
81
|
-
eventEmitter.on('thinking', (thinking) => {
|
|
82
|
-
if (typeof agent.callback === 'function') {
|
|
83
|
-
agent.callback({ thinking });
|
|
84
|
-
}
|
|
85
|
-
agent.sse.send('llm/passthrough/thinking', thinking);
|
|
86
|
-
});
|
|
87
|
-
eventEmitter.on('end', () => {
|
|
88
|
-
console.log('end');
|
|
89
|
-
resolve(_content);
|
|
90
|
-
});
|
|
91
|
-
});
|
|
92
|
-
response = await contentPromise;
|
|
93
|
-
} else {
|
|
94
|
-
response = await llmInference
|
|
95
|
-
.prompt({ query: prompt, params: { ...config, agentId: agent.id } })
|
|
96
|
-
.catch((error) => ({ error: error }));
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
// in case we have the response but it's empty string, undefined or null
|
|
100
|
-
if (!response) {
|
|
101
|
-
return { _error: ' LLM Error = Empty Response!', _debug: logger.output };
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
if (response?.error) {
|
|
105
|
-
const error = response?.error + ' ' + (response?.details || '');
|
|
106
|
-
logger.error(` LLM Error=`, error);
|
|
107
|
-
|
|
108
|
-
return { Reply: response?.data, _error: error, _debug: logger.output };
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
logger.debug(' Response \n', response);
|
|
112
|
-
|
|
113
|
-
const result = { Reply: response };
|
|
114
|
-
|
|
115
|
-
result['_debug'] = logger.output;
|
|
116
|
-
|
|
117
|
-
return result;
|
|
118
|
-
} catch (error) {
|
|
119
|
-
return { _error: error.message, _debug: logger.output };
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
}
|
|
1
|
+
import Joi from 'joi';
|
|
2
|
+
import { IAgent as Agent } from '@sre/types/Agent.types';
|
|
3
|
+
import { LLMInference } from '@sre/LLMManager/LLM.inference';
|
|
4
|
+
import { TemplateString } from '@sre/helpers/TemplateString.helper';
|
|
5
|
+
import { Component } from './Component.class';
|
|
6
|
+
import { AccessCandidate } from '@sre/Security/AccessControl/AccessCandidate.class';
|
|
7
|
+
|
|
8
|
+
//TODO : better handling of context window exceeding max length
|
|
9
|
+
|
|
10
|
+
export class PromptGenerator extends Component {
|
|
11
|
+
protected configSchema = Joi.object({
|
|
12
|
+
model: Joi.string().max(200).required(),
|
|
13
|
+
prompt: Joi.string().required().max(8_000_000).label('Prompt'), // 2M tokens is around 8M characters
|
|
14
|
+
temperature: Joi.number().min(0).max(5).label('Temperature'), // max temperature is 2 for OpenAI and togetherAI but 5 for cohere
|
|
15
|
+
maxTokens: Joi.number().min(1).label('Maximum Tokens'),
|
|
16
|
+
stopSequences: Joi.string().allow('').max(400).label('Stop Sequences'),
|
|
17
|
+
topP: Joi.number().min(0).max(1).label('Top P'),
|
|
18
|
+
topK: Joi.number().min(0).max(500).label('Top K'), // max top_k is 100 for togetherAI but 500 for cohere
|
|
19
|
+
frequencyPenalty: Joi.number().min(0).max(2).label('Frequency Penalty'),
|
|
20
|
+
presencePenalty: Joi.number().min(0).max(2).label('Presence Penalty'),
|
|
21
|
+
responseFormat: Joi.string().valid('json', 'text').optional().label('Response Format'),
|
|
22
|
+
passthrough: Joi.boolean().optional().label('Passthrough'),
|
|
23
|
+
});
|
|
24
|
+
constructor() {
|
|
25
|
+
super();
|
|
26
|
+
}
|
|
27
|
+
init() {}
|
|
28
|
+
async process(input, config, agent: Agent) {
|
|
29
|
+
await super.process(input, config, agent);
|
|
30
|
+
|
|
31
|
+
//let debugLog = agent.agentRuntime?.debug ? [] : undefined;
|
|
32
|
+
const logger = this.createComponentLogger(agent, config);
|
|
33
|
+
|
|
34
|
+
try {
|
|
35
|
+
logger.debug(`=== LLM Prompt Log ===`);
|
|
36
|
+
let teamId = agent?.teamId;
|
|
37
|
+
|
|
38
|
+
const passThrough: boolean = config.data.passthrough || false;
|
|
39
|
+
const model: string = config.data.model || 'echo';
|
|
40
|
+
const llmInference: LLMInference = await LLMInference.getInstance(model, AccessCandidate.agent(agent.id));
|
|
41
|
+
|
|
42
|
+
// if the llm is undefined, then it means we removed the model from our system
|
|
43
|
+
if (!llmInference.connector) {
|
|
44
|
+
return {
|
|
45
|
+
_error: `The model '${model}' is not available. Please try a different one.`,
|
|
46
|
+
_debug: logger.output,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const modelId = await agent.modelsProvider.getModelId(model);
|
|
51
|
+
logger.debug(` Model : ${modelId || model}`);
|
|
52
|
+
|
|
53
|
+
let prompt: any = TemplateString(config.data.prompt).parse(input).result;
|
|
54
|
+
|
|
55
|
+
logger.debug(` Prompt\n`, prompt, '\n');
|
|
56
|
+
|
|
57
|
+
// default to json response format
|
|
58
|
+
config.data.responseFormat = config.data?.responseFormat || 'json';
|
|
59
|
+
|
|
60
|
+
// request to LLM
|
|
61
|
+
let response: any;
|
|
62
|
+
if (passThrough) {
|
|
63
|
+
const contentPromise = new Promise(async (resolve, reject) => {
|
|
64
|
+
let _content = '';
|
|
65
|
+
const eventEmitter: any = await llmInference
|
|
66
|
+
.promptStream({
|
|
67
|
+
query: prompt,
|
|
68
|
+
params: { ...config, model, agentId: agent.id },
|
|
69
|
+
})
|
|
70
|
+
.catch((error) => {
|
|
71
|
+
console.error('Error on promptStream: ', error);
|
|
72
|
+
reject(error);
|
|
73
|
+
});
|
|
74
|
+
eventEmitter.on('content', (content) => {
|
|
75
|
+
if (typeof agent.callback === 'function') {
|
|
76
|
+
agent.callback({ content });
|
|
77
|
+
}
|
|
78
|
+
agent.sse.send('llm/passthrough/content', content);
|
|
79
|
+
_content += content;
|
|
80
|
+
});
|
|
81
|
+
eventEmitter.on('thinking', (thinking) => {
|
|
82
|
+
if (typeof agent.callback === 'function') {
|
|
83
|
+
agent.callback({ thinking });
|
|
84
|
+
}
|
|
85
|
+
agent.sse.send('llm/passthrough/thinking', thinking);
|
|
86
|
+
});
|
|
87
|
+
eventEmitter.on('end', () => {
|
|
88
|
+
console.log('end');
|
|
89
|
+
resolve(_content);
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
response = await contentPromise;
|
|
93
|
+
} else {
|
|
94
|
+
response = await llmInference
|
|
95
|
+
.prompt({ query: prompt, params: { ...config, agentId: agent.id } })
|
|
96
|
+
.catch((error) => ({ error: error }));
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
// in case we have the response but it's empty string, undefined or null
|
|
100
|
+
if (!response) {
|
|
101
|
+
return { _error: ' LLM Error = Empty Response!', _debug: logger.output };
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
if (response?.error) {
|
|
105
|
+
const error = response?.error + ' ' + (response?.details || '');
|
|
106
|
+
logger.error(` LLM Error=`, error);
|
|
107
|
+
|
|
108
|
+
return { Reply: response?.data, _error: error, _debug: logger.output };
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
logger.debug(' Response \n', response);
|
|
112
|
+
|
|
113
|
+
const result = { Reply: response };
|
|
114
|
+
|
|
115
|
+
result['_debug'] = logger.output;
|
|
116
|
+
|
|
117
|
+
return result;
|
|
118
|
+
} catch (error) {
|
|
119
|
+
return { _error: error.message, _debug: logger.output };
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|