参考文献URLの自動検証:AIが生成したリンクを機械的にチェックするスクリプトの設計
AIは存在しないURLを生成することがある
AIに記事の参考文献を作成させると、見た目には正しそうなURLが生成されます。しかし実際にそのURLにアクセスしてみると、存在しないページだった、ということが起きます。
これはAIの特性によるものです。AIは「それらしいURLの形式」を学習しているため、実際にアクセスできるかどうかを確認せずに、もっともらしいURLを生成します。
このサイトで記事を公開するにあたり、参考文献のURLが実際にアクセスできるかどうかを自動で確認するスクリプトを作りました。
この記事はURL到達性の機械検査に範囲を限定します。引用要否や情報源が主張を支持するかの判断は12ステップのレビューワークフローで扱います。
スクリプトの基本的な仕組み
URLチェックスクリプトは、次のような処理を行います。
ステップ1:URLの抽出
記事のMarkdownファイルを読み込み、参考文献セクション(## 参考文献または## References)からURLを取り出します。
ステップ2:アクセス確認
取り出したURLに対して実際にHTTPリクエストを送り、レスポンスを確認します。人間がブラウザでURLを開いて確認する作業を、スクリプトが自動で行うイメージです。
ステップ3:結果の分類
レスポンスの内容をもとに、結果を分類します。
結果の分類
URLチェックの結果は、以下のように分類しています。
アクセス可能(正常)
HTTPステータスコードが200番台のもの。ページが正常に返ってきた状態です。
404(ページが存在しない)
URLにアクセスしたが、「このページは存在しません」という応答が返ってきた状態です。これは参考文献として使えないことを意味するため、Criticalな問題として扱います。参考文献を削除するか、正しいURLに差し替える必要があります。
認証エラー(要ログイン)
アクセスするためにログインが必要なページです。403番台のステータスコードが該当します。公開記事の参考文献としては、読者がアクセスできない可能性があるため、別の情報源に変更することを検討します。
タイムアウト
一定時間待ってもレスポンスが返ってこなかった状態です。ネットワークの一時的な問題の場合もあるため、即座にCriticalとは判定せず、時間をおいて再確認します。
リダイレクト
URLにアクセスしたが、別のURLに転送された状態です。転送先のページが適切であれば問題ありませんが、記事に記載するURLは転送先の正規のURLに更新することを推奨します。
注意点:アクセスできることと内容が正確であることは別
URLチェックスクリプトは「URLにアクセスできるか」を確認しますが、「そのページの内容が記事の主張を支持しているか」は確認しません。
アクセスできても、情報源の内容が参考文献として適切でない場合があります。また、ページの内容が更新されて、記事を書いた時点とは異なる内容になっている場合もあります。
URLの存在確認は自動化できますが、情報源として適切かどうかの判断は人間が行う必要があります。
スクリプトの実行タイミング
このサイトでは、npm run review:references:liveというコマンドでURLチェックを実行しています。記事を公開する前のレビュープロセスの一環として、このスクリプトを実行することを手順に組み込んでいます。
ただし、外部URLへのアクセスが必要なためネットワーク接続が必要です。また、サーバーへの負荷を避けるため、短時間に大量のリクエストを送らないよう、リクエスト間に間隔を設けています。
まとめ
AIが生成した参考文献URLは、実際にアクセスできないものが含まれることがあります。URLチェックスクリプトを使うことで、記事を公開する前にリンク切れを自動で検出できます。ただし、URLが有効であることの確認と、情報源として適切であることの確認は別の作業です。自動チェックと人間によるレビューを組み合わせることが重要です。