◉ AI×ビジネス活用 / 2026年08月

中学生にも分かる 自分の資料に答えるAI検索アプリの作り方 #3

2026年08月2日 読了目安:約16分 著者:AIFRONTNEWS編集部 RAG / VS Code / ファイル検索

あなたの資料を使って答えるAIに、「どのファイルを根拠にしたか」まで並べて見せたいですか。

今回は、回答の横に参照元ファイル名だけを安全に表示する最小アプリを、VS CodeのOpenAI Codexと一緒に完成させます。

準備から、APIキーの安全な扱い、Codexへの依頼、動作確認、直し方までを一歩ずつ説明します。

この回のゴール

  • できること:回答の横に、Responses APIのFile Searchが返す引用情報から“実在するファイル名のみ”を参照元として表示する。
  • 用意するもの:PC、インターネット、VS Code、OpenAIアカウント、VS Code用のOpenAI Codex拡張、ブラウザ。
  • 大切な約束:APIキーは環境変数に保存し、ページ番号やURLを推測して作らない。料金や仕様は公式ドキュメントで最新を確認する。
最初に知っておきたい用語
  • RAG:質問に関係する資料を先に探し、その内容を渡してからAIが答える仕組み。
  • File Search:OpenAIが提供する資料検索の道具。登録したファイルを意味で探せる。
  • ベクトルストア:資料を意味で検索できるよう整理して保管する場所。
  • Responses API:質問を送り、回答や引用メタなどを受け取るためのAPI。
  • 引用情報(引用メタ):どのファイルが根拠に使われたかを示す付加情報。
  • 環境変数:アプリが設定を読むための秘密の引き出し。コードに直書きしない。
  • OpenAI Codex:VS Code内でコード作成を手伝うAIコーディングエージェント。

この記事でできること

前回までで、登録した資料を使って答えが返るところまで進みました。今回は「根拠の表示」を足します。
図書館で本を紹介するとき、ただ答えるだけでなく「この本に載っていました」と本のタイトルを示すと安心できます。アプリでも同じで、回答の根拠になったファイル名を並べて表示します。

完成イメージ

回答テキストの横に参照元ファイル名だけを並べるUIの完成イメージ
Photo by Puscas Adryan on Unsplash

最初に知っておきたいこと

たとえ話:図書館の貸出票のように、「どの本を使ったか」だけが記録されます。ページ番号のメモがないときに、適当にページを作ってはいけません。
本文での意味:Responses APIでFile Searchを使うと、回答と一緒に引用メタが返ります。ここからファイルIDやファイル名を参照元として表示します。表示は「実在するファイル名」に限ります。
作らないもの:URL推測、ページ番号の捏造、本文のコピペはしません。APIが返していない情報は作らないのが安全です。

対象読者

RAG入門者とVS Code初心者向けのやさしい解説イメージ
Photo by sofatutor on Unsplash

必要なものと入れ方

ここでいう「道具」は、アプリを作るためのソフトやアカウントのことです。台所でいう包丁や鍋にあたります。順番に揃えます。料金やレート、モデルや機能名は変わることがあります。最新の情報はOpenAIの公式ドキュメントと、Platformの画面で必ず確認してください(Responses APIFile Search)。

VS Code

  1. これは何?:文章やプログラムを書くノートのようなアプリ。いろいろな道具(拡張)を足せます。
  2. 用意するもの:PC、インターネット、メールが受け取れるアカウント。
  3. 入れ方・開き方:公式サイトからダウンロードし、案内に沿って入れ、アプリを開きます。
  4. 最初の設定:日本語表示やテーマは好みでOK。作業用の空フォルダを1つ作り、VS Codeでそのフォルダを開きます。
  5. できたか確認:「エクスプローラー」に空のフォルダ名が見えれば準備完了です。

OpenAI Codex(VS Code拡張)

  1. これは何?:となりで助言するコーチのように、必要なコードを提案・作成してくれる相棒です。
  2. 用意するもの:OpenAIアカウント。ブラウザでサインインできる状態。
  3. 入れ方・開き方
    • VS Code左側の四角いアイコン(拡張機能)を押す。
    • 検索窓に「Codex」と入力する。
    • OpenAIのCodex拡張を選び、「インストール」を押す。
    • 画面の案内に従ってサインインする。
    • サイドバーにCodexのチャット欄が出たら開く。
  4. 最初の設定:組織やAPI利用の同意画面が出たら案内に従います。
  5. できたか確認:チャット欄に「こんにちは」と送って応答が返れば準備OKです。

OpenAIアカウントとPlatform

  1. これは何?:APIを使うための会員証と管理画面です。
  2. 用意するもの:メールアドレス、支払い方法(必要に応じて)。
  3. 入れ方・開き方:ブラウザでOpenAIにサインインし、Platformのダッシュボードを開きます。
  4. 最初の設定:APIキーの作成は後で行います。料金やレート制限の画面に一度目を通します。
  5. できたか確認:ダッシュボードにアクセスでき、ドキュメントが読めればOK。

Node.js(サーバー実行用)

  1. これは何?:PCの上で小さなサーバーを動かすためのエンジンです。家の電源のような存在。
  2. 用意するもの:インストーラーをダウンロードできる環境。
  3. 入れ方・開き方:公式の案内に従ってインストールし、VS Codeからプロジェクトを開きます。
  4. 最初の設定:Codexに依頼して、必要な設定ファイルを作ってもらいます。
  5. できたか確認:後の手順でサーバーが起動すれば成功です。

料金とレートの確認先:機能や価格は変わることがあります。必ず公式ドキュメント(Responses APIFile SearchRetrieval)で現在の条件を確認してください。

エージェントと作るものの全体像

