navi-go

4. 可解释与负责任 AI 实践

本文档基于当前仓库实现(src/**tests/**.github/workflows/**scripts/**)总结 NaviGo 的可解释与负责任 AI 实践。

4.1 可解释性设计

1) 决策日志(Decision Log)

每个 agent 在输出 Partial<PlannerState> 时都会追加一条 decisionLog 记录(makeDecisionLog),字段包括:

这意味着调用方不仅能看到最终 finalPlan,还能看到每一步“基于什么证据做了什么决策”。

2) 结构化输出约束

需要 LLM 的 agent 都使用 withStructuredOutput(...) + Zod schema,避免自由文本直接进入状态:

3) 边界层统一校验

Zod 校验覆盖:

4.2 责任式 AI(Responsible AI)落地

1) 用户意图优先

2) 明确风险暴露,不静默处理

即使计划可继续生成,风险也不会被隐藏。

3) 受控拒答路径

当检测到提示注入(BLOCKED_PROMPT_INJECTION)时,路由会直接进入 plan_synthesizer 生成安全拒答摘要,而不是继续执行完整规划链路。

4) 自然语言交互的透明性

form_completer 在缺少必填字段时,不会默默猜测或填充,而是生成 1–2 条自然语言澄清问题返回给客户端,由用户确认后再继续。这避免了模型擅自推断用户未明确表达的约束。

4.3 可追溯性与审计

1) 线程级状态可回放

图状态使用 checkpointer 持久化,API 提供 GET /plan/:threadId 读取线程快照,可用于:

2) 可选 LangSmith 追踪

LANGSMITH_TRACING=true 时启用 tracing;metadata 通过 buildTraceMetadata(...) 附带:

4.4 数据处理与最小化说明(基于现状)

当前实现中,userRequest(包含 userId)属于 PlannerState 的一部分,因此会进入 checkpoint 状态(取决于所用 checkpointer)。

也就是说:

如果部署方有更严格的数据最小化要求,建议在调用前对 userId 做脱敏/映射,或在状态层引入最小字段策略。

4.5 当前可验证的优势与边界

已实现优势

已知边界

以上边界均可从现有代码直接观察到。