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.
 
 

457 lines
16 KiB

WEBVTT
00:00.680 --> 00:05.900
LMにツールを装備するプロジェクトを続けよう。
00:05.900 --> 00:12.200
関数を記述するために、 このコードを作成しました。
00:12.200 --> 00:20.930
そして次のステップは、 toolsと呼ばれるものを作成する。
00:20.960 --> 00:22.340
そして私たちの場合は1つしかない。
00:22.340 --> 00:24.560
それはファンクションである。
00:24.560 --> 00:28.460
そして、 その機能がここにある。
00:28.460 --> 00:31.880
ツールというリストに入っている。
00:32.840 --> 00:38.630
そして今、 このGPTでLMを与える時が来た。
00:38.660 --> 00:41.570
多くの人にとって、 このツールを使う力は大きい。
00:41.570 --> 00:43.190
どうなるんだ?
00:43.190 --> 00:48.710
だから、 ちょっと手こずるんだ......警告しておくけど、 ちょっと手こずることを精神的に覚悟しておいてほしい。
00:48.710 --> 00:51.980
それは、 あなたにとって非常に見慣れたものから始まる。
00:51.980 --> 00:54.680
これはいつものチャット機能です。
00:54.680 --> 00:55.760
よくご存知でしょう。
00:55.760 --> 01:03.290
あなたが知っているメッセージを履歴に残し、 それを使ってOpenAIに送るメッセージを作成する。
01:03.320 --> 01:05.930
さて、 ここには小さな微妙な違いがある。
01:05.930 --> 01:06.950
何かが変わった。
01:06.950 --> 01:08.360
何かが追加された。
01:08.570 --> 01:10.880
あなたがそれを見つけるまで、 少し待ちます。
01:10.910 --> 01:16.220
一度目につければ一目瞭然だが、 そこにはちょっとした補足がある。
01:16.220 --> 01:19.070
そして、 もし見たなら、 とても素晴らしかった。
01:19.070 --> 01:20.720
そうでないなら、 それは非常に明白だ。
01:20.720 --> 01:21.500
これだ。
01:22.370 --> 01:23.870
道具の中でパスする。
01:23.870 --> 01:27.350
APIはまったく同じチャット・ドット補完、 ドット作成だ。
01:27.380 --> 01:31.520
モデルを与え、 メッセージを与え、 そしてツールも与える。
01:31.520 --> 01:34.970
つまり、 このオブジェクトをここに置くのだ。
01:35.270 --> 01:44.420
ChatGPTは、 OpenAIがそれを受け取り、 プロンプトを構築するとき、 LLMに送信されるトークン、
01:44.420 --> 01:55.700
GPT 4 LLMに送信されるトークンを受け取り、 私たちの機能を説明する一連のトークンに変換します。
01:55.700 --> 02:05.180
LLMは、 この英語を使って何をするのかを説明し、 LLMが呼び出すことのできる関数であることを知らせる。
02:05.210 --> 02:14.120
それが機能するのは、 LLMにその能力を与えるために、 トークンをそのように使う例をたくさん使って訓練されているからだ。
02:14.690 --> 02:21.080
そして、 次に何が起こるかを見たとき、 マジックの一部は失われようとしている。
02:22.430 --> 02:28.430
あなたが覚えているLLMから戻ってくるものは、 応答選択肢ゼロである。
02:28.430 --> 02:35.450
そして、 私たちがすることは、 最終的な理由がこのツールの呼び出しなのかどうかを見極めることだ。
02:35.450 --> 02:41.300
GPT4位が「まだ答えは出ていない。
02:41.300 --> 02:48.410
そのかわり、 あなたのツールのひとつを呼び出して、 その出力を教えてほしいから、 もうやめよう。
02:48.470 --> 02:56.240
そうなれば、 GPT4からメッセージを収集する必要がある。
02:56.450 --> 03:00.800
つまり、 これはそのレスポンス・チョイスのゼロ・ドット・メッセージを集めたものだ。
03:00.860 --> 03:07.970
送り返されたものが何であれ、 それは実際、 ツールの実行を要求するものだ。
03:08.180 --> 03:13.390
そして、 そのメッセージを解きほぐすための作業が少しある。
03:13.450 --> 03:15.820
それが何をしたいのかを見極め、 それを実行する。
03:15.820 --> 03:17.710
そして、 私はそのすべてを別の関数に入れた。
03:17.710 --> 03:18.370
私はズルをしてきた。
03:18.370 --> 03:21.400
ここに全部書いてもいいんだけど、 ごちゃごちゃしちゃうからね。
03:21.610 --> 03:23.350
だからその代わりに、 私はその部分を切り離した。
03:23.350 --> 03:25.810
だから、 この時点ではすぐに見ることができる。
03:25.810 --> 03:33.250
この機能は、 GPT4ゼロからメッセージを解凍し、 必要であれば、 まあ、 必要であろう。
03:33.250 --> 03:37.060
このツールは我々のツールを呼び出し、 その結果を返す。
03:37.060 --> 03:44.530
GPT4のゼロに戻るレスポンスと、 呼び出された都市は、 ええと、 次にすることは、
03:44.530 --> 03:49.180
メッセージのリストにさらに2行追加することだ。
03:49.210 --> 03:53.410
私たちのメッセージは、 ユーザー・アシスタント、 ユーザー・アシスタントのようなものだ。
03:53.410 --> 03:56.320
これから新しい行を2つ追加する。
03:56.320 --> 04:07.600
その行のひとつがこのメッセージで、 これはGPT4ゼロから戻ってきた、 ツールを呼ぶようにというメッセージ以外の何ものでもない。
04:07.600 --> 04:12.400
そこでまず、 アシスタントにツールの実行を依頼する。
04:12.400 --> 04:19.840
それをメッセージのリストに入れ、 その次にメッセージのリストに入れるのは、
04:19.870 --> 04:23.740
関数を呼び出した結果だ。
04:23.950 --> 04:33.340
このメッセージのリストには、 ユーザー・アシスタント、 ユーザー・アシスタント、 ユーザー・アシスタントがツールを実行すると書いてある。
04:33.340 --> 04:35.710
私たちは、 これがツールの結果だと言っている。
04:35.980 --> 04:40.420
そして、 それをOpenAIに送り返す。
04:40.450 --> 04:41.920
お分かりいただけただろうか。
04:41.950 --> 04:47.470
そうでない場合は、 実行時にここにprint文を入れるだけで、 私が言ったとおりのことがわかる。
04:47.470 --> 04:51.400
そして、 メッセージをすべて印刷すれば、 はっきりとわかると思う。
04:51.430 --> 04:56.170
そのメッセージには、 そのやりとりの全文が表示される。
04:57.160 --> 05:04.060
そして最後に、 いつものようにLMから究極の答えを返す。
05:04.270 --> 05:09.670
ツールを2回実行することは想定していないので、 2度目は通さないことにしているんだが、
05:09.670 --> 05:14.500
入れておいて損はないだろう。
05:14.500 --> 05:20.370
もちろん、 最終的に足りないのは、
05:20.370 --> 05:28.740
この関数を書かなければならないということだ。
05:28.770 --> 05:30.780
知っておいて損はないよ
05:30.930 --> 05:36.510
GPT4から戻ってきたメッセージがこれだ。
05:36.930 --> 05:43.740
そして、 私たちがしなければならないのは、 それを解凍して、 どのツールを呼び出したかったのかを突き止めることだ。
05:43.770 --> 05:49.380
今、 私たちの場合、 どのツールを呼び出したいかはわかっている。
05:49.410 --> 05:53.370
うーん、 でも、 どう動くか見てもらうために、 とりあえずここに置いておくよ。
05:53.430 --> 05:59.850
そして、 ここで本当にすべきことは、 ツール・コールがチケットの値段とイコールであれば、 チケットの値段を知ることができる、 ということだ。
06:10.290 --> 06:12.330
しかし、 我々の場合、 使えるツールは1つしかない。
06:12.330 --> 06:13.560
そういうことだ。
06:13.830 --> 06:18.570
次にできることは、 呼び出したい引数をロードすることだ。
06:18.570 --> 06:23.520
つまり、 このツール・コールの中にドット・ファンクションというツールがある。
06:23.550 --> 06:28.710
どのようなパラメータを選択したかを示すドット引数。
06:28.920 --> 06:31.770
それがJSONの形で戻ってくる。
06:31.770 --> 06:32.880
ええと、 ただのひもです。
06:32.880 --> 06:38.670
だから、 Jsonを使わなければならない。 Loadstring関数をロードして辞書に変換する。
06:38.670 --> 06:44.880
そして、 私たちが実際に持っている唯一の論拠である目的地都市について調べる。
06:44.910 --> 06:48.420
それを調べて、 可変都市に入れる。
06:48.420 --> 06:52.020
というわけで、 道具と議論を解きほぐした。
06:52.020 --> 06:56.190
そして、 残るはこのラインだ。
06:56.190 --> 06:59.670
そして、 そのセリフは明らかに気の利いたものではない。
06:59.670 --> 07:04.890
この行は、 単純にチケット価格の取得関数を呼び出しているだけだ。
07:04.890 --> 07:11.790
我々は、 それが実行したいツールであることを確認し、 都市を抜き出して、 その関数を呼び出した。
07:12.000 --> 07:14.340
そして、 私たちは対応策を構築する。
07:14.340 --> 07:15.990
その返答がこれだ。
07:15.990 --> 07:20.910
これはメッセージの一番下に押し込まれるものだ。
07:20.910 --> 07:21.420
そうだ。
07:21.420 --> 07:24.920
そこに押し込まれることになるが、 彼らの反応はこうだった。
07:24.950 --> 07:29.060
さて、 これらの行にはそれぞれ役割と内容がある。
07:29.390 --> 07:36.470
過去には、 ロールはユーザーであったり、 システム・ユーザーであったり、 システム・ユーザー・アシスタントであったり、 ユーザー・アシスタントであったりした。
07:36.470 --> 07:38.090
まあ、 それ以外にもあるんだけどね。
07:38.120 --> 07:39.590
それはこの言葉のツールである。
07:39.590 --> 07:43.100
だから、 この場合はレスポンスツールに入れた。
07:43.100 --> 07:47.630
そして、 コンテンツには次のような文字列を入れた。
07:47.660 --> 07:52.280
この辞書は、 JSONダンプ文字列関数を使用して文字列に変換される。
07:52.280 --> 07:55.220
そこで、 目的地の都市と料金を入れた。
07:55.220 --> 08:08.180
また、 このツールコールIDをメッセージに追加する必要がある。 これは、 このレスポンスをその直前に来たリクエストにリンクする方法である。
08:08.180 --> 08:20.990
だから、 メッセージを入れているんだ。 ツールを使用する。 この2つを見たときに、 それがこのリクエストに関連していることを完全に理解できるようにするためだ。
08:20.990 --> 08:23.990
それがすべてだ。
08:24.260 --> 08:27.480
今回はかなりの量だったが。
08:27.510 --> 08:29.370
そこには受け止めるべきことがたくさんある。
08:29.580 --> 08:34.710
しかし、 私が言うように、 それを通してステップを踏み、 いくつかのprintステートメントを置き、 それが機能していることを確認する。
08:34.710 --> 08:38.070
しかし、 チャットでこの話を持ち出したらどうなるか、 今から見てみよう。
08:39.720 --> 08:40.800
こんにちは。
08:44.550 --> 08:45.270
こんにちは。
08:45.270 --> 08:46.500
本日はどのようなご用件でしょうか?
08:46.530 --> 08:49.920
ロンドンに行きたい。
08:51.600 --> 08:52.170
もちろんだ。
08:52.170 --> 08:53.460
値段を知りたいですか?
08:53.490 --> 08:54.390
そうだ。
08:55.770 --> 08:59.520
ロンドンまでの往復チケットは7ドル。 99.
08:59.520 --> 09:00.900
だから適正価格だった。
09:00.900 --> 09:08.490
つまり、 Jupyterラボに戻ると、 私たちのツールの名前が印刷されているはずです。
09:08.490 --> 09:11.370
その自信はかなりあると思うが、 ちょっと見てみよう。
09:11.400 --> 09:15.210
さすがにロンドン行きのチケット代はツール・ゲットと呼ばれるだけある。
09:15.240 --> 09:16.740
続けよう。
09:17.220 --> 09:22.620
パリはどう?
09:25.320 --> 09:27.870
899と東京。
09:30.710 --> 09:34.130
東京までの往復航空券は1400ドル。
09:34.760 --> 09:35.930
そしてベルリン。
09:37.280 --> 09:38.660
ベルリンは今、 追加したところだ。
09:38.690 --> 09:39.530
それがあるかどうか見てみよう。
09:39.560 --> 09:41.480
はい、 499です。
09:41.510 --> 09:46.850
確かに効きそうだし、 ティンブク2も。
09:48.710 --> 09:53.420
申し訳ないが、 timbuk2へのチケット料金に関する情報は持っていない。
09:53.810 --> 09:55.520
ええと、 ここを見てみよう。
09:55.520 --> 09:58.940
と呼ばれる一連のツールを見ることができる。
09:58.940 --> 10:02.720
そして、 Timbuk2のために呼ばれたとき、 それが不明と答えたであろうことも知っている。
10:02.720 --> 10:08.960
その結果、 わからないときはわからないと言うようにシステムプロンプトを与えたので、 わからないということがはっきりした。
10:09.680 --> 10:12.530
それとともに、 いろいろなことがあった。
10:12.530 --> 10:13.910
お分かりいただけただろうか。
10:13.910 --> 10:18.560
これは実際、 強力な機能の一部だ。
10:18.560 --> 10:28.580
LMにさらなる力を与えるための強力なテクニックだが、 しかし、 その裏では魔法ではない。
10:28.580 --> 10:38.770
LLMが何かについてもっと情報が必要だと知らせてくれるようにするためだ。
10:38.770 --> 10:40.990
それが、 布団の中での仕事だ。
10:40.990 --> 10:42.850
そして、 それがあなたにとって意味のあるものであることを願っている。
10:42.850 --> 10:45.610
そして、 これをあなた自身のプロジェクトに役立ててほしい。
10:45.610 --> 10:47.350
これを拡張する方法として。
10:47.350 --> 10:56.710
より多くの種類のツールや、 そのフライトの空席状況などを示すようなツールを追加することも検討できる。
10:56.710 --> 10:58.510
だから、 より多くの道具を使うことができる。
10:58.510 --> 11:03.640
あるいは、 本当に大胆にやりたいなら、 実際にフライトを予約するツールを追加することもできる。
11:03.640 --> 11:08.170
これは、 再び呼び出されたときに、 何かを印刷したり、 ファイルに何かを書き込んだりするツールだ。
11:08.170 --> 11:16.390
そうすれば、 LLMは2つ目のツールにコールバックし、 ユーザーがフライトの予約を要求したときに、 実際にフライトを予約することができる。
11:16.390 --> 11:21.100
だから、 それはそれで面白いし、 日付とかについて何度も議論することになる。
11:21.100 --> 11:28.810
そして、 それが終わるころには、 ツールの書き方や、 ソフトウェアで実行されるアクションを実行するためにLLMを装備する方法について、
11:28.810 --> 11:35.560
非常に習熟していることだろう。