feat: Fill thoughtSignature only for Gemini/Vertex channels using the OpenAI format

This commit is contained in:
Seefs
2025-11-20 15:54:33 +08:00
parent 266e272e74
commit 4ac4849ab6
11 changed files with 80 additions and 13 deletions

View File

@@ -39,19 +39,22 @@ const GEMINI_VERSION_EXAMPLE = {
default: 'v1beta',
};
const DEFAULT_GEMINI_INPUTS = {
'gemini.safety_settings': '',
'gemini.version_settings': '',
'gemini.supported_imagine_models': '',
'gemini.thinking_adapter_enabled': false,
'gemini.thinking_adapter_budget_tokens_percentage': 0.6,
'gemini.function_call_thought_signature_enabled': true,
};
export default function SettingGeminiModel(props) {
const { t } = useTranslation();
const [loading, setLoading] = useState(false);
const [inputs, setInputs] = useState({
'gemini.safety_settings': '',
'gemini.version_settings': '',
'gemini.supported_imagine_models': '',
'gemini.thinking_adapter_enabled': false,
'gemini.thinking_adapter_budget_tokens_percentage': 0.6,
});
const [inputs, setInputs] = useState(DEFAULT_GEMINI_INPUTS);
const refForm = useRef();
const [inputsRow, setInputsRow] = useState(inputs);
const [inputsRow, setInputsRow] = useState(DEFAULT_GEMINI_INPUTS);
async function onSubmit() {
await refForm.current
@@ -92,9 +95,9 @@ export default function SettingGeminiModel(props) {
}
useEffect(() => {
const currentInputs = {};
const currentInputs = { ...DEFAULT_GEMINI_INPUTS };
for (let key in props.options) {
if (Object.keys(inputs).includes(key)) {
if (Object.prototype.hasOwnProperty.call(DEFAULT_GEMINI_INPUTS, key)) {
currentInputs[key] = props.options[key];
}
}
@@ -166,6 +169,23 @@ export default function SettingGeminiModel(props) {
/>
</Col>
</Row>
<Row>
<Col span={16}>
<Form.Switch
label={t('启用FunctionCall思维签名填充')}
field={'gemini.function_call_thought_signature_enabled'}
extraText={t(
'仅为使用OpenAI格式的Gemini/Vertex渠道填充thoughtSignature',
)}
onChange={(value) =>
setInputs({
...inputs,
'gemini.function_call_thought_signature_enabled': value,
})
}
/>
</Col>
</Row>
<Row>
<Col xs={24} sm={12} md={8} lg={8} xl={8}>
<Form.TextArea