このレッスンでできるようになること
モデルの回答に最新情報や手元の資料を使わせるには、どの情報へアクセスさせるかを設計します。検索を使う、ファイルを渡す、外部の処理を呼ぶ方法は、それぞれ役割が違います。このレッスンではWeb検索の最小コードを確認し、資料とツールの接続へ広げる手順を学びます。目標は、回答だけでなく根拠と実行した操作を確認できるアプリの流れを描くことです。
1.必要な情報を分類する
公開されている最新の仕様はWeb検索、自分が持つ文書はファイル入力、業務システムの処理は対応するツールが候補です。すべてを検索で解決しようとすると、公開されていない資料を見つけられません。逆に、一度渡した文書だけで今日の変更を答えられるとは限りません。
今回は公式のAPI説明を探すだけの読み取り作業にします。接続の練習段階では、メール送信やデータ更新を含めません。情報を取得する処理と、外部の状態を変える処理を分けておくと、どこで人の確認が必要か明確になります。
2.Web検索を有効にして呼び出す
前のレッスンと同じPython環境で、次のコードを保存します。認証方法は同じで、toolsにweb_searchを指定しています。検索の利用には追加費用が発生する場合があるため、現在の料金を確認してから実行してください。教材では外部通信を実行していません。
import os
import getpass
from openai import OpenAI
key = os.environ.get("XAI_API_KEY") or getpass.getpass("xAI API key: ")
client = OpenAI(api_key=key, base_url="https://api.x.ai/v1",
timeout=60.0, max_retries=0)
result = client.responses.create(
model="grok-4.7",
input="xAIのResponses APIの公式説明を探し、概要と出典URLを返してください。",
tools=[{"type": "web_search",
"filters": {"allowed_domains": ["docs.x.ai"]}}],
)
print(result.output_text)
print(result.citations)
3.検索結果を根拠として扱う
この例は参照するドメインを公式ドキュメントへ絞っています。それでも、返答が質問の条件に合うか、URLが主張を支えているかを確認します。検索を有効にしたことだけで、すべての記述が最新かつ正しいと保証されるわけではありません。
このコードでは本文と別にcitationsも表示します。検索中に参照したURLの一覧であり、全URLが最終回答の主張を裏付けるとは限りません。各URLを開き、主張と照合してください。本番の画面でも、回答文と出典情報を扱う設計にします。返答中のURL文字列だけを拾う簡易実装と、応答の構造化された注釈を読む実装では確認できる範囲が違います。利用するSDKの応答形式を確かめ、出典がない場合の表示も決めます。
検索に使った情報が取得できない場合は、調査したように答えず、未取得と表示します。古いキャッシュを代用する設計なら、いつの情報かを明示します。最新情報が必要な仕事ほど、成功時だけでなく取得失敗時の扱いが重要です。
4.ファイルは内容とアクセス方法を確認する
資料を渡す場合は、APIが対応するファイル入力の形式を確認します。公式資料では、アップロードしたfile_idや、取得可能なfile_urlを使う方法が説明されています。一般向け画面の添付ボタンと、APIのアップロード処理は別なので、画面上で読めたファイルがそのままAPIから参照できるとは限りません。
非公開資料を読ませるために、誰でも開けるURLへ公開する必要があると考えないでください。許可された保存方法とアクセス制御を選び、入力する内容を必要な範囲へ絞ります。ファイル名、版、対象ページを記録すると、回答の根拠をたどりやすくなります。
最初のテストでは短い既知の資料を使い、書かれている事実を一つ質問します。その後、書かれていないことを質問し、不明と区別できるかを確認します。資料を読めたという応答だけでなく、実際の内容との照合が必要です。
5.ツールの実行はアプリ側で制御する
Function Callingなどで外部処理を扱う場合、モデルが提案した引数を、そのまま信頼して実行しないようにします。対象のID、許可された操作、入力の型、実行するユーザーの権限をアプリ側で検証します。読み取り用の機能と更新用の機能を分けると、権限を考えやすくなります。
たとえば、予定を探す処理と予定を作る処理は別です。検索結果を見せる段階で、勝手に予定を登録してはいけません。実行前に対象と内容を確認できる画面を用意し、完了後は実際の結果を返します。モデルの説明と、外部サービスで完了した状態を区別します。
実践課題と完了チェック
検索コードの接続先とツール指定を説明し、返答の出典を一つ照合してください。ファイル入力については、参照する版と、不明な質問への期待動作を決めます。外部処理へ広げる場合の引数検査と確認地点も書ければ完了です。検索が使えること、資料を読めること、更新を許可することを別の判断として扱いましょう。

