Skip to content
This repository was archived by the owner on Sep 29, 2025. It is now read-only.

Commit a2d41a8

Browse files
authored
ensure item ids are set for response events (#859)
1 parent 366a702 commit a2d41a8

File tree

2 files changed

+20
-16
lines changed

2 files changed

+20
-16
lines changed

packages/chatbot-server-mongodb-public/src/processors/generateResponseWithTools.ts

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,7 @@ export const addMessageToConversationStream: GenerateResponseWithToolsParams["st
135135
export const responsesApiStream: GenerateResponseWithToolsParams["stream"] = {
136136
onLlmNotWorking({ dataStreamer, notWorkingMessage }) {
137137
const itemId = Date.now().toString();
138+
138139
dataStreamer?.streamResponses({
139140
type: "response.output_item.added",
140141
output_index: 0,
@@ -151,14 +152,14 @@ export const responsesApiStream: GenerateResponseWithToolsParams["stream"] = {
151152
delta: notWorkingMessage,
152153
content_index: 0,
153154
output_index: 0,
154-
item_id: "",
155+
item_id: itemId,
155156
} satisfies ResponseStreamOutputTextDelta);
156157
dataStreamer?.streamResponses({
157158
type: "response.output_text.done",
158159
text: notWorkingMessage,
159160
content_index: 0,
160161
output_index: 0,
161-
item_id: "",
162+
item_id: itemId,
162163
} satisfies ResponseStreamOutputTextDone);
163164
dataStreamer?.streamResponses({
164165
type: "response.output_item.done",
@@ -180,6 +181,7 @@ export const responsesApiStream: GenerateResponseWithToolsParams["stream"] = {
180181
},
181182
onLlmRefusal({ dataStreamer, refusalMessage }) {
182183
const itemId = Date.now().toString();
184+
183185
dataStreamer?.streamResponses({
184186
type: "response.output_item.added",
185187
output_index: 0,
@@ -235,42 +237,42 @@ export const responsesApiStream: GenerateResponseWithToolsParams["stream"] = {
235237
} satisfies ResponseStreamOutputTextAnnotationAdded);
236238
});
237239
},
238-
onTextStart({ dataStreamer }) {
240+
onTextStart({ dataStreamer, textPartId }) {
239241
dataStreamer?.streamResponses({
240242
type: "response.output_item.added",
241243
output_index: 0,
242244
item: {
243245
type: "message",
244-
id: "",
246+
id: textPartId,
245247
content: [],
246248
role: "assistant",
247249
status: "in_progress",
248250
},
249251
} satisfies ResponseStreamOutputItemAdded);
250252
},
251-
onTextDelta({ dataStreamer, delta }) {
253+
onTextDelta({ dataStreamer, delta, textPartId }) {
252254
dataStreamer?.streamResponses({
253255
type: "response.output_text.delta",
254256
delta,
255257
content_index: 0,
256258
output_index: 0,
257-
item_id: "",
259+
item_id: textPartId,
258260
} satisfies ResponseStreamOutputTextDelta);
259261
},
260-
onTextDone({ dataStreamer, text, references }) {
262+
onTextDone({ dataStreamer, text, references, textPartId, chunkId }) {
261263
dataStreamer?.streamResponses({
262264
type: "response.output_text.done",
263265
text,
264266
content_index: 0,
265267
output_index: 0,
266-
item_id: "",
268+
item_id: textPartId,
267269
} satisfies ResponseStreamOutputTextDone);
268270
dataStreamer?.streamResponses({
269271
type: "response.output_item.done",
270272
output_index: 0,
271273
item: {
272274
type: "message",
273-
id: "",
275+
id: chunkId,
274276
content: [
275277
{
276278
type: "output_text",
@@ -283,15 +285,15 @@ export const responsesApiStream: GenerateResponseWithToolsParams["stream"] = {
283285
},
284286
} satisfies ResponseStreamOutputItemDone);
285287
},
286-
onFunctionCallStart({ dataStreamer, toolCallId, toolName }) {
288+
onFunctionCallStart({ dataStreamer, toolCallId, toolName, chunkId }) {
287289
dataStreamer?.streamResponses({
288290
type: "response.output_item.added",
289291
output_index: 0,
290292
item: {
291293
arguments: "",
292294
call_id: toolCallId,
293295
name: toolName,
294-
id: "",
296+
id: chunkId,
295297
type: "function_call",
296298
status: "in_progress",
297299
},
@@ -305,7 +307,7 @@ export const responsesApiStream: GenerateResponseWithToolsParams["stream"] = {
305307
item_id: toolCallId,
306308
} satisfies ResponseStreamFunctionCallArgumentsDelta);
307309
},
308-
onFunctionCallDone({ dataStreamer, toolCallId, toolName, input }) {
310+
onFunctionCallDone({ dataStreamer, toolCallId, toolName, input, chunkId }) {
309311
const args = JSON.stringify(input);
310312

311313
dataStreamer?.streamResponses({
@@ -321,7 +323,7 @@ export const responsesApiStream: GenerateResponseWithToolsParams["stream"] = {
321323
arguments: args,
322324
call_id: toolCallId,
323325
name: toolName,
324-
id: "",
326+
id: chunkId,
325327
type: "function_call",
326328
status: "completed",
327329
},

packages/mongodb-chatbot-server/src/processors/makeVerifiedAnswerGenerateResponse.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,12 +61,14 @@ export const addMessageToConversationVerifiedAnswerStream: MakeVerifiedAnswerGen
6161
export const responsesVerifiedAnswerStream: MakeVerifiedAnswerGenerateResponseParams["stream"] =
6262
{
6363
onVerifiedAnswerFound: ({ verifiedAnswer, dataStreamer }) => {
64+
const itemId = Date.now().toString();
65+
6466
dataStreamer.streamResponses({
6567
type: "response.output_text.delta",
6668
delta: verifiedAnswer.answer,
6769
content_index: 0,
6870
output_index: 0,
69-
item_id: "",
71+
item_id: itemId,
7072
} satisfies ResponseStreamOutputTextDelta);
7173

7274
verifiedAnswer.references.forEach(({ title, url }, annotation_index) => {
@@ -82,7 +84,7 @@ export const responsesVerifiedAnswerStream: MakeVerifiedAnswerGenerateResponsePa
8284
annotation_index,
8385
content_index: 0,
8486
output_index: 0,
85-
item_id: "",
87+
item_id: itemId,
8688
} satisfies ResponseStreamOutputTextAnnotationAdded);
8789
});
8890

@@ -91,7 +93,7 @@ export const responsesVerifiedAnswerStream: MakeVerifiedAnswerGenerateResponsePa
9193
text: verifiedAnswer.answer,
9294
content_index: 0,
9395
output_index: 0,
94-
item_id: "",
96+
item_id: itemId,
9597
} satisfies ResponseStreamOutputTextDone);
9698
},
9799
};

0 commit comments

Comments
 (0)