Skip to content

Commit 698e6c9

Browse files
committed
WIP - add segment write key + tweak property names
1 parent ef88b26 commit 698e6c9

File tree

5 files changed

+55
-56
lines changed

5 files changed

+55
-56
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,21 @@
11
PORT=3000
2-
OPENAI_ENDPOINT=https://<resource_name>.openai.azure.com/
3-
OPENAI_API_KEY=<api_key>
2+
OPENAI_ENDPOINT="https://<resource_name>.openai.azure.com/"
3+
OPENAI_API_KEY="<api_key>"
44
OPENAI_VERIFIED_ANSWER_EMBEDDING_DEPLOYMENT="docs-chatbot-embedding-ada-002"
55
OPENAI_RETRIEVAL_EMBEDDING_DEPLOYMENT="text-embedding-3-small"
6-
OPENAI_EMBEDDING_MODEL=text-embedding-ada-002
7-
OPENAI_EMBEDDING_MODEL_VERSION=2023-03-15-preview
8-
OPENAI_CHAT_COMPLETION_DEPLOYMENT=<deployment_name>
9-
OPENAI_CHAT_COMPLETION_MODEL_VERSION=2023-05-15
10-
MONGODB_CONNECTION_URI=<connection_uri>
11-
MONGODB_DATABASE_NAME=<docs-chatbot-ENV>
12-
VECTOR_SEARCH_INDEX_NAME=<index_name>
13-
NODE_ENV=development
14-
ALLOWED_ORIGINS=http://example.com,http://localhost:5173
15-
OPENAI_PREPROCESSOR_CHAT_COMPLETION_DEPLOYMENT=<deployment name>
6+
OPENAI_EMBEDDING_MODEL="text-embedding-ada-002"
7+
OPENAI_EMBEDDING_MODEL_VERSION="2023-03-15-preview"
8+
OPENAI_CHAT_COMPLETION_DEPLOYMENT="<deployment_name>"
9+
OPENAI_CHAT_COMPLETION_MODEL_VERSION="2023-05-15"
10+
MONGODB_CONNECTION_URI="<connection_uri>"
11+
MONGODB_DATABASE_NAME="<docs-chatbot-ENV>"
12+
VECTOR_SEARCH_INDEX_NAME="<index_name>"
13+
NODE_ENV="development"
14+
ALLOWED_ORIGINS="http://example.com,http://localhost:5173"
15+
OPENAI_PREPROCESSOR_CHAT_COMPLETION_DEPLOYMENT="<deployment name>"
1616
OPENAI_API_VERSION="2024-06-01"
1717
JUDGE_EMBEDDING_MODEL="text-embedding-3-small"
1818
JUDGE_LLM="gpt-4o-mini"
1919
BRAINTRUST_TRACING_API_KEY="<some api key>"
2020
BRAINTRUST_CHATBOT_TRACING_PROJECT_NAME="chatbot-responses-dev"
21+
SEGMENT_WRITE_KEY="<your segment write key>"

packages/chatbot-server-mongodb-public/src/config.ts

+10-9
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ const {
6464
BRAINTRUST_CHATBOT_TRACING_PROJECT_NAME,
6565
SLACK_BOT_TOKEN,
6666
SLACK_COMMENT_CONVERSATION_ID,
67+
SEGMENT_WRITE_KEY,
6768
} = process.env;
6869

6970
const allowedOrigins = process.env.ALLOWED_ORIGINS?.split(",") || [];
@@ -227,6 +228,12 @@ const llmAsAJudgeConfig = {
227228
},
228229
};
229230

231+
const segmentConfig = SEGMENT_WRITE_KEY
232+
? {
233+
writeKey: SEGMENT_WRITE_KEY,
234+
}
235+
: undefined;
236+
230237
export const config: AppConfig = {
231238
conversationsRouterConfig: {
232239
llm,
@@ -258,15 +265,11 @@ export const config: AppConfig = {
258265
...llmAsAJudgeConfig,
259266
percentToJudge: isProduction ? 0.1 : 1,
260267
},
261-
segment: {
262-
writeKey: "TODO",
263-
},
268+
segment: segmentConfig,
264269
}),
265270
rateMessageUpdateTrace: makeRateMessageUpdateTrace({
266271
llmAsAJudge: llmAsAJudgeConfig,
267-
segment: {
268-
writeKey: "TODO",
269-
},
272+
segment: segmentConfig,
270273
}),
271274
commentMessageUpdateTrace: makeCommentMessageUpdateTrace({
272275
openAiClient,
@@ -286,9 +289,7 @@ export const config: AppConfig = {
286289
: undefined,
287290
}
288291
: undefined,
289-
segment: {
290-
writeKey: "TODO",
291-
},
292+
segment: segmentConfig,
292293
}),
293294
generateUserPrompt,
294295
systemPrompt,

