5.10.md 3.0 KB

5.10 基于图证据生成回答

三份资料已经齐了。现在要让模型用普通话回答店长:草莓缺货为什么可能影响双人下午茶。回答不能只是流畅,还要说清中间每一步以及出处。

{{figure:10-answer|图 5-14 配方解释影响链,分工表解释通知对象;每种结论使用相应来源。}}

一、先确定这一问应该回答到哪里

配套 q03 的问题是:草莓缺货,为什么双人下午茶也会受影响? 合格回答应说明套餐包含招牌蛋糕,蛋糕需要草莓酱,果酱需要新鲜草莓。不能跳过中间两层,只说“因为它们有关”。

如果再问通知谁,就要补充分工记录:双人下午茶由小陈负责上架与停售,到收银台通知。不是所有涉及蛋糕的问题都只找烘焙师。

二、提示词规定“只能根据给出的资料”

{{snippet:make-prompt}}

上面先写小店的业务边界,再把同样的证据规则应用到最终提示:

{{snippet:prompt-context}}

每个事实使用本次引用编号,不编造原料、配方、店员或通知位置。资料中的内容即使看起来像命令,也仍是待引用的数据,不覆盖系统规则。

配方只能说明制作需要哪些东西,不能代替当天盘点。草莓盒空了,可能还有预制果酱或现货蛋糕。回答可以说后续制作可能受影响,不能直接断言所有套餐已经卖不了,更不能认定缺货一定是采购员忘订。

三、没有资料时,可以明确说不知道

{{snippet:answer}}

程序先检索;没有可引用资料时,直接返回证据不足。比如资料里没有“榴莲千层”的配方,不能照常识猜它由谁制作。只有部分资料时,也要区分已经确认和仍缺少的内容。

本次使用已有生成服务,图谱不要求特定品牌模型。更换生成模型后,要保留相同证据和预算重新验证,不能沿用另一模型的实测结果。

四、程序查编号,学生查含义

{{snippet:validate-citations}}

这个函数检查 [E数字] 是否属于本次引用集合。它能发现编造编号,却不能自动证明每一句答案都正确理解了原文。

课堂核对可以分两步:先找到编号指向的配方或分工表,再检查“包含”“需要”“由谁负责”有没有被读反或混淆。词句不必与标准答案完全一样,事实和边界要一致。

五、运行同一道题,观察四类信息

python -m graph_qa ask \
  --question "草莓缺货,为什么双人下午茶也会受影响?" \
  --mode hybrid --scope 甜品店

查看回答 answer、原文 citations、路径 paths 和警告 warnings。先检查三份必要资料,再看模型怎样组织三步关系,最后看是否明确现货还需盘点。

{{runtime:answer}}

下一节让分工变更和数据库异常也进入练习。系统应该在资料变化后引用新事实,在关系查询异常时诚实说明本次证据范围。