AI 实验室上线那天,我收到一条反馈:
"我所说的可玩是针对 AI 开发者和爱好者来说的。"
一句话点醒我。我做的六个工具(题诗、起名、毒舌点评)是给"用户"的,不是给"开发者"的。
这两类人对"可玩"的定义根本不同:
| 普通用户 | 开发者 / AI 爱好者 | |
|---|---|---|
| 想要什么 | 结果 | 过程 |
| 打开页面后 | 输入 → 看输出 → 走 | 调参数 → 对比 → 找规律 |
| 觉得好玩的是 | "哇它能写诗" | "咦同样提示词换个 temperature 结果差这么多?为什么?" |
所以我把页面重做了一遍 —— 这次做观测台。
把那些平时藏在代码里的参数摆到台面上,都能实时拖:
temperature 0 ─────●──── 2 # 0=近乎确定,2=高度发散
max_tokens 16 ──●──── 4096 # 太小会把回答截断
reasoning_off [●] 关闭思考链 # 本页最有教育意义的开关
json_mode [ ] JSON 模式
model deepseek-flash / pro
mode single / compare # compare 自动跑两个模型
右边立刻显示结果,同时显示模型自己报的遥测:
model: deepseek-v4-flash 耗时: 735ms finish_reason: stop
prompt tokens: 9 completion: 21 total: 30
temp: 0.7 max_tokens: 800 思考链: 关
那些 usage 数字不是页面编的,是 API 响应里原样带回来的。
现代大模型(比如 DeepSeek 的推理模型)在正式回答前,会先生成一段 reasoning_content —— 也就是"思考过程"。这段内容默认不返回给用户,但 API 里有。
我把它做成了开关。打开后能直接看到模型在想什么。
实测同一道"狼羊白菜过河"题:
思考链关: 906ms 直接给答案
思考链开: 4676ms 先产出 1126 字推理,再给答案
五倍的耗时差距,就在这里。
更值得看的是我在测试时抓到的一个现场 —— 思考链开着、max_tokens 只给了 800 的情况下:
finish_reason: length ← 被截断了
completion: 800 tokens
思考链: 开
模型把 800 token 全花在思考上,正文一个字都没开始写就被截断了。
这正是我今天做 AI 实验室时踩的坑(当时表现为"部分工具永久返回空")。现在它成了页面上的一行自动警告:
⚠️ finish_reason = length:回答被 max_tokens 截断了。调大 max_tokens 再试。
把一个真实的故障现场,变成可复现的教学样本 —— 这是观测台比文档强的地方。
选 compare 模式,同一个提示词自动跑两个模型,结果并排。
实测问「9.11 和 9.9 哪个大?」:
deepseek-flash:算得很快,直接给结论deepseek-pro:慢一些,但会先拆成 9.11 = 9 + 0.11、9.90 = 9 + 0.90 再比同一个问题,两种"性格"。这比任何 benchmark 表格都直观。
这部分是别处没有的。服务器上那台第 7 代意识引擎,每轮意识循环都会写 SQLite。我把时间序列开放出来:
CI(意识指数)逐轮变化:
27 轮 平均 0.5035 区间 0.405 → 0.6762
画成柱状图,能看见它从 0.405 一路爬到 0.676。不是随机波动,是有趋势的。
情绪三维轨迹(valence 愉悦 / arousal 唤醒 / dominance 掌控)、自我叙事流(引擎的自省记录,84 条)。
这些数据通过 /api/ai/telemetry 公开可读 —— 想拿去画图、做统计、训练小模型,随便。
/api/ai/spec 返回完整的接口规格 JSON:
curl -s https://mjdbjgs.com/yekui/api/ai/spec | python3 -m json.tool
包含限速策略、可用模型、每个端点的入参和返回说明。让它能被程序读,而不只是被人读。
全部接口免 Key、可 curl:
# 悬链测试
curl -s -X POST https://mjdbjgs.com/yekui/api/ai/playground \
-H 'Content-Type: application/json' \
-d '{"prompt":"用一句话解释什么是意识","temperature":0.7,"max_tokens":300}'
对比模式算 2 次额度。 端点上写死的 —— 跑两个模型就是两次调用,不能让人拿对比台当免费双倍 API。
参数全部白名单校验。 temperature 钳在 0–2,max_tokens 钳在 16–4096,模型 key 只认两个枚举值。绝不让用户传任意参数直通上游 —— 否则这就是个公开的 API 代理。
JSON 模式做成了真实参数。 勾上就真的发 response_format: {type: 'json_object'},不是假装。
遥测读库仍然只读打开:
con = sqlite3.connect('file:' + DB + '?mode=ro', uri=True)
上一版 AI 实验室,用户看完输出就没什么可做的了。这次不一样:
你可以在这里把模型"拆开看"。 为什么换个参数结果就变?那个"思考"到底在算什么、占了多少 token?两个模型差在哪?—— 这些问题,我在页面上都给了能自己动手验证的入口。
我甚至在里面放了 4 个建议实验,比如:
② 把 max_tokens 调到32,看finish_reason变成length—— 这就是"回答被截断"的长相。
一个开发者页面的价值,不在于它能生成什么,而在于它能解释什么。
AI 观测台已上线:https://mjdbjgs.com/ai-observatory.html 限速:每 IP 每小时 15 次,全站每天 1500 次。对比模式计 2 次。 想直接上手:curl https://mjdbjgs.com/yekui/api/ai/spec