Skip to content

Commit 1fd8c60

Browse files
committed
message test passing
1 parent 644a06e commit 1fd8c60

File tree

4 files changed

+18
-12
lines changed

4 files changed

+18
-12
lines changed

lib/instrumentation/@google/genai.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,9 @@ function recordChatCompletionMessages({
9494
})
9595

9696
// Only take the first response message and append to input messages
97-
const messages = [request.contents, response?.candidates?.[0]?.content?.parts?.[0]]
97+
const inputMessages = Array.isArray(request.contents) ? request.contents : [request.contents]
98+
const responseMessage = response?.candidates?.[0]?.content
99+
const messages = responseMessage !== undefined ? [...inputMessages, responseMessage] : inputMessages
98100
messages.forEach((message, index) => {
99101
const completionMsg = new LlmChatCompletionMessage({
100102
agent,

lib/llm-events/google-genai/chat-completion-message.js

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
'use strict'
77
const LlmEvent = require('./event')
8+
const { makeId } = require('../../util/hashes')
89

910
module.exports = class LlmChatCompletionMessage extends LlmEvent {
1011
constructor({
@@ -18,20 +19,20 @@ module.exports = class LlmChatCompletionMessage extends LlmEvent {
1819
transaction
1920
}) {
2021
super({ agent, segment, request, response, transaction })
21-
this.id = `${response.responseId}-${index}`
22-
this.role = message?.role
22+
this.id = makeId(36)
23+
this.role = message?.role ?? 'user' // Role is only defined if it is 'model'
2324
this.sequence = index
2425
this.completion_id = completionId
25-
this.is_response = response?.candidates?.[0]?.content?.parts?.[0]?.text === message?.content
26+
this.is_response = response?.candidates?.[0]?.content?.parts?.[0]?.text === message?.parts?.[0]?.text
2627

2728
if (agent.config.ai_monitoring.record_content.enabled === true) {
28-
this.content = message?.content
29+
this.content = message
2930
}
3031

3132
if (this.is_response) {
32-
this.token_count = response.candidatesTokenCount
33+
this.token_count = response?.usageMetadata?.candidatesTokenCount
3334
} else {
34-
this.token_count = response.promptTokenCount
35+
this.token_count = response?.usageMetadata?.promptTokenCount
3536
}
3637
}
3738
}

test/unit/llm-events/google-genai/chat-completion-message.test.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,17 +26,18 @@ test('should create a LlmChatCompletionMessage event', (t, end) => {
2626
helper.runInTransaction(agent, (tx) => {
2727
api.startSegment('fakeSegment', false, () => {
2828
const segment = api.shim.getActiveSegment()
29+
const summaryId = 'chat-summary-id'
2930
const chatMessageEvent = new LlmChatCompletionMessage({
3031
transaction: tx,
3132
agent,
3233
segment,
3334
request: req,
3435
response: res,
36+
completionId: summaryId,
3537
message: req.contents,
3638
index: 0
3739
})
38-
// TODO: add the expected result
39-
const expected = getExpectedResult(tx, {}, 'message')
40+
const expected = getExpectedResult(tx, chatMessageEvent, 'message', summaryId)
4041
assert.deepEqual(chatMessageEvent, expected)
4142
end()
4243
})

test/unit/llm-events/google-genai/common.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,12 +45,13 @@ function getExpectedResult(tx, event, type, completionId) {
4545
trace_id: tx.traceId,
4646
span_id: spanId,
4747
'request.model': 'gemini-2.0-flash',
48+
'response.model': 'gemini-2.0-flash',
4849
vendor: 'gemini',
49-
ingest_source: 'Node'
50+
ingest_source: 'Node',
51+
token_count: 10,
5052
}
5153
const resKeys = {
5254
duration: child.getDurationInMillis(),
53-
'response.model': 'gemini-2.0-flash',
5455
// TODO: response.headers?
5556
}
5657

@@ -78,7 +79,8 @@ function getExpectedResult(tx, event, type, completionId) {
7879
content: 'Why is the sky blue?',
7980
sequence: 0,
8081
completion_id: completionId,
81-
is_response: false
82+
is_response: false,
83+
role: 'user'
8284
}
8385
}
8486

0 commit comments

Comments
 (0)