【Notebook LM】コードのインデックスが消える?原因と3つの回避策

【Notebook LM】コードのインデックスが消える?原因と3つの回避策

Notebook LM / Tips

Notebook LM を使ってPythonなどのコードを生成させていると、配列やリストのインデックス指定([0][1])が画面上から丸ごと消えてしまうことがあります。本記事ではその原因と3つの回避策を解説します。

01 – 何が起きているのか

Notebook LM にコードの生成・修正を依頼すると、本来 [0][1] と表示されるべきインデックス記述が、出力画面から完全に抜け落ちてしまう場合があります。

たとえば、次のようなケースです。

画面上の表示(誤)

target_prjname_set = set(
  d for d in target_pv_set
)

AIが生成した本来のコード(正)

target_prjname_set = set(
  d[0] for d in target_pv_set
)

この問題の厄介なところは、文法エラーにならないケースが多い点です。一見すると正常に動くコードに見えるため、「データが取れない」「型が合わない」といった原因不明のバグとして長時間悩まされることがあります。

02 – 原因:引用マーカー機能の誤作動

これはAIの能力の問題ではありません。

原因は、Notebook LM のUI側が持つ「引用マーカー自動変換機能」の誤作動です。

Notebook LM は回答の根拠を示すため、文中に [1] のような「大カッコ+数字」を引用マーカーとして自動付与する仕様になっています。AIがコードとして [0] を正しく出力していても、表示システム側がそれを「ソースドキュメントへの引用リンク」と誤認し、非表示にするか別の要素に変換してしまうのです。

つまり、AIは正しいコードを生成しているのに、画面に届く前に消されてしまっているという状況です。

03 – 3つの回避策

回避策 A大カッコ内にスペースを入れる(最も簡単)

Pythonでは大カッコ内のスペースは構文上無視されます。数字の前後にスペースを入れるだけで、引用マーカーとの誤認を防げます。プロンプトに「インデックスは [ 0 ] のようにスペースを入れて書いてください」と一言添えるだけでOKです。

消えてしまう

d[0]
d[1]

安全な表示

d[ 0 ]
d[ 1 ]

回避策 Bアンパッキングでインデックス指定を避ける

そもそも [0] のようなインデックスアクセスを使わない書き方に変えるよう指示します。タプルや辞書を扱うケースでは、アンパッキングやキー指定が有効な代替手段です。

インデックス指定(消える)

set(d[0] for d
  in target_pv_set)

アンパッキング(安全)

set(proj for proj, ver
  in target_pv_set)

辞書の場合は .get('projectName') のようなキー指定を使うのも有効です。

回避策 Cプロンプトに定型の注意書きを追加する

毎回個別に指示するのが面倒な場合は、プロンプトの冒頭や「禁止事項」欄に以下の文をテンプレートとして追加しておきましょう。AIが自発的にこの問題を回避したコードを出力してくれます。

▼ プロンプトへの追加推奨テキスト

注意:配列やリストのインデックス指定(例:[0]、[1])は、Notebook LM のシステムが引用マーカーと誤認して画面上で非表示になるバグがあります。コードを出力する際は、大カッコ内にスペースを入れるか(例:[ 0 ])、アンパッキングを利用してインデックス指定を避けた安全なコードを記述してください。

まとめ

  • Notebook LM のUI上で [0] などのインデックスが消えるのは、引用マーカー機能の誤作動が原因。AIのバグではない。
  • 最も手軽な対策は 回避策A:[ 0 ] のようにスペースを入れるよう指示すること。
  • 根本的に避けたい場合は 回避策B:アンパッキングに切り替える。
  • 毎回の手間を省くには 回避策C:プロンプトテンプレートに定型文を追加しておく。