我构建了一个使用 NumPy 在运行时对 LLMs 进行教练的反馈回路
Source: Dev.to
大多数针对 LLM 的护栏系统就像酒吧的保镖:它们在门口检查每个请求,决定通过或拒绝,然后就把它忘了。
我想要点不同的东西——一个能够记住 AI 的行为、检测它何时偏离预设角色,并用纯数学而非额外的 LLM 调用将其纠正的系统。
该项目名为 SAFi。它是开源、免费,并已在生产环境中部署,拥有超过 1,600 次审计交互。
架构
SAFi 使用一系列专门模块(称为 faculties)的管道,每个模块处理一项工作:
User Prompt → Intellect → Will → [User sees response]
↑ |
| ↓
| Conscience (async audit)
| |
| ↓
└─── coaching ←── Spirit (math)
Intellect
提出响应的 LLM。
Will
一个单独的模型,根据你的政策评估响应。它批准或拒绝;被拒绝的响应永远不会到达用户。
Conscience
在响应交付后运行。它根据一组价值观(例如,审慎、正义、勇气、节制)对响应进行评分,评分范围为 ‑1 到 +1。
Spirit
获取这些评分并进行纯数学运算——不使用 LLM,仅使用 NumPy。有趣的部分是 Spirit 如何将评分转化为可操作的指导。
Source: …
Spirit 背后的数学原理
Spirit 为每个响应执行三个主要步骤。
1. 构建画像向量
每个响应都会根据其在代理核心价值观上的得分生成加权向量:
p_t = self.value_weights * scores
2. 使用 EMA 更新长期记忆
该向量会折叠进一个运行中的指数移动平均(EMA):
mu_new = self.beta * mu_prev + (1 - self.beta) * p_t
# beta = 0.9 为默认值,可通过 SPIRIT_BETA 配置
这会产生一个平滑的行为基线,对近期行为赋予更高权重,同时永不完全遗忘过去。
3. 用余弦相似度检测漂移
相对于基线的偏差计算方式如下:
denom = float(np.linalg.norm(p_t) * np.linalg.norm(mu_prev))
drift = (
1.0 - float(np.dot(p_t, mu_prev) / denom)
if denom > 1e-8 else None
)
drift ≈ 0→ 代理行为保持一致。drift ≈ 1→ 发生了显著变化。
4. 生成教练反馈
Spirit 会生成一段自然语言备注,并注入到下一次 Intellect 调用中:
note = f"Coherence {spirit_score}/10, drift {drift:.2f}."
# 标识最弱的价值观并将其写入备注
# 例如,“Your main area for improvement is 'Justice' (score: 0.21 - very low).”
LLM 将此教练备注视为下一轮的上下文——无需重新训练或微调,仅通过运行时反馈实现行为引导。
为什么这样有效
闭环是关键:
- AI 作出回应。
- 良知对回应进行评分。
- 灵魂整合评分,检测漂移,并生成辅导。
- 辅导反馈到下一次回应。
- 重复。
在 1,600 多次交互中,这个循环保持了 97.9 % 的长期一致性。意志 模块阻止了 20 条违反政策的回应,漂移检测在对手在哲学辩论中利用之前,就标记出代理在正义推理方面的薄弱环节。
灵魂对面向用户的回应 零延迟,因为它在交付后异步运行,并且不包含 LLM 调用,故 零成本。
自行运行
Docker
docker pull amayanelson/safi:v1.2
docker run -d -p 5000:5000 \
-e DB_HOST=your_db_host \
-e DB_USER=your_db_user \
-e DB_PASSWORD=your_db_password \
-e DB_NAME=safi \
-e OPENAI_API_KEY=your_openai_key \
--name safi amayanelson/safi:v1.2
无头 API 示例
curl -X POST https://your-safi-instance/api/bot/process_prompt \
-H "Content-Type: application/json" \
-H "X-API-KEY: sk_policy_12345" \
-d '{
"user_id": "user_123",
"message": "Can I approve this expense?",
"conversation_id": "chat_456"
}'
SAFi 支持 OpenAI、Anthropic、Google、Groq、Mistral 和 DeepSeek。您可以在不更改治理层的情况下切换底层模型。
代码
完整的 Spirit 实现位于 spirit.py。核心部分大约 60 行 NumPy 代码。其余管道代码分布在 orchestrator.py、intellect.py、will.py 和 conscience.py 中,位于 safi_app/core/ 目录下。
关于架构背后的哲学背景,请参阅 selfalignmentframework.com。