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.
139 lines
5.1 KiB
139 lines
5.1 KiB
WEBVTT |
|
|
|
00:00.560 --> 00:06.710 |
|
あなたがこのコースで頑張り、 大きく前進しているのは素晴らしいことだ。 |
|
|
|
00:06.710 --> 00:17.630 |
|
8週目の今日のトピックについて、 本当に重要な専門知識を構築する最後の数日間に入った。 |
|
|
|
00:17.660 --> 00:28.700 |
|
日目は、 引き続き強化し、 スキルアップを図り、 もうひとつスキルを身につける。 |
|
|
|
00:28.700 --> 00:30.620 |
|
だから今日は新しいものを見てみよう。 |
|
|
|
00:30.650 --> 00:41.000 |
|
構造化出力というのは、 実はかなり最近の革新的なもので、 フロンティアモデルに特定の仕様に従って反応させたいことを伝えることができる方法だ。 |
|
|
|
00:41.000 --> 00:42.500 |
|
だから、 今日はそうするつもりだ。 |
|
|
|
00:42.500 --> 00:48.950 |
|
また、 フロンティア・モデルを使ったワークエクスペリエンスをさらに行い、 |
|
|
|
00:48.950 --> 00:54.140 |
|
過去に行ったようなインターネット上でのスクラップを行い、 |
|
|
|
00:54.140 --> 01:01.040 |
|
フロンティア・モデルを使ってデータを統合する。 |
|
|
|
01:01.070 --> 01:04.220 |
|
私たちが昔、 サマライザーAを書いたのを覚えているだろう。 |
|
|
|
01:04.250 --> 01:07.610 |
|
インターネットのリーダーズ・ダイジェストが私たちの週だった。 |
|
|
|
01:07.610 --> 01:10.310 |
|
ある日、 即座に満足した。 |
|
|
|
01:10.460 --> 01:13.070 |
|
まあ、 我々はそれをさらに2段階ほど進めている。 |
|
|
|
01:13.400 --> 01:15.980 |
|
ええと、 それが今日のプランなんだ。 |
|
|
|
01:15.980 --> 01:21.740 |
|
そしてその多くは、 やはり修正と構築、 そして実験になるだろう。 |
|
|
|
01:21.980 --> 01:26.270 |
|
そこで、 構造化されたアウトプットについて少し言わせてほしい。 |
|
|
|
01:26.300 --> 01:27.590 |
|
つまり、 構造化されたアウトプットだ。 |
|
|
|
01:27.590 --> 01:30.710 |
|
過去にJSON生成を使っていたのを覚えているだろうか。 |
|
|
|
01:30.710 --> 01:35.960 |
|
モデルにJSONの出力フォーマットで応答させたいと言いました。 |
|
|
|
01:35.960 --> 01:40.070 |
|
そして、 プロンプトの中で、 そのJSONがどのように見えるべきかを正確に記述する。 |
|
|
|
01:40.070 --> 01:43.070 |
|
それに100%信頼できるものでもない。 |
|
|
|
01:43.100 --> 01:44.600 |
|
実際、 とてもいいんだ。 |
|
|
|
01:44.600 --> 01:50.270 |
|
JSONで応答することが多いんだ。 |
|
|
|
01:50.540 --> 01:55.580 |
|
しかし、 それがおかしくなり始めるのは、 |
|
|
|
01:55.610 --> 02:03.680 |
|
本当に複雑なオブジェクトに反応させる必要がある場合だ。 |
|
|
|
02:03.680 --> 02:11.490 |
|
つまり、 構造化出力のアイデアは、 モデルがどのように反応すべきかを正確に指定することをより指示的にすることだった。 |
|
|
|
02:11.490 --> 02:19.500 |
|
Pythonのクラスを使ってレスポンスを定義するのですが、 実はこのクラスはPydanticのbase |
|
|
|
02:19.500 --> 02:28.800 |
|
modelというもののサブクラスになります。 |
|
|
|
02:28.800 --> 02:30.240 |
|
そうでなければ、 お見せしましょう。 |
|
|
|
02:30.510 --> 02:36.990 |
|
ベースモデルのサブクラスを作り、 そのサブクラスを使って、 探しているものを正確に記述するんだ。 |
|
|
|
02:37.110 --> 02:47.970 |
|
そして、 OpenAIを呼び出すときにそのクラスを指定すると、 OpenAIはそのクラスのインスタンスを作成してあなたに送り返します。 |
|
|
|
02:48.480 --> 02:55.980 |
|
つまり、 必要な構造のデータを正確に生成するのに便利なんだ。 |
|
|
|
02:56.010 --> 03:05.580 |
|
これは、 別のアプローチと比較する必要がある。 |
|
|
|
03:05.760 --> 03:11.980 |
|
この2つは、 モデルからの反応に特定の、 ええと、 ええと、 構造のタイプが戻ってくるようにするための、 |
|
|
|
03:11.980 --> 03:16.840 |
|
よく似たテクニックなんだ。 |
|
|
|
03:16.840 --> 03:19.060 |
|
そして、 そのどちらにも長所と短所がある。 |
|
|
|
03:19.390 --> 03:26.020 |
|
一般的に言えば、 モデルをアプリケーションコードに直接接続し、 特定のメソッドシグネチャを持つ必要がある関数を呼び出すのであれば、 |
|
|
|
03:26.020 --> 03:35.980 |
|
関数呼び出しとツールを使うことをお勧めします。 |
|
|
|
03:35.980 --> 03:41.800 |
|
なぜなら、 関数を呼び出すための適切なパラメータを定義したJSON構造に従って、 |
|
|
|
03:41.800 --> 03:46.390 |
|
絶対に応答してくれるからだ。 |
|
|
|
03:46.420 --> 03:53.140 |
|
もし、 下流で使用するために特定のフォーマットでデータを生成しようとするのであれば、 |
|
|
|
03:53.140 --> 03:56.860 |
|
構造化されたアウトプットが適している。 |
|
|
|
03:56.980 --> 04:01.900 |
|
長所と短所を挙げればきりがないし、 しばらく試してみて、 |
|
|
|
04:01.930 --> 04:07.060 |
|
どちらが優れているかがわかるようになるものだ。 |
|
|
|
04:07.150 --> 04:10.480 |
|
それではJupyterLabに向かいましょう。 |
|
|
|
04:10.480 --> 04:12.700 |
|
自分たちで試してみるつもりだ。
|
|
|