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.
 
 

568 lines
20 KiB

WEBVTT
00:00.050 --> 00:03.890
この時点で最初のLM実験の時間だ。
00:03.980 --> 00:08.330
だから、 この中のいくつかはよくご存じかもしれないし、 すでによくご存じかもしれない。
00:08.360 --> 00:11.180
初耳の人もいるかもしれないが、 説明しよう。
00:11.240 --> 00:13.550
これから使うモデルだ。
00:13.550 --> 00:17.090
これらのフロンティアモデルは、 特定の方法で訓練されている。
00:17.090 --> 00:23.090
つまり、 私たちユーザーから2つの異なるタイプの指示を期待されているのだ。
00:23.120 --> 00:27.590
そのうちの1つはシステムプロンプトとして知られ、 もう1つはユーザープロンプトとして知られている。
00:27.620 --> 00:33.980
システム・プロンプトは、 この会話の背景を説明するものだ。
00:33.980 --> 00:39.440
このコースでは、 システムプロンプトを変更することの意味や、
00:39.440 --> 00:47.480
システムプロンプトにどのような情報を含めることができるかを試していきます。
00:47.570 --> 00:51.230
ユーザー・プロンプトは実際の会話そのものである。
00:51.230 --> 00:55.040
そして、 今の私たちの場合は、 会話のきっかけになるだけだ。
00:55.040 --> 01:05.730
そして、 大規模な言語モデルのLMの役割は、 このユーザーからのプロンプトが与えられたときに、 最も可能性の高い応答方法は何かを見つけ出すことである。
01:05.730 --> 01:13.410
このユーザー・プロンプトが与えられたとしたら、 そしてこのシステム・プロンプトの文脈の中で、 その次に来る可能性の高いテキストは何だろうか?
01:13.410 --> 01:17.460
それは、 このユーザーに対応するアシスタントのものだろう。
01:18.000 --> 01:24.660
これが、 文脈を設定するシステム・プロンプトと、 会話のきっかけとなるユーザー・プロンプトの違いだ。
01:24.810 --> 01:26.790
そこで、 システム・プロンプトを設定する。
01:26.790 --> 01:27.960
そして、 こう書いてある。
01:27.960 --> 01:37.590
あなたがウェブサイトのコンテンツを分析し、 ナビゲーションに関連しそうなテキストを無視して短い要約を提供するアシスタントであると言うことになる。
01:37.590 --> 01:39.630
マークダウンで対応する。
01:39.660 --> 01:42.660
それが何を意味するかは、 すぐにわかるだろう。
01:42.660 --> 01:46.800
これがユーザー・プロンプトのシステム・プロンプトだ。
01:46.800 --> 01:51.180
ユーザー・プロンプトの関数を書きます。
01:51.180 --> 01:54.990
そして、 関数の引数としてウェブサイトを受け取る。
01:54.990 --> 02:00.460
そして、 「ウェブサイト」というタイトルのウェブサイトを見ていると表示される。
02:01.000 --> 02:03.760
本ウェブサイトの内容は以下の通りです。
02:03.760 --> 02:10.240
ニュースやお知らせが含まれる場合は、 ウェブサイトの簡単な概要をマークダウンでご記入ください。
02:10.240 --> 02:17.020
この2つを要約し、 Beautifulsoupが取り出してくれたウェブサイトオブジェクトからテキストを取り出し、
02:17.020 --> 02:22.990
それをユーザープロンプトに追加して、 ユーザープロンプトを返す。
02:23.290 --> 02:28.870
では、 さっそくこのセルを動かして見てみましょう。
02:28.870 --> 02:33.520
そうして、 プロンプトのシステム構成を見てみよう。
02:35.560 --> 02:38.470
もちろん、 今言ったような文章もある。
02:38.650 --> 02:46.060
さて、 先ほど新しいウェブサイト・オブジェクトを作成し、 この変数エディタに格納したのを覚えているだろうか。
02:46.060 --> 02:55.540
だから、 ここに来れば、 ユーザー・プロンプトと言い、 オブジェクト・エドを渡すことができるはずだ。
02:56.260 --> 02:58.690
そして、 プロンプトが表示される。
02:58.720 --> 03:03.340
空行を出力するように印刷すれば簡単かもしれない。
03:05.440 --> 03:09.070
そしてこれが、 作成したユーザー・プロンプト文字列である。
03:09.070 --> 03:11.440
あなたが見ているのは、 "blah blah blah "というタイトルのウェブサイトです。
03:11.470 --> 03:13.510
本ウェブサイトの内容は以下の通りです。
03:13.510 --> 03:15.220
簡単な要約をお願いします。
03:15.250 --> 03:18.760
ほら、 ここにスペースがあったほうがよさそうだ。 そうしないと混乱するかもしれない。
03:18.760 --> 03:19.810
もう一度やってみよう。
03:21.670 --> 03:26.770
そのような小さな矛盾を見つけることができるからだ。
03:28.000 --> 03:30.580
実際、 今見ると、 もっと素敵になると思うよ。
03:30.580 --> 03:34.540
このようにキャリッジ・リターンがあるとする。
03:38.080 --> 03:39.250
このプロンプトを見てみよう。
03:39.280 --> 03:45.280
今、 あなたはウェブサイトを見ている。
03:45.310 --> 03:49.780
では、 メッセージ・オブジェクトについて話そう。
03:49.780 --> 03:55.800
だからOpenAIは、 特定のフォーマットで会話を受け取ることを期待している。
03:55.800 --> 04:01.920
これはOpenAIが考え出したフォーマットで、
04:01.920 --> 04:07.200
彼らのAPIに使われている。
04:07.200 --> 04:16.050
つまり、 これはもともとOpenAIのAPIの使用方法だったのが、 このアプローチを使用する多くの異なるモデルにおける標準のようなものになったということだ。
04:16.050 --> 04:17.520
その仕組みはこうだ。
04:17.520 --> 04:25.590
会話を記述しようとするとき、 Pythonの辞書のリストを使って記述する。
04:25.590 --> 04:29.640
つまり、 リストの各要素が辞書であるリストだ。
04:29.640 --> 04:32.310
その辞書はこうなっている。
04:32.340 --> 04:35.130
これは2つの要素を持つ辞書である。
04:35.340 --> 04:43.170
そのうちの1つはroleのキーを持ち、 ここではroleのキーであるsystemかuserのどちらかの値である。
04:43.170 --> 04:46.500
そして、 その価値はコンテンツのキーとなるシステムである。
04:46.500 --> 04:49.770
そして、 その値はもちろんシステム・メッセージである。
04:49.800 --> 04:53.760
もうひとつ、 役割のカギを握る辞書がある。
04:53.760 --> 04:56.700
ユーザーメッセージなので、 値はuserである。
04:56.700 --> 05:01.680
ユーザープロンプトコンテンツは、 ユーザメッセージが入る場所である。
05:02.130 --> 05:05.460
ユーザーメッセージとユーザープロンプトは同じものです。
05:06.120 --> 05:11.190
だから、 うまく説明できなかったかもしれないが、 こうして視覚的に見れば理解できるだろう。
05:11.220 --> 05:18.120
これは、 ロールとコンテンツ、 システムとシステム、 メッセージ・ユーザーとユーザー・メッセージを持つ辞書に過ぎない。
05:18.120 --> 05:21.630
他にもいくつか役割があるが、 それは追って説明する。
05:21.630 --> 05:23.010
今はこれで十分だ。
05:23.010 --> 05:26.130
これがメッセージの作り方だ。
05:26.130 --> 05:34.050
そして、 この次の関数のdefメッセージを見てもらえば、 これが作成されていることが一目瞭然だろう。
05:34.050 --> 05:38.400
これは、 まさにこの構造をコードを使って作っている。
05:38.400 --> 05:42.000
私たちが考えた一般的なシステムプロンプトを入れるんだ。
05:42.000 --> 05:46.560
そして、 ウェブサイトのユーザー・プロンプトを作成する。
05:46.980 --> 05:48.570
では、 それを実行してみよう。
05:49.200 --> 06:02.300
そして今、 私のウェブサイトのオブジェクトであるEdへのメッセージと言えば、 空行などが見えるように印刷することは明らかだろう。
06:04.430 --> 06:07.370
実は、 申し訳ないが、 この場合は印刷しない方がいいかもしれない。
06:07.640 --> 06:09.830
こうすれば、 少しはスッキリするかもしれない。
06:09.860 --> 06:10.370
これでよし。
06:10.400 --> 06:16.220
そして今、 それが2つの役割システムのリストであることがわかるだろう。
06:16.220 --> 06:18.170
そして、 システムメッセージの役割ユーザーがいる。
06:18.170 --> 06:20.270
そして、 そこにユーザーメッセージがある。
06:20.870 --> 06:21.710
オーケー。
06:21.710 --> 06:23.120
これをまとめる時が来た。
06:23.120 --> 06:24.710
今こそ実際にやるときだ。
06:24.710 --> 06:34.610
OpenAIのAPIはとてもシンプルで、 フロンティアモデルを呼び出してこれをやってくれる。
06:34.610 --> 06:37.700
だから、 今は覚えておくべきことがいくつかあるように見えるかもしれない。
06:37.700 --> 06:42.620
すぐに慣れるだろうが、 これからsummarizeという関数を作る。
06:42.620 --> 06:48.860
そしてそれは、 私たちの問題を解決し、 渡されたURLを要約するビジネスを行うことだ。
06:48.860 --> 06:53.720
エディターの時と同じように、 まずそのURLのウェブサイトを作成する。
06:53.720 --> 06:56.300
そこでOpenAIと呼んでいる。
06:56.840 --> 06:59.840
OpenAIとは、 OpenAIのオブジェクトのことだ。
06:59.870 --> 07:05.480
我々はOpenAIのドットチャット、 ドットコンプリート、 ドットクリエイトを作った。
07:05.930 --> 07:08.390
そして、 今はただ暗記すればいいということだ。
07:08.390 --> 07:10.520
そのことについては、 後でいろいろと理解できるだろう。
07:10.820 --> 07:16.070
しかし、 OpenAIに関する限り、 これは補完APIとして知られている。 なぜなら、 この会話を完成させ、
07:16.100 --> 07:20.750
次に何が来る可能性が最も高いかを予測するよう求めているからだ。
07:20.900 --> 07:23.780
使用するモデルの名前を渡す。
07:23.780 --> 07:27.920
GPT4ミニと呼ばれるモデルを使う。
07:27.920 --> 07:39.350
地球上で最高級モデルのひとつであるGPT 4の軽量・廉価版であり、 これを使うには1セントもかからない。
07:39.350 --> 07:45.620
モデルを渡して、 それからメッセージを渡す。 メッセージは、
07:45.620 --> 07:49.910
今作ったこの構造体を使う。
07:50.660 --> 07:54.380
戻ってきたものをこのオブジェクト・レスポンスに入れる。
07:54.500 --> 08:01.910
そしてレスポンスが返ってきたら、 レスポンス・ドット・チョイス・ゼロ・ドット・メッセージ・ドット・コンテンツと呼ぶ。
08:02.090 --> 08:05.270
さて、 これが何なのか、 私たちが知る必要のない別の日に説明しよう。
08:05.270 --> 08:05.810
今のところはね。
08:05.810 --> 08:10.820
あとは、 レスポンス・ドット・チョイス・ゼロ・ドット・メッセージ・ドット・コンテンツを実行することだけだ。
08:10.820 --> 08:11.930
それでいいんだ。
08:11.930 --> 08:14.330
これが要約機能だ。
08:14.330 --> 08:19.400
ということで、 私たちが運営しているウェブサイトを要約してみよう。
08:19.400 --> 08:22.070
現在はクラウド上のOpenAIに接続している。
08:22.070 --> 08:24.080
往復するんだ。
08:24.080 --> 08:26.870
以下は私のウェブサイトの要約である。
08:26.870 --> 08:34.130
ほんのわずかなお金を使い、 私のウェブサイトを要約した。
08:34.460 --> 08:39.110
私たちは、 これを素敵なスタイルで印刷することができるので、 少し良いことができます。
08:39.110 --> 08:44.300
ええと、 GPT4はマークダウンで回答するようお願いしました。 つまり、 見出しや太字のものなど、
08:44.300 --> 08:48.910
さまざまな文字を使って回答しているということです。
08:49.270 --> 08:57.880
Jupyter Labsの機能を使って、 マークダウン形式で表示させることもできる。
08:57.910 --> 08:58.990
だから、 そうしよう。
08:58.990 --> 09:02.440
この要約表示機能を使って、 もう一度やってみよう。
09:02.470 --> 09:05.770
今回もクラウド上のミニをGPTにする。
09:05.770 --> 09:08.800
そして、 これが私のウェブサイトの要約である。
09:08.980 --> 09:11.800
ええと、 僕について何か書いてある。
09:12.070 --> 09:17.350
とてもきれいなフォーマットで、 とてもきれいに構成されている。
09:17.350 --> 09:18.760
かなり印象的だ。
09:19.360 --> 09:24.970
そしてどうやら、 私が独自に開発したLMSでの仕事にハイライトを当て、 AIとLMSに関連するリソースを提供し、
09:25.150 --> 09:28.840
この分野での知識の発展に尽力していることをアピールしているようだ。
09:28.870 --> 09:30.550
よかったね、 ミニのGPT。
09:30.580 --> 09:32.620
とてもいいまとめだ。
09:33.070 --> 09:33.910
オーケー。
09:33.910 --> 09:36.490
そして今、 さらにいくつかのウェブサイトを試すことができる。
09:36.520 --> 09:39.490
CNNを要約してみよう。 comに移籍した。
09:39.760 --> 09:42.490
まあ、 どうなるか見てみよう。
09:42.520 --> 09:47.470
CNNの方がはるかに大きな結果を出しているのは明らかだ。
09:47.650 --> 09:53.350
それで、 何が起こっているのか、 いくつかの情報を得ることができた。
09:53.440 --> 10:02.800
実は今、 11月5日の夕方にこれを録音しているんですが、 これは今行われている2024年の選挙の日なんです。
10:02.800 --> 10:05.920
もちろん、 それはCNNのウェブページで紹介されている。
10:05.920 --> 10:11.050
クロードのウェブサイトである "アントロピック "を要約することもできる。
10:11.050 --> 10:12.940
素敵なページもある。
10:12.940 --> 10:13.990
さあ、 どうぞ
10:13.990 --> 10:18.100
その詳細については、 彼らのウェブページのこの素敵な要約をご覧いただきたい。
10:19.030 --> 10:20.020
分かった。
10:20.020 --> 10:24.010
これで、 最初のインスタント・グラティフィケーションは終了だ。
10:24.010 --> 10:25.750
ジューシーだ。
10:25.750 --> 10:27.700
実際に役に立つことをしたんだ。
10:27.700 --> 10:28.780
我々はウェブをスクラップした。
10:28.780 --> 10:33.640
要約は最も一般的なAIの使用例の一つである。
10:33.640 --> 10:36.430
一般的なものなので、 あらゆる用途に使える。
10:36.430 --> 10:41.850
このコースの間、 いくつかの異なる方法でそれを行う予定だが、 8週目の粘着ソリューションでも、
10:41.850 --> 10:44.160
要約を行うものを使う予定だ。
10:44.160 --> 10:48.030
だから、 すでに実験していることは素晴らしいことなんだ。
10:48.360 --> 10:53.640
だから、 要約のビジネスへの応用は他にもたくさんある。
10:53.640 --> 10:56.340
これは有効活用できるはずだ。
10:56.340 --> 11:05.190
すぐにでも自分の仕事に応用できる方法を思いついたり、 GitHubで要約の実例となるプロジェクトをいくつか作ったりできるはずだ。
11:05.190 --> 11:12.300
ニュースの要約、 財務報告書からの業績の要約、 履歴書、 カバーレターなどに応用できるだろう。
11:12.300 --> 11:14.820
履歴書からカバーレターを作成することもできる。
11:14.970 --> 11:19.470
ドキュメントの要約でできることはたくさんある。
11:19.470 --> 11:23.220
それに加えて、 ウェブのスクレイピングという側面もある。
11:23.220 --> 11:31.440
だから、 あなたのビジネスに要約をどのように適用するか考え、 これを拡張して要約をしてみてほしい。
11:32.280 --> 11:37.320
また、 技術志向の人向けには、 この方法を使うとすぐにわかることがある。 それは、
11:37.350 --> 11:42.480
この方法では要約できないウェブサイトがたくさんあるということで、 それはウェブページのレンダリングにJavaScriptを使っていて、
11:42.480 --> 11:49.560
かなり単純化しているからだ。
11:49.560 --> 11:55.710
アプローチは、 ただサーバーにリクエストして、 返ってきたものを受け取っただけだ。
11:55.710 --> 11:56.970
しかし、 解決策はある。
11:56.970 --> 12:03.450
解決策としては、 セレニウムなどのプラットフォームや、 playwrightを使えば、 ページをレンダリングして、
12:03.450 --> 12:07.230
そのように実行することができる。
12:07.230 --> 12:12.720
だから、 もしあなたが技術的な傾向があり、 そのようなことについてのバックグラウンドがあるのなら、
12:12.720 --> 12:19.200
本当に興味深い挑戦は、 これをもう少しビーフなものに変えて、 セレンをミックスに加えることだ。
12:19.380 --> 12:22.470
うーん、 偶然にも、 誰かがすでにそれをやっている。
12:22.470 --> 12:24.600
ええと、 生徒の一人です、 ありがとうございました。
12:24.690 --> 12:29.490
そして、 このフォルダーのコミュニティへの貢献を見てみると、 いくつかの異なる解決策がある。
12:29.490 --> 12:32.520
そのひとつがセレンベースのソリューションだ。
12:32.520 --> 12:34.860
だから、 いつでも中に入って自分で見ることができる。
12:34.860 --> 12:36.840
あるいは、 あなたにもチャンスがある。
12:36.840 --> 12:39.380
そこに解決策があるはずだ。
12:40.370 --> 12:47.420
そして、 もしあなたがその解決策や何かを思いついたなら、 他の人がその恩恵を受けられるようにコードを共有してくれると嬉しい。
12:47.420 --> 12:53.240
理想的なのは、 それをコミュニティへの貢献フォルダに入れ、 出力をクリアすることだ。
12:53.240 --> 12:58.190
そこでカーネルを再起動し、 すべてのセルの出力をクリアする。
12:58.310 --> 13:04.730
そうしないと、 出力されたものすべてがコードにチェックされることになる。
13:04.730 --> 13:06.200
だから、 そうしてくれ。
13:06.470 --> 13:12.440
そして、 PR(プル・リクエスト)を提出してもらえれば、 それをコードにマージすることができる。
13:12.440 --> 13:16.550
そして、 それがあなたにとって初めてのことであるなら、 それはちょっとしたプロセスなのだ。
13:16.580 --> 13:21.620
そのために必要なことは、 ここに書いてある。
13:21.830 --> 13:25.700
とにかく、 これが最初のプロジェクトで、 多くのプロジェクトの最初のものだった。
13:25.730 --> 13:27.920
シンプルなプロジェクトだが、 重要なものだ。
13:27.950 --> 13:29.960
非常に重要なビジネスユースケースだ。
13:29.960 --> 13:31.610
有意義なものであったことを願っている。
13:31.610 --> 13:34.700
また次のビデオでお会いしましょう。
13:34.700 --> 13:35.570
週目。
13:35.570 --> 13:36.200
初日。