@sprucelabs/sprucebot-llm 11.1.14 → 11.1.15
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/build/.spruce/errors/errors.types.js +0 -1
- package/build/.spruce/errors/options.types.js +0 -1
- package/build/.spruce/errors/sprucebotLlm/callbackError.schema.js +0 -1
- package/build/.spruce/errors/sprucebotLlm/invalidCallback.schema.js +0 -1
- package/build/.spruce/errors/sprucebotLlm/noBotInstanceSet.schema.js +0 -1
- package/build/.spruce/schemas/fields/fieldClassMap.js +0 -1
- package/build/.spruce/schemas/fields/fields.types.js +0 -1
- package/build/bots/PromptGenerator.js +0 -1
- package/build/bots/SprucebotLlmBotImpl.js +0 -1
- package/build/bots/SprucebotLlmFactory.js +0 -1
- package/build/bots/SprucebotLlmSkillImpl.js +0 -1
- package/build/bots/adapters/OpenAi.js +0 -1
- package/build/bots/adapters/OpenAiMessageBuilder.js +0 -1
- package/build/bots/adapters/SpyOpenAiApi.js +0 -1
- package/build/bots/templates.js +0 -1
- package/build/chat.js +0 -1
- package/build/chatWithImages.js +0 -1
- package/build/errors/SpruceError.js +0 -1
- package/build/errors/callbackError.builder.js +0 -1
- package/build/errors/invalidCallback.builder.js +0 -1
- package/build/errors/noBotInstanceSet.builder.js +0 -1
- package/build/esm/.spruce/errors/errors.types.d.ts +52 -0
- package/build/esm/.spruce/errors/errors.types.js +1 -0
- package/build/esm/.spruce/errors/options.types.d.ts +13 -0
- package/build/esm/.spruce/errors/options.types.js +1 -0
- package/build/esm/.spruce/errors/sprucebotLlm/callbackError.schema.d.ts +3 -0
- package/build/esm/.spruce/errors/sprucebotLlm/callbackError.schema.js +12 -0
- package/build/esm/.spruce/errors/sprucebotLlm/invalidCallback.schema.d.ts +3 -0
- package/build/esm/.spruce/errors/sprucebotLlm/invalidCallback.schema.js +27 -0
- package/build/esm/.spruce/errors/sprucebotLlm/noBotInstanceSet.schema.d.ts +3 -0
- package/build/esm/.spruce/errors/sprucebotLlm/noBotInstanceSet.schema.js +12 -0
- package/build/esm/.spruce/event-cache.json +1 -0
- package/build/esm/.spruce/schemas/fields/fieldClassMap.d.ts +2 -0
- package/build/esm/.spruce/schemas/fields/fieldClassMap.js +5 -0
- package/build/esm/.spruce/schemas/fields/fields.types.d.ts +1 -0
- package/build/esm/.spruce/schemas/fields/fields.types.js +3 -0
- package/build/esm/.spruce/settings.json +13 -0
- package/build/esm/bots/PromptGenerator.d.ts +22 -0
- package/build/esm/bots/PromptGenerator.js +74 -0
- package/build/esm/bots/SprucebotLlmBotImpl.d.ts +26 -0
- package/build/esm/bots/SprucebotLlmBotImpl.js +163 -0
- package/build/esm/bots/SprucebotLlmFactory.d.ts +15 -0
- package/build/esm/bots/SprucebotLlmFactory.js +41 -0
- package/build/esm/bots/SprucebotLlmSkillImpl.d.ts +12 -0
- package/build/esm/bots/SprucebotLlmSkillImpl.js +47 -0
- package/build/esm/bots/adapters/OpenAi.d.ts +11 -0
- package/build/esm/bots/adapters/OpenAi.js +46 -0
- package/build/esm/bots/adapters/OpenAiMessageBuilder.d.ts +18 -0
- package/build/esm/bots/adapters/OpenAiMessageBuilder.js +153 -0
- package/build/esm/bots/adapters/SpyOpenAiApi.d.ts +19 -0
- package/build/esm/bots/adapters/SpyOpenAiApi.js +49 -0
- package/build/esm/bots/templates.d.ts +4 -0
- package/build/esm/bots/templates.js +68 -0
- package/build/esm/chat.d.ts +1 -0
- package/build/esm/chat.js +53 -0
- package/build/esm/chatWithImages.d.ts +1 -0
- package/build/esm/chatWithImages.js +46 -0
- package/build/esm/errors/SpruceError.d.ts +6 -0
- package/build/esm/errors/SpruceError.js +25 -0
- package/build/esm/errors/callbackError.builder.d.ts +6 -0
- package/build/esm/errors/callbackError.builder.js +6 -0
- package/build/esm/errors/invalidCallback.builder.d.ts +17 -0
- package/build/esm/errors/invalidCallback.builder.js +17 -0
- package/build/esm/errors/noBotInstanceSet.builder.d.ts +6 -0
- package/build/esm/errors/noBotInstanceSet.builder.js +6 -0
- package/build/esm/examples/buildCallbackSkill.d.ts +2 -0
- package/build/esm/examples/buildCallbackSkill.js +57 -0
- package/build/esm/examples/buildFileTransformerSkill.d.ts +2 -0
- package/build/esm/examples/buildFileTransformerSkill.js +25 -0
- package/build/esm/examples/buildJokeSkill.d.ts +2 -0
- package/build/esm/examples/buildJokeSkill.js +12 -0
- package/build/esm/examples/buildProfileSkill.d.ts +2 -0
- package/build/esm/examples/buildProfileSkill.js +30 -0
- package/build/esm/examples/buildReceptionistSkill.d.ts +2 -0
- package/build/esm/examples/buildReceptionistSkill.js +16 -0
- package/build/esm/examples/images/image1.png +0 -0
- package/build/esm/examples/images/image2.png +0 -0
- package/build/esm/fineTuningSprucebot/constants/DIRECTORY_SHARES.d.ts +1 -0
- package/build/esm/fineTuningSprucebot/constants/DIRECTORY_SHARES.js +7 -0
- package/build/esm/fineTuningSprucebot/constants/FIRST_MESSAGES.d.ts +1 -0
- package/build/esm/fineTuningSprucebot/constants/FIRST_MESSAGES.js +17 -0
- package/build/esm/fineTuningSprucebot/constants/GREETINGS.d.ts +1 -0
- package/build/esm/fineTuningSprucebot/constants/GREETINGS.js +22 -0
- package/build/esm/fineTuningSprucebot/constants/OFF_THE_RAILS_CONVERSATIONS.d.ts +2 -0
- package/build/esm/fineTuningSprucebot/constants/OFF_THE_RAILS_CONVERSATIONS.js +32 -0
- package/build/esm/fineTuningSprucebot/constants/TOPICS.d.ts +2 -0
- package/build/esm/fineTuningSprucebot/constants/TOPICS.js +314 -0
- package/build/esm/fineTuningSprucebot/generateSamples.d.ts +1 -0
- package/build/esm/fineTuningSprucebot/generateSamples.js +41 -0
- package/build/esm/fineTuningSprucebot/promptTemplate.txt +9 -0
- package/build/esm/fineTuningSprucebot/promptTemplateNoTopics.txt +6 -0
- package/build/esm/fineTuningSprucebot/support.d.ts +12 -0
- package/build/esm/fineTuningSprucebot/support.js +60 -0
- package/build/esm/fineTuningSprucebot/types.d.ts +15 -0
- package/build/esm/fineTuningSprucebot/types.js +1 -0
- package/build/esm/index.d.ts +10 -0
- package/build/esm/index.js +10 -0
- package/build/esm/llm.types.d.ts +84 -0
- package/build/esm/llm.types.js +6 -0
- package/build/esm/parsingResponses/ResponseParser.d.ts +18 -0
- package/build/esm/parsingResponses/ResponseParser.js +115 -0
- package/build/esm/parsingResponses/renderPlaceholder.d.ts +1 -0
- package/build/esm/parsingResponses/renderPlaceholder.js +4 -0
- package/build/esm/tests/MockLlmSkill.d.ts +14 -0
- package/build/esm/tests/MockLlmSkill.js +60 -0
- package/build/esm/tests/SpyAdapter.d.ts +8 -0
- package/build/esm/tests/SpyAdapter.js +21 -0
- package/build/esm/tests/SpyLlmBot.d.ts +12 -0
- package/build/esm/tests/SpyLlmBot.js +20 -0
- package/build/examples/buildCallbackSkill.js +0 -1
- package/build/examples/buildFileTransformerSkill.js +0 -1
- package/build/examples/buildJokeSkill.js +0 -1
- package/build/examples/buildProfileSkill.js +0 -1
- package/build/examples/buildReceptionistSkill.js +0 -1
- package/build/fineTuningSprucebot/constants/DIRECTORY_SHARES.js +0 -1
- package/build/fineTuningSprucebot/constants/FIRST_MESSAGES.js +0 -1
- package/build/fineTuningSprucebot/constants/GREETINGS.js +0 -1
- package/build/fineTuningSprucebot/constants/OFF_THE_RAILS_CONVERSATIONS.js +0 -1
- package/build/fineTuningSprucebot/constants/TOPICS.js +0 -1
- package/build/fineTuningSprucebot/generateSamples.js +0 -1
- package/build/fineTuningSprucebot/support.js +0 -1
- package/build/fineTuningSprucebot/types.js +0 -1
- package/build/index.js +0 -1
- package/build/llm.types.js +0 -1
- package/build/parsingResponses/ResponseParser.js +0 -1
- package/build/parsingResponses/renderPlaceholder.js +0 -1
- package/build/tests/MockLlmSkill.js +0 -1
- package/build/tests/SpyAdapter.js +0 -1
- package/build/tests/SpyLlmBot.js +0 -1
- package/package.json +1 -1
- package/build/__tests__/behavioral/LlmBot.test.d.ts +0 -55
- package/build/__tests__/behavioral/LlmBot.test.js +0 -607
- package/build/__tests__/behavioral/LlmBot.test.js.map +0 -1
- package/build/__tests__/behavioral/SprucebotLlmFactory.test.d.ts +0 -16
- package/build/__tests__/behavioral/SprucebotLlmFactory.test.js +0 -132
- package/build/__tests__/behavioral/SprucebotLlmFactory.test.js.map +0 -1
- package/build/__tests__/behavioral/adapters/OpenAi.test.d.ts +0 -52
- package/build/__tests__/behavioral/adapters/OpenAi.test.js +0 -699
- package/build/__tests__/behavioral/adapters/OpenAi.test.js.map +0 -1
- package/build/__tests__/behavioral/prompts/PromptGenerator.test.d.ts +0 -20
- package/build/__tests__/behavioral/prompts/PromptGenerator.test.js +0 -211
- package/build/__tests__/behavioral/prompts/PromptGenerator.test.js.map +0 -1
- package/build/__tests__/behavioral/prompts/ResponseParser.test.d.ts +0 -35
- package/build/__tests__/behavioral/prompts/ResponseParser.test.js +0 -312
- package/build/__tests__/behavioral/prompts/ResponseParser.test.js.map +0 -1
- package/build/__tests__/behavioral/skills/Skill.test.d.ts +0 -19
- package/build/__tests__/behavioral/skills/Skill.test.js +0 -188
- package/build/__tests__/behavioral/skills/Skill.test.js.map +0 -1
- package/build/__tests__/behavioral/testing/MockLlmSkill.test.d.ts +0 -37
- package/build/__tests__/behavioral/testing/MockLlmSkill.test.js +0 -340
- package/build/__tests__/behavioral/testing/MockLlmSkill.test.js.map +0 -1
- package/build/__tests__/behavioral/testing/SpyLlmBot.test.d.ts +0 -4
- package/build/__tests__/behavioral/testing/SpyLlmBot.test.js +0 -34
- package/build/__tests__/behavioral/testing/SpyLlmBot.test.js.map +0 -1
- package/build/__tests__/support/AbstractLlmTest.d.ts +0 -14
- package/build/__tests__/support/AbstractLlmTest.js +0 -67
- package/build/__tests__/support/AbstractLlmTest.js.map +0 -1
- package/build/__tests__/support/schemas/carSchema.d.ts +0 -16
- package/build/__tests__/support/schemas/carSchema.js +0 -19
- package/build/__tests__/support/schemas/carSchema.js.map +0 -1
- package/build/__tests__/support/schemas/personSchema.d.ts +0 -23
- package/build/__tests__/support/schemas/personSchema.js +0 -37
- package/build/__tests__/support/schemas/personSchema.js.map +0 -1
- package/build/__tests__/support/schemas/personWithDefaultsSchema.d.ts +0 -13
- package/build/__tests__/support/schemas/personWithDefaultsSchema.js +0 -18
- package/build/__tests__/support/schemas/personWithDefaultsSchema.js.map +0 -1
- /package/build/{.spruce → esm/.spruce}/errors/errors.types.js.map +0 -0
- /package/build/{.spruce → esm/.spruce}/errors/options.types.js.map +0 -0
- /package/build/{.spruce → esm/.spruce}/errors/sprucebotLlm/callbackError.schema.js.map +0 -0
- /package/build/{.spruce → esm/.spruce}/errors/sprucebotLlm/invalidCallback.schema.js.map +0 -0
- /package/build/{.spruce → esm/.spruce}/errors/sprucebotLlm/noBotInstanceSet.schema.js.map +0 -0
- /package/build/{.spruce → esm/.spruce}/schemas/fields/fieldClassMap.js.map +0 -0
- /package/build/{.spruce → esm/.spruce}/schemas/fields/fields.types.js.map +0 -0
- /package/build/{bots → esm/bots}/PromptGenerator.js.map +0 -0
- /package/build/{bots → esm/bots}/SprucebotLlmBotImpl.js.map +0 -0
- /package/build/{bots → esm/bots}/SprucebotLlmFactory.js.map +0 -0
- /package/build/{bots → esm/bots}/SprucebotLlmSkillImpl.js.map +0 -0
- /package/build/{bots → esm/bots}/adapters/OpenAi.js.map +0 -0
- /package/build/{bots → esm/bots}/adapters/OpenAiMessageBuilder.js.map +0 -0
- /package/build/{bots → esm/bots}/adapters/SpyOpenAiApi.js.map +0 -0
- /package/build/{bots → esm/bots}/templates.js.map +0 -0
- /package/build/{chat.js.map → esm/chat.js.map} +0 -0
- /package/build/{chatWithImages.js.map → esm/chatWithImages.js.map} +0 -0
- /package/build/{errors → esm/errors}/SpruceError.js.map +0 -0
- /package/build/{errors → esm/errors}/callbackError.builder.js.map +0 -0
- /package/build/{errors → esm/errors}/invalidCallback.builder.js.map +0 -0
- /package/build/{errors → esm/errors}/noBotInstanceSet.builder.js.map +0 -0
- /package/build/{examples → esm/examples}/buildCallbackSkill.js.map +0 -0
- /package/build/{examples → esm/examples}/buildFileTransformerSkill.js.map +0 -0
- /package/build/{examples → esm/examples}/buildJokeSkill.js.map +0 -0
- /package/build/{examples → esm/examples}/buildProfileSkill.js.map +0 -0
- /package/build/{examples → esm/examples}/buildReceptionistSkill.js.map +0 -0
- /package/build/{fineTuningSprucebot → esm/fineTuningSprucebot}/constants/DIRECTORY_SHARES.js.map +0 -0
- /package/build/{fineTuningSprucebot → esm/fineTuningSprucebot}/constants/FIRST_MESSAGES.js.map +0 -0
- /package/build/{fineTuningSprucebot → esm/fineTuningSprucebot}/constants/GREETINGS.js.map +0 -0
- /package/build/{fineTuningSprucebot → esm/fineTuningSprucebot}/constants/OFF_THE_RAILS_CONVERSATIONS.js.map +0 -0
- /package/build/{fineTuningSprucebot → esm/fineTuningSprucebot}/constants/TOPICS.js.map +0 -0
- /package/build/{fineTuningSprucebot → esm/fineTuningSprucebot}/generateSamples.js.map +0 -0
- /package/build/{fineTuningSprucebot → esm/fineTuningSprucebot}/support.js.map +0 -0
- /package/build/{fineTuningSprucebot → esm/fineTuningSprucebot}/types.js.map +0 -0
- /package/build/{index.js.map → esm/index.js.map} +0 -0
- /package/build/{llm.types.js.map → esm/llm.types.js.map} +0 -0
- /package/build/{parsingResponses → esm/parsingResponses}/ResponseParser.js.map +0 -0
- /package/build/{parsingResponses → esm/parsingResponses}/renderPlaceholder.js.map +0 -0
- /package/build/{tests → esm/tests}/MockLlmSkill.js.map +0 -0
- /package/build/{tests → esm/tests}/SpyAdapter.js.map +0 -0
- /package/build/{tests → esm/tests}/SpyLlmBot.js.map +0 -0
package/build/bots/templates.js
CHANGED
package/build/chat.js
CHANGED
package/build/chatWithImages.js
CHANGED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { default as SchemaEntity } from '@sprucelabs/schema';
|
|
2
|
+
import * as SpruceSchema from '@sprucelabs/schema';
|
|
3
|
+
export declare namespace SpruceErrors.SprucebotLlm {
|
|
4
|
+
interface NoBotInstanceSet {
|
|
5
|
+
}
|
|
6
|
+
interface NoBotInstanceSetSchema extends SpruceSchema.Schema {
|
|
7
|
+
id: 'noBotInstanceSet';
|
|
8
|
+
namespace: 'SprucebotLlm';
|
|
9
|
+
name: 'No bot instance set';
|
|
10
|
+
fields: {};
|
|
11
|
+
}
|
|
12
|
+
type NoBotInstanceSetEntity = SchemaEntity<SpruceErrors.SprucebotLlm.NoBotInstanceSetSchema>;
|
|
13
|
+
}
|
|
14
|
+
export declare namespace SpruceErrors.SprucebotLlm {
|
|
15
|
+
interface InvalidCallback {
|
|
16
|
+
'validCallbacks': string[];
|
|
17
|
+
'matchedCallback': string;
|
|
18
|
+
}
|
|
19
|
+
interface InvalidCallbackSchema extends SpruceSchema.Schema {
|
|
20
|
+
id: 'invalidCallback';
|
|
21
|
+
namespace: 'SprucebotLlm';
|
|
22
|
+
name: 'Invalid callback';
|
|
23
|
+
fields: {
|
|
24
|
+
/** . */
|
|
25
|
+
'validCallbacks': {
|
|
26
|
+
type: 'text';
|
|
27
|
+
isRequired: true;
|
|
28
|
+
isArray: true;
|
|
29
|
+
minArrayLength: 0;
|
|
30
|
+
options: undefined;
|
|
31
|
+
};
|
|
32
|
+
/** . */
|
|
33
|
+
'matchedCallback': {
|
|
34
|
+
type: 'text';
|
|
35
|
+
isRequired: true;
|
|
36
|
+
options: undefined;
|
|
37
|
+
};
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
type InvalidCallbackEntity = SchemaEntity<SpruceErrors.SprucebotLlm.InvalidCallbackSchema>;
|
|
41
|
+
}
|
|
42
|
+
export declare namespace SpruceErrors.SprucebotLlm {
|
|
43
|
+
interface CallbackError {
|
|
44
|
+
}
|
|
45
|
+
interface CallbackErrorSchema extends SpruceSchema.Schema {
|
|
46
|
+
id: 'callbackError';
|
|
47
|
+
namespace: 'SprucebotLlm';
|
|
48
|
+
name: 'Callback error';
|
|
49
|
+
fields: {};
|
|
50
|
+
}
|
|
51
|
+
type CallbackErrorEntity = SchemaEntity<SpruceErrors.SprucebotLlm.CallbackErrorSchema>;
|
|
52
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { SpruceErrors } from "./errors.types";
|
|
2
|
+
import { ErrorOptions as ISpruceErrorOptions } from "@sprucelabs/error";
|
|
3
|
+
export interface NoBotInstanceSetErrorOptions extends SpruceErrors.SprucebotLlm.NoBotInstanceSet, ISpruceErrorOptions {
|
|
4
|
+
code: 'NO_BOT_INSTANCE_SET';
|
|
5
|
+
}
|
|
6
|
+
export interface InvalidCallbackErrorOptions extends SpruceErrors.SprucebotLlm.InvalidCallback, ISpruceErrorOptions {
|
|
7
|
+
code: 'INVALID_CALLBACK';
|
|
8
|
+
}
|
|
9
|
+
export interface CallbackErrorErrorOptions extends SpruceErrors.SprucebotLlm.CallbackError, ISpruceErrorOptions {
|
|
10
|
+
code: 'CALLBACK_ERROR';
|
|
11
|
+
}
|
|
12
|
+
type ErrorOptions = NoBotInstanceSetErrorOptions | InvalidCallbackErrorOptions | CallbackErrorErrorOptions;
|
|
13
|
+
export default ErrorOptions;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const schema_1 = require('@sprucelabs/schema');
|
|
4
|
+
const callbackErrorSchema = {
|
|
5
|
+
id: 'callbackError',
|
|
6
|
+
namespace: 'SprucebotLlm',
|
|
7
|
+
name: 'Callback error',
|
|
8
|
+
fields: {}
|
|
9
|
+
};
|
|
10
|
+
schema_1.SchemaRegistry.getInstance().trackSchema(callbackErrorSchema);
|
|
11
|
+
exports.default = callbackErrorSchema;
|
|
12
|
+
//# sourceMappingURL=callbackError.schema.js.map
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const schema_1 = require('@sprucelabs/schema');
|
|
4
|
+
const invalidCallbackSchema = {
|
|
5
|
+
id: 'invalidCallback',
|
|
6
|
+
namespace: 'SprucebotLlm',
|
|
7
|
+
name: 'Invalid callback',
|
|
8
|
+
fields: {
|
|
9
|
+
/** . */
|
|
10
|
+
'validCallbacks': {
|
|
11
|
+
type: 'text',
|
|
12
|
+
isRequired: true,
|
|
13
|
+
isArray: true,
|
|
14
|
+
minArrayLength: 0,
|
|
15
|
+
options: undefined
|
|
16
|
+
},
|
|
17
|
+
/** . */
|
|
18
|
+
'matchedCallback': {
|
|
19
|
+
type: 'text',
|
|
20
|
+
isRequired: true,
|
|
21
|
+
options: undefined
|
|
22
|
+
},
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
schema_1.SchemaRegistry.getInstance().trackSchema(invalidCallbackSchema);
|
|
26
|
+
exports.default = invalidCallbackSchema;
|
|
27
|
+
//# sourceMappingURL=invalidCallback.schema.js.map
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const schema_1 = require('@sprucelabs/schema');
|
|
4
|
+
const noBotInstanceSetSchema = {
|
|
5
|
+
id: 'noBotInstanceSet',
|
|
6
|
+
namespace: 'SprucebotLlm',
|
|
7
|
+
name: 'No bot instance set',
|
|
8
|
+
fields: {}
|
|
9
|
+
};
|
|
10
|
+
schema_1.SchemaRegistry.getInstance().trackSchema(noBotInstanceSetSchema);
|
|
11
|
+
exports.default = noBotInstanceSetSchema;
|
|
12
|
+
//# sourceMappingURL=noBotInstanceSet.schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { FieldDefinitions, FieldDefinitionMap, FieldValueTypeGeneratorMap, FieldMap } from '@sprucelabs/schema';
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { LlmMessage, SprucebotLlmBot } from '../llm.types';
|
|
2
|
+
export default class PromptGenerator {
|
|
3
|
+
private bot;
|
|
4
|
+
private eta;
|
|
5
|
+
private log;
|
|
6
|
+
static Class?: typeof PromptGenerator;
|
|
7
|
+
private promptTemplate;
|
|
8
|
+
protected constructor(bot: SprucebotLlmBot, options?: PromptGeneratorOptions);
|
|
9
|
+
static Generator(bot: SprucebotLlmBot, options?: PromptGeneratorOptions): PromptGenerator;
|
|
10
|
+
generate(): Promise<string>;
|
|
11
|
+
private stringifyState;
|
|
12
|
+
}
|
|
13
|
+
export declare function setUndefinedToNull(obj: Record<string, any>): void;
|
|
14
|
+
export interface TemplateContext {
|
|
15
|
+
youAre: string;
|
|
16
|
+
messages: LlmMessage[];
|
|
17
|
+
stateSchemaJson?: string;
|
|
18
|
+
stateJson?: string;
|
|
19
|
+
}
|
|
20
|
+
export interface PromptGeneratorOptions {
|
|
21
|
+
promptTemplate?: string;
|
|
22
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
11
|
+
var t = {};
|
|
12
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
13
|
+
t[p] = s[p];
|
|
14
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
15
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
16
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
17
|
+
t[p[i]] = s[p[i]];
|
|
18
|
+
}
|
|
19
|
+
return t;
|
|
20
|
+
};
|
|
21
|
+
import { assertOptions, normalizeSchemaValues, } from '@sprucelabs/schema';
|
|
22
|
+
import { Eta } from 'eta';
|
|
23
|
+
import { PROMPT_TEMPLATE } from './templates.js';
|
|
24
|
+
export default class PromptGenerator {
|
|
25
|
+
constructor(bot, options) {
|
|
26
|
+
var _a;
|
|
27
|
+
this.eta = new Eta();
|
|
28
|
+
this.log = process.env.SHOULD_LOG_GENERATED_PROMPTS === 'true'
|
|
29
|
+
? console.info
|
|
30
|
+
: () => { };
|
|
31
|
+
assertOptions({ bot }, ['bot']);
|
|
32
|
+
this.bot = bot;
|
|
33
|
+
this.promptTemplate = (_a = options === null || options === void 0 ? void 0 : options.promptTemplate) !== null && _a !== void 0 ? _a : PROMPT_TEMPLATE;
|
|
34
|
+
}
|
|
35
|
+
static Generator(bot, options) {
|
|
36
|
+
var _a;
|
|
37
|
+
return new ((_a = this.Class) !== null && _a !== void 0 ? _a : PromptGenerator)(bot, options);
|
|
38
|
+
}
|
|
39
|
+
generate() {
|
|
40
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
41
|
+
const _a = this.bot.serialize(), { stateSchema, state } = _a, rest = __rest(_a, ["stateSchema", "state"]);
|
|
42
|
+
const { stateSchemaJson, stateJson } = this.stringifyState(stateSchema, state);
|
|
43
|
+
const rendered = yield this.eta.renderStringAsync(this.promptTemplate, Object.assign({ stateSchemaJson,
|
|
44
|
+
stateJson }, rest));
|
|
45
|
+
this.log('Generated prompt:', rendered);
|
|
46
|
+
return rendered;
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
stringifyState(stateSchema, state) {
|
|
50
|
+
if (!stateSchema) {
|
|
51
|
+
return {
|
|
52
|
+
stateSchemaJson: null,
|
|
53
|
+
stateJson: null,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
const normalizedState = normalizeSchemaValues(stateSchema, state !== null && state !== void 0 ? state : {}, {});
|
|
57
|
+
setUndefinedToNull(normalizedState);
|
|
58
|
+
const stateSchemaJson = JSON.stringify(stateSchema);
|
|
59
|
+
const stateJson = JSON.stringify(normalizedState);
|
|
60
|
+
return { stateSchemaJson, stateJson };
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
export function setUndefinedToNull(obj) {
|
|
64
|
+
for (const key in obj) {
|
|
65
|
+
if (obj.hasOwnProperty(key)) {
|
|
66
|
+
if (obj[key] === undefined) {
|
|
67
|
+
obj[key] = null;
|
|
68
|
+
}
|
|
69
|
+
else if (typeof obj[key] === 'object') {
|
|
70
|
+
setUndefinedToNull(obj[key]);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { AbstractEventEmitter } from '@sprucelabs/mercury-event-emitter';
|
|
2
|
+
import { Schema, SchemaValues } from '@sprucelabs/schema';
|
|
3
|
+
import { BotOptions, LlmAdapter, LlmEventContract, LlmMessage, MessageResponseCallback, SendMessage, SerializedBot, SprucebotLlmBot, SprucebotLLmSkill } from '../llm.types';
|
|
4
|
+
export default class SprucebotLlmBotImpl<StateSchema extends Schema = Schema, State extends SchemaValues<StateSchema> = SchemaValues<StateSchema>> extends AbstractEventEmitter<LlmEventContract> implements SprucebotLlmBot<StateSchema, State> {
|
|
5
|
+
static messageMemoryLimit: number;
|
|
6
|
+
protected adapter: LlmAdapter;
|
|
7
|
+
private youAre;
|
|
8
|
+
private stateSchema?;
|
|
9
|
+
protected state?: Partial<State>;
|
|
10
|
+
private isDone;
|
|
11
|
+
protected messages: LlmMessage[];
|
|
12
|
+
protected skill?: SprucebotLLmSkill;
|
|
13
|
+
constructor(options: BotOptions<StateSchema, State>);
|
|
14
|
+
clearMessageHistory(): void;
|
|
15
|
+
markAsDone(): void;
|
|
16
|
+
getIsDone(): boolean;
|
|
17
|
+
serialize(): SerializedBot<StateSchema, State>;
|
|
18
|
+
sendMessage(message: SendMessage, cb?: MessageResponseCallback): Promise<string>;
|
|
19
|
+
private _sendMessageInternal;
|
|
20
|
+
private optionallyUpdateState;
|
|
21
|
+
private parseResponse;
|
|
22
|
+
private sendMessageToAdapter;
|
|
23
|
+
private trackMessage;
|
|
24
|
+
updateState(newState: Partial<State>): Promise<void>;
|
|
25
|
+
setSkill(skill: SprucebotLLmSkill<any>): void;
|
|
26
|
+
}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import { AbstractEventEmitter } from '@sprucelabs/mercury-event-emitter';
|
|
11
|
+
import { assertOptions, defaultSchemaValues, } from '@sprucelabs/schema';
|
|
12
|
+
import { llmEventContract, } from '../llm.types.js';
|
|
13
|
+
import ResponseParser from '../parsingResponses/ResponseParser.js';
|
|
14
|
+
class SprucebotLlmBotImpl extends AbstractEventEmitter {
|
|
15
|
+
constructor(options) {
|
|
16
|
+
const { adapter, youAre, stateSchema, state, skill } = options;
|
|
17
|
+
super(llmEventContract);
|
|
18
|
+
this.isDone = false;
|
|
19
|
+
this.messages = [];
|
|
20
|
+
this.adapter = adapter;
|
|
21
|
+
this.youAre = youAre;
|
|
22
|
+
this.stateSchema = stateSchema;
|
|
23
|
+
this.skill = skill;
|
|
24
|
+
this.state = stateSchema
|
|
25
|
+
? Object.assign(Object.assign({}, defaultSchemaValues(stateSchema)), state)
|
|
26
|
+
: undefined;
|
|
27
|
+
}
|
|
28
|
+
clearMessageHistory() {
|
|
29
|
+
this.messages = [];
|
|
30
|
+
}
|
|
31
|
+
markAsDone() {
|
|
32
|
+
this.isDone = true;
|
|
33
|
+
}
|
|
34
|
+
getIsDone() {
|
|
35
|
+
return this.isDone;
|
|
36
|
+
}
|
|
37
|
+
serialize() {
|
|
38
|
+
var _a, _b, _c;
|
|
39
|
+
const skill = (_a = this.skill) === null || _a === void 0 ? void 0 : _a.serialize();
|
|
40
|
+
return {
|
|
41
|
+
youAre: this.youAre,
|
|
42
|
+
stateSchema: (_b = this.stateSchema) !== null && _b !== void 0 ? _b : skill === null || skill === void 0 ? void 0 : skill.stateSchema,
|
|
43
|
+
state: (_c = this.state) !== null && _c !== void 0 ? _c : skill === null || skill === void 0 ? void 0 : skill.state,
|
|
44
|
+
messages: this.messages,
|
|
45
|
+
skill,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
sendMessage(message, cb) {
|
|
49
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
50
|
+
assertOptions({ message }, ['message']);
|
|
51
|
+
const llmMessage = {
|
|
52
|
+
from: 'Me',
|
|
53
|
+
message: '',
|
|
54
|
+
};
|
|
55
|
+
if (typeof message === 'string') {
|
|
56
|
+
llmMessage.message = message;
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
llmMessage.message = message.imageDescription;
|
|
60
|
+
llmMessage.imageBase64 = message.imageBase64;
|
|
61
|
+
}
|
|
62
|
+
return this._sendMessageInternal(llmMessage, cb);
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
_sendMessageInternal(llmMessage, cb) {
|
|
66
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
67
|
+
var _a, _b, _c, _d;
|
|
68
|
+
this.trackMessage(llmMessage);
|
|
69
|
+
const { model, callbacks } = (_b = (_a = this.skill) === null || _a === void 0 ? void 0 : _a.serialize()) !== null && _b !== void 0 ? _b : {};
|
|
70
|
+
const llmResponse = yield this.sendMessageToAdapter(model);
|
|
71
|
+
let parsedMessage;
|
|
72
|
+
let isDone;
|
|
73
|
+
let state;
|
|
74
|
+
let callbackResults;
|
|
75
|
+
try {
|
|
76
|
+
const parsed = yield this.parseResponse(llmResponse, callbacks);
|
|
77
|
+
parsedMessage = parsed.message;
|
|
78
|
+
isDone = parsed.isDone;
|
|
79
|
+
state = parsed.state;
|
|
80
|
+
callbackResults = parsed.callbackResults;
|
|
81
|
+
}
|
|
82
|
+
catch (err) {
|
|
83
|
+
this.trackMessage({
|
|
84
|
+
from: 'You',
|
|
85
|
+
message: llmResponse,
|
|
86
|
+
});
|
|
87
|
+
if (((_c = err.options) === null || _c === void 0 ? void 0 : _c.code) === 'INVALID_CALLBACK' ||
|
|
88
|
+
((_d = err.options) === null || _d === void 0 ? void 0 : _d.code) === 'CALLBACK_ERROR') {
|
|
89
|
+
return this._sendMessageInternal({ from: 'Api', message: `Error: ${err.message}` }, cb);
|
|
90
|
+
}
|
|
91
|
+
throw err;
|
|
92
|
+
}
|
|
93
|
+
this.isDone = isDone;
|
|
94
|
+
yield this.optionallyUpdateState(state);
|
|
95
|
+
this.trackMessage({
|
|
96
|
+
from: 'You',
|
|
97
|
+
message: llmResponse,
|
|
98
|
+
});
|
|
99
|
+
cb === null || cb === void 0 ? void 0 : cb(parsedMessage);
|
|
100
|
+
if (callbackResults) {
|
|
101
|
+
let message;
|
|
102
|
+
if (typeof callbackResults === 'string') {
|
|
103
|
+
message = {
|
|
104
|
+
from: 'Api',
|
|
105
|
+
message: `API Results: ${callbackResults}`,
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
message = {
|
|
110
|
+
from: 'Api',
|
|
111
|
+
imageBase64: callbackResults.imageBase64,
|
|
112
|
+
message: `API Results: ${callbackResults.imageDescription}`,
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
yield this._sendMessageInternal(message, cb);
|
|
116
|
+
}
|
|
117
|
+
return parsedMessage;
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
optionallyUpdateState(state) {
|
|
121
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
122
|
+
var _a;
|
|
123
|
+
if (this.stateSchema && state) {
|
|
124
|
+
yield this.updateState(state);
|
|
125
|
+
}
|
|
126
|
+
else if (state) {
|
|
127
|
+
yield ((_a = this.skill) === null || _a === void 0 ? void 0 : _a.updateState(state));
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
parseResponse(response, callbacks) {
|
|
132
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
133
|
+
const parser = ResponseParser.getInstance();
|
|
134
|
+
const parsed = yield parser.parse(response, callbacks);
|
|
135
|
+
return parsed;
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
sendMessageToAdapter(model) {
|
|
139
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
140
|
+
return yield this.adapter.sendMessage(this, {
|
|
141
|
+
model,
|
|
142
|
+
});
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
trackMessage(m) {
|
|
146
|
+
if (this.messages.length === SprucebotLlmBotImpl.messageMemoryLimit) {
|
|
147
|
+
this.messages.shift();
|
|
148
|
+
}
|
|
149
|
+
this.messages.push(m);
|
|
150
|
+
}
|
|
151
|
+
updateState(newState) {
|
|
152
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
153
|
+
this.state = Object.assign(Object.assign({}, this.state), newState);
|
|
154
|
+
yield this.emit('did-update-state');
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
setSkill(skill) {
|
|
158
|
+
this.skill = skill;
|
|
159
|
+
this.isDone = false;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
SprucebotLlmBotImpl.messageMemoryLimit = 10;
|
|
163
|
+
export default SprucebotLlmBotImpl;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { BotOptions, LlmAdapter, SkillOptions, SprucebotLlmBot, SprucebotLLmSkill } from '../llm.types';
|
|
2
|
+
export default class SprucebotLlmFactory {
|
|
3
|
+
protected adapter: LlmAdapter;
|
|
4
|
+
private instance?;
|
|
5
|
+
static FactoryClass?: typeof SprucebotLlmFactory;
|
|
6
|
+
static BotClass?: new (options: any) => SprucebotLlmBot;
|
|
7
|
+
static SkillClass?: new (options: any) => SprucebotLLmSkill;
|
|
8
|
+
protected constructor(adapter: LlmAdapter);
|
|
9
|
+
Bot(options: Omit<BotOptions, 'adapter'>): SprucebotLlmBot;
|
|
10
|
+
Skill(options: SkillOptions): SprucebotLLmSkill;
|
|
11
|
+
getBotInstance(): SprucebotLlmBot<import("@sprucelabs/schema").Schema, Pick<import("@sprucelabs/schema").SchemaStaticValues<import("@sprucelabs/schema").Schema, false, never, import("@sprucelabs/schema").StaticSchemaAllValues<import("@sprucelabs/schema").Schema, false>>, never>>;
|
|
12
|
+
setBotInstance(bot: SprucebotLlmBot): void;
|
|
13
|
+
static Factory(adapter: LlmAdapter): SprucebotLlmFactory;
|
|
14
|
+
static reset(): void;
|
|
15
|
+
}
|