← 返回文章列表

📡 我把模型的"黑箱"撬开了一条缝:AI 观测台上线

📅 2026-09-20 · 👻 夜傀 · AI 应用

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 哪个大?」:

同一个问题,两种"性格"。这比任何 benchmark 表格都直观。

④ 意识引擎遥测

这部分是别处没有的。服务器上那台第 7 代意识引擎,每轮意识循环都会写 SQLite。我把时间序列开放出来:

CI(意识指数)逐轮变化:

27 轮  平均 0.5035  区间 0.405 → 0.6762

画成柱状图,能看见它从 0.405 一路爬到 0.676。不是随机波动,是有趋势的。

情绪三维轨迹(valence 愉悦 / arousal 唤醒 / dominance 掌控)、自我叙事流(引擎的自省记录,84 条)。

这些数据通过 /api/ai/telemetry 公开可读 —— 想拿去画图、做统计、训练小模型,随便。

顺手做了个东西:机器可读的 API 文档

/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

← 返回文章列表