You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

391 lines
14 KiB

WEBVTT
00:00.260 --> 00:02.750
チャットボット作りにお帰りなさい。
00:02.780 --> 00:04.070
続けよう。
00:04.070 --> 00:09.650
そこで次のパートでは、 システム・メッセージをもう少し面白いものに強化する。
00:09.650 --> 00:10.700
システムメッセージ。
00:10.700 --> 00:12.710
あなたは洋服店の店員だ。
00:12.740 --> 00:15.920
セール品を試してみるよう、 お客にそっと勧めるべきだ。
00:15.950 --> 00:17.780
帽子60%オフ。
00:17.780 --> 00:19.880
その他のほとんどの商品は50%オフ。
00:19.880 --> 00:24.530
例えば、 お客さんが帽子を買いたいんだけど、 と言ったら、 素敵ですね、 と返せばいい!
00:24.560 --> 00:28.100
私たちは、 販売イベントの一部を含め、 たくさんの帽子を用意しています。
00:28.100 --> 00:32.330
何を買おうか迷っているお客さんには、 帽子を買うように勧める。
00:32.330 --> 00:36.050
このシステム・プロンプトでは、 いくつかのことが進行している。
00:36.050 --> 00:42.230
セールや帽子などについて、 いくつかの事実をお伝えします。
00:42.350 --> 00:47.930
もしお客さんがこう言うなら、 あなたはこう言うことができる。
00:47.930 --> 00:52.280
そしてその例はどちらも、 トーンとスタイルを確立する方法なのだ。
00:52.400 --> 00:58.850
それに、 帽子に関する事実をもっと会話の中に取り入れる方法でもあるんだ。
00:58.850 --> 01:01.670
つまり、 これはすべて一発プロンプトの例なのだ。
01:01.670 --> 01:03.150
そして、 マルチショットのプロンプトを主張することもできる。
01:03.150 --> 01:06.720
だから、 返答の仕方のニュアンスを少し変えているんだ。
01:06.930 --> 01:09.810
それをシステムメッセージに組み込むんだ。
01:09.810 --> 01:13.950
他のやり方もあるので、 それについてはまたお話ししますし、 少なくとも別のやり方もあります。
01:14.040 --> 01:16.980
しかし、 これは非常に効果的な方法のひとつだ。
01:16.980 --> 01:26.580
システム・メッセージを追加し、 チャットボットとチャットをします。
01:26.670 --> 01:36.030
そこでもう一度、 メッセージと履歴を受け取るジェネレーター・チャットのメソッドを書く。
01:36.210 --> 01:44.730
まず、 OpenAIが期待するフォーマットに変換します。
01:44.730 --> 01:49.200
また、 前回言ったかどうかわからないが、 最後に、 ユーザーが送信している最新のメッセージを、
01:49.230 --> 01:58.770
ロール・ユーザー・コンテンツとして一番下に追加しなければならない。
01:58.770 --> 02:00.480
そしてそのメッセージ。
02:00.480 --> 02:08.460
そしてもちろん、 この時点であなたの深い記憶に刻み込まれた "create "コールを行い、 "stream
02:08.460 --> 02:12.630
is true "で結果をストリームバックする。
02:12.630 --> 02:13.530
それでは、 どうぞ。
02:13.560 --> 02:14.760
その話を持ち出そう。
02:14.760 --> 02:16.680
また別ウィンドウで表示させます。
02:16.710 --> 02:17.340
なぜだ。
02:17.340 --> 02:20.910
そして、 ショッピング・アシスタントに話を聞いてみよう。
02:21.210 --> 02:22.050
こんにちは。
02:23.520 --> 02:24.870
当店へようこそ。
02:24.900 --> 02:25.920
本日はどのようなご用件でしょうか?
02:25.920 --> 02:27.510
何か特定のものをお探しですか?
02:27.510 --> 02:33.090
靴を買いたいんだ。
02:34.110 --> 02:35.280
素晴らしい。
02:36.480 --> 02:38.760
素敵な品揃えです。
02:38.760 --> 02:41.580
ご覧いただいている間に、 素晴らしいセールが開催中であることをお伝えしたい。
02:41.580 --> 02:43.140
ほとんどの商品が50%オフ。
02:43.140 --> 02:47.340
もしよろしければ、 60%オフのおしゃれな帽子をどうぞ。
02:47.370 --> 02:50.340
新しい靴にぴったりかもしれない。
02:50.340 --> 02:52.170
両方ご覧になりますか?
02:52.620 --> 02:56.490
だから、 私はそれが明らかに解明されていることを指摘したい。
02:56.490 --> 03:01.170
システム・プロンプトで供給した知識を持っている。
03:01.170 --> 03:07.990
しかし、 そのシステム・プロンプトで私が使っていた、 熱狂的で熱弁をふるうようなスタイルが、 このような、
03:07.990 --> 03:16.960
ええと、 とても、 ええと、 愛想のいいファッションでコミュニケーションしていることに気づいていただければ幸いだ。
03:17.290 --> 03:22.720
そして、 このようなワンショットやマルチショットのプロンプトの大きな役割は、 あなたがトーンを設定し、
03:22.720 --> 03:25.930
どのように答えるべきかの例を示すことです。
03:26.860 --> 03:28.510
じゃあ、 続けよう。
03:28.510 --> 03:31.180
そのシステム・メッセージに、 こう付け加えよう。
03:31.180 --> 03:35.950
靴が欲しい」と言われたら、 「靴はセール対象外です」と答えればいい。
03:35.980 --> 03:37.720
と答えるべきだ。
03:37.720 --> 03:39.910
今日は靴はセール対象外だと答えるべきだ。
03:39.910 --> 03:42.760
でも、 お客さんには帽子を見るように注意してください。
03:42.760 --> 03:44.170
では、 もう一度やってみよう。
03:44.170 --> 03:45.580
どうなるか見てみよう。
03:45.640 --> 03:48.160
ええと、 もうひとつ事実があるんだ。
03:48.310 --> 03:49.630
そうとも言えるね。
03:49.660 --> 03:54.220
ああ、 これもマルチショットのプロンプトだね。
03:54.250 --> 03:55.210
こう言おう。
03:55.210 --> 03:55.990
こんにちは。
03:57.640 --> 03:58.420
お探しですか?
03:58.420 --> 04:04.540
靴を買いたいんだ。
04:04.540 --> 04:05.900
それはいいね。
04:05.930 --> 04:08.630
今日は靴はセール対象外なんだ。
04:08.630 --> 04:10.940
でも、 ここにいる間に、 私たちの帽子をチェックしようと思ったことはある?
04:13.640 --> 04:20.030
何度も帽子を投げつけられるかわいそうな客に同情せざるを得ない。
04:20.330 --> 04:28.910
靴はセールにならないが、 帽子はセールになる。
04:29.180 --> 04:35.930
これはマルチショット・プロンプトの一例で、 より多くの例を与えて学習させるということだ。
04:36.260 --> 04:47.960
もうひとつ、 興味深いのは、 これまでこのような構成を見てきたとき、 いつもシステム・メッセージから始めていたことだ。
04:47.960 --> 04:49.640
システムメッセージが一番上に来る。
04:49.640 --> 04:55.070
しかし実際、 OpenAIのコールでは、 システムメッセージをトップに置くことに制約されることはない。
04:55.070 --> 04:58.460
さらにシステムメッセージを追加していくこともできる。
04:58.730 --> 05:05.930
例えば、 私たちができることのひとつは、 ええと、 ええと、 あまりお勧めはしないのですが、
05:05.970 --> 05:09.120
例を示すためにここにあります。
05:09.120 --> 05:24.510
しかし、 このチャット・ジェネレーターを構築する際に、 ユーザーが現在送っているメッセージにベルトという単語が含まれているかどうかをここに書き込むことができる。
05:24.510 --> 05:28.020
そして、 ちょっと見苦しいですが、 紐ベルトを探したところです。
05:28.050 --> 05:34.770
もちろん、 完全な単語かどうかをテストすべきだし、 大文字、 小文字なども考えるべきだ。
05:34.770 --> 05:38.220
私はそんなことはしていない。 とてもエッチなことだが、 要点はここにある。
05:38.220 --> 05:43.560
だから、 もしベルトがメッセージという言葉に入っていれば、 それはこのメッセージのセットに加えられることになる。
05:43.590 --> 05:50.490
もう一つのシステムメッセージは、 この店ではベルトを販売していないが、
05:50.490 --> 05:58.500
セール品を必ず示すこと。
05:59.940 --> 06:06.030
では、 試しにこれをここに持ってきてみよう。
06:08.250 --> 06:09.180
こんにちは。
06:11.130 --> 06:12.060
ご来店ありがとうございます。
06:12.090 --> 06:13.080
私がお手伝いします。
06:13.530 --> 06:17.310
ベルトを買いたいんだ。
06:19.110 --> 06:19.710
ごめんなさい.
06:19.710 --> 06:20.910
ベルトは持っていない。
06:20.910 --> 06:24.390
しかし、 帽子を含む素晴らしいアイテムがあります。
06:24.420 --> 06:26.130
60%オフ。
06:26.310 --> 06:27.780
そうだ。
06:27.810 --> 06:28.620
そうだ。
06:28.650 --> 06:29.880
それは、 うーん。
06:30.210 --> 06:33.270
ああ、 間違いなく注意を払っている。
06:33.270 --> 06:42.900
システム・メッセージがこのメッセージ・リストに別の行として追加されると、 そのメッセージに注意を払うのがわかるだろう。
06:42.900 --> 06:49.140
そしてそれは、 私たちが会話に文脈を加える機会を与えてくれる。
06:49.140 --> 07:02.640
もちろん、 このような単語や部分文字列を検出するのは非常に不格好なコードだが、 これをもう少し堅牢にすることは可能だろう。
07:02.670 --> 07:07.830
特定の単語を探す小さな辞書があってもいい。
07:07.830 --> 07:15.910
そして、 それを見つけたら、 適切な方法でコンテクストを豊かにするために使うことができる。
07:15.970 --> 07:23.140
だから、 いろいろなことを調べたり、 文脈に加えたりすることができるんだ。
07:23.170 --> 07:31.150
さて、 皆さんはラグについてある程度ご存知かもしれないし、 ラグとはそういうものだということもご存知かもしれない。
07:31.180 --> 07:41.200
ラグとは、 プロンプトに関連する余分な情報を見つけ、 それをLMに送られるメッセージの文脈に加えることである。
07:41.230 --> 07:48.430
もちろん、 ラグはこのような陳腐なコードよりも、 はるかに洗練されたインテリジェントな方法でそれを実現している。
07:48.610 --> 07:55.540
でも、 これは軽いもの、 雑巾の赤ちゃんバージョン、 そして自分のための練習だと思えばいい。
07:55.540 --> 08:01.540
少なくとも、 正規表現を使って特定の単語を検索させることはできる。
08:01.540 --> 08:07.930
店内のさまざまな商品と、 その価格が書かれた小さな辞書を用意して、 それをシステムメッセージとして追加することで、
08:07.930 --> 08:13.730
より多くの文脈を与えることができるかもしれない。
08:13.730 --> 08:20.270
それを試してみて、 実際にその店の商品の価格を知っているチャットボットを作れば、
08:20.270 --> 08:23.000
かなりクールだろう。
08:23.750 --> 08:27.200
これで今回の実験は終了だ。
08:27.200 --> 08:43.430
先ほど、 マルチショット・プロンプトをシステム・プロンプトに押し込む以外の方法があることを申し上げました。
08:43.460 --> 08:49.580
現在の会話の前に、 ユーザーとアシスタントの架空のやりとりを会話に入れ、
08:49.580 --> 09:02.990
それをLMに似たような会話をさせることで、 LMが他の質問に対してどのように答えたか感覚をつかむことができる。
09:03.140 --> 09:09.200
また、 それを使ってスタイルをトレーニングしたり、 追加情報を提供することもできる。
09:09.200 --> 09:14.640
だから、 以前にベルトについての質問があったときに、 アシスタントがすでに店にベルトはないと答えていて、
09:14.640 --> 09:19.740
そこから学習したのかもしれない。
09:19.740 --> 09:25.380
つまり、 システムのプロンプトでそれを提供するか、 ユーザー・アシスタントが入力コンテキストの一部として吸収できるようなインタラクション例を与えるか、
09:25.410 --> 09:34.410
どちらの手法にも長所と短所がある。
09:34.560 --> 09:38.640
ええと、 私があなたにお願いしたいのは、 両方試してみることです。
09:38.640 --> 09:44.160
そこで、 システムプロンプトの代わりにユーザーアシスタントのインタラクションを使うようにアップデートし、 それがどのように機能するか見てみよう。
09:44.190 --> 09:47.430
洋服店の店員との相性が良いか悪いか。
09:47.430 --> 09:53.460
そして、 この変更をもっとしっかりしたものにするために、
09:53.460 --> 10:00.780
店内のさまざまなアイテムの辞書を用意し、 その価格やセール金額を調べ、
10:00.780 --> 10:12.300
それを会話の文脈に加えることで、 アシスタントが専門的な知識を持って対応できるようにするのです。