From the uDemy course on LLM engineering.
https://www.udemy.com/course/llm-engineering-master-ai-and-large-language-models
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.
283 lines
9.0 KiB
283 lines
9.0 KiB
WEBVTT |
|
|
|
00:00.830 --> 00:04.250 |
|
ラボのラジオ・デイへようこそ。 |
|
|
|
00:04.250 --> 00:05.180 |
|
もっとやることがある。 |
|
|
|
00:05.210 --> 00:06.620 |
|
続けよう。 |
|
|
|
00:06.620 --> 00:16.610 |
|
LLMを呼び出し、 とてもいいジョークを言うシンプルなユーザー・インターフェースを作ったところだった。 |
|
|
|
00:16.850 --> 00:20.060 |
|
ええと、 このまま続けましょう。 |
|
|
|
00:20.060 --> 00:32.540 |
|
次にやることは、 より見栄えのするユーザー・インターフェースを得る方法として、 マークダウンで応答するようアシスタントに求めることだ。 |
|
|
|
00:32.960 --> 00:40.940 |
|
マークダウンで書かれた優れた書式で、 グラディオの結果を表示できたらいいと思わない? |
|
|
|
00:40.940 --> 00:51.560 |
|
テキストボックスの代わりにマークダウンという言葉に置き換えるだけで、 完璧にフォーマットされたマークダウンが出力される。 |
|
|
|
00:51.560 --> 00:53.180 |
|
それは素晴らしいことだろう? |
|
|
|
00:53.210 --> 00:54.380 |
|
いいことだと思わない? |
|
|
|
00:55.190 --> 00:56.900 |
|
このあたりはお分かりだろう。 |
|
|
|
00:57.770 --> 00:59.030 |
|
物事は本当にそうなんだ。 |
|
|
|
00:59.030 --> 00:59.840 |
|
これはいい。 |
|
|
|
01:00.020 --> 01:02.510 |
|
では、 あなたのメッセージを言いましょう。 |
|
|
|
01:02.510 --> 01:03.740 |
|
そうだな。 |
|
|
|
01:03.890 --> 01:14.240 |
|
あの、 タイムズ・スクエアからグランド・セントラルまでどうやって行けばいいんですか? |
|
|
|
01:14.960 --> 01:17.120 |
|
ニューヨーク・ナビゲーションに質問がある。 |
|
|
|
01:17.120 --> 01:18.710 |
|
どうなるか見てみよう。 |
|
|
|
01:19.640 --> 01:21.440 |
|
それを考えているんだ。 |
|
|
|
01:22.400 --> 01:23.360 |
|
さあ、 行こう。 |
|
|
|
01:23.360 --> 01:24.440 |
|
これが返答だ。 |
|
|
|
01:24.440 --> 01:29.660 |
|
ニューヨークのタイムズ・スクエアからグランド・セントラル・ターミナルに行くには、 私が話していたことを理解する必要がある。 |
|
|
|
01:29.870 --> 01:34.040 |
|
これらの手順を踏めば、 良い見出しであることがわかるだろう。 |
|
|
|
01:34.310 --> 01:43.820 |
|
そして、 GPT4から戻ってきたマークダウンに記されているように、 素敵なサブの弾丸や数字、 その他もろもろを備えている。 |
|
|
|
01:43.850 --> 01:47.000 |
|
とても簡単だ。 |
|
|
|
01:47.390 --> 01:50.360 |
|
他に何ができるか見てみよう。 |
|
|
|
01:51.500 --> 01:53.420 |
|
ええと、 ストリーミング。 |
|
|
|
01:53.420 --> 01:55.700 |
|
ストリーミングは前回で慣れた。 |
|
|
|
01:55.700 --> 02:03.820 |
|
そこで、 Jupyterの出力セルに戻ってきたときと同じように、 結果をGradioのユーザー・インターフェースにストリームバックすることができる。 |
|
|
|
02:03.820 --> 02:04.960 |
|
それでは、 どうぞ。 |
|
|
|
02:04.990 --> 02:07.300 |
|
私たちは機能を変える。 |
|
|
|
02:07.330 --> 02:10.840 |
|
以前はGPTというメッセージだった。 |
|
|
|
02:10.870 --> 02:12.400 |
|
今はGPTストリームにしている。 |
|
|
|
02:12.430 --> 02:13.420 |
|
機能が違う。 |
|
|
|
02:13.420 --> 02:15.610 |
|
そして重要なのは、 これは実際には機能ではないということだ。 |
|
|
|
02:15.610 --> 02:20.320 |
|
結果を出して終わるという点ではジェネレーターだ。 |
|
|
|
02:20.320 --> 02:26.170 |
|
そしてグラディオは、 私たちが関数ではなくジェネレーターを与えていることを検知する。 |
|
|
|
02:26.170 --> 02:35.980 |
|
そのため、 グラディオは自動的に反復性を持ち、 このジェネレーターから戻ってくるデータを少しずつ埋めていくことになる。 |
|
|
|
02:36.100 --> 02:38.020 |
|
だからいつもの話だ。 |
|
|
|
02:38.020 --> 02:46.120 |
|
メッセージを作成し、 同じAPIコールであることを思い出してほしい。 |
|
|
|
02:46.150 --> 02:47.770 |
|
クロードのやり方を覚えているか? |
|
|
|
02:47.860 --> 02:48.790 |
|
そうなるといいね。 |
|
|
|
02:48.820 --> 02:54.220 |
|
クロードの場合は、 アトリビュートを持たず、 ドット・クリエイトの代わりにドット・ストリームを呼び出す。 |
|
|
|
02:54.220 --> 02:56.290 |
|
でも、 それ以外はよく似ている。 |
|
|
|
02:56.350 --> 02:58.810 |
|
ここでひとつ注目すべきことがある。 |
|
|
|
02:58.840 --> 03:01.110 |
|
ただ、 グラディオの場合はほんの少し微妙だ。 |
|
|
|
03:01.140 --> 03:08.820 |
|
結果をGradioにストリームバックする場合、 結果のチャンクごとにストリームバックすることはない。 |
|
|
|
03:08.820 --> 03:16.410 |
|
これまでの累積結果をすべてストリームバックし、 さらに長い累積結果をストリームバックしなければならない。 |
|
|
|
03:16.410 --> 03:20.520 |
|
つまり、 私がやっているのは、 空の文字列から始めるということだ。 |
|
|
|
03:20.520 --> 03:28.110 |
|
そして、 各チャンクごとにそれを足し算して、 これまでの累積結果を出す。 |
|
|
|
03:28.260 --> 03:37.140 |
|
そうしないと、 個々の塊が出力セルに現れては消え、 別のものに置き換わってしまう。 |
|
|
|
03:37.140 --> 03:38.910 |
|
だから、 こうしなければならない。 |
|
|
|
03:38.910 --> 03:42.900 |
|
意味がわからない場合は、 yield resultの代わりにyield chunkを試してみてほしい。 |
|
|
|
03:43.050 --> 03:43.290 |
|
申し訳ない。 |
|
|
|
03:43.320 --> 03:46.200 |
|
収量塊. 0. デルタ・ドット・コンテンツ |
|
|
|
03:46.320 --> 03:46.590 |
|
ええと。 |
|
|
|
03:46.590 --> 03:49.350 |
|
そうすれば、 私が言っている意味がよくわかるだろう。 |
|
|
|
03:49.350 --> 03:50.910 |
|
見栄えは良くないだろう。 |
|
|
|
03:51.150 --> 03:59.640 |
|
とにかく、 これが我々のストリームGPTだ。 メッセージGPTであった関数をストリームGPTに置き換えるだけで、 |
|
|
|
03:59.760 --> 04:06.390 |
|
あとはGradioがやってくれるとしたら、 それは素晴らしいことではないだろうか。 |
|
|
|
04:06.390 --> 04:09.300 |
|
これは関数ではなくジェネレーターなんだ。 |
|
|
|
04:09.300 --> 04:11.610 |
|
そのため、 彼らは結果をストリーミングで返したいと思っているはずだ。 |
|
|
|
04:11.610 --> 04:15.360 |
|
だから、 タイプライター・アニメーション風のエフェクトが必要なんだ。 |
|
|
|
04:15.390 --> 04:18.660 |
|
本当にそんな単純なことができるのか、 見てみよう。 |
|
|
|
04:18.660 --> 04:20.190 |
|
そんな単純なことでいいのだろうか? |
|
|
|
04:20.520 --> 04:21.660 |
|
さあ、 始めよう。 |
|
|
|
04:21.690 --> 04:29.940 |
|
タイムズ・スクエアからグランド・セントラルへはどうやって行くの? |
|
|
|
04:32.310 --> 04:33.360 |
|
さあ、 行こう。 |
|
|
|
04:33.510 --> 04:34.470 |
|
もちろん、 それは簡単なことだ。 |
|
|
|
04:34.500 --> 04:35.460 |
|
もちろんそうだ。 |
|
|
|
04:35.490 --> 04:36.930 |
|
結果をストリームする。 |
|
|
|
04:36.930 --> 04:37.920 |
|
見た目も素晴らしい。 |
|
|
|
04:37.920 --> 04:40.380 |
|
マークダウンは素晴らしい。 |
|
|
|
04:40.890 --> 04:47.280 |
|
ええと、 だから、 もちろん、 クロードと一緒ならどんなに簡単かお見せしなければ、 私の仕事ではありません。 |
|
|
|
04:47.280 --> 04:51.540 |
|
前にも書いたが、 クロードのAPIコールがあるのがわかるだろう。 |
|
|
|
04:51.540 --> 04:52.800 |
|
とてもよく似ている。 |
|
|
|
04:52.800 --> 04:55.650 |
|
ドットストリームを呼び出し、 パラメータは渡さない。 |
|
|
|
04:55.650 --> 05:00.470 |
|
トークンの最大数を指定する必要があり、 システム・メッセージは別に入力されることを覚えておいてほしい。 |
|
|
|
05:00.500 --> 05:02.240 |
|
それ以外は非常によく似ている。 |
|
|
|
05:02.270 --> 05:05.510 |
|
ストリーミングバックは、 ストリームとしての結果のためだけのものだ。 |
|
|
|
05:05.690 --> 05:08.030 |
|
つまり、 結果をストリームとしてコンテキスト・マネージャーとする。 |
|
|
|
05:08.030 --> 05:13.070 |
|
そして、 以前と同じように全回答を返す。 |
|
|
|
05:13.550 --> 05:16.670 |
|
そしてこの時点では、 退屈なほどシンプルなものになるだろう。 |
|
|
|
05:16.670 --> 05:17.780 |
|
冗談はわかるだろう。 |
|
|
|
05:17.810 --> 05:21.050 |
|
代わりにその関数を渡すだけだ。 |
|
|
|
05:21.050 --> 05:24.110 |
|
そして今、 私たちは代わりにクロードと話している。 |
|
|
|
05:24.110 --> 05:25.640 |
|
同じ質問をしよう。 |
|
|
|
05:25.670 --> 05:31.910 |
|
タイムズ・スクエアからグランド・セントラルへの行き方は? |
|
|
|
05:33.290 --> 05:40.250 |
|
そして、 クロードの回答が来た。 少し短く、 2つの選択肢だけだが、 うまく構成されている。 |
|
|
|
05:40.250 --> 05:41.720 |
|
うまくフォーマットされている。 |
|
|
|
05:41.720 --> 05:43.820 |
|
実に素晴らしい。 |
|
|
|
05:44.120 --> 05:53.750 |
|
GPTとクロードのどちらかを選択できるようにすることで、 一歩前進させることができます。 |
|
|
|
05:53.750 --> 05:56.840 |
|
でも、 それは次のセッションで話そうと思っている。 |
|
|
|
05:56.840 --> 05:57.980 |
|
だから、 そこで頑張るんだ。
|
|
|