カテゴリー
ネットの事件

GitHub Copilot は”gender”など特定用語を含むコードで動かなくなる

書いているプログラムコードから次に必要そうなコードを提案してくれる GitHub の Copilot サービスで、「このコードに対して Copilot が何も提案してくれない」というバグが報告されました。

これに対するコミュニティの識者からの回答は、「おそらく、コードの中に “gender” という単語が入ってるからでしょう。」というもの。

Copilot には内蔵されたコンテンツフィルターがあり、フィルターに反応するとコードの提案をしないという作りなのだそう。そして “gender” もそのリストに含まれているらしいのです。

コードの提案が止まる、と言われたコードをCopilotで書いてみた

実際にCopilotで該当部分のコードを書いてみたところ、サジェストされた内容は文にならず途中で止まりました。元のコメント者と同じ結果なのかどうかはわかりませんが。

これを受けてのHacker News の議論では、

ジェンダーという名前の変数があったとして、その変数を boolean 型として提案コードを出せば「ジェンダーは(男女の)2通りじゃない」と怒る人が来てしまい、多値にすれば「ジェンダーは2通りだ」と怒る人が来るからでは、

という推測がトップコメントになっています。この推測が正しい理由かは不明ですが、議論になりそうな単語が含まれていると Copilot が動かなくなるというのは知ってる人は以前から知っていたようです。

今はクライアント側に禁止ワードのリストは無いそうですが、昔ベータだった際にクライアント側に埋め込まれていたリストを保存してた人がいたようで、rot13を掛けるとどんな単語が引っ掛かるかわかります。(このリストが本物として、リストが見えていた時期から変わっていないとして)

人種差別的な単語や罵倒後、卑猥な単語らがたくさん登録されていますが、”gender” も確かに含まれています。それどころか、”boy”, “girl”, “male”, “female” とかも入っているので、人を管理するデータクラスとかを作っただけでも引っ掛かることはありそう。

リストには英単語しか入っていないため、変数を日本語やローマ字で書く分には回避できそうですけどね。Hacker News では、”gender” をラテン語の”genus”に変えたら動いたよ、という報告もあり、これも試したところ本当でした。

“genus”にしたらサジェストが出た

マイクロソフトはAIチャットで意図しない発言が生成されて炎上したことがあったので、コードの提案でも問題を避ける機能を入れたくなるのはわからないでもありません。ただ、単語だけ列挙したリストの作りは雑なように感じるので、やるにしてももう少し改善してほしい気がします。

直近は、Copilot が何も言わなくなり、書いたコードが性別やジェンダーに関する変数名を含んでいたら、変数名をちょっと変えてみる、んですかね?