40の規程と、毎日同じ質問
文書アシスタントは、会社の文書から質問に答え、どの文書を使ったかを示します。横浜のある事務所には40の社内規程があり、社員は毎日同じことを聞いてきます。
この演習では、そうした機能を計画し、どう確かめるかを決めます。記録したサンプルを使うので、数字は変わらず、比べることができます。
このレッスンのゴール
メモ
文書から答える機能を、計画して確かめることができる。
今日のキーワード
| ことば | いみ | れい |
|---|---|---|
| 仕様書 | 機能がすべきことを短く書いた計画です。 | |
| 検索 | 答えが書かれた部分を見つけることです。 | |
| 出典 | 答えの元になった文書です。 | 休暇.pdf |
| 回答の拒否 | 文書には答えがないと伝えることです。 | |
| 合格ライン | 公開の前に機能が届くべき点数です。 |
学生が入力するセルは、このプレビューでは空白です。
もっと深く学ぶには
メモ
この演習は計画と確認を扱い、検索の作り方は教えません。「教材」ページのAIのレッスンで学べます。 検索拡張生成 (RAG)。 モデルを使う機能の評価とテスト。 検索システム。
仕様書は、よい状態を言葉にする
コードを書く前に、半ページの仕様書を書きます。だれが使い、どの文書を読んでよいかを書きます。どの答えにも必ず示すもの、たとえば出典も書きます。
してはいけないことも書きます。文書アシスタントで一番大きいのは、当て推量です。答えられる文書がないときは、回答の拒否をします。
例: 1ページの仕様書
| 仕様書の項目 | 書いた内容 |
|---|---|
| だれが使うか | ログインした事務所の社員 |
| 何を読んでよいか | 40の社内規程だけ |
| どの答えにも必ず | 元になった文書の名前を示す |
| してはいけないこと | 答えられる文書がないのに推測する |
| 合格ライン | 20問中18問正解、答えのない質問はすべて拒否 |
学生が入力するセルは、このプレビューでは空白です。
評価セットは決まった質問の集まり
評価セットは、仕様書をケースに変えたものです。1つのケースは、質問と、答えるはずの文書の組です。拒否を試すために、わざと文書のないケースも入れます。
2回の実行を比べられるように、評価セットは変えずに使います。下のプログラムは、記録した5つのケースを確かめます。
やってみよう: 記録したサンプルを確かめる
# 記録したサンプルです。テストのときにアシスタントが答えた内容です。
# "source" は、答えの元になるはずの文書です。
# source が空なら、答えられる文書はありません。断るのが正しい動きです。
cases = [
{"question": "年次有給休暇は何日?", "source": "休暇.pdf", "got": "休暇.pdf"},
{"question": "タクシー代の精算方法は?", "source": "経費.pdf", "got": "経費.pdf"},
{"question": "ノートPCの修理はだれに頼む?", "source": "IT窓口.pdf", "got": "休暇.pdf"},
{"question": "社長の給与はいくら?", "source": "", "got": ""},
{"question": "犬を連れて出社してよい?", "source": "", "got": "オフィス.pdf"},
]
right = 0
for case in cases:
if case["got"] == case["source"]:
right = right + 1
else:
print("要確認:", case["question"])
print("正解:", right, "/", len(cases))
# ノートPCの答えを "IT窓口.pdf" に変えて、もう一度実行しましょう。
公開は合格ラインで決める
合格ラインは、テストを始める前に仕様書へ書いておきます。ここでは2つの数字です。20問中18問以上の正解と、推測が0件であることです。
数字が2つなのは、1つの数字がもう1つを隠すことがあるからです。20問中19問正解でも、給与について答えを作ってしまうことがあります。その1件の推測で、公開は止まります。
よくある誤解
注意
多くの人は、手でいくつか質問してみれば、機能が動くとわかると考えます。数回試すだけでは、まれな失敗が隠れます。答えのない質問を含む20件以上の評価セットを決めて、変更のたびに実行しましょう。