openlayer 0.13.1 → 0.13.3
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 +29 -0
- package/lib/integrations/bedrockAgentTracer.d.ts +2 -0
- package/lib/integrations/bedrockAgentTracer.d.ts.map +1 -0
- package/lib/integrations/bedrockAgentTracer.js +252 -0
- package/lib/integrations/bedrockAgentTracer.js.map +1 -0
- package/lib/integrations/bedrockAgentTracer.mjs +248 -0
- package/lib/integrations/bedrockAgentTracer.mjs.map +1 -0
- package/lib/tracing/tracer.d.ts.map +1 -1
- package/lib/tracing/tracer.js +22 -1
- package/lib/tracing/tracer.js.map +1 -1
- package/lib/tracing/tracer.mjs +22 -1
- package/lib/tracing/tracer.mjs.map +1 -1
- package/package.json +5 -5
- package/src/lib/integrations/bedrockAgentTracer.ts +306 -0
- package/src/lib/tracing/tracer.ts +40 -13
- package/src/version.ts +1 -1
- package/version.d.ts +1 -1
- package/version.js +1 -1
- package/version.mjs +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,34 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.13.3 (2025-08-15)
|
|
4
|
+
|
|
5
|
+
Full Changelog: [v0.13.2...v0.13.3](https://github.com/openlayer-ai/openlayer-ts/compare/v0.13.2...v0.13.3)
|
|
6
|
+
|
|
7
|
+
### Chores
|
|
8
|
+
|
|
9
|
+
* add debug statements to trace upload ([103098b](https://github.com/openlayer-ai/openlayer-ts/commit/103098b25f8f89eb32d01d08b7b651b9ca306498))
|
|
10
|
+
* **internal:** update comment in script ([5aff731](https://github.com/openlayer-ai/openlayer-ts/commit/5aff731c4fc3e027a67348d0a042088cd7144b50))
|
|
11
|
+
* update @stainless-api/prism-cli to v5.15.0 ([b396a4c](https://github.com/openlayer-ai/openlayer-ts/commit/b396a4cb94a5ec0b303aff0944a243a8704e95ca))
|
|
12
|
+
|
|
13
|
+
## 0.13.2 (2025-08-07)
|
|
14
|
+
|
|
15
|
+
Full Changelog: [v0.13.1...v0.13.2](https://github.com/openlayer-ai/openlayer-ts/compare/v0.13.1...v0.13.2)
|
|
16
|
+
|
|
17
|
+
### Features
|
|
18
|
+
|
|
19
|
+
* add Bedrock agent tracer ([82cecbf](https://github.com/openlayer-ai/openlayer-ts/commit/82cecbf9d6445b3d728c2ab60d2d8416da867b07))
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
### Bug Fixes
|
|
23
|
+
|
|
24
|
+
* conditional Bedrock import ([a745e01](https://github.com/openlayer-ai/openlayer-ts/commit/a745e013920c88a30472e8f2eda0dc66699c04b5))
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
### Chores
|
|
28
|
+
|
|
29
|
+
* **internal:** move publish config ([67a5488](https://github.com/openlayer-ai/openlayer-ts/commit/67a5488bff6880aff2fd14840fbfd24212aa74bd))
|
|
30
|
+
* **internal:** remove redundant imports config ([52d519a](https://github.com/openlayer-ai/openlayer-ts/commit/52d519aca9b9cfe2bf254191a47932a4e62545d6))
|
|
31
|
+
|
|
3
32
|
## 0.13.1 (2025-07-10)
|
|
4
33
|
|
|
5
34
|
Full Changelog: [v0.13.0...v0.13.1](https://github.com/openlayer-ai/openlayer-ts/compare/v0.13.0...v0.13.1)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bedrockAgentTracer.d.ts","sourceRoot":"","sources":["../../src/lib/integrations/bedrockAgentTracer.ts"],"names":[],"mappings":"AAkBA,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,CAyClD"}
|
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.traceBedrockAgent = void 0;
|
|
4
|
+
// Make imports optional with try/catch
|
|
5
|
+
let BedrockAgentRuntimeClient;
|
|
6
|
+
let InvokeAgentCommand;
|
|
7
|
+
let InvokeAgentCommandInput;
|
|
8
|
+
let InvokeAgentCommandOutput;
|
|
9
|
+
try {
|
|
10
|
+
const bedrockModule = require('@aws-sdk/client-bedrock-agent-runtime');
|
|
11
|
+
BedrockAgentRuntimeClient = bedrockModule.BedrockAgentRuntimeClient;
|
|
12
|
+
InvokeAgentCommand = bedrockModule.InvokeAgentCommand;
|
|
13
|
+
InvokeAgentCommandInput = bedrockModule.InvokeAgentCommandInput;
|
|
14
|
+
InvokeAgentCommandOutput = bedrockModule.InvokeAgentCommandOutput;
|
|
15
|
+
}
|
|
16
|
+
catch (error) {
|
|
17
|
+
// AWS SDK not available
|
|
18
|
+
}
|
|
19
|
+
const tracer_1 = require("../tracing/tracer.js");
|
|
20
|
+
function traceBedrockAgent(client) {
|
|
21
|
+
if (!BedrockAgentRuntimeClient || !InvokeAgentCommand) {
|
|
22
|
+
throw new Error('AWS SDK for Bedrock Agent Runtime is not installed. Please install it with: npm install @aws-sdk/client-bedrock-agent-runtime');
|
|
23
|
+
}
|
|
24
|
+
const originalSend = client.send.bind(client);
|
|
25
|
+
client.send = async function (command, options) {
|
|
26
|
+
// Only trace InvokeAgentCommand
|
|
27
|
+
if (!(command instanceof InvokeAgentCommand)) {
|
|
28
|
+
return originalSend(command, options);
|
|
29
|
+
}
|
|
30
|
+
const startTime = performance.now();
|
|
31
|
+
const input = command.input;
|
|
32
|
+
try {
|
|
33
|
+
// Call the original send method
|
|
34
|
+
const response = await originalSend(command, options);
|
|
35
|
+
if (!response.completion) {
|
|
36
|
+
throw new Error('Completion is undefined');
|
|
37
|
+
}
|
|
38
|
+
// Create a traced async iterator that preserves the original
|
|
39
|
+
const tracedCompletion = createTracedCompletion(response.completion, input, startTime);
|
|
40
|
+
// Return the response with the traced completion
|
|
41
|
+
return {
|
|
42
|
+
...response,
|
|
43
|
+
completion: tracedCompletion,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
console.error('Failed to trace the Bedrock agent invocation with Openlayer', error);
|
|
48
|
+
throw error;
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
return client;
|
|
52
|
+
}
|
|
53
|
+
exports.traceBedrockAgent = traceBedrockAgent;
|
|
54
|
+
// Create a traced completion that collects data while yielding original events
|
|
55
|
+
function createTracedCompletion(originalCompletion, input, startTime) {
|
|
56
|
+
return {
|
|
57
|
+
async *[Symbol.asyncIterator]() {
|
|
58
|
+
let firstTokenTime;
|
|
59
|
+
let totalTokens = 0;
|
|
60
|
+
let promptTokens = 0;
|
|
61
|
+
let completionTokens = 0;
|
|
62
|
+
let collectedOutput = '';
|
|
63
|
+
const rawOutputChunks = [];
|
|
64
|
+
let agentModel = null;
|
|
65
|
+
let citations = [];
|
|
66
|
+
let traceData = [];
|
|
67
|
+
let chunkCount = 0;
|
|
68
|
+
try {
|
|
69
|
+
for await (const chunkEvent of originalCompletion) {
|
|
70
|
+
// Yield first - ensure user gets data immediately
|
|
71
|
+
yield chunkEvent;
|
|
72
|
+
// Then collect tracing data
|
|
73
|
+
if (chunkCount === 0) {
|
|
74
|
+
firstTokenTime = performance.now();
|
|
75
|
+
}
|
|
76
|
+
chunkCount++;
|
|
77
|
+
// Handle chunk events
|
|
78
|
+
if (chunkEvent.chunk) {
|
|
79
|
+
const chunk = chunkEvent.chunk;
|
|
80
|
+
rawOutputChunks.push(chunk);
|
|
81
|
+
if (chunk.bytes) {
|
|
82
|
+
const decodedResponse = new TextDecoder('utf-8').decode(chunk.bytes);
|
|
83
|
+
collectedOutput += decodedResponse;
|
|
84
|
+
completionTokens += 1;
|
|
85
|
+
}
|
|
86
|
+
if (chunk.attribution && chunk.attribution.citations) {
|
|
87
|
+
citations.push(...chunk.attribution.citations);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
// Handle trace events
|
|
91
|
+
if (chunkEvent.trace) {
|
|
92
|
+
traceData.push(chunkEvent.trace);
|
|
93
|
+
if (chunkEvent.trace.trace) {
|
|
94
|
+
const trace = chunkEvent.trace.trace;
|
|
95
|
+
// Extract tokens and model info
|
|
96
|
+
if ('orchestrationTrace' in trace &&
|
|
97
|
+
trace.orchestrationTrace?.modelInvocationOutput?.metadata?.usage) {
|
|
98
|
+
const usage = trace.orchestrationTrace.modelInvocationOutput.metadata.usage;
|
|
99
|
+
promptTokens += usage.inputTokens || 0;
|
|
100
|
+
completionTokens += usage.outputTokens || 0;
|
|
101
|
+
}
|
|
102
|
+
if ('orchestrationTrace' in trace &&
|
|
103
|
+
trace.orchestrationTrace?.modelInvocationInput?.foundationModel) {
|
|
104
|
+
agentModel = trace.orchestrationTrace.modelInvocationInput.foundationModel;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
// After the stream is complete, send trace data
|
|
110
|
+
const endTime = performance.now();
|
|
111
|
+
totalTokens = promptTokens + completionTokens;
|
|
112
|
+
// Send trace data to Openlayer
|
|
113
|
+
const inputs = extractInputs(input, traceData);
|
|
114
|
+
const metadata = {
|
|
115
|
+
agentId: input.agentId,
|
|
116
|
+
agentAliasId: input.agentAliasId,
|
|
117
|
+
sessionId: input.sessionId,
|
|
118
|
+
timeToFirstToken: firstTokenTime ? firstTokenTime - startTime : null,
|
|
119
|
+
};
|
|
120
|
+
if (citations.length > 0) {
|
|
121
|
+
metadata['citations'] = citations;
|
|
122
|
+
}
|
|
123
|
+
const reasoning = extractReasoning(traceData);
|
|
124
|
+
if (reasoning && reasoning.length > 0) {
|
|
125
|
+
metadata['reasoning'] = reasoning;
|
|
126
|
+
}
|
|
127
|
+
if (input.sessionState) {
|
|
128
|
+
metadata['sessionState'] = {
|
|
129
|
+
hasSessionAttributes: !!input.sessionState.sessionAttributes,
|
|
130
|
+
hasPromptSessionAttributes: !!input.sessionState.promptSessionAttributes,
|
|
131
|
+
hasFiles: !!input.sessionState.files && input.sessionState.files.length > 0,
|
|
132
|
+
hasKnowledgeBaseConfigurations: !!input.sessionState.knowledgeBaseConfigurations &&
|
|
133
|
+
input.sessionState.knowledgeBaseConfigurations.length > 0,
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
const traceStepData = {
|
|
137
|
+
name: 'AWS Bedrock Agent Invocation',
|
|
138
|
+
inputs: inputs,
|
|
139
|
+
output: collectedOutput,
|
|
140
|
+
latency: endTime - startTime,
|
|
141
|
+
tokens: totalTokens > 0 ? totalTokens : null,
|
|
142
|
+
promptTokens: promptTokens > 0 ? promptTokens : null,
|
|
143
|
+
completionTokens: completionTokens > 0 ? completionTokens : null,
|
|
144
|
+
model: agentModel || `${input.agentId}:${input.agentAliasId}`,
|
|
145
|
+
modelParameters: extractModelParameters(input),
|
|
146
|
+
rawOutput: JSON.stringify(rawOutputChunks, null, 2),
|
|
147
|
+
metadata: metadata,
|
|
148
|
+
provider: 'Bedrock',
|
|
149
|
+
};
|
|
150
|
+
(0, tracer_1.addChatCompletionStepToTrace)(traceStepData);
|
|
151
|
+
}
|
|
152
|
+
catch (error) {
|
|
153
|
+
console.error('Error in traced completion:', error);
|
|
154
|
+
// Don't rethrow - we don't want tracing errors to break the user's stream
|
|
155
|
+
}
|
|
156
|
+
},
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
function extractInputs(input, traceData) {
|
|
160
|
+
const inputs = {};
|
|
161
|
+
// Build the prompt in OpenAI-compatible format
|
|
162
|
+
const prompt = [];
|
|
163
|
+
// Add the main user message
|
|
164
|
+
if (input.inputText) {
|
|
165
|
+
prompt.push({
|
|
166
|
+
role: 'user',
|
|
167
|
+
content: input.inputText,
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
// Add conversation history if present
|
|
171
|
+
if (input.sessionState?.conversationHistory?.messages) {
|
|
172
|
+
for (const message of input.sessionState.conversationHistory.messages) {
|
|
173
|
+
const content = message.content ?
|
|
174
|
+
message.content.map((block) => ('text' in block ? block.text || '' : '')).join('')
|
|
175
|
+
: '';
|
|
176
|
+
const role = message.role || 'user';
|
|
177
|
+
prompt.unshift({
|
|
178
|
+
role: role,
|
|
179
|
+
content: content,
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
// Extract system prompt from trace data if available
|
|
184
|
+
const systemPrompt = extractSystemPrompt(traceData);
|
|
185
|
+
if (systemPrompt) {
|
|
186
|
+
prompt.unshift({
|
|
187
|
+
role: 'system',
|
|
188
|
+
content: systemPrompt,
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
inputs['prompt'] = prompt;
|
|
192
|
+
// Add additional context as separate fields
|
|
193
|
+
if (input.sessionState?.sessionAttributes) {
|
|
194
|
+
inputs['sessionAttributes'] = input.sessionState.sessionAttributes;
|
|
195
|
+
}
|
|
196
|
+
if (input.sessionState?.promptSessionAttributes) {
|
|
197
|
+
inputs['promptSessionAttributes'] = input.sessionState.promptSessionAttributes;
|
|
198
|
+
}
|
|
199
|
+
if (input.sessionState?.files && input.sessionState.files.length > 0) {
|
|
200
|
+
inputs['files'] = input.sessionState.files.map((file) => ({
|
|
201
|
+
name: file.name,
|
|
202
|
+
useCase: file.useCase,
|
|
203
|
+
sourceType: file.source?.sourceType,
|
|
204
|
+
}));
|
|
205
|
+
}
|
|
206
|
+
return inputs;
|
|
207
|
+
}
|
|
208
|
+
function extractSystemPrompt(traceData) {
|
|
209
|
+
for (const trace of traceData) {
|
|
210
|
+
if (trace.trace?.orchestrationTrace?.modelInvocationInput?.text) {
|
|
211
|
+
try {
|
|
212
|
+
const parsed = JSON.parse(trace.trace.orchestrationTrace.modelInvocationInput.text);
|
|
213
|
+
if (parsed.system) {
|
|
214
|
+
return parsed.system;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
catch (e) {
|
|
218
|
+
// If parsing fails, continue
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
return null;
|
|
223
|
+
}
|
|
224
|
+
function extractReasoning(traceData) {
|
|
225
|
+
const reasoning = [];
|
|
226
|
+
for (const trace of traceData) {
|
|
227
|
+
if (trace.trace?.orchestrationTrace?.rationale?.text) {
|
|
228
|
+
reasoning.push(trace.trace.orchestrationTrace.rationale.text);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
return reasoning.length > 0 ? reasoning : undefined;
|
|
232
|
+
}
|
|
233
|
+
function extractModelParameters(input) {
|
|
234
|
+
const params = {};
|
|
235
|
+
if (input.enableTrace !== undefined) {
|
|
236
|
+
params['enableTrace'] = input.enableTrace;
|
|
237
|
+
}
|
|
238
|
+
if (input.endSession !== undefined) {
|
|
239
|
+
params['endSession'] = input.endSession;
|
|
240
|
+
}
|
|
241
|
+
if (input.bedrockModelConfigurations) {
|
|
242
|
+
params['bedrockModelConfigurations'] = input.bedrockModelConfigurations;
|
|
243
|
+
}
|
|
244
|
+
if (input.streamingConfigurations) {
|
|
245
|
+
params['streamingConfigurations'] = input.streamingConfigurations;
|
|
246
|
+
}
|
|
247
|
+
if (input.promptCreationConfigurations) {
|
|
248
|
+
params['promptCreationConfigurations'] = input.promptCreationConfigurations;
|
|
249
|
+
}
|
|
250
|
+
return params;
|
|
251
|
+
}
|
|
252
|
+
//# sourceMappingURL=bedrockAgentTracer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bedrockAgentTracer.js","sourceRoot":"","sources":["../../src/lib/integrations/bedrockAgentTracer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
// Make imports optional with try/catch
|
|
2
|
+
let BedrockAgentRuntimeClient;
|
|
3
|
+
let InvokeAgentCommand;
|
|
4
|
+
let InvokeAgentCommandInput;
|
|
5
|
+
let InvokeAgentCommandOutput;
|
|
6
|
+
try {
|
|
7
|
+
const bedrockModule = require('@aws-sdk/client-bedrock-agent-runtime');
|
|
8
|
+
BedrockAgentRuntimeClient = bedrockModule.BedrockAgentRuntimeClient;
|
|
9
|
+
InvokeAgentCommand = bedrockModule.InvokeAgentCommand;
|
|
10
|
+
InvokeAgentCommandInput = bedrockModule.InvokeAgentCommandInput;
|
|
11
|
+
InvokeAgentCommandOutput = bedrockModule.InvokeAgentCommandOutput;
|
|
12
|
+
}
|
|
13
|
+
catch (error) {
|
|
14
|
+
// AWS SDK not available
|
|
15
|
+
}
|
|
16
|
+
import { addChatCompletionStepToTrace } from "../tracing/tracer.mjs";
|
|
17
|
+
export function traceBedrockAgent(client) {
|
|
18
|
+
if (!BedrockAgentRuntimeClient || !InvokeAgentCommand) {
|
|
19
|
+
throw new Error('AWS SDK for Bedrock Agent Runtime is not installed. Please install it with: npm install @aws-sdk/client-bedrock-agent-runtime');
|
|
20
|
+
}
|
|
21
|
+
const originalSend = client.send.bind(client);
|
|
22
|
+
client.send = async function (command, options) {
|
|
23
|
+
// Only trace InvokeAgentCommand
|
|
24
|
+
if (!(command instanceof InvokeAgentCommand)) {
|
|
25
|
+
return originalSend(command, options);
|
|
26
|
+
}
|
|
27
|
+
const startTime = performance.now();
|
|
28
|
+
const input = command.input;
|
|
29
|
+
try {
|
|
30
|
+
// Call the original send method
|
|
31
|
+
const response = await originalSend(command, options);
|
|
32
|
+
if (!response.completion) {
|
|
33
|
+
throw new Error('Completion is undefined');
|
|
34
|
+
}
|
|
35
|
+
// Create a traced async iterator that preserves the original
|
|
36
|
+
const tracedCompletion = createTracedCompletion(response.completion, input, startTime);
|
|
37
|
+
// Return the response with the traced completion
|
|
38
|
+
return {
|
|
39
|
+
...response,
|
|
40
|
+
completion: tracedCompletion,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
console.error('Failed to trace the Bedrock agent invocation with Openlayer', error);
|
|
45
|
+
throw error;
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
return client;
|
|
49
|
+
}
|
|
50
|
+
// Create a traced completion that collects data while yielding original events
|
|
51
|
+
function createTracedCompletion(originalCompletion, input, startTime) {
|
|
52
|
+
return {
|
|
53
|
+
async *[Symbol.asyncIterator]() {
|
|
54
|
+
let firstTokenTime;
|
|
55
|
+
let totalTokens = 0;
|
|
56
|
+
let promptTokens = 0;
|
|
57
|
+
let completionTokens = 0;
|
|
58
|
+
let collectedOutput = '';
|
|
59
|
+
const rawOutputChunks = [];
|
|
60
|
+
let agentModel = null;
|
|
61
|
+
let citations = [];
|
|
62
|
+
let traceData = [];
|
|
63
|
+
let chunkCount = 0;
|
|
64
|
+
try {
|
|
65
|
+
for await (const chunkEvent of originalCompletion) {
|
|
66
|
+
// Yield first - ensure user gets data immediately
|
|
67
|
+
yield chunkEvent;
|
|
68
|
+
// Then collect tracing data
|
|
69
|
+
if (chunkCount === 0) {
|
|
70
|
+
firstTokenTime = performance.now();
|
|
71
|
+
}
|
|
72
|
+
chunkCount++;
|
|
73
|
+
// Handle chunk events
|
|
74
|
+
if (chunkEvent.chunk) {
|
|
75
|
+
const chunk = chunkEvent.chunk;
|
|
76
|
+
rawOutputChunks.push(chunk);
|
|
77
|
+
if (chunk.bytes) {
|
|
78
|
+
const decodedResponse = new TextDecoder('utf-8').decode(chunk.bytes);
|
|
79
|
+
collectedOutput += decodedResponse;
|
|
80
|
+
completionTokens += 1;
|
|
81
|
+
}
|
|
82
|
+
if (chunk.attribution && chunk.attribution.citations) {
|
|
83
|
+
citations.push(...chunk.attribution.citations);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
// Handle trace events
|
|
87
|
+
if (chunkEvent.trace) {
|
|
88
|
+
traceData.push(chunkEvent.trace);
|
|
89
|
+
if (chunkEvent.trace.trace) {
|
|
90
|
+
const trace = chunkEvent.trace.trace;
|
|
91
|
+
// Extract tokens and model info
|
|
92
|
+
if ('orchestrationTrace' in trace &&
|
|
93
|
+
trace.orchestrationTrace?.modelInvocationOutput?.metadata?.usage) {
|
|
94
|
+
const usage = trace.orchestrationTrace.modelInvocationOutput.metadata.usage;
|
|
95
|
+
promptTokens += usage.inputTokens || 0;
|
|
96
|
+
completionTokens += usage.outputTokens || 0;
|
|
97
|
+
}
|
|
98
|
+
if ('orchestrationTrace' in trace &&
|
|
99
|
+
trace.orchestrationTrace?.modelInvocationInput?.foundationModel) {
|
|
100
|
+
agentModel = trace.orchestrationTrace.modelInvocationInput.foundationModel;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
// After the stream is complete, send trace data
|
|
106
|
+
const endTime = performance.now();
|
|
107
|
+
totalTokens = promptTokens + completionTokens;
|
|
108
|
+
// Send trace data to Openlayer
|
|
109
|
+
const inputs = extractInputs(input, traceData);
|
|
110
|
+
const metadata = {
|
|
111
|
+
agentId: input.agentId,
|
|
112
|
+
agentAliasId: input.agentAliasId,
|
|
113
|
+
sessionId: input.sessionId,
|
|
114
|
+
timeToFirstToken: firstTokenTime ? firstTokenTime - startTime : null,
|
|
115
|
+
};
|
|
116
|
+
if (citations.length > 0) {
|
|
117
|
+
metadata['citations'] = citations;
|
|
118
|
+
}
|
|
119
|
+
const reasoning = extractReasoning(traceData);
|
|
120
|
+
if (reasoning && reasoning.length > 0) {
|
|
121
|
+
metadata['reasoning'] = reasoning;
|
|
122
|
+
}
|
|
123
|
+
if (input.sessionState) {
|
|
124
|
+
metadata['sessionState'] = {
|
|
125
|
+
hasSessionAttributes: !!input.sessionState.sessionAttributes,
|
|
126
|
+
hasPromptSessionAttributes: !!input.sessionState.promptSessionAttributes,
|
|
127
|
+
hasFiles: !!input.sessionState.files && input.sessionState.files.length > 0,
|
|
128
|
+
hasKnowledgeBaseConfigurations: !!input.sessionState.knowledgeBaseConfigurations &&
|
|
129
|
+
input.sessionState.knowledgeBaseConfigurations.length > 0,
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
const traceStepData = {
|
|
133
|
+
name: 'AWS Bedrock Agent Invocation',
|
|
134
|
+
inputs: inputs,
|
|
135
|
+
output: collectedOutput,
|
|
136
|
+
latency: endTime - startTime,
|
|
137
|
+
tokens: totalTokens > 0 ? totalTokens : null,
|
|
138
|
+
promptTokens: promptTokens > 0 ? promptTokens : null,
|
|
139
|
+
completionTokens: completionTokens > 0 ? completionTokens : null,
|
|
140
|
+
model: agentModel || `${input.agentId}:${input.agentAliasId}`,
|
|
141
|
+
modelParameters: extractModelParameters(input),
|
|
142
|
+
rawOutput: JSON.stringify(rawOutputChunks, null, 2),
|
|
143
|
+
metadata: metadata,
|
|
144
|
+
provider: 'Bedrock',
|
|
145
|
+
};
|
|
146
|
+
addChatCompletionStepToTrace(traceStepData);
|
|
147
|
+
}
|
|
148
|
+
catch (error) {
|
|
149
|
+
console.error('Error in traced completion:', error);
|
|
150
|
+
// Don't rethrow - we don't want tracing errors to break the user's stream
|
|
151
|
+
}
|
|
152
|
+
},
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
function extractInputs(input, traceData) {
|
|
156
|
+
const inputs = {};
|
|
157
|
+
// Build the prompt in OpenAI-compatible format
|
|
158
|
+
const prompt = [];
|
|
159
|
+
// Add the main user message
|
|
160
|
+
if (input.inputText) {
|
|
161
|
+
prompt.push({
|
|
162
|
+
role: 'user',
|
|
163
|
+
content: input.inputText,
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
// Add conversation history if present
|
|
167
|
+
if (input.sessionState?.conversationHistory?.messages) {
|
|
168
|
+
for (const message of input.sessionState.conversationHistory.messages) {
|
|
169
|
+
const content = message.content ?
|
|
170
|
+
message.content.map((block) => ('text' in block ? block.text || '' : '')).join('')
|
|
171
|
+
: '';
|
|
172
|
+
const role = message.role || 'user';
|
|
173
|
+
prompt.unshift({
|
|
174
|
+
role: role,
|
|
175
|
+
content: content,
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
// Extract system prompt from trace data if available
|
|
180
|
+
const systemPrompt = extractSystemPrompt(traceData);
|
|
181
|
+
if (systemPrompt) {
|
|
182
|
+
prompt.unshift({
|
|
183
|
+
role: 'system',
|
|
184
|
+
content: systemPrompt,
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
inputs['prompt'] = prompt;
|
|
188
|
+
// Add additional context as separate fields
|
|
189
|
+
if (input.sessionState?.sessionAttributes) {
|
|
190
|
+
inputs['sessionAttributes'] = input.sessionState.sessionAttributes;
|
|
191
|
+
}
|
|
192
|
+
if (input.sessionState?.promptSessionAttributes) {
|
|
193
|
+
inputs['promptSessionAttributes'] = input.sessionState.promptSessionAttributes;
|
|
194
|
+
}
|
|
195
|
+
if (input.sessionState?.files && input.sessionState.files.length > 0) {
|
|
196
|
+
inputs['files'] = input.sessionState.files.map((file) => ({
|
|
197
|
+
name: file.name,
|
|
198
|
+
useCase: file.useCase,
|
|
199
|
+
sourceType: file.source?.sourceType,
|
|
200
|
+
}));
|
|
201
|
+
}
|
|
202
|
+
return inputs;
|
|
203
|
+
}
|
|
204
|
+
function extractSystemPrompt(traceData) {
|
|
205
|
+
for (const trace of traceData) {
|
|
206
|
+
if (trace.trace?.orchestrationTrace?.modelInvocationInput?.text) {
|
|
207
|
+
try {
|
|
208
|
+
const parsed = JSON.parse(trace.trace.orchestrationTrace.modelInvocationInput.text);
|
|
209
|
+
if (parsed.system) {
|
|
210
|
+
return parsed.system;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
catch (e) {
|
|
214
|
+
// If parsing fails, continue
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
return null;
|
|
219
|
+
}
|
|
220
|
+
function extractReasoning(traceData) {
|
|
221
|
+
const reasoning = [];
|
|
222
|
+
for (const trace of traceData) {
|
|
223
|
+
if (trace.trace?.orchestrationTrace?.rationale?.text) {
|
|
224
|
+
reasoning.push(trace.trace.orchestrationTrace.rationale.text);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
return reasoning.length > 0 ? reasoning : undefined;
|
|
228
|
+
}
|
|
229
|
+
function extractModelParameters(input) {
|
|
230
|
+
const params = {};
|
|
231
|
+
if (input.enableTrace !== undefined) {
|
|
232
|
+
params['enableTrace'] = input.enableTrace;
|
|
233
|
+
}
|
|
234
|
+
if (input.endSession !== undefined) {
|
|
235
|
+
params['endSession'] = input.endSession;
|
|
236
|
+
}
|
|
237
|
+
if (input.bedrockModelConfigurations) {
|
|
238
|
+
params['bedrockModelConfigurations'] = input.bedrockModelConfigurations;
|
|
239
|
+
}
|
|
240
|
+
if (input.streamingConfigurations) {
|
|
241
|
+
params['streamingConfigurations'] = input.streamingConfigurations;
|
|
242
|
+
}
|
|
243
|
+
if (input.promptCreationConfigurations) {
|
|
244
|
+
params['promptCreationConfigurations'] = input.promptCreationConfigurations;
|
|
245
|
+
}
|
|
246
|
+
return params;
|
|
247
|
+
}
|
|
248
|
+
//# sourceMappingURL=bedrockAgentTracer.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bedrockAgentTracer.mjs","sourceRoot":"","sources":["../../src/lib/integrations/bedrockAgentTracer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tracer.d.ts","sourceRoot":"","sources":["../../src/lib/tracing/tracer.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"tracer.d.ts","sourceRoot":"","sources":["../../src/lib/tracing/tracer.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAwInC,iBAAS,KAAK,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,GAAE,QAA6B,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,QAAQ,CAkBjG;AAED,wBAAgB,4BAA4B,CAAC,EAC3C,IAAI,EACJ,MAAM,EACN,MAAM,EACN,OAAO,EACP,MAAa,EACb,YAAmB,EACnB,gBAAuB,EACvB,KAAY,EACZ,eAAsB,EACtB,SAAgB,EAChB,QAAa,EACb,QAAmB,GACpB,EAAE;IACD,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,GAAG,CAAC;IACZ,MAAM,EAAE,GAAG,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;IAC7C,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,QAgBA;AA4BD,eAAe,KAAK,CAAC"}
|
package/lib/tracing/tracer.js
CHANGED
|
@@ -59,7 +59,9 @@ function createStep(name, stepType = enums_1.StepType.USER_CALL, inputs, output,
|
|
|
59
59
|
// Post process trace and get the input variable names
|
|
60
60
|
const { traceData: processedTraceData, inputVariableNames } = postProcessTrace(traceData);
|
|
61
61
|
if (publish && process.env['OPENLAYER_INFERENCE_PIPELINE_ID']) {
|
|
62
|
-
|
|
62
|
+
console.debug('Uploading trace to Openlayer...');
|
|
63
|
+
client.inferencePipelines.data
|
|
64
|
+
.stream(process.env['OPENLAYER_INFERENCE_PIPELINE_ID'], {
|
|
63
65
|
config: {
|
|
64
66
|
outputColumnName: 'output',
|
|
65
67
|
inputVariableNames: inputVariableNames,
|
|
@@ -71,8 +73,27 @@ function createStep(name, stepType = enums_1.StepType.USER_CALL, inputs, output,
|
|
|
71
73
|
numOfTokenColumnName: 'tokens',
|
|
72
74
|
},
|
|
73
75
|
rows: [processedTraceData],
|
|
76
|
+
})
|
|
77
|
+
.then(() => {
|
|
78
|
+
console.debug('Trace uploaded successfully to Openlayer');
|
|
79
|
+
})
|
|
80
|
+
.catch((error) => {
|
|
81
|
+
console.error('Failed to upload trace to Openlayer:', error);
|
|
82
|
+
console.error('Trace data that failed to upload:', JSON.stringify({
|
|
83
|
+
pipelineId: process.env['OPENLAYER_INFERENCE_PIPELINE_ID'],
|
|
84
|
+
inputVariableNames,
|
|
85
|
+
processedTraceData,
|
|
86
|
+
}, null, 2));
|
|
74
87
|
});
|
|
75
88
|
}
|
|
89
|
+
else {
|
|
90
|
+
if (!publish) {
|
|
91
|
+
console.debug('Trace upload disabled (OPENLAYER_DISABLE_PUBLISH=true)');
|
|
92
|
+
}
|
|
93
|
+
else if (!process.env['OPENLAYER_INFERENCE_PIPELINE_ID']) {
|
|
94
|
+
console.warn('Trace upload skipped: OPENLAYER_INFERENCE_PIPELINE_ID environment variable not set');
|
|
95
|
+
}
|
|
96
|
+
}
|
|
76
97
|
// Reset the entire trace state
|
|
77
98
|
setCurrentTrace(null);
|
|
78
99
|
stepStack.length = 0; // Clear the step stack
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tracer.js","sourceRoot":"","sources":["../../src/lib/tracing/tracer.ts"],"names":[],"mappings":";AAAA,oBAAoB;;;;;;AAEpB,wCAAiC;AACjC,sCAAiE;AACjE,sCAAmC;AACnC,2DAAoC;AAEpC,IAAI,YAAY,GAAiB,IAAI,CAAC;AAEtC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,IAAI,MAAM,CAAC;AACnE,IAAI,MAAM,GAAqB,IAAI,CAAC;AACpC,IAAI,OAAO,EAAE;IACX,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IACvC,MAAM,GAAG,IAAI,eAAS,EAAE,CAAC;CAC1B;AAED,SAAS,eAAe;IACtB,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,SAAS,eAAe,CAAC,KAAmB;IAC1C,YAAY,GAAG,KAAK,CAAC;AACvB,CAAC;AAED,gCAAgC;AAChC,MAAM,SAAS,GAAW,EAAE,CAAC;AAE7B,SAAS,UAAU,CACjB,IAAY,EACZ,WAAqB,gBAAQ,CAAC,SAAS,EACvC,MAAY,EACZ,MAAY,EACZ,WAAuC,IAAI;IAE3C,QAAQ,GAAG,QAAQ,IAAI,EAAE,CAAC;IAC1B,IAAI,OAAa,CAAC;IAClB,IAAI,QAAQ,KAAK,gBAAQ,CAAC,eAAe,EAAE;QACzC,OAAO,GAAG,IAAI,0BAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;KAClE;SAAM;QACL,OAAO,GAAG,IAAI,oBAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;KAC5D;IACD,OAAO,CAAC,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IAEtC,MAAM,UAAU,GAAG,cAAc,EAAE,CAAC;IACpC,MAAM,UAAU,GAAG,UAAU,KAAK,IAAI,CAAC;IAEvC,IAAI,UAAU,EAAE;QACd,OAAO,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;QACzC,OAAO,CAAC,KAAK,CAAC,eAAe,IAAI,mBAAmB,CAAC,CAAC;QACtD,MAAM,YAAY,GAAG,IAAI,cAAK,EAAE,CAAC;QACjC,eAAe,CAAC,YAAY,CAAC,CAAC;QAC9B,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;KAC/B;SAAM;QACL,OAAO,CAAC,KAAK,CAAC,eAAe,IAAI,wBAAwB,UAAW,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7E,YAAY,GAAG,eAAe,EAAG,CAAC;QAClC,UAAW,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;KACpC;IAED,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAExB,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,OAAO,CAAC,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QACpC,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC;QAEtD,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC,yCAAyC;QAE1D,IAAI,UAAU,EAAE;YACd,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;YACrC,MAAM,SAAS,GAAG,eAAe,EAAE,CAAC;YACpC,sDAAsD;YACtD,MAAM,EAAE,SAAS,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,GAAG,gBAAgB,CAAC,SAAU,CAAC,CAAC;YAE3F,IAAI,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,EAAE;gBAC7D,MAAO,CAAC,kBAAkB,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"tracer.js","sourceRoot":"","sources":["../../src/lib/tracing/tracer.ts"],"names":[],"mappings":"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"}
|
package/lib/tracing/tracer.mjs
CHANGED
|
@@ -53,7 +53,9 @@ function createStep(name, stepType = StepType.USER_CALL, inputs, output, metadat
|
|
|
53
53
|
// Post process trace and get the input variable names
|
|
54
54
|
const { traceData: processedTraceData, inputVariableNames } = postProcessTrace(traceData);
|
|
55
55
|
if (publish && process.env['OPENLAYER_INFERENCE_PIPELINE_ID']) {
|
|
56
|
-
|
|
56
|
+
console.debug('Uploading trace to Openlayer...');
|
|
57
|
+
client.inferencePipelines.data
|
|
58
|
+
.stream(process.env['OPENLAYER_INFERENCE_PIPELINE_ID'], {
|
|
57
59
|
config: {
|
|
58
60
|
outputColumnName: 'output',
|
|
59
61
|
inputVariableNames: inputVariableNames,
|
|
@@ -65,8 +67,27 @@ function createStep(name, stepType = StepType.USER_CALL, inputs, output, metadat
|
|
|
65
67
|
numOfTokenColumnName: 'tokens',
|
|
66
68
|
},
|
|
67
69
|
rows: [processedTraceData],
|
|
70
|
+
})
|
|
71
|
+
.then(() => {
|
|
72
|
+
console.debug('Trace uploaded successfully to Openlayer');
|
|
73
|
+
})
|
|
74
|
+
.catch((error) => {
|
|
75
|
+
console.error('Failed to upload trace to Openlayer:', error);
|
|
76
|
+
console.error('Trace data that failed to upload:', JSON.stringify({
|
|
77
|
+
pipelineId: process.env['OPENLAYER_INFERENCE_PIPELINE_ID'],
|
|
78
|
+
inputVariableNames,
|
|
79
|
+
processedTraceData,
|
|
80
|
+
}, null, 2));
|
|
68
81
|
});
|
|
69
82
|
}
|
|
83
|
+
else {
|
|
84
|
+
if (!publish) {
|
|
85
|
+
console.debug('Trace upload disabled (OPENLAYER_DISABLE_PUBLISH=true)');
|
|
86
|
+
}
|
|
87
|
+
else if (!process.env['OPENLAYER_INFERENCE_PIPELINE_ID']) {
|
|
88
|
+
console.warn('Trace upload skipped: OPENLAYER_INFERENCE_PIPELINE_ID environment variable not set');
|
|
89
|
+
}
|
|
90
|
+
}
|
|
70
91
|
// Reset the entire trace state
|
|
71
92
|
setCurrentTrace(null);
|
|
72
93
|
stepStack.length = 0; // Clear the step stack
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tracer.mjs","sourceRoot":"","sources":["../../src/lib/tracing/tracer.ts"],"names":[],"mappings":"AAAA,oBAAoB;OAEb,EAAE,KAAK,EAAE;OACT,EAAQ,YAAY,EAAE,kBAAkB,EAAE;OAC1C,EAAE,QAAQ,EAAE;OACZ,SAAS;AAEhB,IAAI,YAAY,GAAiB,IAAI,CAAC;AAEtC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,IAAI,MAAM,CAAC;AACnE,IAAI,MAAM,GAAqB,IAAI,CAAC;AACpC,IAAI,OAAO,EAAE;IACX,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IACvC,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;CAC1B;AAED,SAAS,eAAe;IACtB,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,SAAS,eAAe,CAAC,KAAmB;IAC1C,YAAY,GAAG,KAAK,CAAC;AACvB,CAAC;AAED,gCAAgC;AAChC,MAAM,SAAS,GAAW,EAAE,CAAC;AAE7B,SAAS,UAAU,CACjB,IAAY,EACZ,WAAqB,QAAQ,CAAC,SAAS,EACvC,MAAY,EACZ,MAAY,EACZ,WAAuC,IAAI;IAE3C,QAAQ,GAAG,QAAQ,IAAI,EAAE,CAAC;IAC1B,IAAI,OAAa,CAAC;IAClB,IAAI,QAAQ,KAAK,QAAQ,CAAC,eAAe,EAAE;QACzC,OAAO,GAAG,IAAI,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;KAClE;SAAM;QACL,OAAO,GAAG,IAAI,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;KAC5D;IACD,OAAO,CAAC,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IAEtC,MAAM,UAAU,GAAG,cAAc,EAAE,CAAC;IACpC,MAAM,UAAU,GAAG,UAAU,KAAK,IAAI,CAAC;IAEvC,IAAI,UAAU,EAAE;QACd,OAAO,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;QACzC,OAAO,CAAC,KAAK,CAAC,eAAe,IAAI,mBAAmB,CAAC,CAAC;QACtD,MAAM,YAAY,GAAG,IAAI,KAAK,EAAE,CAAC;QACjC,eAAe,CAAC,YAAY,CAAC,CAAC;QAC9B,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;KAC/B;SAAM;QACL,OAAO,CAAC,KAAK,CAAC,eAAe,IAAI,wBAAwB,UAAW,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7E,YAAY,GAAG,eAAe,EAAG,CAAC;QAClC,UAAW,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;KACpC;IAED,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAExB,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,OAAO,CAAC,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QACpC,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC;QAEtD,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC,yCAAyC;QAE1D,IAAI,UAAU,EAAE;YACd,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;YACrC,MAAM,SAAS,GAAG,eAAe,EAAE,CAAC;YACpC,sDAAsD;YACtD,MAAM,EAAE,SAAS,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,GAAG,gBAAgB,CAAC,SAAU,CAAC,CAAC;YAE3F,IAAI,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,EAAE;gBAC7D,MAAO,CAAC,kBAAkB,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"tracer.mjs","sourceRoot":"","sources":["../../src/lib/tracing/tracer.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "openlayer",
|
|
3
|
-
"version": "0.13.
|
|
3
|
+
"version": "0.13.3",
|
|
4
4
|
"description": "The official TypeScript library for the Openlayer API",
|
|
5
5
|
"author": "Openlayer <support@openlayer.com>",
|
|
6
6
|
"types": "./index.d.ts",
|
|
@@ -13,6 +13,9 @@
|
|
|
13
13
|
"**/*"
|
|
14
14
|
],
|
|
15
15
|
"private": false,
|
|
16
|
+
"publishConfig": {
|
|
17
|
+
"access": "public"
|
|
18
|
+
},
|
|
16
19
|
"scripts": {
|
|
17
20
|
"test": "./scripts/test",
|
|
18
21
|
"build": "./scripts/build",
|
|
@@ -22,6 +25,7 @@
|
|
|
22
25
|
"fix": "./scripts/format"
|
|
23
26
|
},
|
|
24
27
|
"dependencies": {
|
|
28
|
+
"@aws-sdk/client-bedrock-agent-runtime": "^3.862.0",
|
|
25
29
|
"@langchain/core": "^0.3.3",
|
|
26
30
|
"@types/node": "^18.11.18",
|
|
27
31
|
"@types/node-fetch": "^2.6.4",
|
|
@@ -43,10 +47,6 @@
|
|
|
43
47
|
"./shims/web.js",
|
|
44
48
|
"./shims/web.mjs"
|
|
45
49
|
],
|
|
46
|
-
"imports": {
|
|
47
|
-
"openlayer": ".",
|
|
48
|
-
"openlayer/*": "./src/*"
|
|
49
|
-
},
|
|
50
50
|
"exports": {
|
|
51
51
|
"./_shims/auto/*": {
|
|
52
52
|
"deno": {
|
|
@@ -0,0 +1,306 @@
|
|
|
1
|
+
// Make imports optional with try/catch
|
|
2
|
+
let BedrockAgentRuntimeClient: any;
|
|
3
|
+
let InvokeAgentCommand: any;
|
|
4
|
+
let InvokeAgentCommandInput: any;
|
|
5
|
+
let InvokeAgentCommandOutput: any;
|
|
6
|
+
|
|
7
|
+
try {
|
|
8
|
+
const bedrockModule = require('@aws-sdk/client-bedrock-agent-runtime');
|
|
9
|
+
BedrockAgentRuntimeClient = bedrockModule.BedrockAgentRuntimeClient;
|
|
10
|
+
InvokeAgentCommand = bedrockModule.InvokeAgentCommand;
|
|
11
|
+
InvokeAgentCommandInput = bedrockModule.InvokeAgentCommandInput;
|
|
12
|
+
InvokeAgentCommandOutput = bedrockModule.InvokeAgentCommandOutput;
|
|
13
|
+
} catch (error) {
|
|
14
|
+
// AWS SDK not available
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
import { addChatCompletionStepToTrace } from '../tracing/tracer';
|
|
18
|
+
|
|
19
|
+
export function traceBedrockAgent(client: any): any {
|
|
20
|
+
if (!BedrockAgentRuntimeClient || !InvokeAgentCommand) {
|
|
21
|
+
throw new Error(
|
|
22
|
+
'AWS SDK for Bedrock Agent Runtime is not installed. Please install it with: npm install @aws-sdk/client-bedrock-agent-runtime',
|
|
23
|
+
);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
const originalSend = client.send.bind(client);
|
|
27
|
+
|
|
28
|
+
client.send = async function (this: any, command: any, options?: any): Promise<any> {
|
|
29
|
+
// Only trace InvokeAgentCommand
|
|
30
|
+
if (!(command instanceof InvokeAgentCommand)) {
|
|
31
|
+
return originalSend(command, options);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
const startTime = performance.now();
|
|
35
|
+
const input = command.input;
|
|
36
|
+
|
|
37
|
+
try {
|
|
38
|
+
// Call the original send method
|
|
39
|
+
const response = await originalSend(command, options);
|
|
40
|
+
|
|
41
|
+
if (!response.completion) {
|
|
42
|
+
throw new Error('Completion is undefined');
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// Create a traced async iterator that preserves the original
|
|
46
|
+
const tracedCompletion = createTracedCompletion(response.completion, input, startTime);
|
|
47
|
+
|
|
48
|
+
// Return the response with the traced completion
|
|
49
|
+
return {
|
|
50
|
+
...response,
|
|
51
|
+
completion: tracedCompletion,
|
|
52
|
+
};
|
|
53
|
+
} catch (error) {
|
|
54
|
+
console.error('Failed to trace the Bedrock agent invocation with Openlayer', error);
|
|
55
|
+
throw error;
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
return client;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// Create a traced completion that collects data while yielding original events
|
|
63
|
+
function createTracedCompletion(
|
|
64
|
+
originalCompletion: AsyncIterable<any>,
|
|
65
|
+
input: any,
|
|
66
|
+
startTime: number,
|
|
67
|
+
): AsyncIterable<any> {
|
|
68
|
+
return {
|
|
69
|
+
async *[Symbol.asyncIterator]() {
|
|
70
|
+
let firstTokenTime: number | undefined;
|
|
71
|
+
let totalTokens = 0;
|
|
72
|
+
let promptTokens = 0;
|
|
73
|
+
let completionTokens = 0;
|
|
74
|
+
let collectedOutput = '';
|
|
75
|
+
const rawOutputChunks: any[] = [];
|
|
76
|
+
let agentModel: string | null = null;
|
|
77
|
+
let citations: any[] = [];
|
|
78
|
+
let traceData: any[] = [];
|
|
79
|
+
let chunkCount = 0;
|
|
80
|
+
|
|
81
|
+
try {
|
|
82
|
+
for await (const chunkEvent of originalCompletion) {
|
|
83
|
+
// Yield first - ensure user gets data immediately
|
|
84
|
+
yield chunkEvent;
|
|
85
|
+
|
|
86
|
+
// Then collect tracing data
|
|
87
|
+
if (chunkCount === 0) {
|
|
88
|
+
firstTokenTime = performance.now();
|
|
89
|
+
}
|
|
90
|
+
chunkCount++;
|
|
91
|
+
|
|
92
|
+
// Handle chunk events
|
|
93
|
+
if (chunkEvent.chunk) {
|
|
94
|
+
const chunk = chunkEvent.chunk;
|
|
95
|
+
rawOutputChunks.push(chunk);
|
|
96
|
+
|
|
97
|
+
if (chunk.bytes) {
|
|
98
|
+
const decodedResponse = new TextDecoder('utf-8').decode(chunk.bytes);
|
|
99
|
+
collectedOutput += decodedResponse;
|
|
100
|
+
completionTokens += 1;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
if (chunk.attribution && chunk.attribution.citations) {
|
|
104
|
+
citations.push(...chunk.attribution.citations);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
// Handle trace events
|
|
109
|
+
if (chunkEvent.trace) {
|
|
110
|
+
traceData.push(chunkEvent.trace);
|
|
111
|
+
|
|
112
|
+
if (chunkEvent.trace.trace) {
|
|
113
|
+
const trace = chunkEvent.trace.trace;
|
|
114
|
+
|
|
115
|
+
// Extract tokens and model info
|
|
116
|
+
if (
|
|
117
|
+
'orchestrationTrace' in trace &&
|
|
118
|
+
trace.orchestrationTrace?.modelInvocationOutput?.metadata?.usage
|
|
119
|
+
) {
|
|
120
|
+
const usage = trace.orchestrationTrace.modelInvocationOutput.metadata.usage;
|
|
121
|
+
promptTokens += usage.inputTokens || 0;
|
|
122
|
+
completionTokens += usage.outputTokens || 0;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
if (
|
|
126
|
+
'orchestrationTrace' in trace &&
|
|
127
|
+
trace.orchestrationTrace?.modelInvocationInput?.foundationModel
|
|
128
|
+
) {
|
|
129
|
+
agentModel = trace.orchestrationTrace.modelInvocationInput.foundationModel;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
// After the stream is complete, send trace data
|
|
136
|
+
const endTime = performance.now();
|
|
137
|
+
totalTokens = promptTokens + completionTokens;
|
|
138
|
+
|
|
139
|
+
// Send trace data to Openlayer
|
|
140
|
+
const inputs = extractInputs(input, traceData);
|
|
141
|
+
const metadata: Record<string, any> = {
|
|
142
|
+
agentId: input.agentId,
|
|
143
|
+
agentAliasId: input.agentAliasId,
|
|
144
|
+
sessionId: input.sessionId,
|
|
145
|
+
timeToFirstToken: firstTokenTime ? firstTokenTime - startTime : null,
|
|
146
|
+
};
|
|
147
|
+
|
|
148
|
+
if (citations.length > 0) {
|
|
149
|
+
metadata['citations'] = citations;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
const reasoning = extractReasoning(traceData);
|
|
153
|
+
if (reasoning && reasoning.length > 0) {
|
|
154
|
+
metadata['reasoning'] = reasoning;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
if (input.sessionState) {
|
|
158
|
+
metadata['sessionState'] = {
|
|
159
|
+
hasSessionAttributes: !!input.sessionState.sessionAttributes,
|
|
160
|
+
hasPromptSessionAttributes: !!input.sessionState.promptSessionAttributes,
|
|
161
|
+
hasFiles: !!input.sessionState.files && input.sessionState.files.length > 0,
|
|
162
|
+
hasKnowledgeBaseConfigurations:
|
|
163
|
+
!!input.sessionState.knowledgeBaseConfigurations &&
|
|
164
|
+
input.sessionState.knowledgeBaseConfigurations.length > 0,
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
const traceStepData = {
|
|
169
|
+
name: 'AWS Bedrock Agent Invocation',
|
|
170
|
+
inputs: inputs,
|
|
171
|
+
output: collectedOutput,
|
|
172
|
+
latency: endTime - startTime,
|
|
173
|
+
tokens: totalTokens > 0 ? totalTokens : null,
|
|
174
|
+
promptTokens: promptTokens > 0 ? promptTokens : null,
|
|
175
|
+
completionTokens: completionTokens > 0 ? completionTokens : null,
|
|
176
|
+
model: agentModel || `${input.agentId}:${input.agentAliasId}`,
|
|
177
|
+
modelParameters: extractModelParameters(input),
|
|
178
|
+
rawOutput: JSON.stringify(rawOutputChunks, null, 2),
|
|
179
|
+
metadata: metadata,
|
|
180
|
+
provider: 'Bedrock',
|
|
181
|
+
};
|
|
182
|
+
|
|
183
|
+
addChatCompletionStepToTrace(traceStepData);
|
|
184
|
+
} catch (error) {
|
|
185
|
+
console.error('Error in traced completion:', error);
|
|
186
|
+
// Don't rethrow - we don't want tracing errors to break the user's stream
|
|
187
|
+
}
|
|
188
|
+
},
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
function extractInputs(input: any, traceData: any[]): Record<string, any> {
|
|
193
|
+
const inputs: Record<string, any> = {};
|
|
194
|
+
|
|
195
|
+
// Build the prompt in OpenAI-compatible format
|
|
196
|
+
const prompt: Array<{ role: string; content: string }> = [];
|
|
197
|
+
|
|
198
|
+
// Add the main user message
|
|
199
|
+
if (input.inputText) {
|
|
200
|
+
prompt.push({
|
|
201
|
+
role: 'user',
|
|
202
|
+
content: input.inputText,
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
// Add conversation history if present
|
|
207
|
+
if (input.sessionState?.conversationHistory?.messages) {
|
|
208
|
+
for (const message of input.sessionState.conversationHistory.messages) {
|
|
209
|
+
const content =
|
|
210
|
+
message.content ?
|
|
211
|
+
message.content.map((block: any) => ('text' in block ? block.text || '' : '')).join('')
|
|
212
|
+
: '';
|
|
213
|
+
|
|
214
|
+
const role = message.role || 'user';
|
|
215
|
+
|
|
216
|
+
prompt.unshift({
|
|
217
|
+
role: role,
|
|
218
|
+
content: content,
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
// Extract system prompt from trace data if available
|
|
224
|
+
const systemPrompt = extractSystemPrompt(traceData);
|
|
225
|
+
if (systemPrompt) {
|
|
226
|
+
prompt.unshift({
|
|
227
|
+
role: 'system',
|
|
228
|
+
content: systemPrompt,
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
inputs['prompt'] = prompt;
|
|
233
|
+
|
|
234
|
+
// Add additional context as separate fields
|
|
235
|
+
if (input.sessionState?.sessionAttributes) {
|
|
236
|
+
inputs['sessionAttributes'] = input.sessionState.sessionAttributes;
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
if (input.sessionState?.promptSessionAttributes) {
|
|
240
|
+
inputs['promptSessionAttributes'] = input.sessionState.promptSessionAttributes;
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
if (input.sessionState?.files && input.sessionState.files.length > 0) {
|
|
244
|
+
inputs['files'] = input.sessionState.files.map((file: any) => ({
|
|
245
|
+
name: file.name,
|
|
246
|
+
useCase: file.useCase,
|
|
247
|
+
sourceType: file.source?.sourceType,
|
|
248
|
+
}));
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
return inputs;
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
function extractSystemPrompt(traceData: any[]): string | null {
|
|
255
|
+
for (const trace of traceData) {
|
|
256
|
+
if (trace.trace?.orchestrationTrace?.modelInvocationInput?.text) {
|
|
257
|
+
try {
|
|
258
|
+
const parsed = JSON.parse(trace.trace.orchestrationTrace.modelInvocationInput.text);
|
|
259
|
+
if (parsed.system) {
|
|
260
|
+
return parsed.system;
|
|
261
|
+
}
|
|
262
|
+
} catch (e) {
|
|
263
|
+
// If parsing fails, continue
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
return null;
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
function extractReasoning(traceData: any[]): string[] | undefined {
|
|
271
|
+
const reasoning: string[] = [];
|
|
272
|
+
|
|
273
|
+
for (const trace of traceData) {
|
|
274
|
+
if (trace.trace?.orchestrationTrace?.rationale?.text) {
|
|
275
|
+
reasoning.push(trace.trace.orchestrationTrace.rationale.text);
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
return reasoning.length > 0 ? reasoning : undefined;
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
function extractModelParameters(input: any): Record<string, any> {
|
|
283
|
+
const params: Record<string, any> = {};
|
|
284
|
+
|
|
285
|
+
if (input.enableTrace !== undefined) {
|
|
286
|
+
params['enableTrace'] = input.enableTrace;
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
if (input.endSession !== undefined) {
|
|
290
|
+
params['endSession'] = input.endSession;
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
if (input.bedrockModelConfigurations) {
|
|
294
|
+
params['bedrockModelConfigurations'] = input.bedrockModelConfigurations;
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
if (input.streamingConfigurations) {
|
|
298
|
+
params['streamingConfigurations'] = input.streamingConfigurations;
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
if (input.promptCreationConfigurations) {
|
|
302
|
+
params['promptCreationConfigurations'] = input.promptCreationConfigurations;
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
return params;
|
|
306
|
+
}
|
|
@@ -71,19 +71,46 @@ function createStep(
|
|
|
71
71
|
const { traceData: processedTraceData, inputVariableNames } = postProcessTrace(traceData!);
|
|
72
72
|
|
|
73
73
|
if (publish && process.env['OPENLAYER_INFERENCE_PIPELINE_ID']) {
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
74
|
+
console.debug('Uploading trace to Openlayer...');
|
|
75
|
+
|
|
76
|
+
client!.inferencePipelines.data
|
|
77
|
+
.stream(process.env['OPENLAYER_INFERENCE_PIPELINE_ID'], {
|
|
78
|
+
config: {
|
|
79
|
+
outputColumnName: 'output',
|
|
80
|
+
inputVariableNames: inputVariableNames,
|
|
81
|
+
groundTruthColumnName: 'groundTruth',
|
|
82
|
+
latencyColumnName: 'latency',
|
|
83
|
+
costColumnName: 'cost',
|
|
84
|
+
timestampColumnName: 'inferenceTimestamp',
|
|
85
|
+
inferenceIdColumnName: 'inferenceId',
|
|
86
|
+
numOfTokenColumnName: 'tokens',
|
|
87
|
+
},
|
|
88
|
+
rows: [processedTraceData],
|
|
89
|
+
})
|
|
90
|
+
.then(() => {
|
|
91
|
+
console.debug('Trace uploaded successfully to Openlayer');
|
|
92
|
+
})
|
|
93
|
+
.catch((error) => {
|
|
94
|
+
console.error('Failed to upload trace to Openlayer:', error);
|
|
95
|
+
console.error(
|
|
96
|
+
'Trace data that failed to upload:',
|
|
97
|
+
JSON.stringify(
|
|
98
|
+
{
|
|
99
|
+
pipelineId: process.env['OPENLAYER_INFERENCE_PIPELINE_ID'],
|
|
100
|
+
inputVariableNames,
|
|
101
|
+
processedTraceData,
|
|
102
|
+
},
|
|
103
|
+
null,
|
|
104
|
+
2,
|
|
105
|
+
),
|
|
106
|
+
);
|
|
107
|
+
});
|
|
108
|
+
} else {
|
|
109
|
+
if (!publish) {
|
|
110
|
+
console.debug('Trace upload disabled (OPENLAYER_DISABLE_PUBLISH=true)');
|
|
111
|
+
} else if (!process.env['OPENLAYER_INFERENCE_PIPELINE_ID']) {
|
|
112
|
+
console.warn('Trace upload skipped: OPENLAYER_INFERENCE_PIPELINE_ID environment variable not set');
|
|
113
|
+
}
|
|
87
114
|
}
|
|
88
115
|
|
|
89
116
|
// Reset the entire trace state
|
package/src/version.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const VERSION = '0.13.
|
|
1
|
+
export const VERSION = '0.13.3'; // x-release-please-version
|
package/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const VERSION = "0.13.
|
|
1
|
+
export declare const VERSION = "0.13.3";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/version.js
CHANGED
package/version.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const VERSION = '0.13.
|
|
1
|
+
export const VERSION = '0.13.3'; // x-release-please-version
|
|
2
2
|
//# sourceMappingURL=version.mjs.map
|