跳到主要内容
法律常识

AI 问答

问它,但它只会说站内有的话

这一页的设计目标和普通 AI 聊天相反:宁可回答「站内没收录」,也不能给你一个看起来很专业、实际不存在的法条。

提问

500 字以内

你的问题是怎么被检索的

  1. ① 先看像哪一类事

    用「我遇到事了」那套场景关键词判断你的问题属于哪一类;命中了,就把该场景下本站整理好的条文先放进候选。

  2. ② 再提检索词

    词只有三个来源,每一个都能复现:本站的场景关键词表、站内检索词表(场景页和文书里已经用过的说法)、你自己写的短句(2—6 字,去掉「怎么、能不能」这类没有法律含义的词;问题里用书名号括住的法名会先摘掉,不再切进句子里)。单字和纯数字串不进检索计划。没有中文分词器,也不做近义词扩展。

  3. ③ 逐词查 Article 表

    优先走全文索引 FTS5;索引不可用时退回逐字包含匹配,并且会在结果里如实标注用的是哪一种——换引擎结果就不同,偷偷换等于骗你。

  4. ④ 你点名的法律优先

    问题里写了《某法》:已导入就只在这部法里检索;没导入就明确告诉你没导入,绝不拿别的法律的同号条文顶替。

  5. ⑤ 查不到就空着

    候选为空时返回「站内未收录相关条文,请以官方文本为准」,并说明是提不出词还是提不出命中。

提问与检索结果会写入本站的问答日志(用于统计「检索为空」的比例),但写入前会遮蔽身份证号、手机号与长数字串。

回答必须遵守的规则

  • 只引用站内条文候选条文来自 Article 表检索结果,模型只能在给定材料里选,不能凭记忆补充。
  • 逐条核验条号回答中每个「第X条」都要能在 Article 表命中;命不中就从回答中删除,并标注「已删除」。
  • 标注来源与版本每条引用带法律全称、条号、官方来源链接、版本日期。
  • 不编造案例与案号本站不含案例库,因此不输出任何案号、裁判文书或「类似案件判决」。
  • 不预测结果不使用「你会胜诉」「一定能要回来」这类表述;只说「可以主张什么」。
  • 材料不足就承认检索不到时固定回答「站内未收录相关条文,请以官方文本为准」,不做推测。
  • 固定免责尾注回答末尾追加「本内容仅供普法参考,不构成法律意见。」,由代码拼接而非模型生成,模型无法省略。
  • 该转介时转介涉及刑事责任、人身安全、临近法定期限,明确建议尽快找执业律师或主管机关。

为什么先做检索,再考虑接模型

顺序是反不过来的:场景检索、文书模板和这里的检索侧都已跑在真实数据上, 模型接进来时会被夹在「站内检索」和「条号校验」中间——它拿到的材料是这批条文, 它写出的每个条号还要再回 Article 表核一遍,核不过就删除并留痕。 如果一开始就把问题丢给模型,我们没有办法区分它是查了库还是编的, 也没办法证明删掉的那条不是它自己补上去的。

接口契约

POST /api/qa
  { "question": string }        // ≤500 字
→ {
  "answer": string,             // 末尾已追加固定免责声明
  "articles": [ { articleId, lawTitle, lawSlug, articleNumber, content,
                  sourceUrl, versionDate, score, matchedBy[] } ],
  "trace": { terms[], scenarios[], engine, lawFilter,
             lawMentionedNotImported[], emptyReason, totalCandidates },
  "citations": [ { rawReference, matchedArticleId, verified, dropReason? } ],
  "retrievedCount": number,
  "provider": "stub",
  "configured": false,
  "disclaimer": string
}

interface LawProvider {         // src/lib/ai/types.ts
  readonly name: string
  isConfigured(): boolean
  answer(req: { question: string; retrieved: RetrievedArticle[] })
    : Promise<AnswerResult>
}

数据流: retrieveForQuestionDetailed()  →  buildAnswerPrompt()  →  provider.answer()
        → 逐条 citations 校验 → QaLog 落库(问题入库前遮蔽证件号/手机号/长数字串)