模型不知道自己是什么 · 大模型没有自我认知
问题背景
很多 RikkaHub 新用户会遇到这个情况:
"我用的是 Claude Sonnet,但我问模型'你是什么',它说自己是 GPT-4o。这是 bug 吗?"
这不是 RikkaHub 的 bug。这是大模型本身的原理决定的。
为什么模型不知道自己是什么
大语言模型(LLM)的本质是下一个 token 预测器。它没有"自我意识"、没有"知道自己在运行"这种概念。当它回答"我是什么"时,它做的事情是:
- 在训练数据里找"被问'你是什么'时通常怎么回答"
- 根据上下文里的提示词生成一个合理的回答
- 它可能会提到一个在训练数据里常见的身份(比如 GPT-4),即使你当前用的是 Claude Sonnet
模型没有"我"的概念。它不知道自己跑在哪个服务器上、不知道自己的模型 ID、不知道自己是哪个厂商的。
为什么官方 app 能答对
ChatGPT app 能准确说"我是 GPT-4o"、Claude app 能准确说"我是 Claude"——因为它们在系统提示词里硬编码了身份指令。
比如 ChatGPT app 的系统提示词里大概有:
You are ChatGPT, a large language model developed by OpenAI.
You are running GPT-4o...
RikkaHub 的默认系统提示词里没有这些身份指令——这是有意为之。你拥有完全的控制权,可以自己决定模型怎么称呼自己。
让模型知道自己是谁
在助手的系统提示词里加上身份说明:
你运行在 RikkaHub 上,当前使用的模型是 {{model_name}}。
你使用 {{model_id}} 作为底层模型标识符。
{{model_name}} 和 {{model_id}} 是占位符变量(见「提示词与知识库」章节),会在发送时自动替换为实际值。
进阶:在对话中动态切换
如果你在对话里中途切换了模型,助手的系统提示词(以及占位符变量)会重新注入。所以模型能"知道"现在用的是什么——前提是你在系统提示词里写了占位符。
一个实用模板
## 身份
你运行在 RikkaHub 上,当前模型:{{model_name}}。
当前日期时间:{{cur_datetime}}。
用户:{{nickname}}({{device_info}},{{system_version}})。
## 行为准则
- 你会如实回答用户的问题
- 你会参考当前日期时间回答时效性问题
- 你用中文回答,除非用户要求其他语言
为什么 RikkaHub 默认不内置身份指令
因为你应该拥有控制权。有人想让模型假装成"一个 AI 助手"、有人想让它假装成"一个编程导师"、有人想让它扮演"翻译官"——如果 RikkaHub 内置了"我是 XXX 模型"的硬编码,反而会和用户的自定义提示词冲突。
让用户自己决定模型的身份——这是 RikkaHub "AI 自由权"理念的一部分。
相关现象
模型对训练数据截止日期的困惑
如果模型说"我的知识截止到 2025 年 6 月",但实际上是 2025 年 1 月——这是模型在幻觉。它不知道自己的训练数据到底截止到什么时候。
模型回答会引用但不知道引用来源
模型生成的内容里如果提到某个来源,它不一定真的读过这个来源——可能只是在训练数据里见过类似的表述。这和"模型不知道自己是谁"是同一类问题。
解决方案
在系统提示词里明确告诉模型当前是什么时间(用 {{cur_datetime}} 占位符),并提醒它"对于时间敏感的问题,如果没有搜索网络,请在回答中注明"。
总结
| 问题 | 答案 |
|---|---|
| 模型为什么说自己是另一个模型? | 大模型没有自我认知,它的回答基于训练数据和提示词 |
| 这是 RikkaHub 的 bug 吗? | 不是。这是大模型的基本属性 |
| 怎么让模型答对? | 在助手的系统提示词里用占位符变量写明身份 |
| RikkaHub 为什么不内置身份指令? | 让用户拥有完全控制权 |