DESIGN / CODE / INFRA / AI

解説

AIに「どちらか」と頼む前に:少なくとも一つと、ちょうど一つを分けよう

「どちらか」に両方を含める?四通りの条件と検証済みPythonの表から、少なくとも一つ・ちょうど一つ・両方を分けて依頼しよう。

AIに「どちらか」と頼む前に:少なくとも一つと、ちょうど一つを分けよう
保存リストを見る →
この記事の道しるべ 4項目

「メールか電話で連絡できる人を選んで」とAIに頼むとき、両方使える人も含めたい?それとも、一方だけ使える人を選びたい?

このページでは、二つの条件の組合せを四通りに分けて、依頼の曖昧さを減らす方法を確認するよ。最初はコードを知らなくても大丈夫。例では、Aを「メール可」、Bを「電話可」とする。

両方に当てはまる場合を決める

それぞれの条件が「はい」「いいえ」のどちらかに決まっていると、組合せは四通り。

A:メール可 B:電話可 少なくとも一つ ちょうど一つ 両方
いいえ いいえ 含めない 含めない 含めない
いいえ はい 含める 含める 含めない
はい いいえ 含める 含める 含めない
はい はい 含める 含めない 含める

「少なくとも一つ」は、両方がはいでも含める。「ちょうど一つ」は、両方がはいだと除外する。違いを確認するには、最後の行を見ると分かりやすいね。

依頼文には、両方の場合も書く

以下は編集部が作った依頼文の例で、実際のAI出力を検証した記録ではないよ。

両方使える人も含めるなら、次のように指定する。

メール可または電話可が「はい」の人を選んでください。両方が「はい」の人も含め、両方「いいえ」の人は除外してください。未入力は推測せず、確認待ちとして分けてください。

一方だけ使える人なら、条件を変える。

メール可と電話可のうち、ちょうど一つだけが「はい」の人を選んでください。両方「はい」と両方「いいえ」は除外してください。未入力は確認待ちとして分けてください。

実際の表では、未入力や「不明」が混ざることもある。それらを勝手に「いいえ」へ置き換えると、別の判定になる。分からないものの扱いも先に決めよう。

小さな表で確認してから、本番のデータへ

最初に上の四行をテスト用として用意し、依頼文と合わせて判定を確認する。期待する結果は、「少なくとも一つ」が三行、「ちょうど一つ」が二行、「両方」が一行だよ。

結果が違ったら、特に「はい・はい」の行と未入力の扱いを確かめよう。人数が合うだけでなく、どの行を含めたかまで確認してから、実際の表へ広げることを勧める。

Pythonで四通りを確かめる場合

Python 3を使える人は、次の短い例でも確認できる。ブラウザ上で動かす作例ではなく、手元のPythonで実行するものだよ。

for a, b in [(False, False), (False, True), (True, False), (True, True)]:
    print(int(a), int(b), int(a or b), int(a != b), int(a and b))

出力の列は、A、B、少なくとも一つ、ちょうど一つ、両方の順。1は含める、0は含めないを表す。

0 0 0 0 0
0 1 1 1 0
1 0 1 1 0
1 1 1 0 1

編集部でこのコードの出力を確認した。True と False は真偽を表す値で、この例は両方の入力をその二つに限定している。!= は等しくないかを比べる演算子だよ。

Pythonの公式資料では、or と and は一般には入力のどちらかを返すと説明されている。文字列や空欄をそのまま入れても、この表と同じ意味になるとは考えないでね。

AIへ渡す表の欠損にも迷ったら、未入力とゼロの違いを合わせて確認してみよう。条件を小さく分けて期待する行を決めることが、結果の点検につながるよ。

参考・出典

公開と変更の記録
  • :初回公開

日時は日本時間です。記載のある変更は、確認できた編集記録に基づきます。更新日の違いだけから変更内容を推測して載せることはありません。

更新・訂正の方針 →

みんなのコメント 0

感想や、試してみたことを聞かせてね。コメント・返信は承認後に公開されます。

最初のコメントをどうぞ。