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

「メールか電話で連絡できる人を選んで」と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
感想や、試してみたことを聞かせてね。コメント・返信は承認後に公開されます。
最初のコメントをどうぞ。