packages/chatbot-server-mongodb-public/src/tracing/routesUpdateTraceHandlers.ts

-4
Original file line numberDiff line numberDiff line change
@@ -34,14 +34,12 @@ export function makeAddMessageToConversationUpdateTrace({
3434
const segmentTrackUserSentMessage = segment
3535
? makeTrackUserSentMessage({
3636
writeKey: segment.writeKey,
37-
eventName: segment.eventName,
3837
})
3938
: undefined;
4039

4140
const segmentTrackAssistantResponded = segment
4241
? makeTrackAssistantResponded({
4342
writeKey: segment.writeKey,
44-
eventName: segment.eventName,
4543
})
4644
: undefined;
4745

@@ -130,7 +128,6 @@ export function makeRateMessageUpdateTrace({
130128
const segmentTrackUserRatedMessage = segment
131129
? makeTrackUserRatedMessage({
132130
writeKey: segment.writeKey,
133-
eventName: segment.eventName,
134131
})
135132
: undefined;
136133

@@ -187,7 +184,6 @@ export function makeCommentMessageUpdateTrace({
187184
const segmentTrackUserCommentedMessage = segment
188185
? makeTrackUserCommentedMessage({
189186
writeKey: segment.writeKey,
190-
eventName: segment.eventName,
191187
})
192188
: undefined;
193189

packages/chatbot-server-mongodb-public/src/tracing/segment.test.ts

+13-13
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ describe("Segment Tracking", () => {
4848
anonymousId: "anon123",
4949
path: "/chat",
5050
url: "https://example.com/chat",
51-
ai_chatId: commonParams.conversationId.toString(),
51+
ai_chat_conversation_id: commonParams.conversationId.toString(),
5252
ai_chat_tags: "tag1,tag2",
5353
},
5454
});
@@ -104,8 +104,8 @@ describe("Segment Tracking", () => {
104104
anonymousId: "anon123",
105105
path: "/chat",
106106
url: "https://example.com/chat",
107-
ai_chatId: commonParams.conversationId.toString(),
108-
ai_chat_verified: "true",
107+
ai_chat_conversation_id: commonParams.conversationId.toString(),
108+
ai_chat_verified_answer: "true",
109109
},
110110
});
111111
});
@@ -131,8 +131,8 @@ describe("Segment Tracking", () => {
131131
anonymousId: "anon123",
132132
path: "/chat",
133133
url: "https://example.com/chat",
134-
ai_chatId: commonParams.conversationId.toString(),
135-
ai_chat_verified: "false",
134+
ai_chat_conversation_id: commonParams.conversationId.toString(),
135+
ai_chat_verified_answer: "false",
136136
ai_chat_rejected_reason: "off-topic",
137137
},
138138
});
@@ -158,8 +158,8 @@ describe("Segment Tracking", () => {
158158
anonymousId: "anon123",
159159
path: "/chat",
160160
url: "https://example.com/chat",
161-
ai_chatId: commonParams.conversationId.toString(),
162-
ai_chat_verified: "false",
161+
ai_chat_conversation_id: commonParams.conversationId.toString(),
162+
ai_chat_verified_answer: "false",
163163
},
164164
});
165165
});
@@ -214,7 +214,7 @@ describe("Segment Tracking", () => {
214214
anonymousId: "anon123",
215215
path: "/chat",
216216
url: "https://example.com/chat",
217-
ai_chatId: commonParams.conversationId.toString(),
217+
ai_chat_conversation_id: commonParams.conversationId.toString(),
218218
ai_chat_rating: "positive",
219219
},
220220
});
@@ -240,7 +240,7 @@ describe("Segment Tracking", () => {
240240
anonymousId: "anon123",
241241
path: "/chat",
242242
url: "https://example.com/chat",
243-
ai_chatId: commonParams.conversationId.toString(),
243+
ai_chat_conversation_id: commonParams.conversationId.toString(),
244244
ai_chat_rating: "negative",
245245
},
246246
});
@@ -297,8 +297,8 @@ describe("Segment Tracking", () => {
297297
anonymousId: "anon123",
298298
path: "/chat",
299299
url: "https://example.com/chat",
300-
ai_chatId: commonParams.conversationId.toString(),
301-
ai_chat_comment: "This was very helpful!",
300+
ai_chat_conversation_id: commonParams.conversationId.toString(),
301+
ai_chat_user_comment: "This was very helpful!",
302302
ai_chat_rating: "positive",
303303
},
304304
});
@@ -325,8 +325,8 @@ describe("Segment Tracking", () => {
325325
anonymousId: "anon123",
326326
path: "/chat",
327327
url: "https://example.com/chat",
328-
ai_chatId: commonParams.conversationId.toString(),
329-
ai_chat_comment: "This wasn't helpful at all.",
328+
ai_chat_conversation_id: commonParams.conversationId.toString(),
329+
ai_chat_user_comment: "This wasn't helpful at all.",
330330
ai_chat_rating: "negative",
331331
},
332332
});

