@@ -13,30 +13,13 @@ import {
13
13
// Omitting these as they might contain large chunk of texts
14
14
const OMITTED_MODEL_RESPONSE_FIELDS : ( keyof ModelResponse ) [ ] = [ "messages" , "text" ] ;
15
15
16
- // The LLMToolCalls and ExpectedToolCalls are expected to have mongodb operators
17
- // nested in the objects. This interferes with the update operation that we do
18
- // on the accuracy result document to save the model responses which is why we
19
- // serialize them before saving and deserialize them on fetch.
20
- type SavedAccuracyResult = Omit < AccuracyResult , "promptResults" > & {
21
- promptResults : SavedPromptResult [ ] ;
22
- } ;
23
-
24
- type SavedPromptResult = Omit < PromptResult , "expectedToolCalls" | "modelResponses" > & {
25
- expectedToolCalls : string ;
26
- modelResponses : SavedModelResponse [ ] ;
27
- } ;
28
-
29
- type SavedModelResponse = Omit < ModelResponse , "llmToolCalls" > & {
30
- llmToolCalls : string ;
31
- } ;
32
-
33
16
export class MongoDBBasedResultStorage implements AccuracyResultStorage {
34
17
private client : MongoClient ;
35
- private resultCollection : Collection < SavedAccuracyResult > ;
18
+ private resultCollection : Collection < AccuracyResult > ;
36
19
37
20
constructor ( connectionString : string , database : string , collection : string ) {
38
21
this . client = new MongoClient ( connectionString ) ;
39
- this . resultCollection = this . client . db ( database ) . collection < SavedAccuracyResult > ( collection ) ;
22
+ this . resultCollection = this . client . db ( database ) . collection < AccuracyResult > ( collection ) ;
40
23
}
41
24
42
25
async getAccuracyResult ( commitSHA : string , runId ?: string ) : Promise < AccuracyResult | null > {
@@ -48,13 +31,11 @@ export class MongoDBBasedResultStorage implements AccuracyResultStorage {
48
31
// particular commit.
49
32
{ commitSHA, runStatus : AccuracyRunStatus . Done } ;
50
33
51
- const result = await this . resultCollection . findOne ( filters , {
34
+ return await this . resultCollection . findOne ( filters , {
52
35
sort : {
53
36
createdOn : - 1 ,
54
37
} ,
55
38
} ) ;
56
-
57
- return result ? this . deserializeSavedResult ( result ) : result ;
58
39
}
59
40
60
41
async updateRunStatus ( commitSHA : string , runId : string , status : AccuracyRunStatuses ) : Promise < void > {
@@ -81,10 +62,8 @@ export class MongoDBBasedResultStorage implements AccuracyResultStorage {
81
62
expectedToolCalls : ExpectedToolCall [ ] ;
82
63
modelResponse : ModelResponse ;
83
64
} ) : Promise < void > {
84
- const expectedToolCallsToSave = JSON . stringify ( expectedToolCalls ) ;
85
- const modelResponseToSave : SavedModelResponse = {
65
+ const modelResponseToSave : ModelResponse = {
86
66
...modelResponse ,
87
- llmToolCalls : JSON . stringify ( modelResponse . llmToolCalls ) ,
88
67
} ;
89
68
90
69
for ( const field of OMITTED_MODEL_RESPONSE_FIELDS ) {
@@ -122,9 +101,11 @@ export class MongoDBBasedResultStorage implements AccuracyResultStorage {
122
101
"$promptResults" ,
123
102
[
124
103
{
125
- prompt,
126
- expectedToolCalls : expectedToolCallsToSave ,
127
- modelResponses : [ modelResponseToSave ] ,
104
+ $literal : {
105
+ prompt,
106
+ expectedToolCalls,
107
+ modelResponses : [ modelResponseToSave ] ,
108
+ } ,
128
109
} ,
129
110
] ,
130
111
] ,
@@ -138,11 +119,11 @@ export class MongoDBBasedResultStorage implements AccuracyResultStorage {
138
119
{ $eq : [ "$$promptResult.prompt" , prompt ] } ,
139
120
{
140
121
prompt : "$$promptResult.prompt" ,
141
- expectedToolCalls : expectedToolCallsToSave ,
122
+ expectedToolCalls,
142
123
modelResponses : {
143
124
$concatArrays : [
144
125
"$$promptResult.modelResponses" ,
145
- [ modelResponseToSave ] ,
126
+ [ { $literal : modelResponseToSave } ] ,
146
127
] ,
147
128
} ,
148
129
} ,
@@ -162,24 +143,6 @@ export class MongoDBBasedResultStorage implements AccuracyResultStorage {
162
143
) ;
163
144
}
164
145
165
- private deserializeSavedResult ( result : SavedAccuracyResult ) : AccuracyResult {
166
- return {
167
- ...result ,
168
- promptResults : result . promptResults . map < PromptResult > ( ( result ) => {
169
- return {
170
- ...result ,
171
- expectedToolCalls : JSON . parse ( result . expectedToolCalls ) as ExpectedToolCall [ ] ,
172
- modelResponses : result . modelResponses . map < ModelResponse > ( ( response ) => {
173
- return {
174
- ...response ,
175
- llmToolCalls : JSON . parse ( response . llmToolCalls ) as LLMToolCall [ ] ,
176
- } ;
177
- } ) ,
178
- } ;
179
- } ) ,
180
- } ;
181
- }
182
-
183
146
async close ( ) : Promise < void > {
184
147
await this . client . close ( ) ;
185
148
}
0 commit comments