@memberjunction/ai-openai 0.9.9
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/index.d.ts +1 -0
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -0
- package/dist/models/openAI.d.ts +11 -0
- package/dist/models/openAI.js +99 -0
- package/dist/models/openAI.js.map +1 -0
- package/package.json +27 -0
- package/readme.md +2 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './models/openAI';
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
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("./models/openAI"), exports);
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAAgC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { BaseLLM, ChatMessage, ChatParams, ChatResult, ClassifyParams, ClassifyResult, SummarizeParams, SummarizeResult } from "@memberjunction/ai";
|
|
2
|
+
import { ChatCompletionRequestMessage } from "openai";
|
|
3
|
+
export declare class OpenAILLM extends BaseLLM {
|
|
4
|
+
static _openAI: any;
|
|
5
|
+
constructor(apiKey: string);
|
|
6
|
+
ChatCompletion(params: ChatParams): Promise<ChatResult>;
|
|
7
|
+
SummarizeText(params: SummarizeParams): Promise<SummarizeResult>;
|
|
8
|
+
ClassifyText(params: ClassifyParams): Promise<ClassifyResult>;
|
|
9
|
+
ConvertMJToOpenAIChatMessages(messages: ChatMessage[]): ChatCompletionRequestMessage[];
|
|
10
|
+
ConvertMJToOpenAIRole(role: string): "user" | "system" | "assistant";
|
|
11
|
+
}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var OpenAILLM_1;
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.OpenAILLM = void 0;
|
|
11
|
+
const ai_1 = require("@memberjunction/ai");
|
|
12
|
+
const openai_1 = require("openai");
|
|
13
|
+
const global_1 = require("@memberjunction/global");
|
|
14
|
+
let OpenAILLM = OpenAILLM_1 = class OpenAILLM extends ai_1.BaseLLM {
|
|
15
|
+
constructor(apiKey) {
|
|
16
|
+
super(apiKey);
|
|
17
|
+
const configuration = new openai_1.Configuration({
|
|
18
|
+
apiKey: apiKey
|
|
19
|
+
});
|
|
20
|
+
if (!OpenAILLM_1._openAI)
|
|
21
|
+
OpenAILLM_1._openAI = new openai_1.OpenAIApi(configuration);
|
|
22
|
+
}
|
|
23
|
+
async ChatCompletion(params) {
|
|
24
|
+
const messages = this.ConvertMJToOpenAIChatMessages(params.messages);
|
|
25
|
+
const startTime = new Date();
|
|
26
|
+
const result = await OpenAILLM_1._openAI.createChatCompletion({
|
|
27
|
+
model: params.model,
|
|
28
|
+
messages: messages,
|
|
29
|
+
temperature: params.temperature,
|
|
30
|
+
});
|
|
31
|
+
const endTime = new Date();
|
|
32
|
+
const timeElapsed = endTime.getTime() - startTime.getTime();
|
|
33
|
+
return {
|
|
34
|
+
data: {
|
|
35
|
+
choices: result.data.choices.map((c) => {
|
|
36
|
+
return {
|
|
37
|
+
message: {
|
|
38
|
+
role: openai_1.ChatCompletionRequestMessageRoleEnum[c.message.role],
|
|
39
|
+
content: c.message.content
|
|
40
|
+
},
|
|
41
|
+
finish_reason: c.finish_reason,
|
|
42
|
+
index: c.index
|
|
43
|
+
};
|
|
44
|
+
}),
|
|
45
|
+
usage: new ai_1.ModelUsage(result.data.usage.prompt_tokens, result.data.usage.completion_tokens)
|
|
46
|
+
},
|
|
47
|
+
success: result.status === 200,
|
|
48
|
+
statusText: result.statusText,
|
|
49
|
+
startTime: startTime,
|
|
50
|
+
endTime: endTime,
|
|
51
|
+
timeElapsed: timeElapsed,
|
|
52
|
+
errorMessage: null,
|
|
53
|
+
exception: null
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
async SummarizeText(params) {
|
|
57
|
+
const messages = this.ConvertMJToOpenAIChatMessages(params.messages);
|
|
58
|
+
const startTime = new Date();
|
|
59
|
+
const result = await OpenAILLM_1._openAI.createChatCompletion({
|
|
60
|
+
model: params.model,
|
|
61
|
+
messages: messages
|
|
62
|
+
});
|
|
63
|
+
const endTime = new Date();
|
|
64
|
+
const success = result.data && result.data.choices && result.data.choices.length > 0;
|
|
65
|
+
let summaryText = null;
|
|
66
|
+
if (success)
|
|
67
|
+
summaryText = result.data.choices[0].message.content;
|
|
68
|
+
return new ai_1.SummarizeResult((0, ai_1.GetUserMessageFromChatParams)(params), summaryText, success, startTime, endTime);
|
|
69
|
+
}
|
|
70
|
+
async ClassifyText(params) {
|
|
71
|
+
throw new Error("Method not implemented.");
|
|
72
|
+
}
|
|
73
|
+
ConvertMJToOpenAIChatMessages(messages) {
|
|
74
|
+
// add user messages - using types OpenAI likes
|
|
75
|
+
return messages.map(m => {
|
|
76
|
+
return {
|
|
77
|
+
role: this.ConvertMJToOpenAIRole(m.role),
|
|
78
|
+
content: m.content
|
|
79
|
+
};
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
ConvertMJToOpenAIRole(role) {
|
|
83
|
+
switch (role.trim().toLowerCase()) {
|
|
84
|
+
case 'system':
|
|
85
|
+
return openai_1.ChatCompletionRequestMessageRoleEnum.System;
|
|
86
|
+
case 'user':
|
|
87
|
+
return openai_1.ChatCompletionRequestMessageRoleEnum.User;
|
|
88
|
+
case 'assistant':
|
|
89
|
+
return openai_1.ChatCompletionRequestMessageRoleEnum.Assistant;
|
|
90
|
+
default:
|
|
91
|
+
throw new Error(`Unknown role ${role}`);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
exports.OpenAILLM = OpenAILLM;
|
|
96
|
+
exports.OpenAILLM = OpenAILLM = OpenAILLM_1 = __decorate([
|
|
97
|
+
(0, global_1.RegisterClass)(ai_1.BaseLLM, 'OpenAILLM')
|
|
98
|
+
], OpenAILLM);
|
|
99
|
+
//# 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,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@memberjunction/ai-openai",
|
|
3
|
+
"version": "0.9.9",
|
|
4
|
+
"description": "MemberJunction Wrapper for OpenAI AI Models",
|
|
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
|
+
"devDependencies": {
|
|
18
|
+
"ts-node-dev": "^2.0.0",
|
|
19
|
+
"typescript": "^5.3.3",
|
|
20
|
+
"openai": "^3.2.1"
|
|
21
|
+
},
|
|
22
|
+
"dependencies": {
|
|
23
|
+
"@memberjunction/ai": "^0.9.152",
|
|
24
|
+
"@memberjunction/global": "^0.9.146",
|
|
25
|
+
"@google/generative-ai": "~0.2.1"
|
|
26
|
+
}
|
|
27
|
+
}
|
package/readme.md
ADDED