feat: add thinking mode support with configurable output formats
This commit is contained in:
@@ -191,6 +191,31 @@
|
||||
</div>
|
||||
<button class="btn btn-primary" onclick="saveSettings()">保存设置</button>
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="card-header"><span class="card-title">Thinking 模式设置</span></div>
|
||||
<div class="form-group">
|
||||
<label>触发后缀</label>
|
||||
<input type="text" id="thinkingSuffix" placeholder="-thinking">
|
||||
<small style="color:#64748b;font-size:12px;margin-top:4px;display:block">模型名称加此后缀即启用思考模式,如 claude-sonnet-4.5-thinking</small>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>OpenAI API 输出格式</label>
|
||||
<select id="openaiThinkingFormat">
|
||||
<option value="reasoning_content">reasoning_content (DeepSeek 兼容)</option>
|
||||
<option value="thinking"><thinking> 标签 (Claude 原生)</option>
|
||||
<option value="think"><think> 标签 (OpenAI 原生)</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Claude API 输出格式</label>
|
||||
<select id="claudeThinkingFormat">
|
||||
<option value="thinking"><thinking> 标签 (Claude 原生)</option>
|
||||
<option value="think"><think> 标签</option>
|
||||
<option value="reasoning_content">直接输出 (无标签)</option>
|
||||
</select>
|
||||
</div>
|
||||
<button class="btn btn-primary" onclick="saveThinkingConfig()">保存 Thinking 设置</button>
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="card-header"><span class="card-title">管理密码</span></div>
|
||||
<div class="form-group">
|
||||
@@ -477,6 +502,29 @@
|
||||
const d = await res.json();
|
||||
document.getElementById('requireApiKey').checked = d.requireApiKey;
|
||||
document.getElementById('apiKeyInput').value = d.apiKey || '';
|
||||
// 加载 thinking 配置
|
||||
loadThinkingConfig();
|
||||
}
|
||||
|
||||
async function loadThinkingConfig() {
|
||||
const res = await fetch('/admin/api/thinking', { headers: { 'X-Admin-Password': password } });
|
||||
const d = await res.json();
|
||||
document.getElementById('thinkingSuffix').value = d.suffix || '-thinking';
|
||||
document.getElementById('openaiThinkingFormat').value = d.openaiFormat || 'reasoning_content';
|
||||
document.getElementById('claudeThinkingFormat').value = d.claudeFormat || 'thinking';
|
||||
}
|
||||
|
||||
async function saveThinkingConfig() {
|
||||
const res = await fetch('/admin/api/thinking', {
|
||||
method: 'POST', headers: { 'Content-Type': 'application/json', 'X-Admin-Password': password },
|
||||
body: JSON.stringify({
|
||||
suffix: document.getElementById('thinkingSuffix').value || '-thinking',
|
||||
openaiFormat: document.getElementById('openaiThinkingFormat').value,
|
||||
claudeFormat: document.getElementById('claudeThinkingFormat').value
|
||||
})
|
||||
});
|
||||
const d = await res.json();
|
||||
if (d.success) { alert('Thinking 设置已保存'); } else { alert('保存失败: ' + d.error); }
|
||||
}
|
||||
|
||||
async function saveSettings() {
|
||||
|
||||
Reference in New Issue
Block a user