Skip to content

Commit 775cebf

Browse files
chore: move saveModelResponseForPromptAtomic to atomic update pipeline
1 parent f50dd9d commit 775cebf

File tree

1 file changed

+89
-0
lines changed

1 file changed

+89
-0
lines changed

tests/accuracy/sdk/accuracy-result-storage/mongodb-storage.ts

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,95 @@ export class MongoDBBasedResultStorage implements AccuracyResultStorage {
104104
);
105105
}
106106

107+
async saveModelResponseForPromptAtomic({
108+
commitSHA,
109+
runId,
110+
prompt,
111+
expectedToolCalls,
112+
modelResponse,
113+
}: {
114+
commitSHA: string;
115+
runId: string;
116+
prompt: string;
117+
expectedToolCalls: ExpectedToolCall[];
118+
modelResponse: ModelResponse;
119+
}): Promise<void> {
120+
const savedModelResponse: ModelResponse = { ...modelResponse };
121+
for (const field of OMITTED_MODEL_RESPONSE_FIELDS) {
122+
delete savedModelResponse[field];
123+
}
124+
125+
await this.resultCollection.updateOne(
126+
{ commitSHA, runId },
127+
[
128+
{
129+
$set: {
130+
runStatus: {
131+
$ifNull: ["$runStatus", AccuracyRunStatus.InProgress],
132+
},
133+
createdOn: {
134+
$ifNull: ["$createdOn", Date.now()],
135+
},
136+
commitSHA: commitSHA,
137+
runId: runId,
138+
promptResults: {
139+
$let: {
140+
vars: {
141+
existingPrompts: { $ifNull: ["$promptResults", []] },
142+
promptExists: {
143+
$in: [
144+
prompt,
145+
{
146+
$ifNull: [
147+
{ $map: { input: "$promptResults", as: "pr", in: "$$pr.prompt" } },
148+
[],
149+
],
150+
},
151+
],
152+
},
153+
},
154+
in: {
155+
$map: {
156+
input: {
157+
$cond: {
158+
if: "$$promptExists",
159+
then: "$$existingPrompts",
160+
else: {
161+
$concatArrays: [
162+
"$$existingPrompts",
163+
[{ prompt, expectedToolCalls, modelResponses: [] }],
164+
],
165+
},
166+
},
167+
},
168+
as: "promptResult",
169+
in: {
170+
$cond: {
171+
if: { $eq: ["$$promptResult.prompt", prompt] },
172+
then: {
173+
prompt: "$$promptResult.prompt",
174+
expectedToolCalls: "$$promptResult.expectedToolCalls",
175+
modelResponses: {
176+
$concatArrays: [
177+
"$$promptResult.modelResponses",
178+
[savedModelResponse],
179+
],
180+
},
181+
},
182+
else: "$$promptResult",
183+
},
184+
},
185+
},
186+
},
187+
},
188+
},
189+
},
190+
},
191+
],
192+
{ upsert: true }
193+
);
194+
}
195+
107196
async close(): Promise<void> {
108197
await this.client.close();
109198
}

0 commit comments

Comments
 (0)