rikkahub 中文文档 下载 App

模型不知道自己是什么 · 大模型没有自我认知

问题背景

很多 RikkaHub 新用户会遇到这个情况:

"我用的是 Claude Sonnet,但我问模型'你是什么',它说自己是 GPT-4o。这是 bug 吗?"

这不是 RikkaHub 的 bug。这是大模型本身的原理决定的。

为什么模型不知道自己是什么

大语言模型(LLM)的本质是下一个 token 预测器。它没有"自我意识"、没有"知道自己在运行"这种概念。当它回答"我是什么"时,它做的事情是:

  1. 在训练数据里找"被问'你是什么'时通常怎么回答"
  2. 根据上下文里的提示词生成一个合理的回答
  3. 它可能会提到一个在训练数据里常见的身份(比如 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 为什么不内置身份指令?让用户拥有完全控制权