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.
409 lines
14 KiB
409 lines
14 KiB
WEBVTT |
|
|
|
00:01.040 --> 00:10.460 |
|
さて、 ここでJupyter Labに戻り、 フロンティア・モデルの次の使用に備える。 |
|
|
|
00:10.460 --> 00:12.320 |
|
これはごく自然なことのはずだ。 |
|
|
|
00:12.710 --> 00:18.470 |
|
いつものように、 システムのプロンプトを検討し、 モデルをどのようにプロンプトさせるかを考えることから始める。 |
|
|
|
00:18.800 --> 00:25.610 |
|
つまり、 最も詳細で質の高い説明があり、 価格が明確で、 JSONで厳密に応答する案件を選択することで、 |
|
|
|
00:25.610 --> 00:37.820 |
|
リストから最も詳細な5つの項目を特定し、 要約するのです。 |
|
|
|
00:37.910 --> 00:42.740 |
|
ええと、 最も重要なのは、 最も詳細な商品説明がある5つの案件を回答することです。 |
|
|
|
00:42.740 --> 00:44.810 |
|
用語について言及することは重要ではない。 |
|
|
|
00:45.110 --> 00:49.940 |
|
それから、 JSONの構造もここに書きました。 |
|
|
|
00:49.940 --> 00:54.020 |
|
構造化されたアウトプットを使うのだから、 |
|
|
|
00:54.020 --> 01:01.940 |
|
これは必須ではないことは言っておくべきだろう。 |
|
|
|
01:02.120 --> 01:04.650 |
|
だから、 これは実験できることなんだ。 |
|
|
|
01:04.650 --> 01:08.700 |
|
しかし厳密に言えば、 JSONをこのように指定する必要はないはずだ。 |
|
|
|
01:09.420 --> 01:11.640 |
|
これが私のシステム・プロンプトだ。 |
|
|
|
01:11.670 --> 01:16.740 |
|
ユーザーには、 このリストの中から最も有望な5つの取引を回答するよう促される。 |
|
|
|
01:16.740 --> 01:17.700 |
|
それらを選ぶ。 |
|
|
|
01:17.730 --> 01:18.510 |
|
ブラブラ、 ブラブラ、 ブラブラ。 |
|
|
|
01:18.540 --> 01:19.470 |
|
最後まで読んでほしい。 |
|
|
|
01:19.470 --> 01:20.610 |
|
でもね、 こういうことなんだ。 |
|
|
|
01:31.410 --> 01:31.800 |
|
オーケー。 |
|
|
|
01:31.830 --> 01:32.310 |
|
簡単なことだ。 |
|
|
|
01:32.310 --> 01:36.660 |
|
それでは、 ユーザー・プロンプトの冒頭をプリントしてみよう。 |
|
|
|
01:36.660 --> 01:39.720 |
|
そこで、 ユーザー・プロンプトの最初の2000文字を表示することにする。 |
|
|
|
01:39.720 --> 01:41.310 |
|
それで感覚をつかむんだ。 |
|
|
|
01:41.340 --> 01:42.270 |
|
これだ。 |
|
|
|
01:42.270 --> 01:43.290 |
|
見てみよう。 |
|
|
|
01:43.290 --> 01:48.270 |
|
だから、 ユーザーのプロンプトは、 ブラブラ、 ブラブラ、 ブラブラ、 ブラブラと答えるんだ。 |
|
|
|
01:48.270 --> 01:50.370 |
|
そしてお得な情報だ。 |
|
|
|
01:50.370 --> 02:00.960 |
|
そして、 これはdescribeメソッドの前に見たdescribe関数から取り出した記述です。 |
|
|
|
02:00.960 --> 02:12.650 |
|
つまり、 GPT4に課している仕事は、 この案件リストを消化し、 その中から50件を選び出すことだ。 |
|
|
|
02:12.650 --> 02:19.220 |
|
最も明確な説明があり、 価格がわかる5つを選ぶ。 |
|
|
|
02:19.250 --> 02:24.950 |
|
最も明確な方法でこの価格を解析する。 |
|
|
|
02:25.100 --> 02:29.240 |
|
そしてそれはもちろん、 考えなければならないファジーな種類の問題である。 |
|
|
|
02:29.240 --> 02:33.680 |
|
ほんの1、 2年前なら考えられなかったようなことだ。 |
|
|
|
02:33.770 --> 02:38.180 |
|
エンジニアリング・コードだけを使って、 信頼性の高い方法でそれを行うにはどうしたらいいのだろう。 |
|
|
|
02:38.180 --> 02:44.990 |
|
フロンティア・モデルには最適な問題だ。 このようなニュアンスの理解や、 何かまでは価格を意味し、 |
|
|
|
02:44.990 --> 02:52.190 |
|
何かから離れることまでは価格と同じではないことを理解することができるからだ。 |
|
|
|
02:52.190 --> 02:54.620 |
|
そういうロジックは本当に難しい。 |
|
|
|
02:54.620 --> 03:00.680 |
|
しかし、 フロンティア・モデルは、 それを理解し、 これらの表現の背後にある意味を理解し、 それをインテリジェントに使ってアウトプットを出すという点で、 |
|
|
|
03:00.680 --> 03:05.630 |
|
驚くほど効果的なのだ。 |
|
|
|
03:05.630 --> 03:12.950 |
|
だから、 これらのプロンプトに基づいて、 オーケー、 推薦状をもらおう、 と言えるようになった。 |
|
|
|
03:12.950 --> 03:18.290 |
|
そして今、 構造化出力を使っているため、 通常とは異なるAPIを見ることになる。 |
|
|
|
03:18.710 --> 03:23.300 |
|
だから、 私の推薦文を完成させる機能はOpenAIだ。 |
|
|
|
03:23.300 --> 03:24.800 |
|
そして、 ここはちょっと違う。 |
|
|
|
03:24.800 --> 03:31.160 |
|
少なくとも現時点では、 これはOpenAIのベータ版である。 |
|
|
|
03:31.190 --> 03:34.310 |
|
でも、 もうすぐ完全生産化されるんだろうね。 |
|
|
|
03:34.310 --> 03:39.110 |
|
OpenAIのベータ版、 あるいはアメリカ人にとってはベータ版ということですね。 |
|
|
|
03:39.170 --> 03:44.870 |
|
OpenAIのベータ版、 ドットチャット、 ドット補完、 ドット解析。 |
|
|
|
03:44.960 --> 03:52.520 |
|
そうやって、 いつものようにモデルを提供するんだ。 |
|
|
|
03:52.520 --> 03:57.620 |
|
そして、 これはGPT4とミニ、 GPT4、 フロンティア・バージョン2でサポートされている。 |
|
|
|
03:57.770 --> 04:02.120 |
|
ええと、 いつものように、 メッセージは、 ほら、 言わないでおこうと思ってるんだ。 |
|
|
|
04:02.120 --> 04:02.870 |
|
知っているはずだ。 |
|
|
|
04:02.870 --> 04:04.100 |
|
私が言うまでもないだろう。 |
|
|
|
04:04.130 --> 04:07.310 |
|
確かに、 あー、 ここが違う。 |
|
|
|
04:07.310 --> 04:14.000 |
|
過去に、 JSONを要求することを指定する方法として、 このレスポンス・フォーマットを使用したことを覚えているだろう。 |
|
|
|
04:14.030 --> 04:16.700 |
|
さて、 今回はJSONとは言わない。 |
|
|
|
04:16.730 --> 04:20.900 |
|
私たちがすることは、 取引選択クラスをクラスに渡すことだ。 |
|
|
|
04:20.900 --> 04:25.490 |
|
これが今見ていたクラスで、 私がJSONをスクラップしたものだ。 |
|
|
|
04:25.520 --> 04:30.020 |
|
そのクラスを応答フォーマットとして渡す。 |
|
|
|
04:30.500 --> 04:35.810 |
|
そして、 結果を得るときには、 通常のAPIコールは呼び出さない。 |
|
|
|
04:35.810 --> 04:43.340 |
|
完了はいつものようにドット・メッセージでゼロ、 そして内容ではなくドット・パースされたものとする。 |
|
|
|
04:43.340 --> 04:49.970 |
|
そして、 その応答を解析して、 ディールセレクションのインスタンスにする。 |
|
|
|
04:50.000 --> 04:52.100 |
|
そして、 それが返ってくる。 |
|
|
|
04:52.400 --> 04:54.710 |
|
だから、 その積み重ねで返した方がいい。 |
|
|
|
04:54.740 --> 04:59.780 |
|
このコードを実行し、 何が起こり、 何が返ってくるか見てみよう。 |
|
|
|
04:59.780 --> 05:05.150 |
|
だからGPTはゼロ、 GPTはミニと呼んでいる。 |
|
|
|
05:05.180 --> 05:09.830 |
|
特定の構造化された出力形式を指定しているのだ。 |
|
|
|
05:09.830 --> 05:10.820 |
|
戻ってきた。 |
|
|
|
05:10.850 --> 05:17.390 |
|
では、 どのような結果が出たのかプリントしてみよう。 |
|
|
|
05:17.390 --> 05:19.520 |
|
どんなものが戻ってきたのか見てみよう。 |
|
|
|
05:19.520 --> 05:23.210 |
|
エージェントのお得な契約セレクションだ。 |
|
|
|
05:23.210 --> 05:26.150 |
|
それこそ、 私たちが取り戻したいと願っていたものだ。 |
|
|
|
05:26.150 --> 05:31.760 |
|
実際にどうなのか、 見たほうがいいと思う。 |
|
|
|
05:31.790 --> 05:34.490 |
|
セットだろう。 |
|
|
|
05:34.610 --> 05:38.780 |
|
ええと、 これはディールの選択で、 その中にディールというフィールドがあります。 |
|
|
|
05:38.780 --> 05:39.350 |
|
覚えているかな? |
|
|
|
05:39.380 --> 05:40.850 |
|
ディールは私たちが設定したものだ。 |
|
|
|
05:40.850 --> 05:42.140 |
|
そして、 こちらがお得な情報だ。 |
|
|
|
05:42.140 --> 05:45.830 |
|
では、 どれだけのディールが戻ってきたかを見てみよう。 |
|
|
|
05:46.460 --> 05:49.730 |
|
もちろん、 5つの契約を取り戻したいと思っている。 |
|
|
|
05:50.000 --> 05:50.870 |
|
見てみよう。 |
|
|
|
05:50.900 --> 05:53.870 |
|
確かに5つの契約を取り返すことができた。 |
|
|
|
05:53.870 --> 05:57.020 |
|
そして、 その最初の取引を印刷しよう。 |
|
|
|
05:57.020 --> 06:02.780 |
|
そして、 トップクラスのスマートウォッチ、 サムスン・ギャラクシー・ウォッチ・ウルトラを手に入れた。 |
|
|
|
06:02.960 --> 06:06.710 |
|
ええと、 これをうまくまとめたものがあるんだ。 |
|
|
|
06:06.710 --> 06:10.010 |
|
そして、 これが実際、 我々にとって素晴らしいものに見えていることにお気づきだろう。 |
|
|
|
06:10.010 --> 06:22.250 |
|
GPT4ミニが価格とURLを出してきた。 |
|
|
|
06:22.250 --> 06:26.060 |
|
もちろん、 そのURLをクリックすれば、 その取引が開かれる。 |
|
|
|
06:26.060 --> 06:27.020 |
|
あれだ。 |
|
|
|
06:27.020 --> 06:28.160 |
|
素晴らしい。 |
|
|
|
06:28.310 --> 06:32.690 |
|
僕らにとってはうまくいっているよ。 |
|
|
|
06:32.960 --> 06:34.790 |
|
ああ、 わかった。 |
|
|
|
06:34.820 --> 06:46.850 |
|
さて、 最後にスキャナ・エージェントをインポートしてみましょう。 |
|
|
|
06:46.850 --> 06:51.380 |
|
1、 2分かかるだろうから、 もう一度、 キックオフをやってみるよ。 |
|
|
|
06:51.770 --> 06:57.950 |
|
その間に、 スキャナー・エージェントがどんなものかをお見せしましょう。 |
|
|
|
06:57.950 --> 07:01.370 |
|
スキャナー係はこっちだ。 |
|
|
|
07:01.640 --> 07:08.180 |
|
ええと、 これは前に見たコードとよく似たコードの束です。 |
|
|
|
07:08.540 --> 07:18.620 |
|
それで、 今、 コメントを入れて、 よりよい構成で書いている。 |
|
|
|
07:18.620 --> 07:18.620 |
|
ご覧ください。 |
|
|
|
07:18.890 --> 07:21.710 |
|
でも、 さっき見たようなシステムプロンプトがあるんだ。 |
|
|
|
07:21.710 --> 07:28.880 |
|
ユーザープロンプトがあり、 それを見ると、 5つのディールを厳守してください。 |
|
|
|
07:28.880 --> 07:33.890 |
|
そして init メソッドがセットアップされ、 OpenAI に接続される。 |
|
|
|
07:33.920 --> 07:45.020 |
|
fetch dealsは今見ていたメソッドで、 scrape deal fetchを呼び出してスクレイピングされたディールのリストを取得します。 |
|
|
|
07:45.050 --> 07:52.820 |
|
しかし、 ここでもやっていることは、 潜在的にURLのリストであるメモリー・オブジェクトを取得し、 |
|
|
|
07:52.820 --> 08:00.200 |
|
以前の検索ですでに表示されたと記憶しているものを結果から削除することである。 |
|
|
|
08:00.200 --> 08:05.030 |
|
こうして、 すでに見たことのある案件ではなく、 新しい案件を獲得するようにしている。 |
|
|
|
08:05.030 --> 08:10.850 |
|
そしてもちろん、 エージェント・フレームワークを構築する上で重要な要素のひとつであるメモリーについては、 |
|
|
|
08:10.850 --> 08:12.860 |
|
今後さらに検討していくつもりだ。 |
|
|
|
08:13.790 --> 08:20.510 |
|
そして、 ユーザー・プロンプトを作成し、 そして、 これは前と同じコードだ。 |
|
|
|
08:20.510 --> 08:25.100 |
|
そして、 スキャンは基本的に、 先ほど見た機能そのものである。 |
|
|
|
08:25.130 --> 08:30.920 |
|
ユーザーのプロンプトを作成し、 OpenAIベータにドットチャット、 ドット補完、 ドット解析を呼び出します。 |
|
|
|
08:30.920 --> 08:32.390 |
|
我々はモデルにパスを出す。 |
|
|
|
08:32.390 --> 08:39.260 |
|
レスポンス・フォーマットが取引選択クラスである必要があることを指定し、 それが返されることを確認し、 |
|
|
|
08:39.260 --> 08:43.250 |
|
それをパースしてresultに戻す。 |
|
|
|
08:43.250 --> 08:46.130 |
|
そして、 それが今ここにある。 |
|
|
|
08:46.340 --> 08:53.000 |
|
そうしたら、 えーと、 えーと、 まず、 どんな取引も排除する。 |
|
|
|
08:53.000 --> 08:57.860 |
|
価格がゼロより大きくない場合、 価格がゼロの案件を返したくありません。 |
|
|
|
08:58.010 --> 09:00.020 |
|
そしてその結果を返す。 |
|
|
|
09:00.020 --> 09:05.750 |
|
そして、 もし何の取引も返ってこなかったら、 うーん、 おそらく、 すでにすべて表面化していたのだろうから、 何も返さない。 |
|
|
|
09:05.750 --> 09:08.930 |
|
そして、 それは一番上のオプションで示されている。 |
|
|
|
09:08.990 --> 09:10.640 |
|
それがこのクラスだ。 |
|
|
|
09:10.670 --> 09:13.340 |
|
ということで、 3日目に戻ろう。 |
|
|
|
09:13.340 --> 09:16.790 |
|
そして、 結果が戻ってきたことを確認しなければならない。 |
|
|
|
09:17.900 --> 09:22.190 |
|
さて、 私が気づいたことのひとつに、 皆さんもお気づきかもしれませんが、 |
|
|
|
09:22.190 --> 09:27.020 |
|
私がこの作業をしているときに、 皆さんもお気づきかもしれませんが、 |
|
|
|
09:27.020 --> 09:36.230 |
|
私はこのことを考えながら話をするのに夢中でした。 |
|
|
|
09:36.230 --> 09:45.860 |
|
でも、 このウェブサイトを見たとき、 下取りで最大350ドル引きと書いてあった気がする。 |
|
|
|
09:45.860 --> 09:48.830 |
|
他のデバイスをお持ちの場合、 最大で350ドル節約できます。 |
|
|
|
09:48.860 --> 09:55.280 |
|
フロンティア・モデルがいかにこのようなことに長けているかということをお見せした後で、 |
|
|
|
09:55.280 --> 10:03.530 |
|
これはモデルが実際に犯したミスの例である。 |
|
|
|
10:03.530 --> 10:06.020 |
|
だから、 私は自分の言葉を食べなければならない。 |
|
|
|
10:06.020 --> 10:07.940 |
|
そして、 実際にそれは間違っていた。 |
|
|
|
10:07.940 --> 10:09.620 |
|
そして面白くなりそうだ。 |
|
|
|
10:09.650 --> 10:13.400 |
|
つまり、 それを学び、 それを見たことは有益なのだ。 |
|
|
|
10:13.670 --> 10:20.630 |
|
システム・プロンプトにそれを追加して、 そのパフォーマンスを改善できるかどうか試してみるかもしれない。 |
|
|
|
10:20.630 --> 10:23.360 |
|
今、 私たちはそれがミスを犯す可能性があることを知った。 |
|
|
|
10:23.360 --> 10:27.380 |
|
とにかく、 スライドはまた次回に。
|
|
|