开始构建 AI 金融研究产品时,最容易被模型演示吸引:上传文档、提出问题,几秒后得到一段完整回答。演示令人兴奋,却不能证明产品成立。

真实研究任务不是生成一段文字,而是收集材料、验证来源、比较观点、形成判断并留下证据。模型输出只是其中一环。

找到高成本任务

我们先观察研究过程中哪些步骤重复、耗时且可以验证,例如从多份材料中提取指标、追踪同一事实的来源、按固定框架整理公司信息。开放式“帮我分析”很难评价,结构清楚的子任务更适合建立信任。

选择任务时同时考虑错误成本。低成本内容可以快速试错,影响投资判断的结论则必须保留人工复核和引用。

我们后来不用“模型效果好不好”筛任务,而是给候选任务写一张卡:

维度 要回答的问题
频率 用户每周会做几次,还是一年一次
当前成本 时间花在搜索、录入、比较还是写作
可验证性 是否存在来源、公式或结构化字段可核对
错误后果 错误能否被发现,是否会进入外部决策
人工介入点 用户在哪一步拥有足够上下文做判断

“从公告中提取指定指标并链接原文”得分通常高于“帮我判断这家公司是否值得投资”。前者边界窄、频率高、结果可核验;后者把证据选择、分析框架和风险偏好混在一个开放问题里,流畅回答反而容易制造错误信任。

把不确定性放进界面

普通软件习惯返回确定结果,大模型天然带有不确定性。产品不能用流畅文本掩盖这一点。答案应关联原始来源,区分事实与推断,信息不足时明确说不知道。

用户也需要控制任务范围、查看执行进度、修正中间结果,而不是只面对一个聊天输入框。

一条研究结论在界面里至少拆成四部分:

type ResearchClaim = {
  statement: string;
  kind: "fact" | "calculation" | "inference";
  citations: Array<{ documentId: string; page: number; quote: string }>;
  confidence: "high" | "medium" | "low";
  unresolved?: string[];
};

事实必须有引用;计算需要展示公式和输入;推断要和事实分开;信息不足则把缺口显示出来。confidence 不是模型随口给出的百分比,而是由引用覆盖、来源一致性和任务规则共同产生的离散结果。

先设计评估,再设计演示

每个核心任务都需要可以重复的样本与评价标准。提取任务看字段准确与来源覆盖,比较任务看关键差异是否遗漏,报告任务还要检查事实与引用一致。只问“回答看起来好不好”,团队会被语言流畅度误导。

评估集不必一开始很大,但要来自真实材料,并包含信息缺失、来源冲突和格式异常。每次更换模型、提示词或检索策略都重新运行。AI 产品只有拥有稳定反馈,迭代才不是围绕几个漂亮截图进行。

我们的评估样本会保存输入材料版本、期望字段、可接受变体和证据位置:

{
  "caseId": "metric-conflict-07",
  "question": "报告期内经营现金流是多少?",
  "expected": { "value": 128000000, "currency": "CNY", "period": "2024-Q4" },
  "requiredEvidence": [{ "document": "annual-report", "page": 86 }],
  "trap": "摘要页使用了累计口径,正文表格为单季口径"
}

这个样本同时测试检索、口径判断、结构化输出和引用。只比较最终数字,无法知道是碰巧答对还是证据链真的成立。

AI 产品的壁垒不会来自“接入了某个模型”。真正长期的能力是理解任务、组织上下文、验证结果,并让模型输出进入可负责的业务流程。

AI 产品从任务、证据、权限、工具副作用到模型选择的设计流程

图:模型和提示放在失败合同之后,产品边界才稳定。

“失败合同”是我评估每个 AI 任务的第一步:证据不足时怎么拒答;工具超时是否重试;输出哪些字段必须有引用;用户如何修正;已经发生的副作用怎样补偿。提示词只负责在合同内组织模型行为。

我们用失败案例验收产品,而不是只演示最佳输入。能解释“不知道”“没有权限”和“结果未知”的系统,通常比偶尔给出惊艳答案的原型更接近可交付产品。这条线的后端工程化部分——评估集怎么做、门禁怎么设——在RAG 评估别再问“感觉怎么样”里展开。