feat: add reasoning effort setting for Responses API (low/medium/high/xhigh)

This commit is contained in:
YuanShiJiLoong committed 2026-02-25 03:05:10 +09:00
1 parent 0754913f43
commit 9859743f85
2 files changed
+22 -1

No files matched your search

+6 -1
View File
@@ -27,10 +27,15 @@ export async function POST(request) {
{ role: 'developer', content: systemPrompt },
{ role: 'user', content: userPrompt },
],
max_output_tokens: maxTokens || 4096,
stream: true,
};
// 添加思考等级(默认 medium)
const effort = apiConfig?.reasoningEffort || 'medium';
if (['low', 'medium', 'high', 'xhigh'].includes(effort)) {
requestBody.reasoning = { effort, summary: 'auto' };
}
const response = await fetch(url, {
method: 'POST',
headers: {
+16
View File
@@ -608,6 +608,22 @@ function ApiConfigForm({ data, onChange }) {
{t('apiConfig.geminiNativeHint')}
</div>
)}
{data.provider === 'openai-responses' && (
<div style={{ marginTop: 10 }}>
<label style={{ display: 'block', fontSize: 12, fontWeight: 500, color: 'var(--text-secondary)', marginBottom: 6 }}>思考等级 (Reasoning Effort)</label>
<div style={{ display: 'flex', gap: 6 }}>
{[
{ key: 'low', label: 'low' },
{ key: 'medium', label: 'medium' },
{ key: 'high', label: 'high' },
{ key: 'xhigh', label: 'xhigh' },
].map(opt => (
<button key={opt.key} style={{ padding: '5px 14px', border: (data.reasoningEffort || 'medium') === opt.key ? '2px solid var(--accent)' : '1px solid var(--border-light)', borderRadius: 'var(--radius-sm)', background: (data.reasoningEffort || 'medium') === opt.key ? 'var(--accent-light)' : 'var(--bg-primary)', cursor: 'pointer', fontSize: 12, fontWeight: (data.reasoningEffort || 'medium') === opt.key ? 600 : 400, color: (data.reasoningEffort || 'medium') === opt.key ? 'var(--accent)' : 'var(--text-primary)', transition: 'all 0.15s' }} onClick={() => update('reasoningEffort', opt.key)}>{opt.label}</button>
))}
</div>
<div style={{ fontSize: 11, color: 'var(--text-muted)', marginTop: 4 }}>控制模型推理深度,默认 Medium,XHigh 质量最高但更慢</div>
</div>
)}
</div>
<FieldInput label="API Key" value={data.apiKey} onChange={v => update('apiKey', v)} placeholder={t('apiConfig.apiKeyPlaceholder')} secret />