refactor: simplify code with `cmp.Or`

Andrey Nering created

Change summary

internal/ai/agent.go | 30 +++++++++---------------------
1 file changed, 9 insertions(+), 21 deletions(-)

Detailed changes

internal/ai/agent.go 🔗

@@ -1,6 +1,7 @@
 package ai
 
 import (
+	"cmp"
 	"context"
 	"encoding/json"
 	"errors"
@@ -230,24 +231,14 @@ func NewAgent(model LanguageModel, opts ...AgentOption) Agent {
 }
 
 func (a *agent) prepareCall(call AgentCall) AgentCall {
-	if call.MaxOutputTokens == nil && a.settings.maxOutputTokens != nil {
-		call.MaxOutputTokens = a.settings.maxOutputTokens
-	}
-	if call.Temperature == nil && a.settings.temperature != nil {
-		call.Temperature = a.settings.temperature
-	}
-	if call.TopP == nil && a.settings.topP != nil {
-		call.TopP = a.settings.topP
-	}
-	if call.TopK == nil && a.settings.topK != nil {
-		call.TopK = a.settings.topK
-	}
-	if call.PresencePenalty == nil && a.settings.presencePenalty != nil {
-		call.PresencePenalty = a.settings.presencePenalty
-	}
-	if call.FrequencyPenalty == nil && a.settings.frequencyPenalty != nil {
-		call.FrequencyPenalty = a.settings.frequencyPenalty
-	}
+	call.MaxOutputTokens = cmp.Or(call.MaxOutputTokens, a.settings.maxOutputTokens)
+	call.Temperature = cmp.Or(call.Temperature, a.settings.temperature)
+	call.TopP = cmp.Or(call.TopP, a.settings.topP)
+	call.TopK = cmp.Or(call.TopK, a.settings.topK)
+	call.PresencePenalty = cmp.Or(call.PresencePenalty, a.settings.presencePenalty)
+	call.FrequencyPenalty = cmp.Or(call.FrequencyPenalty, a.settings.frequencyPenalty)
+	call.MaxRetries = cmp.Or(call.MaxRetries, a.settings.maxRetries)
+
 	if len(call.StopWhen) == 0 && len(a.settings.stopWhen) > 0 {
 		call.StopWhen = a.settings.stopWhen
 	}
@@ -260,9 +251,6 @@ func (a *agent) prepareCall(call AgentCall) AgentCall {
 	if call.OnRetry == nil && a.settings.onRetry != nil {
 		call.OnRetry = a.settings.onRetry
 	}
-	if call.MaxRetries == nil && a.settings.maxRetries != nil {
-		call.MaxRetries = a.settings.maxRetries
-	}
 
 	providerOptions := ProviderOptions{}
 	if a.settings.providerOptions != nil {