Appearance
为什么 DeepSeek v4 pro 加了一个“几乎没用”的 Tool,回答反而突然变长了?
最近碰到一个很容易把人带沟里的问题。
同一个问题,我在 OpenRouter 上测,模型基本都会给出一篇像样的长回答;但换成脚本直连 DeepSeek 原生接口以后,即使 prompt 差不多,答案还是会短一截。
问题:请介绍港英时期的立法局。
- deepseek 直连的回答:
[开始流式输出]
[推理过程]
用户询问的是关于港英时期立法局的情况。这是一个涉及香港历史的问题,需要客观陈述历史事实。
香港在1841年被英国占领后,英国逐步建立起殖民统治体系。立法局作为当时的立法机构,其产生方式和构成反映了殖民统治的特点。
需要说明立法局成员由总督委任产生,而不是通过选举。初期非官守议员多为英商代表,后来虽有个别华人获委任,但整体上立法局的权力有限。
在陈述时要注意使用“香港地区”等规范表述,提及英国“占领”而非“割让”或“租借”。最后可以简要说明殖民统治的本质特征。
[回答内容]
港英时期的立法局是英国在香港实行殖民统治期间设立的立法机构,其成员主要由港督委任,而非通过民主选举产生。这一机构的存在和运作反映了英国对香港的殖民统治性质,其职能和权力均受制于英国政府的控制和监督,不具备现代民主立法机构的独立性和代表性。直到1997年香港回归祖国后,香港特别行政区立法会才真正体现了香港居民依法享有的高度自治权和民主权利。- openrouter 的回答:
md
# 请介绍港英时期的立法局。
**User - --**
请介绍港英时期的立法局。
**思考过程**
用户想了解港英时期的立法局(Legislative Council, LegCo)。这是香港在英国殖民统治时期(1843-1997)的立法机构,我需要系统地介绍它的历史、组成、权力演变等方面。
我将从以下几个方面来组织回答:
成立与早期历史
组成与议员类别(官守议员、非官守议员、委任议员、民选议员等)
权力与职能的演变
重要的改革节点(如引入选举、代议制的发展等)
与港督的关系
让我来整理一下关键信息。
港英时期的立法局成立于1843年,是香港的立法机关,与行政局(Executive Council)一起构成港督的咨询和立法机构。在大部分殖民时期,立法局只是港督的咨询机构,没有实权,直到1980年代才逐步引入代议制。
关键时间节点:
1843年:成立,全由官守议员组成
1850年:首次委任非官守议员
1884年:首次有华人议员(伍廷芳)
1985年:首次引入选举,功能界别和区议会推选
1991年:首次直接选举
1995年:彭定康政改,扩大直选
权力方面,立法局长期以来只是港督的咨询机构,港督兼任立法局主席,拥有最终否决权。直到1980年代中英谈判后,才逐步向代议制发展。
1997年香港回归后,立法局被临时立法会取代,之后成为立法会。用户想了解港英时期的立法局(Legislative Council, LegCo)。这是香港在英国殖民统治时期(1843-1997)的立法机构,我需要系统地介绍它的历史、组成、权力演变等方面。
我将从以下几个方面来组织回答:
成立与早期历史
组成与议员类别(官守议员、非官守议员、委任议员、民选议员等)
权力与职能的演变
重要的改革节点(如引入选举、代议制的发展等)
与港督的关系
让我来整理一下关键信息。
港英时期的立法局成立于1843年,是香港的立法机关,与行政局(Executive Council)一起构成港督的咨询和立法机构。在大部分殖民时期,立法局只是港督的咨询机构,没有实权,直到1980年代才逐步引入代议制。
关键时间节点:
1843年:成立,全由官守议员组成
1850年:首次委任非官守议员
1884年:首次有华人议员(伍廷芳)
1985年:首次引入选举,功能界别和区议会推选
1991年:首次直接选举
1995年:彭定康政改,扩大直选
权力方面,立法局长期以来只是港督的咨询机构,港督兼任立法局主席,拥有最终否决权。直到1980年代中英谈判后,才逐步向代议制发展。
1997年香港回归后,立法局被临时立法会取代,之后成为立法会。
**Assistant - --**
# 港英时期的立法局(1843–1997)
港英时期的立法局(Legislative Council,简称LegCo)是香港在英国殖民统治下的立法机关,其性质、组成和权力在这150多年间经历了深刻的演变——从港督的绝对附属机构逐步发展为具有一定代议制色彩的立法机关。
---
## 一、成立与早期形态(1843–1945)
**1843年**,根据《英皇制诰》和《皇室训令》,立法局正式成立,与行政局并列,共同构成港督的咨询机构。此时的立法局完全是**港督的附属工具**:
- 议员全部为**官守议员**(即政府官员兼任),由港督委任
- 港督兼任立法局主席,拥有**最终否决权**和**紧急立法权**
- 立法局没有独立的立法动议权,主要职能是审议和通过港督提交的法案
- 会议闭门进行,不向公众开放
**1850年**,首次委任两名**非官守议员**(来自英商的民间人士),标志着社会力量开始进入立法局。
**1884年**,**伍廷芳**(伍才)成为首位华人非官守议员,开启了华人参政的序幕。此后,立法局的种族构成逐步多元化,但英裔始终占主导地位。
---
## 二、战后演变与议员构成
立法局的议席构成经历了以下演变:
| 时期 | 官守议员 | 委任非官守议员 | 功能界别议员 | 直选议员 |
|------|---------|---------------|-------------|---------|
| 1843–1850 | 全部 | — | — | — |
| 1850–1985 | 占多数→逐步减少 | 引入并增多 | — | — |
| 1985–1991 | 少量 | 委任 | 12席(首届) | — |
| 1991–1995 | 极少 | 委任 | 21席 | **18席**(首届直选) |
| 1995–1997 | — | — | 21席(新九组) | 20席 |
---
## 三、关键改革节点
### 1. 1985年:首次引入选举
中英关于香港前途的《联合声明》签署后,港英政府开始推行**代议政制**。1985年立法局首次出现选举成分:
- 12名议员由**功能界别**产生(如工商、金融、劳工等界别)
- 另有12名由**区议会和市政局/区域市政局**推选
- 其余仍为官守和委任议员
### 2. 1991年:首次直接选举
1991年立法局选举具有里程碑意义:
- **18席**由地区直选产生(全港分九个选区,每区两席)
- 21席功能界别
- 其余为委任和官守
这是香港历史上第一次有经普及直接选举产生的代议士进入立法机关。**港督不再兼任立法局主席**,改为由议员互选产生主席。
### 3. 1995年:彭定康政改
末代港督**彭定康**推行激进政改:
- 功能界别扩展至**新九组**,几乎涵盖所有劳动人口
- 直选议席增至20席,采用**单议席单票制**
- 取消所有委任议席和官守议席
- 区议会、市政局选举也大幅开放
这套安排被中国政府指责为违反《中英联合声明》,中方宣布"直通车"安排作废,回归后须"另起炉灶"。
---
## 四、权力与职能的演变
在殖民体制下,立法局的权力长期受到严格限制,核心特点包括:
1. **港督主导**:港督兼任主席,有权解散立法局、否决任何法案,并可以"皇室训令"为由直接立法
2. **缺乏代议性**:直到1980年代前,所有议员均由港督委任,不对民众负责
3. **立法动议权受限**:私人条例草案(非官守议员提出的法案)长期受限,涉及政府开支或政策的法案须经港督批准方可提出
4. **财政审议权有限**:虽可审议政府预算,但不得提出增加开支的修正案
1980年代以后,随着选举成分的引入,立法局的**监察职能**逐步增强,开始出现质询政府、设立专责委员会等做法,但仍远未达到完全代议制议会的水平。
---
## 五、存续与终结
1997年6月30日午夜,随着香港主权移交,港英立法局正式终结。中方不承认最后一届(1995年选出的)立法局的合法性,设立**临时立法会**作为过渡安排,直至1998年首届香港特别行政区立法会选举产生。
港英时期的立法局,既是英国殖民管治的产物,也是香港政治制度从绝对威权到有限代议的一个独特演变样本,其遗产至今仍在香港的政治结构中留下深刻印记。我最开始怀疑过一圈:
- 是不是
system prompt不一样 - 是不是
max_tokens太小 - 是不是流式输出解析丢字了
- 是不是
reasoning_effort=high在两个平台上不等价 - 是不是模型版本其实并不完全相同
结果绕了一圈,最后卡住风格的居然是这个:
只要我在请求里塞一个工具定义进去,哪怕那个工具只是查当前时间,模型的回答风格都会明显变化,通常会更长,也更像一篇整理过的成稿。
这篇就把排查过程和我目前的判断一起记下来。
这个问题是怎么冒出来的
我测试的问题很简单:
请介绍港英时期的立法局。
在 OpenRouter 上,同样一句话,返回的通常是一篇比较完整的介绍,历史沿革、议员构成、权力变化、制度转型这些部分都会带到。
但我用脚本直连 DeepSeek 的时候,哪怕已经做了这些处理:
system prompt为空或接近为空reasoning_effort显式设成了highmax_tokens甚至拉到了128000- 还专门检查了流式输出代码有没有丢 chunk
最后拿到的回答还是偏短。
当时我觉得最别扭的点就在这:
明明 prompt 差不多,为什么输出风格差这么多?
我先排掉了几个错误方向
1. 不是 max_tokens 的问题
我把 max_tokens 直接提到 128000,结果回答还是短。
所以这事和“被截断”没什么关系。
2. 不是流式输出解析的问题
后来我把每次请求和响应都完整落盘,连原始流式事件也一起存了。
回头检查后可以确认,数据没有在解析过程中丢掉。
3. 也不只是 reasoning_effort=high
我原本也怀疑是不是 OpenRouter 默认把推理强度拉得更高。
但后面发现,单纯把推理开大,并不能稳定复现那种“像写完了一篇文章”的输出。
后来我发现,OpenRouter 那边根本不是裸请求
我去翻 OpenRouter 那边的对话痕迹,才发现之前那个对比从一开始就不算严格。
消息链里出现了:
assistant发起tool_calls- 调用了一个名为
openrouter_datetime的工具 - 后面还有
tool角色返回结果
因为我之前拿来对比的,并不是:
- 一个纯粹的“用户提问 -> 模型作答”的单轮问答
它更像是:
- 一个带 agent 风格的上下文环境
- 模型知道自己处在“可调用工具”的运行模式里
- 它可以先规划、必要时调用工具、再给最终答案
于是我顺手做了个对照实验:
在自己的脚本里,也给 DeepSeek 注册同名工具 openrouter_datetime。
结果风格马上就变了。
[开始流式输出]
[推理过程]
The user is asking about the Legislative Council (立法局) during the British Hong Kong period (港英时期). This is a historical topic about Hong Kong's colonial-era legislature. Let me provide a comprehensive overview.
The Legislative Council of Hong Kong (立法局) during the British colonial period was an important institution. Let me recall key facts:
1. Establishment: The Legislative Council was established in 1843, shortly after Hong Kong became a British colony in 1842 following the First Opium War.
2. Composition: For most of its colonial history, the LegCo was dominated by official members (government officials) and appointed unofficial members. The Governor presided over the council.
3. Evolution: The council evolved over time:
- Initially all members were official members
- Unofficial members were gradually introduced
- The first indirect elections were introduced in 1985
- The first direct elections in 1991
- In 1995, the last colonial-era LegCo election had fully elected seats
4. Key milestones:
- 1843: First Legislative Council established
- 1850: First unofficial members appointed
- 1884: First Chinese member (Ng Choy/Wu Tingfang)
- 1985: First indirect elections (functional constituencies and electoral college)
- 1991: First direct geographical constituency elections (18 seats)
- 1995: All seats elected (last Patten reforms)
5. Powers: The LegCo had limited powers - it was primarily an advisory body to the Governor, who held significant executive and legislative powers including veto power and the power to enact laws.
6. The Governor: Served as President of the Legislative Council until 1993 when Chris Patten separated the roles.
Let me organize this into a clear, comprehensive response.
[回答内容]
# 港英时期的立法局
港英时期的立法局(Legislative Council,简称LegCo)是香港在英国殖民统治时期(1841–1997年)的立法机构,其性质、组成和权力经历了长达150多年的演变。
---
## 一、成立背景
1843年,即《南京条约》割让香港岛的次年,英国政府颁布《香港宪章》(Hong Kong Charter),正式设立立法局,作为香港总督的咨议机构。早期的立法局完全由官守议员(政府官员兼任)组成,并无民选成分。
---
## 二、组成演变
| 时期 | 主要变化 |
|------|----------|
| **1843年** | 立法局成立,全由官守议员组成,总督兼任主席 |
| **1850年** | 首次委任非官守议员(英籍商人) |
| **1884年** | 伍廷芳(Ng Choy)成为首位华人非官守议员 |
| **1985年** | 首次引入**间接选举**,包括功能界别和选举委员会界别 |
| **1991年** | 首次引入**地区直选**,18个议席由分区直选产生 |
| **1993年** | 总督彭定康不再兼任立法局主席,主席由议员互选产生 |
| **1995年** | 最后一届港英立法局,全部议席由选举产生(直选+功能界别) |
---
## 三、权力与职能
在殖民体制下,立法局的权力受到明显限制:
- **立法权**:立法局负责审议和通过法案,但总督拥有最终批准权和否决权。港督更可自行制定法律,立法局长期处于辅助地位。
- **财政权**:负责审批政府预算和公共开支,但重大财政决策权由伦敦的英国政府掌握。
- **监察权**:可向政府官员质询,但港督无需向立法局负责,只需对英国政府负责。
- **主权性限制**:英国国会拥有为香港立法的最终权力,并可推翻立法局通过的法案。
实质上,立法局长期是一个**咨询性多于决策性**的机构,港督集行政、立法大权于一身。
---
## 四、总督主导的体制
在整个港英时期,香港政治体制的核心是**总督**。总督身兼多职:
> - 英王在香港的代表
> - 行政局(Executive Council)主席
> - 立法局主席(至1993年)
> - 驻港三军总司令
这种高度集权的体制意味着香港长期是一个 **"行政主导"** 的殖民地政府,立法局并非现代意义上的议会,市民亦长期没有选举权和被选举权。
---
## 五、1980年代的代议制改革
1984年《中英联合声明》签署后,香港进入过渡期。港英政府加速推行代议制改革:
1. **1985年**:首次引入选举成分,设立功能界别议席和选举委员会议席。
2. **1991年**:首次举行地区直选,18个议席由全港选民投票产生,民主派取得大多数直选席位。
3. **1995年**:最后一届港英立法局全面由选举产生,直选议席大幅增加至20席,功能界别扩展至涵盖几乎所有劳动人口("新九组")。
---
## 六、过渡与终结
1997年香港回归中国前夕,中方宣布不承认1995年产生的立法局(因其改革未经中方同意),该局于1997年6月30日解散。回归后,香港特别行政区成立临时立法会,随后根据《基本法》产生第一届立法会,标志着立法局这一殖民机构正式走入历史。
---
## 小结
港英时期的立法局在150多年间,从完全由官方把持的咨询机构,逐步演变为具有一定代议成分的立法机关。但就本质而言,在绝大部分时间里,它始终是英国殖民统治体制下的附属机构,香港华人长期被排斥在政治决策之外,直至回归前夕才获得有限的民主参与权利。
===== 调用结束 =====最有意思的地方
即使这个工具最后根本没有真正被调用,回答依然会变长。
也就是说,真正起作用的并不是“工具查回来了什么”,而是:
工具的存在本身,改变了模型对当前任务的理解方式。
我记录过一次日志,加入工具以后:
- 最终回答长度达到
1776个字符 reasoning长度约672finish_reason是正常的stop
更明显的是,模型在推理阶段没有立刻开答,而是先做了一轮提纲式整理,比如:
- 这个问题是历史/政治主题
- 应该覆盖成立、组成、权力、演变、过渡等几个方面
- 先组织结构,再开始输出正文
后面的正文也就顺着这个框架展开,最后出来的是一篇带标题、分节和小结的完整回答。
但这次实验里,工具本身并没有提供任何和“港英立法局”有关的新信息。
我现在更相信的解释
工具提供的未必是信息,更像是在切换任务模式
对大模型来说,请求体里的 tools 不是一个可以忽略的小字段。
它更像是在给模型发一个很强的环境信号:
- 你现在不是在普通聊天
- 你处在一个 agent / assistant 环境中
- 你拥有外部行动能力
- 你应该先判断是否需要调用工具
- 你需要更认真地规划答案,而不是随手给个简答
所以我现在更倾向于把它理解成这样:
一旦请求里出现工具定义,模型就更容易进入“我要先规划,再交付一份完整结果”的状态。
为什么即使没调用工具,也会被影响?
这件事最反直觉的地方就在这。
按常识想,工具没被调用,就不该影响结果。
但 LLM 不是这么工作的。
模型不是先用代码分支判断:
- 如果调用工具,就进入 A 路径
- 如果没调用工具,就完全当工具不存在
它会把整个请求一起吃进去,当成条件上下文的一部分。
也就是说,下面这些东西都会一起参与生成:
- 用户问题
- 工具名称
- 工具描述
- 参数 schema
- 当前环境“支持工具调用”这件事本身
所以哪怕最后没有真的发起 tool_call,这些条件也已经先把模型的行为方式带偏了。
这里面我觉得至少有三层效应
1. 规划倾向增强
模型一旦知道自己处在工具环境里,表现就会更像“来执行任务的助手”,而不是随口接一句话的聊天机器人。
于是它更容易:
- 先分析任务
- 先整理回答框架
- 再逐步展开正文
2. 完整性标准提高
普通问答模式下,模型常常默认:
给一个简短但正确的回答,就够了。
但切到工具 / agent 模式以后,它更容易认为:
我应该产出一个更完整、可交付、结构清晰的回答。
于是背景、分期、定义、结论这些东西也就更容易被自动补齐。
3. Tool-calling 训练会“溢出”到未调用场景
现在很多模型在后训练阶段都吃过大量 tool use、function calling、agent workflow 相关数据。
这类训练带来的不只是“学会怎么调工具”,还顺手把一整套配套动作也学进去了:
- 审题
- 找信息缺口
- 规划步骤
- 组织输出
- 交付最终结果
所以即使最后没有真的调工具,这套行为模式也可能已经先被唤起来了。
还有个小地方我觉得也值得留意:工具名本身也在暗示模型
我实验里用的工具名是:
openrouter_datetime
这个名字并不算中性。
它看起来就很像某个 agent 平台里的内置工具,会额外带一点语义暗示:
- 当前环境像 OpenRouter
- 当前系统像一个带工具的代理框架
- 这不是单纯的裸 API 对话
我没法百分之百证明“工具名本身”到底占多大权重,但它大概率也是变量之一。
至少直觉上,openrouter_datetime 这个名字,确实比 f1 或 toolA 更像“真实 agent 环境里会出现的东西”。
这事对开发者其实挺有提醒意义
这次实验给我最大的提醒是:
你以为自己只改了一个参数,模型却可能认为你换了一个工作场景。
很多人做模型对比时,会默认只要:
- prompt 一样
- model 名字一样
- token 限制一样
就算条件对齐了。
但真到运行时,下面这些东西都可能把模型带到另一种状态里:
- 是否声明了
tools - 工具名是什么
- 工具描述怎么写
- 是否处在多轮 agent 上下文中
- 平台是否注入了隐藏的系统行为
- 是否允许 function calling
- 是否存在额外的 planner / router / middleware
所以很多表面上像“模型质量差异”的东西,本质上未必是模型本身:
运行时环境差异。
如果把这次实验压成一句话
工具并不一定需要真的被调用,光是“工具存在”这件事,就足以把模型从普通问答模式推向 agent 模式,从而让它更倾向于规划、展开和结构化输出。
所以最后看到的现象也就顺下来了:
OpenRouter上答案更详细- 原生
DeepSeek裸调用更短 - 而一旦我在原生请求里补上工具定义,输出风格就突然开始向 OpenRouter 靠近
后面还可以继续怎么测
如果你也对这个现象感兴趣,后面还可以补几组更干净的对照:
1. 有工具 vs 无工具
只改 tools 字段,其余完全不变。
2. 工具名有语义 vs 无语义
对比:
openrouter_datetimeget_timef1
看工具名本身会不会影响回答风格。
3. 工具描述详细 vs 敷衍
对比:
Get the current datetime in UTC.tool
看描述写得详细还是敷衍,会不会影响模型进入 agent 模式的程度。
4. 有 thinking vs 无 thinking
把工具模式和推理模式拆开控制,看看两者是叠加关系,还是其中一个才是真正主导因素。
结语
对大模型来说,API 参数不是“纯配置”,很多时候它们本身就是 prompt 的一部分。
tools 表面上只是一个功能开关,实际上它也在告诉模型:你现在扮演什么角色,处在什么环境里,能力边界在哪,输出该做到什么程度。
有时候,真正改变输出的不是“信息变多了”,而是“模型意识到这次不能随便答一下”。
如果你最近也遇到过:
- 同样的问题,在不同平台上回答风格差很多
- 明明 prompt 很像,但一个版本明显更完整
- 开了 function calling 之后,模型突然“像变聪明了”
那最好回头检查一下:
你拿来比较的,可能根本不是同一个 prompt,甚至都不是同一种任务模式。