packages/chatbot-server-mongodb-public/src/tracing/segment.ts

+19-18
Original file line numberDiff line numberDiff line change
@@ -11,29 +11,30 @@ export type TraceSegmentEventParams = {
1111
export type AnyEventProperties = {
1212
userId: string;
1313
anonymousId: string;
14-
ai_chatId: string;
14+
ai_chat_conversation_id: string;
1515
path: string;
1616
url: string;
1717
};
1818

1919
const BaseEventParamsSchema = z.object({
20-
userId: z.string(),
21-
anonymousId: z.string(),
20+
userId: z.string().optional(),
21+
anonymousId: z.string().optional(),
2222
conversationId: z.instanceof(ObjectId),
2323
origin: z.string(),
2424
createdAt: z.date(),
2525
});
2626

2727
export type BaseEventParams = z.infer<typeof BaseEventParamsSchema>;
2828

29-
export const ValidatedBaseEventParamsSchema = BaseEventParamsSchema.extend({
30-
parsedOrigin: z.object({
31-
path: z.string(),
32-
url: z.string(),
33-
}),
34-
});
29+
export const ValidatedBaseEventParamsSchema =
30+
BaseEventParamsSchema.required().extend({
31+
parsedOrigin: z.object({
32+
path: z.string(),
33+
url: z.string(),
34+
}),
35+
});
3536

36-
export type ParsedBaseEventParams = z.infer<
37+
export type ValidatedBaseEventParams = z.infer<
3738
typeof ValidatedBaseEventParamsSchema
3839
>;
3940

@@ -66,7 +67,7 @@ function parseOriginUrl(origin: string | undefined): ParsedOrigin | null {
6667

6768
function validateAndParseParams(
6869
params: Partial<BaseEventParams>
69-
): (BaseEventParams & { parsedOrigin: ParsedOrigin }) | null {
70+
): ValidatedBaseEventParams | null {
7071
if (!params.userId || !params.anonymousId) {
7172
logger.warn(
7273
`Tried to track segment event but missing userId and/or anonymousId`
@@ -77,21 +78,21 @@ function validateAndParseParams(
7778
if (!parsedOrigin) {
7879
return null;
7980
}
80-
return ValidatedBaseEventParamsSchema.parse({
81+
return ValidatedBaseEventParamsSchema.required().parse({
8182
...params,
8283
parsedOrigin,
8384
});
8485
}
8586

8687
function createBaseProperties(
87-
params: BaseEventParams & { parsedOrigin: ParsedOrigin }
88+
params: ValidatedBaseEventParams
8889
): AnyEventProperties {
8990
return {
9091
userId: params.userId,
9192
anonymousId: params.anonymousId,
9293
path: params.parsedOrigin.path,
9394
url: params.parsedOrigin.url,
94-
ai_chatId: params.conversationId.toString(),
95+
ai_chat_conversation_id: params.conversationId.toString(),
9596
};
9697
}
9798

@@ -133,7 +134,7 @@ export type TrackAssistantRespondedParams = BaseEventParams & {
133134
};
134135

135136
export type AssistantRespondedProperties = AnyEventProperties & {
136-
ai_chat_verified: string;
137+
ai_chat_verified_answer: string;
137138
ai_chat_rejected_reason?: string;
138139
};
139140

@@ -155,7 +156,7 @@ export function makeTrackAssistantResponded({
155156
timestamp: validatedParams.createdAt?.toISOString(),
156157
properties: {
157158
...createBaseProperties(validatedParams),
158-
ai_chat_verified: params.isVerifiedAnswer ? "true" : "false",
159+
ai_chat_verified_answer: params.isVerifiedAnswer ? "true" : "false",
159160
ai_chat_rejected_reason: params.rejectionReason,
160161
} satisfies AssistantRespondedProperties,
161162
});
@@ -200,7 +201,7 @@ export type TrackUserCommentedMessageParams = BaseEventParams & {
200201
};
201202

202203
export type UserCommentedMessageProperties = AnyEventProperties & {
203-
ai_chat_comment: string;
204+
ai_chat_user_comment: string;
204205
ai_chat_rating: string;
205206
};
206207

@@ -222,7 +223,7 @@ export function makeTrackUserCommentedMessage({
222223
timestamp: validatedParams.createdAt?.toISOString(),
223224
properties: {
224225
...createBaseProperties(validatedParams),
225-
ai_chat_comment: params.comment,
226+
ai_chat_user_comment: params.comment,
226227
ai_chat_rating: params.rating ? "positive" : "negative",
227228
} satisfies UserCommentedMessageProperties,
228229
});

0 commit comments

Comments
 (0)