偏好
同一对起终点,换权重会得到不同的走法
选好城市,填两个站名,就能看到多条走法
没有思路的话,先点下面任意一条试试。
说明我是地铁出行小助手
我只回答资料里有的内容:六个城市的地铁线路与车站、票价与换乘常识,以及 Token / 上下文 / Prompt / RAG 这些概念。
资料里没有的(比如今天的末班车时刻、临时封站),我会直接说不知道——这不是偷懒,是这条小助手的底线。
知识库
这就是“喂给助手的那份资料”。点开任意一张卡片可以看全文。
拆字:文本 → token
模型看的不是字,是 token。这里用一个小型演示分词器,把切分过程摊开给你看。
这不是真的 Tokenizer。真正的分词器背后是几十万条的词表,靠 BPE 一类算法把高频片段合并成 token; 不同模型的词表不同,同一句话切出来的块数也不同。所以这里的数字只能用来“看见过程”,不能用来算钱。
三个常被问住的问题
- “我爱学习”和“I love learning”,哪个 token 多?
- 不一定,要看词表。中文常见字大多一个字就是一个 token,英文单词常被拆成词根 + 词缀(learning → learn + ing), 所以同样意思的一句话,两边块数常常差不多,但计费不能只看字数。
- 一个 emoji 算几个 token?
- 看模型。有的模型把它当 1 个 token,有的按 UTF-8 字节拆成好几个。演示器里只把它当 1 块,这是简化。
- 生僻字“龘”会被拆成几个?
- 如果它不在词表里,就会退回到更小的单位(字符甚至字节),可能变成 2–3 个 token。生僻字更贵,这不是错觉。
概念地图
十一个概念,按“输入 → 记忆 → 控制 → 知识 → 模型”串成一条线。点卡片展开。
关于这个小助手
一句话介绍、喂了什么资料、规矩是怎么定的。
一句话介绍
我喂给它的资料
System Prompt(人设与规矩)
这段文字决定了它“是谁、能说什么、不能说什么”。纯静态版没有调用大模型, 但它以同样的方式起作用:把规矩写死,程序照着执行。
User Prompt 模板(提问时喂给模型的格式)
路线区的每一次提问,都可以拼成这样一个“资料 + 问题 + 要求”的包。
它的三条底线
- 只在资料范围内回答。检索分数低于阈值就直接说“资料里没有”,不让程序编。
- 区分估算与官方。时间、票价都标“约”,并说明是按什么规则估的。
- 不碰实时信息。首末班车、封站、拥挤度一律不给,只给核实渠道。
怎么运行
- 双击
public/index.html就能用:不联网、不装环境、不监听端口。 - 部署:
npm install→npm start,服务只负责把这份静态文件发出去,监听PORT(默认 3000)与0.0.0.0。 - 不需要数据库、Redis、Docker、Nginx,也不需要任何 API Key。
数据边界
隐私:这个页面不发任何网络请求,最近的查询只存在你自己浏览器的 localStorage 里,最多 8 条,可以随时清空。