diff --git a/app/ui/app/src/api.ts b/app/ui/app/src/api.ts index c8b2e116..4158bafc 100644 --- a/app/ui/app/src/api.ts +++ b/app/ui/app/src/api.ts @@ -205,6 +205,13 @@ export async function* sendMessage( data: uint8ArrayToBase64(att.data), })); + // Only send think parameter when actually requesting thinking + // Don't send false as it causes issues with some providers + const shouldSendThink = + think !== undefined && + ((typeof think === "boolean" && think) || + (typeof think === "string" && think !== "")); + const response = await fetch(`${API_BASE}/api/v1/chat/${chatId}`, { method: "POST", headers: { @@ -222,7 +229,7 @@ export async function* sendMessage( web_search: webSearch ?? false, file_tools: fileTools ?? false, ...(forceUpdate !== undefined ? { forceUpdate } : {}), - ...(think !== undefined ? { think } : {}), + ...(shouldSendThink ? { think } : {}), }), ), signal, diff --git a/app/ui/ui.go b/app/ui/ui.go index fce58895..1d0e2579 100644 --- a/app/ui/ui.go +++ b/app/ui/ui.go @@ -1794,13 +1794,14 @@ func (s *Server) buildChatRequest(chat *store.Chat, model string, think any, ava var thinkValue *api.ThinkValue if think != nil { + // Only set Think if it's actually requesting thinking if boolValue, ok := think.(bool); ok { - thinkValue = &api.ThinkValue{ - Value: boolValue, + if boolValue { + thinkValue = &api.ThinkValue{Value: boolValue} } } else if stringValue, ok := think.(string); ok { - thinkValue = &api.ThinkValue{ - Value: stringValue, + if stringValue != "" && stringValue != "none" { + thinkValue = &api.ThinkValue{Value: stringValue} } } }