@proteinjs/conversation 2.7.2 → 3.0.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/CHANGELOG.md +24 -0
- package/LICENSE +21 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/src/CodegenConversation.js +1 -1
- package/dist/src/CodegenConversation.js.map +1 -1
- package/dist/src/Conversation.d.ts +173 -99
- package/dist/src/Conversation.d.ts.map +1 -1
- package/dist/src/Conversation.js +903 -502
- package/dist/src/Conversation.js.map +1 -1
- package/dist/src/OpenAi.d.ts +20 -0
- package/dist/src/OpenAi.d.ts.map +1 -1
- package/dist/src/OpenAi.js +16 -0
- package/dist/src/OpenAi.js.map +1 -1
- package/dist/src/OpenAiStreamProcessor.d.ts +9 -3
- package/dist/src/OpenAiStreamProcessor.d.ts.map +1 -1
- package/dist/src/OpenAiStreamProcessor.js +5 -3
- package/dist/src/OpenAiStreamProcessor.js.map +1 -1
- package/dist/src/UsageData.d.ts.map +1 -1
- package/dist/src/UsageData.js +22 -0
- package/dist/src/UsageData.js.map +1 -1
- package/dist/src/code_template/Code.d.ts.map +1 -1
- package/dist/src/code_template/Code.js +8 -2
- package/dist/src/code_template/Code.js.map +1 -1
- package/dist/src/resolveModel.d.ts +17 -0
- package/dist/src/resolveModel.d.ts.map +1 -0
- package/dist/src/resolveModel.js +121 -0
- package/dist/src/resolveModel.js.map +1 -0
- package/dist/test/conversation/conversation.generateObject.test.d.ts +2 -0
- package/dist/test/conversation/conversation.generateObject.test.d.ts.map +1 -0
- package/dist/test/conversation/conversation.generateObject.test.js +153 -0
- package/dist/test/conversation/conversation.generateObject.test.js.map +1 -0
- package/dist/test/conversation/conversation.generateResponse.test.d.ts +2 -0
- package/dist/test/conversation/conversation.generateResponse.test.d.ts.map +1 -0
- package/dist/test/conversation/conversation.generateResponse.test.js +167 -0
- package/dist/test/conversation/conversation.generateResponse.test.js.map +1 -0
- package/dist/test/conversation/conversation.generateStream.test.d.ts +2 -0
- package/dist/test/conversation/conversation.generateStream.test.d.ts.map +1 -0
- package/dist/test/conversation/conversation.generateStream.test.js +255 -0
- package/dist/test/conversation/conversation.generateStream.test.js.map +1 -0
- package/index.ts +5 -0
- package/package.json +7 -2
- package/src/CodegenConversation.ts +1 -1
- package/src/Conversation.ts +938 -496
- package/src/OpenAi.ts +20 -0
- package/src/OpenAiStreamProcessor.ts +9 -3
- package/src/UsageData.ts +25 -0
- package/src/code_template/Code.ts +5 -1
- package/src/resolveModel.ts +130 -0
- package/test/conversation/conversation.generateObject.test.ts +132 -0
- package/test/conversation/conversation.generateResponse.test.ts +132 -0
- package/test/conversation/conversation.generateStream.test.ts +173 -0
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
+
function step(op) {
|
|
16
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
+
switch (op[0]) {
|
|
21
|
+
case 0: case 1: t = op; break;
|
|
22
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
+
default:
|
|
26
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
+
if (t[2]) _.ops.pop();
|
|
31
|
+
_.trys.pop(); continue;
|
|
32
|
+
}
|
|
33
|
+
op = body.call(thisArg, _);
|
|
34
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
var __asyncValues = (this && this.__asyncValues) || function (o) {
|
|
39
|
+
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
40
|
+
var m = o[Symbol.asyncIterator], i;
|
|
41
|
+
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
|
|
42
|
+
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
|
|
43
|
+
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
|
|
44
|
+
};
|
|
45
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
46
|
+
var Conversation_1 = require("../../src/Conversation");
|
|
47
|
+
/**
|
|
48
|
+
* Integration tests for Conversation.generateStream.
|
|
49
|
+
*
|
|
50
|
+
* These hit the real OpenAI API (requires OPENAI_API_KEY env var).
|
|
51
|
+
* They verify the full path through the AI SDK: message building,
|
|
52
|
+
* tool schema wiring, streaming, usage extraction, and tool invocation reporting.
|
|
53
|
+
*/
|
|
54
|
+
var hasApiKey = !!process.env.OPENAI_API_KEY;
|
|
55
|
+
var describeIfKey = hasApiKey ? describe : describe.skip;
|
|
56
|
+
var TEST_MODEL = 'gpt-4.1-nano';
|
|
57
|
+
var TIMEOUT = 60000;
|
|
58
|
+
/** A simple tool that adds two numbers. */
|
|
59
|
+
function createAddTool() {
|
|
60
|
+
var calls = [];
|
|
61
|
+
var fn = {
|
|
62
|
+
definition: {
|
|
63
|
+
name: 'addNumbers',
|
|
64
|
+
description: 'Adds two numbers together and returns the sum.',
|
|
65
|
+
parameters: {
|
|
66
|
+
type: 'object',
|
|
67
|
+
properties: {
|
|
68
|
+
a: { type: 'number', description: 'First number' },
|
|
69
|
+
b: { type: 'number', description: 'Second number' },
|
|
70
|
+
},
|
|
71
|
+
required: ['a', 'b'],
|
|
72
|
+
},
|
|
73
|
+
},
|
|
74
|
+
call: function (args) {
|
|
75
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
76
|
+
return __generator(this, function (_a) {
|
|
77
|
+
calls.push(args);
|
|
78
|
+
return [2 /*return*/, { sum: args.a + args.b }];
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
},
|
|
82
|
+
};
|
|
83
|
+
return { fn: fn, calls: calls };
|
|
84
|
+
}
|
|
85
|
+
/** A tool with no parameters (the case that caused the type: "None" bug). */
|
|
86
|
+
function createNoParamTool() {
|
|
87
|
+
var callCount = [0];
|
|
88
|
+
var fn = {
|
|
89
|
+
definition: {
|
|
90
|
+
name: 'getServerTime',
|
|
91
|
+
description: 'Returns the current server time. Takes no parameters.',
|
|
92
|
+
},
|
|
93
|
+
call: function () {
|
|
94
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
95
|
+
return __generator(this, function (_a) {
|
|
96
|
+
callCount[0]++;
|
|
97
|
+
return [2 /*return*/, { time: new Date().toISOString() }];
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
},
|
|
101
|
+
};
|
|
102
|
+
return { fn: fn, callCount: callCount };
|
|
103
|
+
}
|
|
104
|
+
/** A simple module that provides a system message and a tool. */
|
|
105
|
+
function createTestModule(systemMessage, functions) {
|
|
106
|
+
return {
|
|
107
|
+
getName: function () { return 'TestModule'; },
|
|
108
|
+
getSystemMessages: function () { return [systemMessage]; },
|
|
109
|
+
getFunctions: function () { return functions; },
|
|
110
|
+
getMessageModerators: function () { return []; },
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
describeIfKey('Conversation.generateStream', function () {
|
|
114
|
+
test('streams a text response and resolves usage data', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
115
|
+
var conversation, result, chunks, _a, _b, _c, chunk, e_1_1, text, usage;
|
|
116
|
+
var _d, e_1, _e, _f;
|
|
117
|
+
return __generator(this, function (_g) {
|
|
118
|
+
switch (_g.label) {
|
|
119
|
+
case 0:
|
|
120
|
+
conversation = new Conversation_1.Conversation({ name: 'test-stream' });
|
|
121
|
+
return [4 /*yield*/, conversation.generateStream({
|
|
122
|
+
messages: ['What is 2+2? Reply with just the number.'],
|
|
123
|
+
model: TEST_MODEL,
|
|
124
|
+
})];
|
|
125
|
+
case 1:
|
|
126
|
+
result = _g.sent();
|
|
127
|
+
chunks = [];
|
|
128
|
+
_g.label = 2;
|
|
129
|
+
case 2:
|
|
130
|
+
_g.trys.push([2, 7, 8, 13]);
|
|
131
|
+
_a = true, _b = __asyncValues(result.textStream);
|
|
132
|
+
_g.label = 3;
|
|
133
|
+
case 3: return [4 /*yield*/, _b.next()];
|
|
134
|
+
case 4:
|
|
135
|
+
if (!(_c = _g.sent(), _d = _c.done, !_d)) return [3 /*break*/, 6];
|
|
136
|
+
_f = _c.value;
|
|
137
|
+
_a = false;
|
|
138
|
+
chunk = _f;
|
|
139
|
+
chunks.push(chunk);
|
|
140
|
+
_g.label = 5;
|
|
141
|
+
case 5:
|
|
142
|
+
_a = true;
|
|
143
|
+
return [3 /*break*/, 3];
|
|
144
|
+
case 6: return [3 /*break*/, 13];
|
|
145
|
+
case 7:
|
|
146
|
+
e_1_1 = _g.sent();
|
|
147
|
+
e_1 = { error: e_1_1 };
|
|
148
|
+
return [3 /*break*/, 13];
|
|
149
|
+
case 8:
|
|
150
|
+
_g.trys.push([8, , 11, 12]);
|
|
151
|
+
if (!(!_a && !_d && (_e = _b.return))) return [3 /*break*/, 10];
|
|
152
|
+
return [4 /*yield*/, _e.call(_b)];
|
|
153
|
+
case 9:
|
|
154
|
+
_g.sent();
|
|
155
|
+
_g.label = 10;
|
|
156
|
+
case 10: return [3 /*break*/, 12];
|
|
157
|
+
case 11:
|
|
158
|
+
if (e_1) throw e_1.error;
|
|
159
|
+
return [7 /*endfinally*/];
|
|
160
|
+
case 12: return [7 /*endfinally*/];
|
|
161
|
+
case 13:
|
|
162
|
+
// Should have streamed something
|
|
163
|
+
expect(chunks.length).toBeGreaterThan(0);
|
|
164
|
+
return [4 /*yield*/, result.text];
|
|
165
|
+
case 14:
|
|
166
|
+
text = _g.sent();
|
|
167
|
+
expect(text).toContain('4');
|
|
168
|
+
return [4 /*yield*/, result.usage];
|
|
169
|
+
case 15:
|
|
170
|
+
usage = _g.sent();
|
|
171
|
+
expect(usage.totalTokenUsage.inputTokens).toBeGreaterThan(0);
|
|
172
|
+
expect(usage.totalTokenUsage.outputTokens).toBeGreaterThan(0);
|
|
173
|
+
expect(usage.totalTokenUsage.totalTokens).toBeGreaterThan(0);
|
|
174
|
+
expect(usage.model).toBeTruthy();
|
|
175
|
+
return [2 /*return*/];
|
|
176
|
+
}
|
|
177
|
+
});
|
|
178
|
+
}); }, TIMEOUT);
|
|
179
|
+
test('invokes a tool with parameters and reports tool invocations', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
180
|
+
var _a, addTool, calls, conversation, result, text, usage, toolInvocations;
|
|
181
|
+
return __generator(this, function (_b) {
|
|
182
|
+
switch (_b.label) {
|
|
183
|
+
case 0:
|
|
184
|
+
_a = createAddTool(), addTool = _a.fn, calls = _a.calls;
|
|
185
|
+
conversation = new Conversation_1.Conversation({
|
|
186
|
+
name: 'test-tool-call',
|
|
187
|
+
modules: [createTestModule('You are a calculator. Use the addNumbers tool to compute sums.', [addTool])],
|
|
188
|
+
});
|
|
189
|
+
return [4 /*yield*/, conversation.generateStream({
|
|
190
|
+
messages: ['What is 7 + 13?'],
|
|
191
|
+
model: TEST_MODEL,
|
|
192
|
+
})];
|
|
193
|
+
case 1:
|
|
194
|
+
result = _b.sent();
|
|
195
|
+
return [4 /*yield*/, result.text];
|
|
196
|
+
case 2:
|
|
197
|
+
text = _b.sent();
|
|
198
|
+
return [4 /*yield*/, result.usage];
|
|
199
|
+
case 3:
|
|
200
|
+
usage = _b.sent();
|
|
201
|
+
return [4 /*yield*/, result.toolInvocations];
|
|
202
|
+
case 4:
|
|
203
|
+
toolInvocations = _b.sent();
|
|
204
|
+
// The tool should have been called
|
|
205
|
+
expect(calls.length).toBeGreaterThan(0);
|
|
206
|
+
expect(calls[0].a + calls[0].b).toBe(20);
|
|
207
|
+
// The response should contain "20"
|
|
208
|
+
expect(text).toContain('20');
|
|
209
|
+
// Tool invocations should be reported
|
|
210
|
+
expect(toolInvocations.length).toBeGreaterThan(0);
|
|
211
|
+
expect(toolInvocations[0].name).toBe('addNumbers');
|
|
212
|
+
// Usage should reflect multiple steps (at least one tool call step + final response)
|
|
213
|
+
expect(usage.totalRequestsToAssistant).toBeGreaterThanOrEqual(2);
|
|
214
|
+
expect(usage.totalToolCalls).toBeGreaterThan(0);
|
|
215
|
+
expect(usage.callsPerTool['addNumbers']).toBeGreaterThan(0);
|
|
216
|
+
return [2 /*return*/];
|
|
217
|
+
}
|
|
218
|
+
});
|
|
219
|
+
}); }, TIMEOUT);
|
|
220
|
+
test('handles a tool with no parameters (the type: "None" regression)', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
221
|
+
var _a, noParamTool, callCount, conversation, result, text, toolInvocations;
|
|
222
|
+
return __generator(this, function (_b) {
|
|
223
|
+
switch (_b.label) {
|
|
224
|
+
case 0:
|
|
225
|
+
_a = createNoParamTool(), noParamTool = _a.fn, callCount = _a.callCount;
|
|
226
|
+
conversation = new Conversation_1.Conversation({
|
|
227
|
+
name: 'test-no-param-tool',
|
|
228
|
+
modules: [
|
|
229
|
+
createTestModule('You have access to a getServerTime tool. When the user asks for the time, call it.', [
|
|
230
|
+
noParamTool,
|
|
231
|
+
]),
|
|
232
|
+
],
|
|
233
|
+
});
|
|
234
|
+
return [4 /*yield*/, conversation.generateStream({
|
|
235
|
+
messages: ['What time is it on the server?'],
|
|
236
|
+
model: TEST_MODEL,
|
|
237
|
+
})];
|
|
238
|
+
case 1:
|
|
239
|
+
result = _b.sent();
|
|
240
|
+
return [4 /*yield*/, result.text];
|
|
241
|
+
case 2:
|
|
242
|
+
text = _b.sent();
|
|
243
|
+
return [4 /*yield*/, result.toolInvocations];
|
|
244
|
+
case 3:
|
|
245
|
+
toolInvocations = _b.sent();
|
|
246
|
+
// The tool should have been called
|
|
247
|
+
expect(callCount[0]).toBeGreaterThan(0);
|
|
248
|
+
expect(toolInvocations.length).toBeGreaterThan(0);
|
|
249
|
+
expect(toolInvocations[0].name).toBe('getServerTime');
|
|
250
|
+
return [2 /*return*/];
|
|
251
|
+
}
|
|
252
|
+
});
|
|
253
|
+
}); }, TIMEOUT);
|
|
254
|
+
});
|
|
255
|
+
//# sourceMappingURL=conversation.generateStream.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversation.generateStream.test.js","sourceRoot":"","sources":["../../../test/conversation/conversation.generateStream.test.ts"],"names":[],"mappings":"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"}
|
package/index.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export * from './src/Sentence';
|
|
2
2
|
export * from './src/Paragraph';
|
|
3
|
+
/** @deprecated — Use `Conversation` instead of `OpenAi`. */
|
|
3
4
|
export * from './src/OpenAi';
|
|
4
5
|
export * from './src/code_template/CodeTemplate';
|
|
5
6
|
export * from './src/Conversation';
|
|
@@ -10,9 +11,11 @@ export * from './src/Function';
|
|
|
10
11
|
export * from './src/history/MessageModerator';
|
|
11
12
|
export * from './src/history/MessageHistory';
|
|
12
13
|
export * from './src/ChatCompletionMessageParamFactory';
|
|
14
|
+
/** @deprecated — Use `StreamResult.textStream` from `Conversation.generateStream` instead. */
|
|
13
15
|
export { AssistantResponseStreamChunk } from './src/OpenAiStreamProcessor';
|
|
14
16
|
export * from './src/UsageData';
|
|
15
17
|
export * from './src/OpenAiResponses';
|
|
18
|
+
export * from './src/resolveModel';
|
|
16
19
|
|
|
17
20
|
// Conversation modules
|
|
18
21
|
export * from './src/fs/conversation_fs/ConversationFsModule';
|
|
@@ -22,3 +25,5 @@ export * from './src/fs/keyword_to_files_index/KeywordToFilesIndexModule';
|
|
|
22
25
|
export * from './src/fs/keyword_to_files_index/KeywordToFilesIndexFunctions';
|
|
23
26
|
export * from './src/fs/package/PackageModule';
|
|
24
27
|
export * from './src/fs/package/PackageFunctions';
|
|
28
|
+
|
|
29
|
+
// bump
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@proteinjs/conversation",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.0",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"publishConfig": {
|
|
@@ -28,6 +28,10 @@
|
|
|
28
28
|
"ts-jest": "^29.1.1"
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
|
+
"@ai-sdk/anthropic": "^3.0.0",
|
|
32
|
+
"@ai-sdk/google": "^3.0.0",
|
|
33
|
+
"@ai-sdk/openai": "^3.0.7",
|
|
34
|
+
"@ai-sdk/xai": "^3.0.0",
|
|
31
35
|
"@proteinjs/logger": "^1.0.15",
|
|
32
36
|
"@proteinjs/util": "^1.6.0",
|
|
33
37
|
"@proteinjs/util-node": "^1.7.2",
|
|
@@ -37,5 +41,6 @@
|
|
|
37
41
|
"readline-sync": "1.4.10",
|
|
38
42
|
"tiktoken": "1.0.22",
|
|
39
43
|
"typescript": "5.2.2"
|
|
40
|
-
}
|
|
44
|
+
},
|
|
45
|
+
"gitHead": "5d5d3d0eb7929a9c4516f6796be99ab63b3822b4"
|
|
41
46
|
}
|
|
@@ -32,7 +32,7 @@ export class CodegenConversation {
|
|
|
32
32
|
});
|
|
33
33
|
// eslint-disable-next-line no-constant-condition
|
|
34
34
|
while (true) {
|
|
35
|
-
const userInput = this.respondToUser(responseObject.
|
|
35
|
+
const userInput = this.respondToUser(responseObject.text);
|
|
36
36
|
responseObject = await conversation.generateResponse({ messages: [userInput], model: CodegenConversation.MODEL });
|
|
37
37
|
}
|
|
38
38
|
}
|