From d4d3262090de637d9808a2e813751ad33336c18f Mon Sep 17 00:00:00 2001 From: jxjz <1766730816@qq.com> Date: Sun, 18 Oct 2026 20:58:08 +0800 Subject: [PATCH 1/2] feat(settings): support configurable LLM reasoning effort --- docs/images/llm-reasoning-effort.png | Bin 0 -> 83880 bytes docs/settings.md | 6 +- frontend/src/api/schema.d.ts | 6 + frontend/src/pages/Settings.jsx | 171 ++++++++++----- frontend/tests/settings-reasoning.test.tsx | 201 ++++++++++++++++++ packages/contracts/openapi.json | 36 ++++ packages/contracts/src/index.ts | 1 + packages/core/src/provider/config.ts | 1 + packages/core/src/provider/model.ts | 9 +- packages/core/src/provider/ports.ts | 3 +- .../core/src/provider/settings-operations.ts | 2 +- packages/providers/src/index.ts | 31 ++- tests-ts/contracts/settings-reasoning.test.ts | 59 +++++ tests-ts/providers.test.ts | 89 ++++++++ tests-ts/settings-provider.test.ts | 19 +- 15 files changed, 568 insertions(+), 66 deletions(-) create mode 100644 docs/images/llm-reasoning-effort.png create mode 100644 frontend/tests/settings-reasoning.test.tsx create mode 100644 tests-ts/contracts/settings-reasoning.test.ts diff --git a/docs/images/llm-reasoning-effort.png b/docs/images/llm-reasoning-effort.png new file mode 100644 index 0000000000000000000000000000000000000000..2260293446d9c51a894d323d5991b74ec04221ee GIT binary patch literal 83880 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 literal 0 HcmV?d00001 diff --git a/docs/settings.md b/docs/settings.md index 2fc9559..78866f5 100644 --- a/docs/settings.md +++ b/docs/settings.md @@ -4,7 +4,11 @@ ## LLM -填写 OpenAI-compatible API Base、API Key、Model、API 兼容模式和 Temperature。普通平台选择“通用 OpenAI 兼容”;DeepSeek V4 选择“DeepSeek V4”。先点击测试,确认账号确实能调用该模型,再保存。训练、面试、复盘和个人 Agent 使用这套配置。Copilot 优先使用部署方的独立 `COPILOT_LLM_*` 配置,未配置时才沿用这里的设置。DeepSeek 模式对结构化请求附加 JSON 输出和低推理参数,Copilot 实时回答使用非思考流式输出。 +填写 OpenAI-compatible API Base、API Key、Model、API 兼容模式和 Temperature。普通平台选择“通用 OpenAI 兼容”;DeepSeek V4 选择“DeepSeek V4”。先点击测试,确认账号确实能调用该模型,再保存。训练、面试、复盘和个人 Agent 使用这套配置。Copilot 优先使用部署方的独立 `COPILOT_LLM_*` 配置,未配置时才沿用这里的设置。 + +支持推理的模型可在“推理强度”中选择档位。通用模式提供 `low`、`medium`、`high`、`xhigh`、`max`;默认“跟随上游”不额外发送推理参数。显式选择后,连接测试以及保存后的普通、流式请求使用所选档位,优先于场景默认值。模型与网关必须支持该档位;不支持时测试会显示提供商错误,不会静默换档。通用模式启用推理后不发送 Temperature,输出预算使用包含推理 token 的 `max_completion_tokens`。 + +DeepSeek 模式提供 `none`、`low`、`high`、`max`,保留 JSON 输出配置。未显式选择时保留场景默认值:结构化请求使用低推理,Copilot 实时回答关闭推理;显式选择后使用用户所选档位。切换 API 兼容模式会清空之前的强度选择,需要重新测试并保存。 ## Embedding diff --git a/frontend/src/api/schema.d.ts b/frontend/src/api/schema.d.ts index cbdc4b8..bcf0d38 100644 --- a/frontend/src/api/schema.d.ts +++ b/frontend/src/api/schema.d.ts @@ -328,6 +328,8 @@ export interface paths { * @enum {string} */ compatibility: "generic" | "deepseek"; + /** @enum {string} */ + reasoning_effort?: "" | "none" | "low" | "medium" | "high" | "xhigh" | "max"; /** @default false */ use_platform: boolean; }; @@ -459,6 +461,8 @@ export interface paths { * @enum {string} */ compatibility?: "generic" | "deepseek"; + /** @enum {string} */ + reasoning_effort?: "" | "none" | "low" | "medium" | "high" | "xhigh" | "max"; /** @default false */ use_platform?: boolean; }; @@ -672,6 +676,8 @@ export interface paths { * @enum {string} */ compatibility?: "generic" | "deepseek"; + /** @enum {string} */ + reasoning_effort?: "" | "none" | "low" | "medium" | "high" | "xhigh" | "max"; /** @default false */ use_platform?: boolean; }; diff --git a/frontend/src/pages/Settings.jsx b/frontend/src/pages/Settings.jsx index 7ba233e..26de9ae 100644 --- a/frontend/src/pages/Settings.jsx +++ b/frontend/src/pages/Settings.jsx @@ -66,11 +66,51 @@ const LLM_SOURCE_OPTIONS = [ }, ]; +// 连接测试行仅渲染状态并转交点击事件;禁用原因非空时禁止发起测试。 +// +// The connection test row only renders state and forwards click events; a non-empty disabled hint prevents testing. +function ConnectionTestRow({ test, onTest, disabledHint = "" }) { + return ( +
+ + {test?.status === "ok" ? ( + + 连接正常 + + ) : test?.status === "fail" ? ( + + {test.error || "连接失败"} + + ) : test?.status === "testing" ? null : ( + + {disabledHint || "用当前填写的配置发一个最小请求,验证是否可用"} + + )} +
+ ); +} + export default function Settings() { const [apiBase, setApiBase] = useState(""); const [apiKey, setApiKey] = useState(""); const [model, setModel] = useState(""); const [compatibility, setCompatibility] = useState("generic"); + const [reasoningEffort, setReasoningEffort] = useState(""); const [temperature, setTemperature] = useState(0.7); // key 来源:部署方是否提供共享 key,以及用户是否显式选它 const [platformLlm, setPlatformLlm] = useState(false); @@ -81,6 +121,7 @@ export default function Settings() { // 连接测试结果:null | { status: "testing" | "ok" | "fail", error? } const [llmTest, setLlmTest] = useState(null); + const llmTestVersion = useRef(0); const [embTest, setEmbTest] = useState(null); // Embedding 配置(每用户,hot-reload;空字段继承全局默认) @@ -165,6 +206,7 @@ export default function Settings() { setApiKey(data.llm.api_key || ""); setModel(data.llm.model || ""); setCompatibility(data.llm.compatibility || "generic"); + setReasoningEffort(data.llm.reasoning_effort || ""); setTemperature(data.llm.temperature ?? 0.7); setPlatformLlm(Boolean(data.platform?.llm)); setUsePlatform(data.source === "platform"); @@ -196,6 +238,7 @@ export default function Settings() { }, []); useEffect(() => () => { + llmTestVersion.current += 1; if (scrollSpyUnlockTimer.current != null) { window.clearTimeout(scrollSpyUnlockTimer.current); } @@ -327,12 +370,23 @@ export default function Settings() { } }; + // 连接配置变化或卸载会使旧版本失效;不能只清空界面,否则迟到的成功或失败仍会覆盖当前测试。 + // + // Connection changes or unmount invalidate older versions; clearing the UI alone would let late success or failure overwrite the current test. + const invalidateLlmTest = () => { + llmTestVersion.current += 1; + setLlmTest(null); + }; + const handleTestLLM = async () => { + const version = ++llmTestVersion.current; setLlmTest({ status: "testing" }); try { - const r = await testLLMConnection({ api_base: apiBase, api_key: apiKey, model, compatibility }); + const r = await testLLMConnection({ api_base: apiBase, api_key: apiKey, model, compatibility, reasoning_effort: reasoningEffort }); + if (llmTestVersion.current !== version) return; setLlmTest(r.ok ? { status: "ok" } : { status: "fail", error: r.error }); } catch (err) { + if (llmTestVersion.current !== version) return; setLlmTest({ status: "fail", error: err.message }); } }; @@ -362,13 +416,14 @@ export default function Settings() { // 选了平台就把自己的那一片停掉:不只是看着灰,而是真的填不进去—— // 禁用的输入框浏览器也不会往里自动填。 const ownLlmDisabled = llmSource === "platform"; + const temperatureDisabled = compatibility === "generic" && reasoningEffort !== "" && reasoningEffort !== "none"; const handleSave = async () => { setSaving(true); setError(""); try { const res = await updateSettings({ - llm: { api_base: apiBase, api_key: apiKey, model, compatibility, temperature, use_platform: usePlatform }, + llm: { api_base: apiBase, api_key: apiKey, model, compatibility, reasoning_effort: reasoningEffort, temperature, use_platform: usePlatform }, embedding: { backend: embBackend, api_base: embApiBase, @@ -440,42 +495,6 @@ export default function Settings() { const labelClass = "text-[11px] font-semibold uppercase tracking-[0.18em] text-dim/80"; const inputClass = "h-12 rounded-2xl bg-card/90"; - // 「测试连接」按钮 + 结果,LLM / Embedding 两处复用 - // disabledHint 非空即代表按钮不可用,内容就是不可用的原因 - const renderTestRow = (test, onTest, disabledHint = "") => ( -
- - {test?.status === "ok" ? ( - - 连接正常 - - ) : test?.status === "fail" ? ( - - {test.error || "连接失败"} - - ) : test?.status === "testing" ? null : ( - - {disabledHint || "用当前填写的配置发一个最小请求,验证是否可用"} - - )} -
- ); - const TABS = [ { id: "llm", label: "LLM 服务", icon: Server }, { id: "embedding", label: "Embedding", icon: Boxes }, @@ -549,7 +568,10 @@ export default function Settings() {