promptfoo 0.5.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +20 -248
- package/dist/__mocks__/esm.js +5 -1
- package/dist/__mocks__/esm.js.map +1 -1
- package/dist/assertions.d.ts +18 -0
- package/dist/assertions.d.ts.map +1 -0
- package/dist/assertions.js +128 -0
- package/dist/assertions.js.map +1 -0
- package/dist/esm.d.ts.map +1 -1
- package/dist/esm.js +10 -3
- package/dist/esm.js.map +1 -1
- package/dist/evaluator.d.ts.map +1 -1
- package/dist/evaluator.js +88 -117
- package/dist/evaluator.js.map +1 -1
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +34 -5
- package/dist/index.js.map +1 -1
- package/dist/logger.js +18 -11
- package/dist/logger.js.map +1 -1
- package/dist/main.js +95 -53
- package/dist/main.js.map +1 -1
- package/dist/prompts.d.ts +4 -0
- package/dist/prompts.d.ts.map +1 -1
- package/dist/prompts.js +12 -1
- package/dist/prompts.js.map +1 -1
- package/dist/providers/localai.js +21 -13
- package/dist/providers/localai.js.map +1 -1
- package/dist/providers/openai.d.ts +10 -5
- package/dist/providers/openai.d.ts.map +1 -1
- package/dist/providers/openai.js +44 -32
- package/dist/providers/openai.js.map +1 -1
- package/dist/providers/shared.d.ts.map +1 -1
- package/dist/providers/shared.js +5 -2
- package/dist/providers/shared.js.map +1 -1
- package/dist/providers.d.ts +10 -0
- package/dist/providers.d.ts.map +1 -1
- package/dist/providers.js +51 -14
- package/dist/providers.js.map +1 -1
- package/dist/suggestions.d.ts +9 -0
- package/dist/suggestions.d.ts.map +1 -0
- package/dist/suggestions.js +54 -0
- package/dist/suggestions.js.map +1 -0
- package/dist/types.d.ts +11 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +2 -1
- package/dist/util.d.ts +1 -1
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js +86 -31
- package/dist/util.js.map +1 -1
- package/dist/web/client/assets/index-207192fc.css +1 -0
- package/dist/web/client/assets/index-8751749f.js +172 -0
- package/dist/web/client/index.html +2 -2
- package/dist/web/server.js +38 -31
- package/dist/web/server.js.map +1 -1
- package/package.json +14 -4
- package/src/assertions.ts +154 -0
- package/src/esm.ts +5 -2
- package/src/evaluator.ts +61 -139
- package/src/index.ts +12 -0
- package/src/main.ts +28 -3
- package/src/prompts.ts +9 -0
- package/src/providers/openai.ts +28 -15
- package/src/providers/shared.ts +1 -1
- package/src/providers.ts +8 -0
- package/src/suggestions.ts +63 -0
- package/src/types.ts +14 -2
- package/src/util.ts +24 -3
- package/src/web/client/package.json +1 -0
- package/src/web/client/src/App.css +4 -0
- package/src/web/client/src/App.tsx +29 -5
- package/src/web/client/src/Logo.css +5 -0
- package/src/web/client/src/NavBar.css +18 -0
- package/src/web/client/src/NavBar.tsx +12 -1
- package/src/web/client/src/index.css +10 -0
- package/src/web/server.ts +2 -2
- package/dist/web/client/assets/index-710f1308.css +0 -1
- package/dist/web/client/assets/index-900b20c0.js +0 -172
package/dist/providers/openai.js
CHANGED
|
@@ -1,19 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
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.DefaultSuggestionsProvider = exports.DefaultGradingProvider = exports.DefaultEmbeddingProvider = exports.OpenAiChatCompletionProvider = exports.OpenAiCompletionProvider = exports.OpenAiEmbeddingProvider = void 0;
|
|
7
|
+
const lru_cache_1 = require("lru-cache");
|
|
8
|
+
const logger_js_1 = __importDefault(require("../logger.js"));
|
|
9
|
+
const util_js_1 = require("../util.js");
|
|
10
|
+
const shared_js_1 = require("./shared.js");
|
|
5
11
|
const DEFAULT_OPENAI_HOST = 'api.openai.com';
|
|
6
|
-
const embeddingsCache = new LRUCache({
|
|
12
|
+
const embeddingsCache = new lru_cache_1.LRUCache({
|
|
7
13
|
max: 1000,
|
|
8
14
|
});
|
|
9
15
|
class OpenAiGenericProvider {
|
|
10
16
|
constructor(modelName, apiKey) {
|
|
11
17
|
this.modelName = modelName;
|
|
12
|
-
|
|
13
|
-
if (!key) {
|
|
14
|
-
throw new Error('OpenAI API key is not set. Set OPENAI_API_KEY environment variable or pass it as an argument to the constructor.');
|
|
15
|
-
}
|
|
16
|
-
this.apiKey = key;
|
|
18
|
+
this.apiKey = apiKey || process.env.OPENAI_API_KEY;
|
|
17
19
|
this.apiHost = process.env.OPENAI_API_HOST || DEFAULT_OPENAI_HOST;
|
|
18
20
|
}
|
|
19
21
|
id() {
|
|
@@ -23,11 +25,11 @@ class OpenAiGenericProvider {
|
|
|
23
25
|
return `[OpenAI Provider ${this.modelName}]`;
|
|
24
26
|
}
|
|
25
27
|
// @ts-ignore: Prompt is not used in this implementation
|
|
26
|
-
async callApi(prompt) {
|
|
28
|
+
async callApi(prompt, options) {
|
|
27
29
|
throw new Error('Not implemented');
|
|
28
30
|
}
|
|
29
31
|
}
|
|
30
|
-
|
|
32
|
+
class OpenAiEmbeddingProvider extends OpenAiGenericProvider {
|
|
31
33
|
async callEmbeddingApi(text) {
|
|
32
34
|
if (!this.apiKey) {
|
|
33
35
|
throw new Error('OpenAI API key must be set for similarity comparison');
|
|
@@ -43,14 +45,14 @@ export class OpenAiEmbeddingProvider extends OpenAiGenericProvider {
|
|
|
43
45
|
};
|
|
44
46
|
let response, data;
|
|
45
47
|
try {
|
|
46
|
-
response = await fetchWithTimeout(`https://${this.apiHost}/v1/embeddings`, {
|
|
48
|
+
response = await (0, util_js_1.fetchWithTimeout)(`https://${this.apiHost}/v1/embeddings`, {
|
|
47
49
|
method: 'POST',
|
|
48
50
|
headers: {
|
|
49
51
|
'Content-Type': 'application/json',
|
|
50
52
|
Authorization: `Bearer ${this.apiKey}`,
|
|
51
53
|
},
|
|
52
54
|
body: JSON.stringify(body),
|
|
53
|
-
}, REQUEST_TIMEOUT_MS);
|
|
55
|
+
}, shared_js_1.REQUEST_TIMEOUT_MS);
|
|
54
56
|
data = (await response.json());
|
|
55
57
|
}
|
|
56
58
|
catch (err) {
|
|
@@ -63,7 +65,7 @@ export class OpenAiEmbeddingProvider extends OpenAiGenericProvider {
|
|
|
63
65
|
},
|
|
64
66
|
};
|
|
65
67
|
}
|
|
66
|
-
|
|
68
|
+
logger_js_1.default.debug(`\tOpenAI API response (embeddings): ${JSON.stringify(data)}`);
|
|
67
69
|
try {
|
|
68
70
|
const embedding = data?.data?.[0]?.embedding;
|
|
69
71
|
if (!embedding) {
|
|
@@ -92,33 +94,36 @@ export class OpenAiEmbeddingProvider extends OpenAiGenericProvider {
|
|
|
92
94
|
}
|
|
93
95
|
}
|
|
94
96
|
}
|
|
95
|
-
|
|
97
|
+
exports.OpenAiEmbeddingProvider = OpenAiEmbeddingProvider;
|
|
96
98
|
class OpenAiCompletionProvider extends OpenAiGenericProvider {
|
|
97
99
|
constructor(modelName, apiKey) {
|
|
98
100
|
if (!OpenAiCompletionProvider.OPENAI_COMPLETION_MODELS.includes(modelName)) {
|
|
99
|
-
|
|
101
|
+
logger_js_1.default.warn(`Using unknown OpenAI completion model: ${modelName}`);
|
|
100
102
|
}
|
|
101
103
|
super(modelName, apiKey);
|
|
102
104
|
}
|
|
103
|
-
async callApi(prompt) {
|
|
105
|
+
async callApi(prompt, options) {
|
|
106
|
+
if (!this.apiKey) {
|
|
107
|
+
throw new Error('OpenAI API key is not set. Set OPENAI_API_KEY environment variable or pass it as an argument to the constructor.');
|
|
108
|
+
}
|
|
104
109
|
const body = {
|
|
105
110
|
model: this.modelName,
|
|
106
111
|
prompt,
|
|
107
112
|
max_tokens: process.env.OPENAI_MAX_TOKENS || 1024,
|
|
108
|
-
temperature: process.env.
|
|
113
|
+
temperature: options?.temperature ?? (process.env.OPENAI_MAX_TEMPERATURE || 0),
|
|
109
114
|
stop: process.env.OPENAI_STOP ? JSON.parse(process.env.OPENAI_STOP) : undefined,
|
|
110
115
|
};
|
|
111
|
-
|
|
116
|
+
logger_js_1.default.debug(`Calling OpenAI API: ${JSON.stringify(body)}`);
|
|
112
117
|
let response, data;
|
|
113
118
|
try {
|
|
114
|
-
response = await fetchWithTimeout(`https://${this.apiHost}/v1/completions`, {
|
|
119
|
+
response = await (0, util_js_1.fetchWithTimeout)(`https://${this.apiHost}/v1/completions`, {
|
|
115
120
|
method: 'POST',
|
|
116
121
|
headers: {
|
|
117
122
|
'Content-Type': 'application/json',
|
|
118
123
|
Authorization: `Bearer ${this.apiKey}`,
|
|
119
124
|
},
|
|
120
125
|
body: JSON.stringify(body),
|
|
121
|
-
}, REQUEST_TIMEOUT_MS);
|
|
126
|
+
}, shared_js_1.REQUEST_TIMEOUT_MS);
|
|
122
127
|
data = (await response.json());
|
|
123
128
|
}
|
|
124
129
|
catch (err) {
|
|
@@ -126,7 +131,7 @@ class OpenAiCompletionProvider extends OpenAiGenericProvider {
|
|
|
126
131
|
error: `API call error: ${String(err)}`,
|
|
127
132
|
};
|
|
128
133
|
}
|
|
129
|
-
|
|
134
|
+
logger_js_1.default.debug(`\tOpenAI API response: ${JSON.stringify(data)}`);
|
|
130
135
|
try {
|
|
131
136
|
return {
|
|
132
137
|
output: data.choices[0].text,
|
|
@@ -151,15 +156,19 @@ OpenAiCompletionProvider.OPENAI_COMPLETION_MODELS = [
|
|
|
151
156
|
'text-babbage-001',
|
|
152
157
|
'text-ada-001',
|
|
153
158
|
];
|
|
154
|
-
|
|
159
|
+
exports.OpenAiCompletionProvider = OpenAiCompletionProvider;
|
|
155
160
|
class OpenAiChatCompletionProvider extends OpenAiGenericProvider {
|
|
156
161
|
constructor(modelName, apiKey) {
|
|
157
162
|
if (!OpenAiChatCompletionProvider.OPENAI_CHAT_MODELS.includes(modelName)) {
|
|
158
|
-
|
|
163
|
+
logger_js_1.default.warn(`Using unknown OpenAI chat model: ${modelName}`);
|
|
159
164
|
}
|
|
160
165
|
super(modelName, apiKey);
|
|
161
166
|
}
|
|
162
|
-
|
|
167
|
+
// TODO(ian): support passing in `messages` directly
|
|
168
|
+
async callApi(prompt, options) {
|
|
169
|
+
if (!this.apiKey) {
|
|
170
|
+
throw new Error('OpenAI API key is not set. Set OPENAI_API_KEY environment variable or pass it as an argument to the constructor.');
|
|
171
|
+
}
|
|
163
172
|
let messages;
|
|
164
173
|
try {
|
|
165
174
|
// User can specify `messages` payload as JSON, or we'll just put the
|
|
@@ -173,19 +182,19 @@ class OpenAiChatCompletionProvider extends OpenAiGenericProvider {
|
|
|
173
182
|
model: this.modelName,
|
|
174
183
|
messages: messages,
|
|
175
184
|
max_tokens: process.env.OPENAI_MAX_TOKENS || 1024,
|
|
176
|
-
temperature: process.env.OPENAI_MAX_TEMPERATURE || 0,
|
|
185
|
+
temperature: options?.temperature ?? (process.env.OPENAI_MAX_TEMPERATURE || 0),
|
|
177
186
|
};
|
|
178
|
-
|
|
187
|
+
logger_js_1.default.debug(`Calling OpenAI API: ${JSON.stringify(body)}`);
|
|
179
188
|
let response, data;
|
|
180
189
|
try {
|
|
181
|
-
response = await fetchWithTimeout(`https://${this.apiHost}/v1/chat/completions`, {
|
|
190
|
+
response = await (0, util_js_1.fetchWithTimeout)(`https://${this.apiHost}/v1/chat/completions`, {
|
|
182
191
|
method: 'POST',
|
|
183
192
|
headers: {
|
|
184
193
|
'Content-Type': 'application/json',
|
|
185
194
|
Authorization: `Bearer ${this.apiKey}`,
|
|
186
195
|
},
|
|
187
196
|
body: JSON.stringify(body),
|
|
188
|
-
}, REQUEST_TIMEOUT_MS);
|
|
197
|
+
}, shared_js_1.REQUEST_TIMEOUT_MS);
|
|
189
198
|
data = (await response.json());
|
|
190
199
|
}
|
|
191
200
|
catch (err) {
|
|
@@ -193,7 +202,7 @@ class OpenAiChatCompletionProvider extends OpenAiGenericProvider {
|
|
|
193
202
|
error: `API call error: ${String(err)}`,
|
|
194
203
|
};
|
|
195
204
|
}
|
|
196
|
-
|
|
205
|
+
logger_js_1.default.debug(`\tOpenAI API response: ${JSON.stringify(data)}`);
|
|
197
206
|
try {
|
|
198
207
|
return {
|
|
199
208
|
output: data.choices[0].message.content,
|
|
@@ -219,5 +228,8 @@ OpenAiChatCompletionProvider.OPENAI_CHAT_MODELS = [
|
|
|
219
228
|
'gpt-3.5-turbo',
|
|
220
229
|
'gpt-3.5-turbo-0301',
|
|
221
230
|
];
|
|
222
|
-
|
|
231
|
+
exports.OpenAiChatCompletionProvider = OpenAiChatCompletionProvider;
|
|
232
|
+
exports.DefaultEmbeddingProvider = new OpenAiEmbeddingProvider('text-embedding-ada-002');
|
|
233
|
+
exports.DefaultGradingProvider = new OpenAiChatCompletionProvider('gpt-4');
|
|
234
|
+
exports.DefaultSuggestionsProvider = new OpenAiChatCompletionProvider('gpt-4');
|
|
223
235
|
//# sourceMappingURL=openai.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/providers/openai.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/providers/openai.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/providers/shared.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/providers/shared.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,QAEpB,CAAC"}
|
package/dist/providers/shared.js
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.REQUEST_TIMEOUT_MS = void 0;
|
|
4
|
+
exports.REQUEST_TIMEOUT_MS = process.env.REQUEST_TIMEOUT_MS
|
|
2
5
|
? parseInt(process.env.REQUEST_TIMEOUT_MS, 10)
|
|
3
|
-
:
|
|
6
|
+
: 300000;
|
|
4
7
|
//# sourceMappingURL=shared.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/providers/shared.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/providers/shared.ts"],"names":[],"mappings":";;;AAAa,QAAA,kBAAkB,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB;IAC9D,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,EAAE,CAAC;IAC9C,CAAC,CAAC,MAAO,CAAC"}
|
package/dist/providers.d.ts
CHANGED
|
@@ -1,3 +1,13 @@
|
|
|
1
1
|
import { ApiProvider } from './types.js';
|
|
2
|
+
import { OpenAiCompletionProvider, OpenAiChatCompletionProvider } from './providers/openai.js';
|
|
3
|
+
import { LocalAiCompletionProvider, LocalAiChatProvider } from './providers/localai.js';
|
|
2
4
|
export declare function loadApiProvider(providerPath: string): Promise<ApiProvider>;
|
|
5
|
+
declare const _default: {
|
|
6
|
+
OpenAiCompletionProvider: typeof OpenAiCompletionProvider;
|
|
7
|
+
OpenAiChatCompletionProvider: typeof OpenAiChatCompletionProvider;
|
|
8
|
+
LocalAiCompletionProvider: typeof LocalAiCompletionProvider;
|
|
9
|
+
LocalAiChatProvider: typeof LocalAiChatProvider;
|
|
10
|
+
loadApiProvider: typeof loadApiProvider;
|
|
11
|
+
};
|
|
12
|
+
export default _default;
|
|
3
13
|
//# sourceMappingURL=providers.d.ts.map
|
package/dist/providers.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../src/providers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../src/providers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,OAAO,EAAE,wBAAwB,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AAC/F,OAAO,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAExF,wBAAsB,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAuChF;;;;;;;;AAED,wBAME"}
|
package/dist/providers.js
CHANGED
|
@@ -1,23 +1,52 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
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
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.loadApiProvider = void 0;
|
|
30
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
31
|
+
const openai_js_1 = require("./providers/openai.js");
|
|
32
|
+
const localai_js_1 = require("./providers/localai.js");
|
|
33
|
+
async function loadApiProvider(providerPath) {
|
|
5
34
|
if (providerPath?.startsWith('openai:')) {
|
|
6
35
|
// Load OpenAI module
|
|
7
36
|
const options = providerPath.split(':');
|
|
8
37
|
const modelType = options[1];
|
|
9
38
|
const modelName = options[2];
|
|
10
39
|
if (modelType === 'chat') {
|
|
11
|
-
return new OpenAiChatCompletionProvider(modelName || 'gpt-3.5-turbo');
|
|
40
|
+
return new openai_js_1.OpenAiChatCompletionProvider(modelName || 'gpt-3.5-turbo');
|
|
12
41
|
}
|
|
13
42
|
else if (modelType === 'completion') {
|
|
14
|
-
return new OpenAiCompletionProvider(modelName || 'text-davinci-003');
|
|
43
|
+
return new openai_js_1.OpenAiCompletionProvider(modelName || 'text-davinci-003');
|
|
15
44
|
}
|
|
16
|
-
else if (OpenAiChatCompletionProvider.OPENAI_CHAT_MODELS.includes(modelType)) {
|
|
17
|
-
return new OpenAiChatCompletionProvider(modelType);
|
|
45
|
+
else if (openai_js_1.OpenAiChatCompletionProvider.OPENAI_CHAT_MODELS.includes(modelType)) {
|
|
46
|
+
return new openai_js_1.OpenAiChatCompletionProvider(modelType);
|
|
18
47
|
}
|
|
19
|
-
else if (OpenAiCompletionProvider.OPENAI_COMPLETION_MODELS.includes(modelType)) {
|
|
20
|
-
return new OpenAiCompletionProvider(modelType);
|
|
48
|
+
else if (openai_js_1.OpenAiCompletionProvider.OPENAI_COMPLETION_MODELS.includes(modelType)) {
|
|
49
|
+
return new openai_js_1.OpenAiCompletionProvider(modelType);
|
|
21
50
|
}
|
|
22
51
|
else {
|
|
23
52
|
throw new Error(`Unknown OpenAI model type: ${modelType}. Use one of the following providers: openai:chat:<model name>, openai:completion:<model name>`);
|
|
@@ -28,17 +57,25 @@ export async function loadApiProvider(providerPath) {
|
|
|
28
57
|
const modelType = options[1];
|
|
29
58
|
const modelName = options[2];
|
|
30
59
|
if (modelType === 'chat') {
|
|
31
|
-
return new LocalAiChatProvider(modelName);
|
|
60
|
+
return new localai_js_1.LocalAiChatProvider(modelName);
|
|
32
61
|
}
|
|
33
62
|
else if (modelType === 'completion') {
|
|
34
|
-
return new LocalAiCompletionProvider(modelName);
|
|
63
|
+
return new localai_js_1.LocalAiCompletionProvider(modelName);
|
|
35
64
|
}
|
|
36
65
|
else {
|
|
37
|
-
return new LocalAiChatProvider(modelType);
|
|
66
|
+
return new localai_js_1.LocalAiChatProvider(modelType);
|
|
38
67
|
}
|
|
39
68
|
}
|
|
40
69
|
// Load custom module
|
|
41
|
-
const CustomApiProvider = (await
|
|
70
|
+
const CustomApiProvider = (await Promise.resolve(`${node_path_1.default.join(process.cwd(), providerPath)}`).then(s => __importStar(require(s)))).default;
|
|
42
71
|
return new CustomApiProvider();
|
|
43
72
|
}
|
|
73
|
+
exports.loadApiProvider = loadApiProvider;
|
|
74
|
+
exports.default = {
|
|
75
|
+
OpenAiCompletionProvider: openai_js_1.OpenAiCompletionProvider,
|
|
76
|
+
OpenAiChatCompletionProvider: openai_js_1.OpenAiChatCompletionProvider,
|
|
77
|
+
LocalAiCompletionProvider: localai_js_1.LocalAiCompletionProvider,
|
|
78
|
+
LocalAiChatProvider: localai_js_1.LocalAiChatProvider,
|
|
79
|
+
loadApiProvider,
|
|
80
|
+
};
|
|
44
81
|
//# sourceMappingURL=providers.js.map
|
package/dist/providers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providers.js","sourceRoot":"","sources":["../src/providers.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"providers.js","sourceRoot":"","sources":["../src/providers.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0DAA6B;AAI7B,qDAA+F;AAC/F,uDAAwF;AAEjF,KAAK,UAAU,eAAe,CAAC,YAAoB;IACxD,IAAI,YAAY,EAAE,UAAU,CAAC,SAAS,CAAC,EAAE;QACvC,qBAAqB;QACrB,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACxC,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAE7B,IAAI,SAAS,KAAK,MAAM,EAAE;YACxB,OAAO,IAAI,wCAA4B,CAAC,SAAS,IAAI,eAAe,CAAC,CAAC;SACvE;aAAM,IAAI,SAAS,KAAK,YAAY,EAAE;YACrC,OAAO,IAAI,oCAAwB,CAAC,SAAS,IAAI,kBAAkB,CAAC,CAAC;SACtE;aAAM,IAAI,wCAA4B,CAAC,kBAAkB,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;YAC9E,OAAO,IAAI,wCAA4B,CAAC,SAAS,CAAC,CAAC;SACpD;aAAM,IAAI,oCAAwB,CAAC,wBAAwB,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;YAChF,OAAO,IAAI,oCAAwB,CAAC,SAAS,CAAC,CAAC;SAChD;aAAM;YACL,MAAM,IAAI,KAAK,CACb,8BAA8B,SAAS,gGAAgG,CACxI,CAAC;SACH;KACF;IAED,IAAI,YAAY,EAAE,UAAU,CAAC,UAAU,CAAC,EAAE;QACxC,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACxC,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAE7B,IAAI,SAAS,KAAK,MAAM,EAAE;YACxB,OAAO,IAAI,gCAAmB,CAAC,SAAS,CAAC,CAAC;SAC3C;aAAM,IAAI,SAAS,KAAK,YAAY,EAAE;YACrC,OAAO,IAAI,sCAAyB,CAAC,SAAS,CAAC,CAAC;SACjD;aAAM;YACL,OAAO,IAAI,gCAAmB,CAAC,SAAS,CAAC,CAAC;SAC3C;KACF;IAED,qBAAqB;IACrB,MAAM,iBAAiB,GAAG,CAAC,yBAAa,mBAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,YAAY,CAAC,uCAAC,CAAC,CAAC,OAAO,CAAC;IACzF,OAAO,IAAI,iBAAiB,EAAE,CAAC;AACjC,CAAC;AAvCD,0CAuCC;AAED,kBAAe;IACb,wBAAwB,EAAxB,oCAAwB;IACxB,4BAA4B,EAA5B,wCAA4B;IAC5B,yBAAyB,EAAzB,sCAAyB;IACzB,mBAAmB,EAAnB,gCAAmB;IACnB,eAAe;CAChB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { TokenUsage } from './types';
|
|
2
|
+
interface GeneratePromptsOutput {
|
|
3
|
+
prompts?: string[];
|
|
4
|
+
error?: string;
|
|
5
|
+
tokensUsed: TokenUsage;
|
|
6
|
+
}
|
|
7
|
+
export declare function generatePrompts(prompt: string, num: number): Promise<GeneratePromptsOutput>;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=suggestions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"suggestions.d.ts","sourceRoot":"","sources":["../src/suggestions.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAI1C,UAAU,qBAAqB;IAC7B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,UAAU,CAAC;CACxB;AAED,wBAAsB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAiDjG"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generatePrompts = void 0;
|
|
4
|
+
const prompts_1 = require("./prompts");
|
|
5
|
+
const openai_1 = require("./providers/openai");
|
|
6
|
+
const DEFAULT_TEMPERATURE = 0.9;
|
|
7
|
+
async function generatePrompts(prompt, num) {
|
|
8
|
+
const provider = openai_1.DefaultSuggestionsProvider;
|
|
9
|
+
const resp = await provider.callApi(JSON.stringify([
|
|
10
|
+
prompts_1.SUGGEST_PROMPTS_SYSTEM_MESSAGE,
|
|
11
|
+
{
|
|
12
|
+
role: 'user',
|
|
13
|
+
content: 'Generate a variant for the following prompt:',
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
role: 'user',
|
|
17
|
+
content: prompt,
|
|
18
|
+
},
|
|
19
|
+
]), {
|
|
20
|
+
temperature: DEFAULT_TEMPERATURE,
|
|
21
|
+
});
|
|
22
|
+
if (resp.error || !resp.output) {
|
|
23
|
+
return {
|
|
24
|
+
error: resp.error || 'Unknown error',
|
|
25
|
+
tokensUsed: {
|
|
26
|
+
total: resp.tokenUsage?.total || 0,
|
|
27
|
+
prompt: resp.tokenUsage?.prompt || 0,
|
|
28
|
+
completion: resp.tokenUsage?.completion || 0,
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
try {
|
|
33
|
+
return {
|
|
34
|
+
prompts: [resp.output],
|
|
35
|
+
tokensUsed: {
|
|
36
|
+
total: resp.tokenUsage?.total || 0,
|
|
37
|
+
prompt: resp.tokenUsage?.prompt || 0,
|
|
38
|
+
completion: resp.tokenUsage?.completion || 0,
|
|
39
|
+
},
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
catch (err) {
|
|
43
|
+
return {
|
|
44
|
+
error: `Output is not valid JSON: ${resp.output}`,
|
|
45
|
+
tokensUsed: {
|
|
46
|
+
total: resp.tokenUsage?.total || 0,
|
|
47
|
+
prompt: resp.tokenUsage?.prompt || 0,
|
|
48
|
+
completion: resp.tokenUsage?.completion || 0,
|
|
49
|
+
},
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
exports.generatePrompts = generatePrompts;
|
|
54
|
+
//# sourceMappingURL=suggestions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"suggestions.js","sourceRoot":"","sources":["../src/suggestions.ts"],"names":[],"mappings":";;;AAAA,uCAA2D;AAC3D,+CAAgE;AAIhE,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAQzB,KAAK,UAAU,eAAe,CAAC,MAAc,EAAE,GAAW;IAC/D,MAAM,QAAQ,GAAG,mCAA0B,CAAC;IAE5C,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,OAAO,CACjC,IAAI,CAAC,SAAS,CAAC;QACb,wCAA8B;QAC9B;YACE,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,8CAA8C;SACxD;QACD;YACE,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,MAAM;SAChB;KACF,CAAC,EACF;QACE,WAAW,EAAE,mBAAmB;KACjC,CACF,CAAC;IACF,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;QAC9B,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,eAAe;YACpC,UAAU,EAAE;gBACV,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,KAAK,IAAI,CAAC;gBAClC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,IAAI,CAAC;gBACpC,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,UAAU,IAAI,CAAC;aAC7C;SACF,CAAC;KACH;IAED,IAAI;QACF,OAAO;YACL,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;YACtB,UAAU,EAAE;gBACV,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,KAAK,IAAI,CAAC;gBAClC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,IAAI,CAAC;gBACpC,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,UAAU,IAAI,CAAC;aAC7C;SACF,CAAC;KACH;IAAC,OAAO,GAAG,EAAE;QACZ,OAAO;YACL,KAAK,EAAE,6BAA6B,IAAI,CAAC,MAAM,EAAE;YACjD,UAAU,EAAE;gBACV,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,KAAK,IAAI,CAAC;gBAClC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,IAAI,CAAC;gBACpC,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,UAAU,IAAI,CAAC;aAC7C;SACF,CAAC;KACH;AACH,CAAC;AAjDD,0CAiDC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -7,9 +7,12 @@ export interface CommandLineOptions {
|
|
|
7
7
|
verbose?: boolean;
|
|
8
8
|
maxConcurrency?: string;
|
|
9
9
|
grader?: string;
|
|
10
|
-
view?:
|
|
10
|
+
view?: string;
|
|
11
11
|
noWrite?: boolean;
|
|
12
12
|
tableCellMaxLength?: string;
|
|
13
|
+
generateSuggestions?: boolean;
|
|
14
|
+
promptPrefix?: string;
|
|
15
|
+
promptSuffix?: string;
|
|
13
16
|
}
|
|
14
17
|
export interface ApiProvider {
|
|
15
18
|
id: () => string;
|
|
@@ -36,7 +39,12 @@ export interface CsvRow {
|
|
|
36
39
|
export type VarMapping = Record<string, string>;
|
|
37
40
|
export interface GradingConfig {
|
|
38
41
|
prompt?: string;
|
|
39
|
-
provider
|
|
42
|
+
provider?: string | ApiProvider;
|
|
43
|
+
}
|
|
44
|
+
export interface PromptConfig {
|
|
45
|
+
prefix?: string;
|
|
46
|
+
suffix?: string;
|
|
47
|
+
generateSuggestions?: boolean;
|
|
40
48
|
}
|
|
41
49
|
export interface EvaluateOptions {
|
|
42
50
|
providers: ApiProvider[];
|
|
@@ -45,6 +53,7 @@ export interface EvaluateOptions {
|
|
|
45
53
|
maxConcurrency?: number;
|
|
46
54
|
showProgressBar?: boolean;
|
|
47
55
|
grading?: GradingConfig;
|
|
56
|
+
prompt?: PromptConfig;
|
|
48
57
|
}
|
|
49
58
|
export interface Prompt {
|
|
50
59
|
raw: string;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
CHANGED
package/dist/util.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { CsvRow } from './types.js';
|
|
2
2
|
import type { RequestInfo, RequestInit, Response } from 'node-fetch';
|
|
3
3
|
import type { EvaluateSummary } from './types.js';
|
|
4
|
-
export declare function readPrompts(
|
|
4
|
+
export declare function readPrompts(promptPathsOrGlobs: string[]): string[];
|
|
5
5
|
export declare function readVars(varsPath: string): CsvRow[];
|
|
6
6
|
export declare function writeOutput(outputPath: string, summary: EvaluateSummary): void;
|
|
7
7
|
export declare function fetchWithTimeout(url: RequestInfo, options: RequestInit | undefined, timeout: number): Promise<Response>;
|
package/dist/util.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAOpC,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAErE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAYlD,wBAAgB,WAAW,CAAC,kBAAkB,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAsBlE;AAED,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAanD;AAED,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,IAAI,CA2B9E;AAED,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,WAAW,EAChB,OAAO,yBAAkB,EACzB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,QAAQ,CAAC,CAwBnB;AAED,wBAAgB,sBAAsB,IAAI,MAAM,CAE/C;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,eAAe,QAS1D;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,UAQ9D"}
|