@memberjunction/ai 0.9.1
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/dist/AIEngine.d.ts +36 -0
- package/dist/AIEngine.js +259 -0
- package/dist/AIEngine.js.map +1 -0
- package/dist/AskSkip.d.ts +2 -0
- package/dist/AskSkip.js +56 -0
- package/dist/AskSkip.js.map +1 -0
- package/dist/config.d.ts +0 -0
- package/dist/config.js +1 -0
- package/dist/config.js.map +1 -0
- package/dist/generic/IChat.d.ts +25 -0
- package/dist/generic/IChat.js +11 -0
- package/dist/generic/IChat.js.map +1 -0
- package/dist/generic/IClassify.d.ts +16 -0
- package/dist/generic/IClassify.js +18 -0
- package/dist/generic/IClassify.js.map +1 -0
- package/dist/generic/ISummarize.d.ts +11 -0
- package/dist/generic/ISummarize.js +16 -0
- package/dist/generic/ISummarize.js.map +1 -0
- package/dist/generic/baseModel.d.ts +26 -0
- package/dist/generic/baseModel.js +37 -0
- package/dist/generic/baseModel.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -0
- package/dist/models/anthropic.d.ts +11 -0
- package/dist/models/anthropic.js +52 -0
- package/dist/models/anthropic.js.map +1 -0
- package/dist/models/openai.d.ts +12 -0
- package/dist/models/openai.js +105 -0
- package/dist/models/openai.js.map +1 -0
- package/package.json +31 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { BaseModel, BaseResult } from "./generic/baseModel";
|
|
2
|
+
import { BaseEntity, UserInfo } from "@memberjunction/core";
|
|
3
|
+
export declare class AIActionParams {
|
|
4
|
+
actionId: number;
|
|
5
|
+
modelId: number;
|
|
6
|
+
modelName?: string;
|
|
7
|
+
systemPrompt?: string;
|
|
8
|
+
userMessage?: string;
|
|
9
|
+
}
|
|
10
|
+
export declare class EntityAIActionParams extends AIActionParams {
|
|
11
|
+
entityAIActionId: number;
|
|
12
|
+
entityRecord: BaseEntity;
|
|
13
|
+
}
|
|
14
|
+
export declare class AIEngine {
|
|
15
|
+
private static _instance;
|
|
16
|
+
private static _globalInstanceKey;
|
|
17
|
+
private _models;
|
|
18
|
+
private _actions;
|
|
19
|
+
private _entityActions;
|
|
20
|
+
private _modelActions;
|
|
21
|
+
private _metadataLoaded;
|
|
22
|
+
LoadAIMetadata(contextUser?: UserInfo): Promise<boolean>;
|
|
23
|
+
static LoadAIMetadata(contextUser?: UserInfo): Promise<boolean>;
|
|
24
|
+
static get Models(): BaseEntity[];
|
|
25
|
+
static get ModelActions(): BaseEntity[];
|
|
26
|
+
static get Actions(): BaseEntity[];
|
|
27
|
+
static get EntityAIActions(): BaseEntity[];
|
|
28
|
+
static get Instance(): AIEngine;
|
|
29
|
+
protected static checkMetadataLoaded(): void;
|
|
30
|
+
ExecuteEntityAIAction(params: EntityAIActionParams): Promise<BaseResult>;
|
|
31
|
+
protected markupUserMessage(entityRecord: BaseEntity, userMessage: string): string;
|
|
32
|
+
ExecuteAIAction(params: AIActionParams): Promise<BaseResult>;
|
|
33
|
+
protected GetStringOutputFromActionResults(action: BaseEntity, result: BaseResult): string;
|
|
34
|
+
protected getDriver(model: BaseEntity): Promise<BaseModel>;
|
|
35
|
+
constructor();
|
|
36
|
+
}
|
package/dist/AIEngine.js
ADDED
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.AIEngine = exports.EntityAIActionParams = exports.AIActionParams = void 0;
|
|
27
|
+
const core_1 = require("@memberjunction/core");
|
|
28
|
+
const global_1 = require("@memberjunction/global");
|
|
29
|
+
class AIActionParams {
|
|
30
|
+
}
|
|
31
|
+
exports.AIActionParams = AIActionParams;
|
|
32
|
+
class EntityAIActionParams extends AIActionParams {
|
|
33
|
+
}
|
|
34
|
+
exports.EntityAIActionParams = EntityAIActionParams;
|
|
35
|
+
class AIEngine {
|
|
36
|
+
async LoadAIMetadata(contextUser) {
|
|
37
|
+
if (this._metadataLoaded === false) {
|
|
38
|
+
const rv = new core_1.RunView();
|
|
39
|
+
const models = await rv.RunView({ EntityName: 'AI Models' }, contextUser);
|
|
40
|
+
this._models = models?.Results;
|
|
41
|
+
const actions = await rv.RunView({ EntityName: 'AI Actions' }, contextUser);
|
|
42
|
+
this._actions = actions?.Results;
|
|
43
|
+
const modelActions = await rv.RunView({ EntityName: 'AI Model Actions' }, contextUser);
|
|
44
|
+
this._modelActions = modelActions?.Results;
|
|
45
|
+
const entityAIActions = await rv.RunView({ EntityName: 'Entity AI Actions' }, contextUser);
|
|
46
|
+
this._entityActions = entityAIActions?.Results;
|
|
47
|
+
this._metadataLoaded = true;
|
|
48
|
+
}
|
|
49
|
+
return this._metadataLoaded;
|
|
50
|
+
}
|
|
51
|
+
static async LoadAIMetadata(contextUser) {
|
|
52
|
+
return AIEngine.Instance.LoadAIMetadata(contextUser);
|
|
53
|
+
}
|
|
54
|
+
static get Models() {
|
|
55
|
+
AIEngine.checkMetadataLoaded();
|
|
56
|
+
return AIEngine.Instance._models;
|
|
57
|
+
}
|
|
58
|
+
static get ModelActions() {
|
|
59
|
+
AIEngine.checkMetadataLoaded();
|
|
60
|
+
return AIEngine.Instance._modelActions;
|
|
61
|
+
}
|
|
62
|
+
static get Actions() {
|
|
63
|
+
AIEngine.checkMetadataLoaded();
|
|
64
|
+
return AIEngine.Instance._actions;
|
|
65
|
+
}
|
|
66
|
+
static get EntityAIActions() {
|
|
67
|
+
AIEngine.checkMetadataLoaded();
|
|
68
|
+
return AIEngine.Instance._entityActions;
|
|
69
|
+
}
|
|
70
|
+
static get Instance() {
|
|
71
|
+
if (AIEngine._instance === null)
|
|
72
|
+
AIEngine._instance = new AIEngine();
|
|
73
|
+
return AIEngine._instance;
|
|
74
|
+
}
|
|
75
|
+
static checkMetadataLoaded() {
|
|
76
|
+
if (!AIEngine.Instance._metadataLoaded)
|
|
77
|
+
throw new Error("AI Metadata not loaded, call AIEngine.LoadAIMetadata() first.");
|
|
78
|
+
}
|
|
79
|
+
async ExecuteEntityAIAction(params) {
|
|
80
|
+
const startTime = new Date();
|
|
81
|
+
try {
|
|
82
|
+
const entityAction = AIEngine.EntityAIActions.find(ea => ea.ID === params.entityAIActionId);
|
|
83
|
+
if (!entityAction)
|
|
84
|
+
throw new Error(`Entity AI Action ${params.entityAIActionId} not found.`);
|
|
85
|
+
const action = AIEngine.Actions.find(a => a.ID === entityAction.AIActionID);
|
|
86
|
+
if (!action)
|
|
87
|
+
throw new Error(`Action ${entityAction.AIActionID} not found, from the EntityAIAction ${params.entityAIActionId}.`);
|
|
88
|
+
if (entityAction.SkipIfOutputFieldNotEmpty &&
|
|
89
|
+
entityAction.OutputType.trim().toLowerCase() === 'field') {
|
|
90
|
+
const val = params.entityRecord.Get(entityAction.OutputField);
|
|
91
|
+
if (val && val.length > 0)
|
|
92
|
+
return null;
|
|
93
|
+
}
|
|
94
|
+
const entityPrompt = params.systemPrompt ? params.systemPrompt :
|
|
95
|
+
(entityAction.Prompt && entityAction.Prompt.length > 0 ? entityAction.Prompt : action.DefaultPrompt);
|
|
96
|
+
const userMessage = params.userMessage ? params.userMessage : this.markupUserMessage(params.entityRecord, entityAction.UserMessage);
|
|
97
|
+
const modelId = entityAction.AIModelID || action.DefaultModelID;
|
|
98
|
+
const model = AIEngine.Models.find(m => m.ID === modelId);
|
|
99
|
+
const entityParams = {
|
|
100
|
+
name: entityAction.Name,
|
|
101
|
+
actionId: entityAction.AIActionID,
|
|
102
|
+
modelId: modelId,
|
|
103
|
+
systemPrompt: entityPrompt,
|
|
104
|
+
userMessage: userMessage,
|
|
105
|
+
result: null
|
|
106
|
+
};
|
|
107
|
+
if (!await params.entityRecord.BeforeEntityAIAction(entityParams))
|
|
108
|
+
return null;
|
|
109
|
+
const results = await this.ExecuteAIAction({
|
|
110
|
+
actionId: entityParams.actionId,
|
|
111
|
+
modelId: entityParams.modelId,
|
|
112
|
+
systemPrompt: entityParams.systemPrompt,
|
|
113
|
+
userMessage: entityParams.userMessage,
|
|
114
|
+
modelName: model.Name,
|
|
115
|
+
});
|
|
116
|
+
if (results) {
|
|
117
|
+
const sOutput = this.GetStringOutputFromActionResults(action, results);
|
|
118
|
+
entityParams.result = results;
|
|
119
|
+
if (!await params.entityRecord.AfterEntityAIAction(entityParams))
|
|
120
|
+
return results;
|
|
121
|
+
if (entityAction.OutputType.trim().toLowerCase() === 'field') {
|
|
122
|
+
params.entityRecord.Set(entityAction.OutputField, sOutput);
|
|
123
|
+
if (entityAction.TriggerEvent.trim().toLowerCase() === 'after save') {
|
|
124
|
+
await params.entityRecord.Save({
|
|
125
|
+
SkipEntityAIActions: true,
|
|
126
|
+
IgnoreDirtyState: false
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
else if (entityAction.OutputType.trim().toLowerCase() === 'entity') {
|
|
131
|
+
const md = new core_1.Metadata();
|
|
132
|
+
const newRecord = await md.GetEntityObject(entityAction.OutputEntity);
|
|
133
|
+
newRecord.NewRecord();
|
|
134
|
+
newRecord.Set('EntityID', params.entityRecord.EntityInfo.ID);
|
|
135
|
+
newRecord.Set('RecordID', params.entityRecord.ID);
|
|
136
|
+
newRecord.Set(entityAction.OutputField, sOutput);
|
|
137
|
+
await newRecord.Save();
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
return results;
|
|
141
|
+
}
|
|
142
|
+
catch (err) {
|
|
143
|
+
console.error(err);
|
|
144
|
+
return {
|
|
145
|
+
success: false,
|
|
146
|
+
startTime: startTime,
|
|
147
|
+
endTime: new Date(),
|
|
148
|
+
timeElapsed: new Date().getTime() - startTime.getTime(),
|
|
149
|
+
errorMessage: err.message,
|
|
150
|
+
exception: err
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
markupUserMessage(entityRecord, userMessage) {
|
|
155
|
+
let temp = userMessage;
|
|
156
|
+
const markupTokens = temp.match(/{[a-zA-Z0-9]+}/g);
|
|
157
|
+
if (markupTokens && markupTokens.length > 0) {
|
|
158
|
+
markupTokens.forEach(token => {
|
|
159
|
+
const fieldName = token.replace('{', '').replace('}', '');
|
|
160
|
+
const fieldValue = entityRecord.Get(fieldName);
|
|
161
|
+
temp = temp.replace(token, fieldValue ? fieldValue : '');
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
return temp;
|
|
165
|
+
}
|
|
166
|
+
async ExecuteAIAction(params) {
|
|
167
|
+
const action = AIEngine.Actions.find(a => a.ID === params.actionId);
|
|
168
|
+
if (!action)
|
|
169
|
+
throw new Error(`Action ${params.actionId} not found.`);
|
|
170
|
+
if (action.IsActive === false)
|
|
171
|
+
throw new Error(`Action ${params.actionId} is not active.`);
|
|
172
|
+
const model = AIEngine.Models.find(m => m.ID === params.modelId);
|
|
173
|
+
if (!model)
|
|
174
|
+
throw new Error(`Model ${params.modelId} not found.`);
|
|
175
|
+
if (model.IsActive === false)
|
|
176
|
+
throw new Error(`Model ${params.modelId} is not active.`);
|
|
177
|
+
const driver = await this.getDriver(model);
|
|
178
|
+
if (driver) {
|
|
179
|
+
switch (action.Name.trim().toLowerCase()) {
|
|
180
|
+
case 'classify':
|
|
181
|
+
const classifyResult = await driver.ClassifyText({
|
|
182
|
+
model: params.modelName,
|
|
183
|
+
userMessage: params.userMessage,
|
|
184
|
+
systemPrompt: params.systemPrompt
|
|
185
|
+
});
|
|
186
|
+
return classifyResult;
|
|
187
|
+
case 'summarize':
|
|
188
|
+
const summarizeResult = await driver.SummarizeText({
|
|
189
|
+
model: params.modelName,
|
|
190
|
+
userMessage: params.userMessage,
|
|
191
|
+
systemPrompt: params.systemPrompt
|
|
192
|
+
});
|
|
193
|
+
return summarizeResult;
|
|
194
|
+
case 'chat':
|
|
195
|
+
const chatResult = await driver.ChatCompletion({
|
|
196
|
+
model: params.modelName,
|
|
197
|
+
userMessage: params.userMessage,
|
|
198
|
+
systemPrompt: params.systemPrompt,
|
|
199
|
+
messages: [],
|
|
200
|
+
});
|
|
201
|
+
return chatResult;
|
|
202
|
+
default:
|
|
203
|
+
throw new Error(`Action ${action.Name} not supported.`);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
else
|
|
207
|
+
throw new Error(`Driver ${model.DriverClass} not found or couldn't be loaded.`);
|
|
208
|
+
}
|
|
209
|
+
GetStringOutputFromActionResults(action, result) {
|
|
210
|
+
switch (action.Name.trim().toLowerCase()) {
|
|
211
|
+
case 'classify':
|
|
212
|
+
const classifyResult = result;
|
|
213
|
+
return classifyResult.tags.map(t => t.tag).join(', ');
|
|
214
|
+
case 'summarize':
|
|
215
|
+
const summarizeResult = result;
|
|
216
|
+
return summarizeResult.summaryText;
|
|
217
|
+
case 'chat':
|
|
218
|
+
const chatResult = result;
|
|
219
|
+
return chatResult.data.choices[0].message.content;
|
|
220
|
+
default:
|
|
221
|
+
throw new Error(`Action ${action.Get('Name').Name} not supported.`);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
async getDriver(model) {
|
|
225
|
+
const driverClassName = model.Get('DriverClass');
|
|
226
|
+
const driverModuleName = model.Get('DriverImportPath');
|
|
227
|
+
try {
|
|
228
|
+
const driverModule = await Promise.resolve(`${driverModuleName}`).then(s => __importStar(require(s)));
|
|
229
|
+
const DriverClass = driverModule[driverClassName];
|
|
230
|
+
return new DriverClass();
|
|
231
|
+
}
|
|
232
|
+
catch (e) {
|
|
233
|
+
throw new Error(`Error loading driver '${driverModuleName}' / '${driverClassName}' : ${e.message}`);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
constructor() {
|
|
237
|
+
this._models = null;
|
|
238
|
+
this._actions = null;
|
|
239
|
+
this._entityActions = null;
|
|
240
|
+
this._modelActions = null;
|
|
241
|
+
this._metadataLoaded = false;
|
|
242
|
+
if (AIEngine._instance === null) {
|
|
243
|
+
const g = global_1.MJGlobal.Instance.GetGlobalObjectStore();
|
|
244
|
+
if (g && g[AIEngine._globalInstanceKey]) {
|
|
245
|
+
AIEngine._instance = g[AIEngine._globalInstanceKey];
|
|
246
|
+
}
|
|
247
|
+
else {
|
|
248
|
+
if (g)
|
|
249
|
+
g[AIEngine._globalInstanceKey] = this;
|
|
250
|
+
AIEngine._instance = this;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
return AIEngine._instance;
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
AIEngine._instance = null;
|
|
257
|
+
AIEngine._globalInstanceKey = '__mj_ai_engine_instance__';
|
|
258
|
+
exports.AIEngine = AIEngine;
|
|
259
|
+
//# sourceMappingURL=AIEngine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AIEngine.js","sourceRoot":"","sources":["../src/AIEngine.ts"],"names":[],"mappings":"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"}
|
package/dist/AskSkip.js
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SkipExplainQuery = exports.SkipAnalyzeData = void 0;
|
|
4
|
+
const openai_1 = require("openai");
|
|
5
|
+
const openai_2 = require("./models/openai");
|
|
6
|
+
async function SkipAnalyzeData(userQuestion, sql, sampleDataJSON) {
|
|
7
|
+
const model = new openai_2.OpenAILLM();
|
|
8
|
+
const result = await model.ChatCompletion({
|
|
9
|
+
systemPrompt: `You are an expert data analyst who is great at finding unique insights in data and explaning them to non-technical people. The user message will include:
|
|
10
|
+
1) a question that was asked by a non-technical user
|
|
11
|
+
2) a sql query that was created to get data to answer the question
|
|
12
|
+
3) either a sample, or all, of the data the SQL query returned
|
|
13
|
+
Your job is to write a series of 3 to 6 bullet points that will provide unique insights
|
|
14
|
+
about the data answer's the user question. Use markdown for the bullets. DO NOT include a header like "Insights:" just start with the first bullet point.`,
|
|
15
|
+
userMessage: '',
|
|
16
|
+
model: 'gpt-3.5-turbo-0613',
|
|
17
|
+
messages: [
|
|
18
|
+
{
|
|
19
|
+
role: openai_1.ChatCompletionRequestMessageRoleEnum.User,
|
|
20
|
+
content: `User Question: ${userQuestion}\nSQL Query: ${sql}\nSample Data: ${sampleDataJSON}`,
|
|
21
|
+
},
|
|
22
|
+
],
|
|
23
|
+
});
|
|
24
|
+
if (result && result.data && result.data.choices && result.data.choices.length > 0)
|
|
25
|
+
return result.data.choices[0].message.content;
|
|
26
|
+
else
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
exports.SkipAnalyzeData = SkipAnalyzeData;
|
|
30
|
+
async function SkipExplainQuery(userQuestion, sql) {
|
|
31
|
+
const model = new openai_2.OpenAILLM();
|
|
32
|
+
const result = await model.ChatCompletion({
|
|
33
|
+
systemPrompt: `You're an expert data analyst. A user has asked a question of an AI agent. The AI agent has generated a SQL
|
|
34
|
+
query to run to get results. Your job is to review the user question and the SQL query the other AI agent created and
|
|
35
|
+
write a 100-200 word paragraph describing in non-technical terms what the query is outputing. Don't worry about the
|
|
36
|
+
specifics of HOW it works, just explain what it is returning in simple terms.
|
|
37
|
+
Provide this information impersonating the other Agent, who's name is Skip (he's a friendly AI agent), pretend you are Skip explaining YOUR work, don't talk about what
|
|
38
|
+
the AI agent did explain it as if you create the SQL Query. Also don't use any technical terms like SQL or Query.
|
|
39
|
+
|
|
40
|
+
don't start your message with a greeting like "Hey There", just jump right into the analysis as your text will be added to an existing conversation.`,
|
|
41
|
+
userMessage: '',
|
|
42
|
+
model: 'gpt-3.5-turbo-0613',
|
|
43
|
+
messages: [
|
|
44
|
+
{
|
|
45
|
+
role: openai_1.ChatCompletionRequestMessageRoleEnum.User,
|
|
46
|
+
content: `User Question: ${userQuestion}\nSQL Query: ${sql}`,
|
|
47
|
+
},
|
|
48
|
+
],
|
|
49
|
+
});
|
|
50
|
+
if (result && result.data && result.data.choices && result.data.choices.length > 0)
|
|
51
|
+
return result.data.choices[0].message.content;
|
|
52
|
+
else
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
exports.SkipExplainQuery = SkipExplainQuery;
|
|
56
|
+
//# sourceMappingURL=AskSkip.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AskSkip.js","sourceRoot":"","sources":["../src/AskSkip.ts"],"names":[],"mappings":";;;AAAA,mCAA8D;AAC9D,4CAA4C;AAGrC,KAAK,UAAU,eAAe,CAAC,YAAoB,EAAE,GAAW,EAAE,cAAsB;IAC7F,MAAM,KAAK,GAAG,IAAI,kBAAS,EAAE,CAAC;IAC9B,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,cAAc,CAAC;QACxC,YAAY,EAAE;;;;;kLAKgK;QAC9K,WAAW,EAAE,EAAE;QACf,KAAK,EAAE,oBAAoB;QAC3B,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,6CAAoC,CAAC,IAAI;gBAC/C,OAAO,EAAE,kBAAkB,YAAY,gBAAgB,GAAG,kBAAkB,cAAc,EAAE;aAC7F;SACF;KACF,CAAC,CAAC;IACH,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;;QAC7H,OAAO,IAAI,CAAC;AACnB,CAAC;AApBD,0CAoBC;AAEM,KAAK,UAAU,gBAAgB,CAAC,YAAoB,EAAE,GAAW;IACtE,MAAM,KAAK,GAAG,IAAI,kBAAS,EAAE,CAAC;IAC9B,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,cAAc,CAAC;QACxC,YAAY,EAAE;;;;;;;iKAO+I;QAC7J,WAAW,EAAE,EAAE;QACf,KAAK,EAAE,oBAAoB;QAC3B,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,6CAAoC,CAAC,IAAI;gBAC/C,OAAO,EAAE,kBAAkB,YAAY,gBAAgB,GAAG,EAAE;aAC7D;SACF;KACF,CAAC,CAAC;IACH,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;;QAC7H,OAAO,IAAI,CAAC;AACnB,CAAC;AAtBD,4CAsBC"}
|
package/dist/config.d.ts
ADDED
|
File without changes
|
package/dist/config.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { BaseParams, BaseResult, ModelUsage } from "./baseModel";
|
|
2
|
+
export type ChatMessage = {
|
|
3
|
+
role: string;
|
|
4
|
+
content: string;
|
|
5
|
+
};
|
|
6
|
+
export declare class ChatParams extends BaseParams {
|
|
7
|
+
messages: ChatMessage[];
|
|
8
|
+
}
|
|
9
|
+
export type ChatResultChoice = {
|
|
10
|
+
message: ChatMessage;
|
|
11
|
+
finish_reason: string;
|
|
12
|
+
index: number;
|
|
13
|
+
};
|
|
14
|
+
export type ChatResultData = {
|
|
15
|
+
choices: ChatResultChoice[];
|
|
16
|
+
usage: ModelUsage;
|
|
17
|
+
};
|
|
18
|
+
export declare class ChatResult extends BaseResult {
|
|
19
|
+
data: ChatResultData;
|
|
20
|
+
status: string;
|
|
21
|
+
statusText: string;
|
|
22
|
+
}
|
|
23
|
+
export interface IChat {
|
|
24
|
+
ChatCompletion(params: ChatParams): Promise<ChatResult>;
|
|
25
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ChatResult = exports.ChatParams = void 0;
|
|
4
|
+
const baseModel_1 = require("./baseModel");
|
|
5
|
+
class ChatParams extends baseModel_1.BaseParams {
|
|
6
|
+
}
|
|
7
|
+
exports.ChatParams = ChatParams;
|
|
8
|
+
class ChatResult extends baseModel_1.BaseResult {
|
|
9
|
+
}
|
|
10
|
+
exports.ChatResult = ChatResult;
|
|
11
|
+
//# sourceMappingURL=IChat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IChat.js","sourceRoot":"","sources":["../../src/generic/IChat.ts"],"names":[],"mappings":";;;AAAA,2CAAgE;AAOhE,MAAa,UAAW,SAAQ,sBAAU;CAEzC;AAFD,gCAEC;AAaD,MAAa,UAAW,SAAQ,sBAAU;CAIzC;AAJD,gCAIC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { BaseResult, BaseParams } from "./baseModel";
|
|
2
|
+
export declare class ClassifyParams extends BaseParams {
|
|
3
|
+
}
|
|
4
|
+
export declare class ClassifyTag {
|
|
5
|
+
constructor(tag: string, confidence: number);
|
|
6
|
+
tag: string;
|
|
7
|
+
confidence: number;
|
|
8
|
+
}
|
|
9
|
+
export declare class ClassifyResult extends BaseResult {
|
|
10
|
+
inputText: string;
|
|
11
|
+
tags: ClassifyTag[];
|
|
12
|
+
statusMessage: string;
|
|
13
|
+
}
|
|
14
|
+
export interface IClassify {
|
|
15
|
+
ClassifyText(params: ClassifyParams): Promise<ClassifyResult>;
|
|
16
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ClassifyResult = exports.ClassifyTag = exports.ClassifyParams = void 0;
|
|
4
|
+
const baseModel_1 = require("./baseModel");
|
|
5
|
+
class ClassifyParams extends baseModel_1.BaseParams {
|
|
6
|
+
}
|
|
7
|
+
exports.ClassifyParams = ClassifyParams;
|
|
8
|
+
class ClassifyTag {
|
|
9
|
+
constructor(tag, confidence) {
|
|
10
|
+
this.tag = tag;
|
|
11
|
+
this.confidence = confidence;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
exports.ClassifyTag = ClassifyTag;
|
|
15
|
+
class ClassifyResult extends baseModel_1.BaseResult {
|
|
16
|
+
}
|
|
17
|
+
exports.ClassifyResult = ClassifyResult;
|
|
18
|
+
//# sourceMappingURL=IClassify.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IClassify.js","sourceRoot":"","sources":["../../src/generic/IClassify.ts"],"names":[],"mappings":";;;AACA,2CAAoD;AAEpD,MAAa,cAAe,SAAQ,sBAAU;CAC7C;AADD,wCACC;AAED,MAAa,WAAW;IACpB,YAAY,GAAW,EAAE,UAAkB;QACvC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IACjC,CAAC;CAGJ;AAPD,kCAOC;AAED,MAAa,cAAe,SAAQ,sBAAU;CAI7C;AAJD,wCAIC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { BaseParams, BaseResult } from "./baseModel";
|
|
2
|
+
export declare class SummarizeParams extends BaseParams {
|
|
3
|
+
}
|
|
4
|
+
export declare class SummarizeResult extends BaseResult {
|
|
5
|
+
text: string;
|
|
6
|
+
summaryText: string;
|
|
7
|
+
constructor(text: string, summaryText: string, success: boolean, startTime: Date, endTime: Date);
|
|
8
|
+
}
|
|
9
|
+
export interface ISummarize {
|
|
10
|
+
SummarizeText(params: SummarizeParams): Promise<SummarizeResult>;
|
|
11
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SummarizeResult = exports.SummarizeParams = void 0;
|
|
4
|
+
const baseModel_1 = require("./baseModel");
|
|
5
|
+
class SummarizeParams extends baseModel_1.BaseParams {
|
|
6
|
+
}
|
|
7
|
+
exports.SummarizeParams = SummarizeParams;
|
|
8
|
+
class SummarizeResult extends baseModel_1.BaseResult {
|
|
9
|
+
constructor(text, summaryText, success, startTime, endTime) {
|
|
10
|
+
super(success, startTime, endTime);
|
|
11
|
+
this.text = text;
|
|
12
|
+
this.summaryText = summaryText;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
exports.SummarizeResult = SummarizeResult;
|
|
16
|
+
//# sourceMappingURL=ISummarize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ISummarize.js","sourceRoot":"","sources":["../../src/generic/ISummarize.ts"],"names":[],"mappings":";;;AAAA,2CAAoD;AAEpD,MAAa,eAAgB,SAAQ,sBAAU;CAE9C;AAFD,0CAEC;AAED,MAAa,eAAgB,SAAQ,sBAAU;IAG3C,YAAa,IAAY,EAAE,WAAmB,EAAE,OAAgB,EAAE,SAAe,EAAE,OAAa;QAC5F,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QACnC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACnC,CAAC;CACJ;AARD,0CAQC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export declare class BaseResult {
|
|
2
|
+
success: boolean;
|
|
3
|
+
startTime: Date;
|
|
4
|
+
endTime: Date;
|
|
5
|
+
errorMessage: string;
|
|
6
|
+
exception: any;
|
|
7
|
+
get timeElapsed(): number;
|
|
8
|
+
constructor(success: boolean, startTime: Date, endTime: Date);
|
|
9
|
+
}
|
|
10
|
+
export declare class BaseParams {
|
|
11
|
+
model: string;
|
|
12
|
+
systemPrompt: string;
|
|
13
|
+
userMessage: string;
|
|
14
|
+
}
|
|
15
|
+
export declare class ModelUsage {
|
|
16
|
+
constructor(promptTokens: number, completionTokens: number);
|
|
17
|
+
promptTokens: number;
|
|
18
|
+
completionTokens: number;
|
|
19
|
+
get totalTokens(): number;
|
|
20
|
+
}
|
|
21
|
+
export declare abstract class BaseModel {
|
|
22
|
+
}
|
|
23
|
+
export declare abstract class BaseLLM extends BaseModel {
|
|
24
|
+
}
|
|
25
|
+
export declare abstract class BaseDiffusion extends BaseModel {
|
|
26
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BaseDiffusion = exports.BaseLLM = exports.BaseModel = exports.ModelUsage = exports.BaseParams = exports.BaseResult = void 0;
|
|
4
|
+
class BaseResult {
|
|
5
|
+
get timeElapsed() {
|
|
6
|
+
return this.endTime.getTime() - this.startTime.getTime();
|
|
7
|
+
}
|
|
8
|
+
constructor(success, startTime, endTime) {
|
|
9
|
+
this.success = success;
|
|
10
|
+
this.startTime = startTime;
|
|
11
|
+
this.endTime = endTime;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
exports.BaseResult = BaseResult;
|
|
15
|
+
class BaseParams {
|
|
16
|
+
}
|
|
17
|
+
exports.BaseParams = BaseParams;
|
|
18
|
+
class ModelUsage {
|
|
19
|
+
constructor(promptTokens, completionTokens) {
|
|
20
|
+
this.promptTokens = promptTokens;
|
|
21
|
+
this.completionTokens = completionTokens;
|
|
22
|
+
}
|
|
23
|
+
get totalTokens() {
|
|
24
|
+
return this.promptTokens + this.completionTokens;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
exports.ModelUsage = ModelUsage;
|
|
28
|
+
class BaseModel {
|
|
29
|
+
}
|
|
30
|
+
exports.BaseModel = BaseModel;
|
|
31
|
+
class BaseLLM extends BaseModel {
|
|
32
|
+
}
|
|
33
|
+
exports.BaseLLM = BaseLLM;
|
|
34
|
+
class BaseDiffusion extends BaseModel {
|
|
35
|
+
}
|
|
36
|
+
exports.BaseDiffusion = BaseDiffusion;
|
|
37
|
+
//# sourceMappingURL=baseModel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"baseModel.js","sourceRoot":"","sources":["../../src/generic/baseModel.ts"],"names":[],"mappings":";;;AAAA,MAAa,UAAU;IAMnB,IAAI,WAAW;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;IAC7D,CAAC;IACD,YAAa,OAAgB,EAAE,SAAe,EAAE,OAAa;QACzD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IAC3B,CAAC;CACJ;AAdD,gCAcC;AAED,MAAa,UAAU;CAItB;AAJD,gCAIC;AAED,MAAa,UAAU;IACnB,YAAY,YAAoB,EAAE,gBAAwB;QACtD,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IAC7C,CAAC;IAGD,IAAI,WAAW;QACX,OAAO,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC;IACrD,CAAC;CACJ;AAVD,gCAUC;AAED,MAAsB,SAAS;CAC9B;AADD,8BACC;AAED,MAAsB,OAAQ,SAAQ,SAAS;CAC9C;AADD,0BACC;AAED,MAAsB,aAAc,SAAQ,SAAS;CACpD;AADD,sCACC"}
|
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./AskSkip"), exports);
|
|
18
|
+
__exportStar(require("./models/openai"), exports);
|
|
19
|
+
__exportStar(require("./generic/baseModel"), exports);
|
|
20
|
+
__exportStar(require("./generic/IChat"), exports);
|
|
21
|
+
__exportStar(require("./generic/IClassify"), exports);
|
|
22
|
+
__exportStar(require("./generic/ISummarize"), exports);
|
|
23
|
+
__exportStar(require("./AIEngine"), exports);
|
|
24
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAAyB;AACzB,kDAAgC;AAChC,sDAAmC;AACnC,kDAA+B;AAC/B,sDAAmC;AACnC,uDAAoC;AACpC,6CAA0B"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { BaseLLM } from "../generic/baseModel";
|
|
2
|
+
import { ChatParams, ChatResult, IChat } from "../generic/IChat";
|
|
3
|
+
import { ISummarize, SummarizeParams, SummarizeResult } from '../generic/ISummarize';
|
|
4
|
+
import { ClassifyParams, ClassifyResult, IClassify } from '../generic/IClassify';
|
|
5
|
+
export declare class AnthropicLLM extends BaseLLM implements IChat, ISummarize, IClassify {
|
|
6
|
+
static _anthropic: any;
|
|
7
|
+
constructor();
|
|
8
|
+
ChatCompletion(params: ChatParams): Promise<ChatResult>;
|
|
9
|
+
SummarizeText(params: SummarizeParams): Promise<SummarizeResult>;
|
|
10
|
+
ClassifyText(params: ClassifyParams): Promise<ClassifyResult>;
|
|
11
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.AnthropicLLM = void 0;
|
|
7
|
+
const dotenv_1 = __importDefault(require("dotenv"));
|
|
8
|
+
dotenv_1.default.config();
|
|
9
|
+
const baseModel_1 = require("../generic/baseModel");
|
|
10
|
+
const ISummarize_1 = require("../generic/ISummarize");
|
|
11
|
+
const sdk_1 = require("@anthropic-ai/sdk");
|
|
12
|
+
class AnthropicLLM extends baseModel_1.BaseLLM {
|
|
13
|
+
constructor() {
|
|
14
|
+
super();
|
|
15
|
+
if (!AnthropicLLM._anthropic) {
|
|
16
|
+
const apiKey = process.env.ANTHROPIC_API_KEY;
|
|
17
|
+
if (!apiKey) {
|
|
18
|
+
throw new Error("The ANTHROPIC_API_KEY environment variable must be set");
|
|
19
|
+
}
|
|
20
|
+
AnthropicLLM._anthropic = new sdk_1.Client(apiKey);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
async ChatCompletion(params) {
|
|
24
|
+
throw new Error("Method not implemented.");
|
|
25
|
+
}
|
|
26
|
+
async SummarizeText(params) {
|
|
27
|
+
const sPrompt = `${sdk_1.HUMAN_PROMPT} the following is a SYSTEM prompt that is important to comply with at all times
|
|
28
|
+
${params.systemPrompt}
|
|
29
|
+
${sdk_1.AI_PROMPT} OK
|
|
30
|
+
${sdk_1.HUMAN_PROMPT} the following is the user message to process
|
|
31
|
+
${params.userMessage}`;
|
|
32
|
+
const startTime = new Date();
|
|
33
|
+
const sample = await AnthropicLLM._anthropic
|
|
34
|
+
.complete({
|
|
35
|
+
prompt: sPrompt,
|
|
36
|
+
stop_sequences: [sdk_1.HUMAN_PROMPT],
|
|
37
|
+
max_tokens_to_sample: 2000,
|
|
38
|
+
model: "claude-v1",
|
|
39
|
+
});
|
|
40
|
+
const endTime = new Date();
|
|
41
|
+
const success = sample && sample.completion;
|
|
42
|
+
let summaryText = null;
|
|
43
|
+
if (success)
|
|
44
|
+
summaryText = sample.completion;
|
|
45
|
+
return new ISummarize_1.SummarizeResult(params.userMessage, summaryText, success, startTime, endTime);
|
|
46
|
+
}
|
|
47
|
+
async ClassifyText(params) {
|
|
48
|
+
throw new Error("Method not implemented.");
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
exports.AnthropicLLM = AnthropicLLM;
|
|
52
|
+
//# sourceMappingURL=anthropic.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../src/models/anthropic.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA4B;AAC5B,gBAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,oDAAsE;AAEtE,sDAAqF;AAErF,2CAAoE;AAEpE,MAAa,YAAa,SAAQ,mBAAO;IAIrC;QACI,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE;YAC1B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;YAC7C,IAAI,CAAC,MAAM,EAAE;gBACX,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;aAC3E;YAED,YAAY,CAAC,UAAU,GAAG,IAAI,YAAM,CAAC,MAAM,CAAC,CAAC;SAChD;IACL,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,MAAkB;QAC1C,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IAEM,KAAK,CAAC,aAAa,CAAC,MAAuB;QAC9C,MAAM,OAAO,GAAW,GAAG,kBAAY;EAC7C,MAAM,CAAC,YAAY;EACnB,eAAS;EACT,kBAAY;EACZ,MAAM,CAAC,WAAW,EAAE,CAAA;QAEd,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,UAAU;aAC3C,QAAQ,CAAC;YACR,MAAM,EAAE,OAAO;YACf,cAAc,EAAE,CAAC,kBAAY,CAAC;YAC9B,oBAAoB,EAAE,IAAI;YAC1B,KAAK,EAAE,WAAW;SACnB,CAAC,CAAA;QACF,MAAM,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;QAE3B,MAAM,OAAO,GAAG,MAAM,IAAI,MAAM,CAAC,UAAU,CAAC;QAC5C,IAAI,WAAW,GAAG,IAAI,CAAC;QACvB,IAAI,OAAO;YACP,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;QAEpC,OAAO,IAAI,4BAAe,CAAC,MAAM,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAC7F,CAAC;IAEM,KAAK,CAAC,YAAY,CAAC,MAAsB;QAC5C,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;CAEJ;AAjDD,oCAiDC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { BaseLLM } from "../generic/baseModel";
|
|
2
|
+
import { ChatParams, ChatResult, IChat } from "../generic/IChat";
|
|
3
|
+
import { ISummarize, SummarizeParams, SummarizeResult } from '../generic/ISummarize';
|
|
4
|
+
import { ClassifyParams, ClassifyResult, IClassify } from '../generic/IClassify';
|
|
5
|
+
export declare class OpenAILLM extends BaseLLM implements IChat, ISummarize, IClassify {
|
|
6
|
+
static _openAI: any;
|
|
7
|
+
constructor();
|
|
8
|
+
ChatCompletion(params: ChatParams): Promise<ChatResult>;
|
|
9
|
+
protected convertRole(role: string): any;
|
|
10
|
+
SummarizeText(params: SummarizeParams): Promise<SummarizeResult>;
|
|
11
|
+
ClassifyText(params: ClassifyParams): Promise<ClassifyResult>;
|
|
12
|
+
}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.OpenAILLM = void 0;
|
|
7
|
+
const dotenv_1 = __importDefault(require("dotenv"));
|
|
8
|
+
dotenv_1.default.config();
|
|
9
|
+
const baseModel_1 = require("../generic/baseModel");
|
|
10
|
+
const ISummarize_1 = require("../generic/ISummarize");
|
|
11
|
+
const { ChatCompletionRequestMessageRoleEnum, Configuration, OpenAIApi } = require("openai");
|
|
12
|
+
class OpenAILLM extends baseModel_1.BaseLLM {
|
|
13
|
+
constructor() {
|
|
14
|
+
super();
|
|
15
|
+
const configuration = new Configuration({
|
|
16
|
+
apiKey: process.env.OPEN_AI_API_KEY
|
|
17
|
+
});
|
|
18
|
+
if (!OpenAILLM._openAI)
|
|
19
|
+
OpenAILLM._openAI = new OpenAIApi(configuration);
|
|
20
|
+
}
|
|
21
|
+
async ChatCompletion(params) {
|
|
22
|
+
const messages = [];
|
|
23
|
+
if (params.systemPrompt && params.systemPrompt.length > 0)
|
|
24
|
+
messages.push({
|
|
25
|
+
role: ChatCompletionRequestMessageRoleEnum.System,
|
|
26
|
+
content: params.systemPrompt
|
|
27
|
+
});
|
|
28
|
+
params.messages.forEach(m => {
|
|
29
|
+
messages.push({
|
|
30
|
+
role: this.convertRole(m.role),
|
|
31
|
+
content: m.content
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
const startTime = new Date();
|
|
35
|
+
const result = await OpenAILLM._openAI.createChatCompletion({
|
|
36
|
+
model: params.model,
|
|
37
|
+
messages: messages
|
|
38
|
+
});
|
|
39
|
+
const endTime = new Date();
|
|
40
|
+
const timeElapsed = endTime.getTime() - startTime.getTime();
|
|
41
|
+
return {
|
|
42
|
+
data: {
|
|
43
|
+
choices: result.data.choices.map((c) => {
|
|
44
|
+
return {
|
|
45
|
+
message: {
|
|
46
|
+
role: ChatCompletionRequestMessageRoleEnum[c.message.role],
|
|
47
|
+
content: c.message.content
|
|
48
|
+
},
|
|
49
|
+
finish_reason: c.finish_reason,
|
|
50
|
+
index: c.index
|
|
51
|
+
};
|
|
52
|
+
}),
|
|
53
|
+
usage: new baseModel_1.ModelUsage(result.data.usage.prompt_tokens, result.data.usage.completion_tokens)
|
|
54
|
+
},
|
|
55
|
+
success: result.success,
|
|
56
|
+
status: result.status,
|
|
57
|
+
statusText: result.statusText,
|
|
58
|
+
startTime: startTime,
|
|
59
|
+
endTime: endTime,
|
|
60
|
+
timeElapsed: timeElapsed,
|
|
61
|
+
errorMessage: null,
|
|
62
|
+
exception: null
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
convertRole(role) {
|
|
66
|
+
switch (role.trim().toLowerCase()) {
|
|
67
|
+
case 'system':
|
|
68
|
+
return ChatCompletionRequestMessageRoleEnum.System;
|
|
69
|
+
case 'user':
|
|
70
|
+
return ChatCompletionRequestMessageRoleEnum.User;
|
|
71
|
+
case 'assistant':
|
|
72
|
+
return ChatCompletionRequestMessageRoleEnum.Assistant;
|
|
73
|
+
default:
|
|
74
|
+
throw new Error(`Unknown role ${role}`);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
async SummarizeText(params) {
|
|
78
|
+
const messages = [];
|
|
79
|
+
if (params.systemPrompt && params.systemPrompt.length > 0)
|
|
80
|
+
messages.push({
|
|
81
|
+
role: ChatCompletionRequestMessageRoleEnum.System,
|
|
82
|
+
content: params.systemPrompt
|
|
83
|
+
});
|
|
84
|
+
messages.push({
|
|
85
|
+
role: ChatCompletionRequestMessageRoleEnum.User,
|
|
86
|
+
content: params.userMessage
|
|
87
|
+
});
|
|
88
|
+
const startTime = new Date();
|
|
89
|
+
const result = await OpenAILLM._openAI.createChatCompletion({
|
|
90
|
+
model: params.model,
|
|
91
|
+
messages: messages
|
|
92
|
+
});
|
|
93
|
+
const endTime = new Date();
|
|
94
|
+
const success = result.data && result.data.choices && result.data.choices.length > 0;
|
|
95
|
+
let summaryText = null;
|
|
96
|
+
if (success)
|
|
97
|
+
summaryText = result.data.choices[0].message.content;
|
|
98
|
+
return new ISummarize_1.SummarizeResult(params.userMessage, summaryText, success, startTime, endTime);
|
|
99
|
+
}
|
|
100
|
+
async ClassifyText(params) {
|
|
101
|
+
throw new Error("Method not implemented.");
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
exports.OpenAILLM = OpenAILLM;
|
|
105
|
+
//# sourceMappingURL=openai.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/models/openai.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@memberjunction/ai",
|
|
3
|
+
"version": "0.9.1",
|
|
4
|
+
"description": "MemberJunction AI Module - LLMs and other AI services wrapped and abstracted for use in MemberJunction",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"files": [
|
|
8
|
+
"/dist"
|
|
9
|
+
],
|
|
10
|
+
"scripts": {
|
|
11
|
+
"start": "ts-node-dev src/index.ts",
|
|
12
|
+
"build": "tsc",
|
|
13
|
+
"test": "echo \"Error: no test specified\" && exit 1"
|
|
14
|
+
},
|
|
15
|
+
"author": "MemberJunction.com",
|
|
16
|
+
"license": "ISC",
|
|
17
|
+
"dependencies": {
|
|
18
|
+
"@anthropic-ai/sdk": "^0.4.3",
|
|
19
|
+
"@memberjunction/core": "^0.9.0",
|
|
20
|
+
"@memberjunction/global": "^0.9.0",
|
|
21
|
+
"dotenv": "^16.0.3",
|
|
22
|
+
"openai": "^3.2.1",
|
|
23
|
+
"rxjs": "^7.8.1",
|
|
24
|
+
"typeorm": "^0.3.16"
|
|
25
|
+
},
|
|
26
|
+
"devDependencies": {
|
|
27
|
+
"@types/node": "^20.1.7",
|
|
28
|
+
"ts-node-dev": "^2.0.0",
|
|
29
|
+
"typescript": "^5.0.3"
|
|
30
|
+
}
|
|
31
|
+
}
|