import { VSCodeCheckbox } from "@vscode/webview-ui-toolkit/react" import { useEffect, useState } from "react" import { useDebounce } from "react-use" interface TemperatureControlProps { value: number | undefined onChange: (value: number | undefined) => void maxValue?: number // Some providers like OpenAI use 0-2 range } export const TemperatureControl = ({ value, onChange, maxValue = 1 }: TemperatureControlProps) => { const [isCustomTemperature, setIsCustomTemperature] = useState(value !== undefined) const [inputValue, setInputValue] = useState(value) useDebounce(() => onChange(inputValue), 50, [onChange, inputValue]) // Sync internal state with prop changes when switching profiles useEffect(() => { const hasCustomTemperature = value !== undefined setIsCustomTemperature(hasCustomTemperature) setInputValue(value) }, [value]) return (
{ const isChecked = e.target.checked setIsCustomTemperature(isChecked) if (!isChecked) { setInputValue(undefined) // Unset the temperature } else { setInputValue(value ?? 0) // Use the value from apiConfiguration, if set } }}> Use custom temperature

Controls randomness in the model's responses.

{isCustomTemperature && (
setInputValue(parseFloat(e.target.value))} /> {inputValue}

Higher values make output more random, lower values make it more deterministic.

)}
) }