File tree 2 files changed +24
-7
lines changed
2 files changed +24
-7
lines changed Original file line number Diff line number Diff line change @@ -288,13 +288,23 @@ func (r *ChatCompletionRequest) UnmarshalJSON(data []byte) error {
288
288
return err
289
289
}
290
290
if r .TemperatureOpt != nil {
291
- r .Temperature = * r .TemperatureOpt
292
- // Link TemperatureOpt to temperature. This ensures that code modifying temperature
293
- // after unmarshaling (i.e., when TemperatureOpt might be set) will continue to
294
- // work correctly.
295
- r .TemperatureOpt = & r .Temperature
296
- } else if r .Temperature != 0 {
297
- r .TemperatureOpt = & r .Temperature
291
+ if * r .TemperatureOpt == 0 {
292
+ // Explicit zero. This can only be represented in the TemperatureOpt field, so
293
+ // we need to preserve it.
294
+ // We still link r.TemperatureOpt to r.Temperature, such that legacy code modifying
295
+ // temperature after unmarshaling will continue to work correctly.
296
+ r .Temperature = 0
297
+ r .TemperatureOpt = & r .Temperature
298
+ } else {
299
+ // Non-zero temperature. This can be represented in the legacy field, and in order
300
+ // to minimize incompatibilities, we use the legacy field exclusively.
301
+ // New code should use `GetTemperature()` to retrieve the temperature, and explicitly
302
+ // setting TemperatureOpt will still be respected.
303
+ r .Temperature = * r .TemperatureOpt
304
+ r .TemperatureOpt = nil
305
+ }
306
+ } else {
307
+ r .Temperature = 0
298
308
}
299
309
return nil
300
310
}
Original file line number Diff line number Diff line change @@ -997,6 +997,13 @@ func TestTemperature(t *testing.T) {
997
997
},
998
998
expectedTemperature : & []float32 {0.5 }[0 ],
999
999
},
1000
+ {
1001
+ name : "set_new_explicit_zero" ,
1002
+ in : openai.ChatCompletionRequest {
1003
+ TemperatureOpt : & []float32 {0 }[0 ],
1004
+ },
1005
+ expectedTemperature : & []float32 {0 }[0 ],
1006
+ },
1000
1007
}
1001
1008
1002
1009
for _ , tt := range tests {
You can’t perform that action at this time.
0 commit comments