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 それを会話の文脈に加えることで、 アシスタントが専門的な知識を持って対応できるようにするのです。