mirror of
https://github.com/zhayujie/chatgpt-on-wechat.git
synced 2026-06-02 00:57:41 +08:00
fix: thinking display is disabled by default
This commit is contained in:
@@ -206,7 +206,7 @@ cow install-browser
|
|||||||
"agent_max_context_tokens": 50000, # Agent 模式下最大上下文 tokens,超出将自动智能压缩处理
|
"agent_max_context_tokens": 50000, # Agent 模式下最大上下文 tokens,超出将自动智能压缩处理
|
||||||
"agent_max_context_turns": 20, # Agent 模式下最大上下文记忆轮次,一问一答为一轮,超出后智能压缩处理
|
"agent_max_context_turns": 20, # Agent 模式下最大上下文记忆轮次,一问一答为一轮,超出后智能压缩处理
|
||||||
"agent_max_steps": 20, # Agent 模式下单次任务的最大决策步数,超出后将停止继续调用工具
|
"agent_max_steps": 20, # Agent 模式下单次任务的最大决策步数,超出后将停止继续调用工具
|
||||||
"enable_thinking": true # 是否启用深度思考,开启后 Web 端展示模型推理过程,关闭后可加速响应
|
"enable_thinking": false # 是否启用深度思考,开启后 Web 端展示模型推理过程,关闭后可加速响应
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -81,20 +81,26 @@ class AgentStreamExecutor:
|
|||||||
def _is_thinking_enabled(self) -> bool:
|
def _is_thinking_enabled(self) -> bool:
|
||||||
from config import conf
|
from config import conf
|
||||||
channel_type = getattr(self.model, 'channel_type', '') or ''
|
channel_type = getattr(self.model, 'channel_type', '') or ''
|
||||||
return conf().get("enable_thinking", True) and channel_type == 'web'
|
return conf().get("enable_thinking", False) and channel_type == 'web'
|
||||||
|
|
||||||
def _filter_think_tags(self, text: str) -> str:
|
def _filter_think_tags(self, text: str) -> str:
|
||||||
"""
|
"""
|
||||||
Remove <think> and </think> tags but keep the content inside.
|
Handle <think>...</think> blocks in content returned by some LLM providers
|
||||||
Some LLM providers (e.g., MiniMax) may return thinking process wrapped in <think> tags.
|
(e.g., MiniMax).
|
||||||
We only remove the tags themselves, keeping the actual thinking content.
|
|
||||||
|
- When thinking is enabled: remove the tags but keep the content inside.
|
||||||
|
- When thinking is disabled: remove both the tags and the content entirely.
|
||||||
"""
|
"""
|
||||||
if not text:
|
if not text:
|
||||||
return text
|
return text
|
||||||
import re
|
import re
|
||||||
# Remove only the <think> and </think> tags, keep the content
|
if self._is_thinking_enabled():
|
||||||
text = re.sub(r'<think>', '', text)
|
text = re.sub(r'<think>', '', text)
|
||||||
text = re.sub(r'</think>', '', text)
|
text = re.sub(r'</think>', '', text)
|
||||||
|
else:
|
||||||
|
text = re.sub(r'<think>[\s\S]*?</think>', '', text)
|
||||||
|
# Also strip unclosed <think> tag at the end (streaming partial)
|
||||||
|
text = re.sub(r'<think>[\s\S]*$', '', text)
|
||||||
return text
|
return text
|
||||||
|
|
||||||
def _hash_args(self, args: dict) -> str:
|
def _hash_args(self, args: dict) -> str:
|
||||||
|
|||||||
@@ -169,7 +169,7 @@ class AgentLLMModel(LLMModel):
|
|||||||
|
|
||||||
# Determine thinking: respect global config, then channel_type
|
# Determine thinking: respect global config, then channel_type
|
||||||
from config import conf
|
from config import conf
|
||||||
global_thinking = conf().get("enable_thinking", True)
|
global_thinking = conf().get("enable_thinking", False)
|
||||||
if not global_thinking:
|
if not global_thinking:
|
||||||
kwargs['thinking'] = {"type": "disabled"}
|
kwargs['thinking'] = {"type": "disabled"}
|
||||||
else:
|
else:
|
||||||
@@ -222,7 +222,7 @@ class AgentLLMModel(LLMModel):
|
|||||||
|
|
||||||
# Determine thinking: respect global config, then channel_type
|
# Determine thinking: respect global config, then channel_type
|
||||||
from config import conf
|
from config import conf
|
||||||
global_thinking = conf().get("enable_thinking", True)
|
global_thinking = conf().get("enable_thinking", False)
|
||||||
if not global_thinking:
|
if not global_thinking:
|
||||||
kwargs['thinking'] = {"type": "disabled"}
|
kwargs['thinking'] = {"type": "disabled"}
|
||||||
else:
|
else:
|
||||||
|
|||||||
@@ -552,7 +552,7 @@
|
|||||||
<span class="cfg-tip" data-tip-key="config_enable_thinking_hint"><i class="fas fa-circle-question"></i></span>
|
<span class="cfg-tip" data-tip-key="config_enable_thinking_hint"><i class="fas fa-circle-question"></i></span>
|
||||||
</label>
|
</label>
|
||||||
<label class="relative inline-flex items-center cursor-pointer">
|
<label class="relative inline-flex items-center cursor-pointer">
|
||||||
<input id="cfg-enable-thinking" type="checkbox" class="sr-only peer" checked>
|
<input id="cfg-enable-thinking" type="checkbox" class="sr-only peer">
|
||||||
<div class="w-9 h-5 bg-slate-200 dark:bg-slate-700 peer-checked:bg-primary-400 rounded-full
|
<div class="w-9 h-5 bg-slate-200 dark:bg-slate-700 peer-checked:bg-primary-400 rounded-full
|
||||||
after:content-[''] after:absolute after:top-[2px] after:left-[2px] after:bg-white
|
after:content-[''] after:absolute after:top-[2px] after:left-[2px] after:bg-white
|
||||||
after:rounded-full after:h-4 after:w-4 after:transition-all peer-checked:after:translate-x-full"></div>
|
after:rounded-full after:h-4 after:w-4 after:transition-all peer-checked:after:translate-x-full"></div>
|
||||||
|
|||||||
@@ -2116,7 +2116,7 @@ function initConfigView(data) {
|
|||||||
document.getElementById('cfg-max-tokens').value = data.agent_max_context_tokens || 50000;
|
document.getElementById('cfg-max-tokens').value = data.agent_max_context_tokens || 50000;
|
||||||
document.getElementById('cfg-max-turns').value = data.agent_max_context_turns || 20;
|
document.getElementById('cfg-max-turns').value = data.agent_max_context_turns || 20;
|
||||||
document.getElementById('cfg-max-steps').value = data.agent_max_steps || 20;
|
document.getElementById('cfg-max-steps').value = data.agent_max_steps || 20;
|
||||||
document.getElementById('cfg-enable-thinking').checked = data.enable_thinking !== false;
|
document.getElementById('cfg-enable-thinking').checked = data.enable_thinking === true;
|
||||||
|
|
||||||
const pwdInput = document.getElementById('cfg-password');
|
const pwdInput = document.getElementById('cfg-password');
|
||||||
const maskedPwd = data.web_password_masked || '';
|
const maskedPwd = data.web_password_masked || '';
|
||||||
|
|||||||
@@ -712,7 +712,7 @@ class ChatHandler:
|
|||||||
class ConfigHandler:
|
class ConfigHandler:
|
||||||
|
|
||||||
_RECOMMENDED_MODELS = [
|
_RECOMMENDED_MODELS = [
|
||||||
const.MINIMAX_M2_7, const.MINIMAX_M2_5, const.MINIMAX_M2_1, const.MINIMAX_M2_1_LIGHTNING,
|
const.MINIMAX_M2_7_HIGHSPEED, const.MINIMAX_M2_7, const.MINIMAX_M2_5, const.MINIMAX_M2_1, const.MINIMAX_M2_1_LIGHTNING,
|
||||||
const.GLM_5_TURBO, const.GLM_5, const.GLM_4_7,
|
const.GLM_5_TURBO, const.GLM_5, const.GLM_4_7,
|
||||||
const.QWEN36_PLUS, const.QWEN35_PLUS, const.QWEN3_MAX,
|
const.QWEN36_PLUS, const.QWEN35_PLUS, const.QWEN3_MAX,
|
||||||
const.KIMI_K2_5, const.KIMI_K2,
|
const.KIMI_K2_5, const.KIMI_K2,
|
||||||
@@ -871,7 +871,7 @@ class ConfigHandler:
|
|||||||
"agent_max_context_tokens": local_config.get("agent_max_context_tokens", 50000),
|
"agent_max_context_tokens": local_config.get("agent_max_context_tokens", 50000),
|
||||||
"agent_max_context_turns": local_config.get("agent_max_context_turns", 20),
|
"agent_max_context_turns": local_config.get("agent_max_context_turns", 20),
|
||||||
"agent_max_steps": local_config.get("agent_max_steps", 20),
|
"agent_max_steps": local_config.get("agent_max_steps", 20),
|
||||||
"enable_thinking": bool(local_config.get("enable_thinking", True)),
|
"enable_thinking": bool(local_config.get("enable_thinking", False)),
|
||||||
"api_bases": api_bases,
|
"api_bases": api_bases,
|
||||||
"api_keys": api_keys_masked,
|
"api_keys": api_keys_masked,
|
||||||
"providers": providers,
|
"providers": providers,
|
||||||
|
|||||||
@@ -204,7 +204,7 @@ available_setting = {
|
|||||||
"agent_max_context_tokens": 50000, # Agent模式下最大上下文tokens
|
"agent_max_context_tokens": 50000, # Agent模式下最大上下文tokens
|
||||||
"agent_max_context_turns": 20, # Agent模式下最大上下文记忆轮次
|
"agent_max_context_turns": 20, # Agent模式下最大上下文记忆轮次
|
||||||
"agent_max_steps": 20, # Agent模式下单次运行最大决策步数
|
"agent_max_steps": 20, # Agent模式下单次运行最大决策步数
|
||||||
"enable_thinking": True, # Whether to enable deep thinking for web channel
|
"enable_thinking": False, # Whether to enable deep thinking for web channel
|
||||||
"knowledge": True, # 是否开启知识库功能
|
"knowledge": True, # 是否开启知识库功能
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ Web 控制台是 CowAgent 的默认通道,启动后会自动运行,通过浏
|
|||||||
"channel_type": "web",
|
"channel_type": "web",
|
||||||
"web_port": 9899,
|
"web_port": 9899,
|
||||||
"web_password": "",
|
"web_password": "",
|
||||||
"enable_thinking": true
|
"enable_thinking": false
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -22,7 +22,7 @@ Web 控制台是 CowAgent 的默认通道,启动后会自动运行,通过浏
|
|||||||
| `web_port` | Web 服务监听端口 | `9899` |
|
| `web_port` | Web 服务监听端口 | `9899` |
|
||||||
| `web_password` | 访问密码,留空表示不启用密码保护 | `""` |
|
| `web_password` | 访问密码,留空表示不启用密码保护 | `""` |
|
||||||
| `web_session_expire_days` | 登录会话有效天数 | `30` |
|
| `web_session_expire_days` | 登录会话有效天数 | `30` |
|
||||||
| `enable_thinking` | 是否启用深度思考,开启后 Web 端展示推理过程,关闭可加速响应 | `true` |
|
| `enable_thinking` | 是否启用深度思考,开启后 Web 端展示推理过程,关闭可加速响应 | `false` |
|
||||||
|
|
||||||
配置密码后,访问控制台时需先输入密码完成登录。登录状态默认保持 30 天,期间重启服务也无需重新登录。密码也支持在控制台的「配置」页面中在线修改。
|
配置密码后,访问控制台时需先输入密码完成登录。登录状态默认保持 30 天,期间重启服务也无需重新登录。密码也支持在控制台的「配置」页面中在线修改。
|
||||||
|
|
||||||
|
|||||||
@@ -70,7 +70,7 @@ Agent 的工作空间默认位于 `~/cow` 目录,用于存储系统提示词
|
|||||||
"agent_max_context_tokens": 40000,
|
"agent_max_context_tokens": 40000,
|
||||||
"agent_max_context_turns": 30,
|
"agent_max_context_turns": 30,
|
||||||
"agent_max_steps": 15,
|
"agent_max_steps": 15,
|
||||||
"enable_thinking": true
|
"enable_thinking": false
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -81,5 +81,5 @@ Agent 的工作空间默认位于 `~/cow` 目录,用于存储系统提示词
|
|||||||
| `agent_max_context_tokens` | 最大上下文 token 数 | `50000` |
|
| `agent_max_context_tokens` | 最大上下文 token 数 | `50000` |
|
||||||
| `agent_max_context_turns` | 最大上下文记忆轮次 | `20` |
|
| `agent_max_context_turns` | 最大上下文记忆轮次 | `20` |
|
||||||
| `agent_max_steps` | 单次任务最大决策步数 | `20` |
|
| `agent_max_steps` | 单次任务最大决策步数 | `20` |
|
||||||
| `enable_thinking` | 是否启用深度思考,开启后 Web 端展示推理过程,关闭可加速响应 | `true` |
|
| `enable_thinking` | 是否启用深度思考,开启后 Web 端展示推理过程,关闭可加速响应 | `false` |
|
||||||
| `knowledge` | 是否启用个人知识库 | `true` |
|
| `knowledge` | 是否启用个人知识库 | `true` |
|
||||||
|
|||||||
Reference in New Issue
Block a user