AIが言ったことと、外部の事実を分ける
ここまで、AIがどのように生成し、外部情報やToolを使い、どのような限界を持つのかを見てきました。
ここからは、AIを実際の開発で使うときに、その出力をどう確認するかを考えます。
最初に覚えておきたいのは、AIがそう言ったことと外部の事実として確認できたことは別だという区別です。
AIがそう言った
!=
外部の事実として確認できた
たとえばAIが「テストを実行しました。すべてPASSです」と答えたとします。この文章から直接確認できるのは、
その文章が生成された
ということです。実際にtestが実行されたことや、その結果がPASSだったことは、別に確認する必要があります。
ClaimとEvidence
確認するときは、AIの文章全体を一つの塊として読むのではなく、その中にどのようなClaim(主張)が含まれているかを見ます。たとえば、
設定を変更しました。
testも実行しました。
43件すべてPASSしました。
という報告には、少なくとも、Claim 1: 設定を変更した、Claim 2: testを実行した、Claim 3: 43件がPASSした という別々のClaimがあります。それぞれが同じEvidenceで確認できるとは限りません。
Generated reportはEvidenceにならないのか
AIの報告がまったくEvidenceにならない、という意味ではありません。AIが「43件PASSしました」と出力したなら、AIがそのように出力したことについてはEvidenceになります。しかし、実際に43件のtestがPASSしたことについての独立したEvidenceとは別です。
つまり、報告がEvidenceであることと、外部の事実のEvidenceであることは別です。
Evidence of the report
!=
Evidence of the external fact
Independent Evidence
AIの自己申告とは別に対象を確認できるものを、ここではindependent Evidenceとして考えます。
たとえば状況によって、
- repositoryの実際のfile
- Git diff
- commit history
- test execution log
- command output
- runtime observation
- authoritative document
などが確認材料になる場合があります。
ただし、どれか一つが常に万能なEvidenceになるわけではありません。
「何について確認したいのか」によって必要なEvidenceは変わります。
強い言い方でもEvidenceは増えない
AIが「確実です」「間違いありません」「完全に確認しました」と強く書いたとしても、その言葉そのものによって外部Evidenceが増えるわけではありません。
「確実です」
「間違いありません」
「完全に確認しました」
confidence wording
!=
additional Evidence
です。
これは、「自信のある表現を使ってはいけない」という意味ではありません。
文章の強さとEvidenceの強さを分ける、という意味です。
複数のAIが同意しても外部Evidenceとは限らない
二つ、三つのAIに同じ質問をして、全員が同じ答えを返したとします。それはreview signalとして役立つ場合があります。しかし、複数AIが一致しても外部事実が独立に確認されたことにはなりません。
複数AIが一致した
!=
外部事実が独立に確認された
複数のAIが同じ問題点を指摘した場合、「ここは重点的に確認した方がよさそうだ」という判断材料にはなります。しかし、それだけでexternal factが確定するわけではありません。
VERIFIED / OBSERVED
この本では、Evidenceによる確認状態を三つに分けます。
まず VERIFIED / OBSERVED です。
これは、権威ある確認可能なsourceや再現可能な観測などによって、対象について直接確認できた状態を表します。たとえば、
repositoryを実際に読んだ
command outputを実際に観測した
authoritative documentの該当箇所を確認した
といった場合です。ただし、何をもって十分な確認とするかは対象によって変わります。
INFERENCE
INFERENCEは、Evidenceから導かれる推論です。
たとえば、
観測A
観測B
↓
Cである可能性が高い
という場合、
AとBそのものはOBSERVEDでも、Cを直接観測していなければ、CはINFERENCEとして扱います。
重要なのは、
INFERENCE != 根拠のない想像
ということです。
INFERENCEには支えるEvidenceがあります。
ただし、結論そのものが直接確認されたわけではありません。
UNKNOWN / UNDISCLOSED
利用できるEvidenceから確認できない場合は、UNKNOWN / UNDISCLOSED として扱います。
UNKNOWNになる理由には違いがあります。
たとえば、
- まだ確認していない
- 調査したがEvidenceが足りない
- 情報が公開されていない
- 現在の条件では確認する手段がない
などです。
これらを全部、たぶん○○だろう と埋める必要はありません。
UNKNOWNはFAILではない
ここは非常に重要です。UNKNOWN != FAIL です。
確認できないからといって、存在しない、実行されなかった、間違っている とは言えません。逆に、UNKNOWN != PASS でもあります。
分からない状態を、成功にも失敗にも勝手に変換しないことが重要です。
PASSも範囲付きで読む
test結果のPASSも、無条件の「すべて正しい」ではありません。
PASSは少なくとも、
- 対象(target)
- バージョン(version)
- テスト対象の範囲(test set)
- 条件(conditions)
- 観測時点(observation point)
と一緒に解釈します。
たとえば、
この対象について
このバージョンについて
このテスト対象の範囲を
この条件で実行したところ
この観測時点でPASSだった
という意味です。
したがって、PASSはsystem全体が完全、安全、production-ready、UNKNOWNがゼロであることを意味しません。
PASS != system全体が完全
PASS != 安全
PASS != production-ready
PASS != UNKNOWNがゼロ
PROJECT-METHODOLOGYは第4分類ではない
この本では、
VERIFIED / OBSERVED
INFERENCE
UNKNOWN / UNDISCLOSED
という三つのEvidence分類を使います。
一方で、
AIの自己申告だけではexternal factを確定しない
といったルールは、このprojectが採用しているVerification方法です。
これは PROJECT-METHODOLOGY として扱います。
PROJECT-METHODOLOGYは、
VERIFIED
INFERENCE
UNKNOWN
PROJECT-METHODOLOGY
という4分類目ではありません。
問いの種類が違います。
Evidence分類は、
どの程度確認できているか
を表します。
PROJECT-METHODOLOGYは、
このprojectでEvidenceをどう扱うか
というルールです。
この章のまとめ
AI report != external fact
confidence wording != additional Evidence
multiple-model agreement != independent external Evidence
Evidence classification:
VERIFIED / OBSERVED
INFERENCE
UNKNOWN / UNDISCLOSED
- AIの出力と外部事実を分ける
- Claimごとに何を確認すべきか考える
- AI report自体のEvidenceと、external factのEvidenceを区別する
- 強い言い方だけではEvidenceは増えない
- 複数AIの一致はreview signalにはなり得るが、external Evidenceそのものではない
- INFERENCEにはEvidenceがあるが、結論自体が直接確認されたわけではない
- UNKNOWNはFAILでもPASSでもない
- PASSは対象(target)・バージョン(version)・テスト対象の範囲(test set)・条件(conditions)・観測時点(observation point)に限定して読む
- PROJECT-METHODOLOGYはEvidence分類の第4分類ではない
次の章では、Claimを確認するときに、何をSource of Truthとして扱うべきなのかを見ていきます。