|
1 | 1 | from __future__ import annotations |
2 | 2 |
|
3 | | -from dataclasses import dataclass |
| 3 | +from dataclasses import dataclass, asdict |
4 | 4 | from typing import Literal |
5 | 5 |
|
6 | 6 |
|
@@ -47,14 +47,9 @@ def resolve(self, override: ModelSettings | None) -> ModelSettings: |
47 | 47 | override on top of this instance.""" |
48 | 48 | if override is None: |
49 | 49 | return self |
50 | | - return ModelSettings( |
51 | | - temperature=override.temperature if override.temperature is not None else self.temperature, |
52 | | - top_p=override.top_p if override.top_p is not None else self.top_p, |
53 | | - frequency_penalty=override.frequency_penalty if override.frequency_penalty is not None else self.frequency_penalty, |
54 | | - presence_penalty=override.presence_penalty if override.presence_penalty is not None else self.presence_penalty, |
55 | | - tool_choice=override.tool_choice if override.tool_choice is not None else self.tool_choice, |
56 | | - parallel_tool_calls=override.parallel_tool_calls if override.parallel_tool_calls is not None else self.parallel_tool_calls, |
57 | | - truncation=override.truncation if override.truncation is not None else self.truncation, |
58 | | - max_tokens=override.max_tokens if override.max_tokens is not None else self.max_tokens, |
59 | | - store=override.store if override.store is not None else self.store, |
60 | | - ) |
| 50 | + |
| 51 | + new_values = { |
| 52 | + k: getattr(override, k) if getattr(override, k) is not None else getattr(self, k) |
| 53 | + for k in asdict(self) |
| 54 | + } |
| 55 | + return ModelSettings(**new_values) |
0 commit comments