フロントエンドとサーバーの役割分担を示す簡易アーキテクチャ図
Photo by GuerrillaBuzz on Unsplash

今回作る最小アプリは、フロント(HTML/CSS/JSでもOK)+簡単なサーバー(Node.js/Express想定)です。
Responses APIでfile_searchを有効化して質問を送り、返ってきた引用情報から「実在するファイル名のみ」を取り出し、回答の横に表示します。
たとえ話:配達(サーバー)が倉庫(ベクトルストア)に取寄せを依頼し、伝票(引用メタ)に書かれた仕入先名(ファイル名)をレシートに印字する、という流れです。

手順1: ツールを準備する

1-1 目的と流れ

VS Code、Codex拡張、OpenAIアカウントを準備し、Codexに話しかけられる状態にします。ここでつまずくと先へ進めません。

1-2 画面での操作

1-3 成功の目印

1-4 困ったら

拡張機能に「有効」「インストール済み」と出ているか確認。サインインのやり直しを試します。

手順2: APIキーを安全に用意する

APIキーを環境変数で保護するイメージ
Photo by FlyD on Unsplash

2-1 目的

APIキーは環境変数(.env)で管理し、コードや画面に直書きしません。家の鍵を玄関に貼らないのと同じです。

2-2 Codexに任せる作業

.envを作る、.gitignoreで.envを除外する、サーバーが起動時に環境変数を読み込む設定を、Codexに依頼して実装してもらいます。

2-3 成功の目印

2-4 うまくいかないとき

環境変数が読み込まれていない表示が出たら、.envのファイル名や配置場所、読み込みタイミングをCodexに確認します。

手順3: エージェントにアプリを作ってもらう

3-1 目的

最小の検索アプリをプロンプトだけで共同制作します。依存関係、API呼び出し、file_search設定、引用抽出、UIまでを頼みます。

3-2 このボックスをコピーして送る

このボックスをコピーして、VS Code内のCodexチャットに送ります。

Codexに送るプロンプト

目的:前回までのRAG最小アプリに「回答の参照元(実在するファイル名のみ)の表示」を追加してください。
必須条件:
- サーバーはNode.js/Expressの最小構成。フロントはシンプルなHTML/CSS/JSでOK。
- OpenAI Responses APIを使用。toolsでfile_searchを有効化。
- File Searchの引用情報から、実在するファイル名のみを抽出して配列で返し、UIに表示。
- APIキーは環境変数(.env)で管理。ブラウザにキー・モデル設定・生レスポンスを送らない。
- ベクトルストアやファイル登録は既存の練習用サンプル(個人情報や社外秘を含まないダミー)で進める。
- .gitignoreで.envを除外。サンプルのseedは安全なダミーを自動生成。
- エラーハンドリング(認証/レート/タイムアウト)とユーザー向けメッセージを実装。
- 前回の機能は壊さない(質問→回答が返ること)。
- 成功時に返すJSONは { answer: string, sources: string[] } の形で、sourcesは“実在ファイル名のみ”。
- APIが返していないページ番号・URL・引用文は表示しない。捏造しない。
- 「登録資料に根拠が見つからない」場合は、その旨を回答に明記して一般知識で補わない。
- 動作確認の手順(起動→テスト質問→レスポンス内の引用位置→UI反映)をREADMEに書く。
- 依存関係の追加、環境変数の説明、起動・停止方法はすべてREADMEにまとめる。
- 作業前に不明点があれば、私に日本語で質問してから着手する。
出力:
- 必要なファイル一覧と役割、各ファイルの中身、README、簡単なスタイル。
- Responses APIでfile_searchを使う際のモデル指定は、私に確認してから暫定の書き方にしておく。
確認観点:
- UIで回答の横に参照元ファイル名のリストが出る。
- sources配列は重複を取り除き、実在ファイル名のみ。
- APIキーやID類はサーバー側でのみ参照。ブラウザへ出さない。

3-3 Codexが作るものと確認点

手順4: 動かして確認する

動作確認で回答と参照元をチェックする場面のイメージ
Photo by Campaign Creators on Unsplash

4-1 目的

アプリを起動し、テスト質問で回答と参照元が表示されるかを確かめます。料理の味見にあたります。

4-2 画面での操作

4-3 どこに引用が入っているか

Responses APIのレスポンスJSON内に、File Searchの引用情報が入ります。モデルや構造は変わる可能性があるため、実際のレスポンスで「どの配列(またはメタ)にファイルIDやファイル名があるか」をCodexと一緒に確認し、UIに渡します。詳細は公式のFile SearchガイドResponses APIで最新を確認してください。

4-4 成功の目印

4-5 うまくいかないとき

画面に何も出ない、sourcesが空などの場合は、Codexに「レスポンスの引用部分のパス」と「抽出処理のログ出力」を追加するよう依頼します。

手順5: エージェントと直す

5-1 症状別の直し方

5-2 人が確認するフロー

少数の質問でテストします。答えられる質問、言い換えた質問、資料にない質問、内容が食い違う質問を用意し、回答と参照元を見比べます。「登録した資料の中では確認できません」と返るケースも期待どおりか確認します。

よくあるエラー

認証やレート制限などよくあるAPIエラーの注意喚起イメージ
Photo by David Pupăză on Unsplash

次に試すこと

まとめ

参照元表示の基本を押さえた学習の締めくくり
Photo by Glenn Carstens-Peters on Unsplash

この回で、回答と一緒に「実在するファイル名だけ」を安全に表示する基本ができました。ここからは精度の検証と、人が確認する運用手順を整えましょう。なお料金や仕様は変わるため、最新は公式ドキュメントで必ず確認してください。
前回の準備がまだなら、先に中学生にも分かる 自分の資料に答えるAI検索アプリの作り方 #2を終えてから戻ってきてください。

参考文献・出典