この時点で最初のLM実験の時間だ｡
だから､ この中のいくつかはよくご存じかもしれないし､ すでによくご存じかもしれない｡
初耳の人もいるかもしれないが､ 説明しよう｡
これから使うモデルだ｡
これらのフロンティアモデルは､ 特定の方法で訓練されている｡
つまり､ 私たちユーザーから2つの異なるタイプの指示を期待されているのだ｡
そのうちの1つはシステムプロンプトとして知られ､ もう1つはユーザープロンプトとして知られている｡
システム・プロンプトは､ この会話の背景を説明するものだ｡
このコースでは､ システムプロンプトを変更することの意味や､
システムプロンプトにどのような情報を含めることができるかを試していきます｡
ユーザー・プロンプトは実際の会話そのものである｡
そして､ 今の私たちの場合は､ 会話のきっかけになるだけだ｡
そして､ 大規模な言語モデルのLMの役割は､ このユーザーからのプロンプトが与えられたときに､ 最も可能性の高い応答方法は何かを見つけ出すことである｡
このユーザー・プロンプトが与えられたとしたら､ そしてこのシステム・プロンプトの文脈の中で､ その次に来る可能性の高いテキストは何だろうか？
それは､ このユーザーに対応するアシスタントのものだろう｡
これが､ 文脈を設定するシステム・プロンプトと､ 会話のきっかけとなるユーザー・プロンプトの違いだ｡
そこで､ システム・プロンプトを設定する｡
そして､ こう書いてある｡
あなたがウェブサイトのコンテンツを分析し､ ナビゲーションに関連しそうなテキストを無視して短い要約を提供するアシスタントであると言うことになる｡
マークダウンで対応する｡
それが何を意味するかは､ すぐにわかるだろう｡
これがユーザー・プロンプトのシステム・プロンプトだ｡
ユーザー・プロンプトの関数を書きます｡
そして､ 関数の引数としてウェブサイトを受け取る｡
そして､ 「ウェブサイト」というタイトルのウェブサイトを見ていると表示される｡
本ウェブサイトの内容は以下の通りです｡
ニュースやお知らせが含まれる場合は､ ウェブサイトの簡単な概要をマークダウンでご記入ください｡
この2つを要約し､ Beautifulsoupが取り出してくれたウェブサイトオブジェクトからテキストを取り出し､
それをユーザープロンプトに追加して､ ユーザープロンプトを返す｡
では､ さっそくこのセルを動かして見てみましょう｡
そうして､ プロンプトのシステム構成を見てみよう｡
もちろん､ 今言ったような文章もある｡
さて､ 先ほど新しいウェブサイト・オブジェクトを作成し､ この変数エディタに格納したのを覚えているだろうか｡
だから､ ここに来れば､ ユーザー・プロンプトと言い､ オブジェクト・エドを渡すことができるはずだ｡
そして､ プロンプトが表示される｡
空行を出力するように印刷すれば簡単かもしれない｡
そしてこれが､ 作成したユーザー・プロンプト文字列である｡
あなたが見ているのは､ "blah blah blah "というタイトルのウェブサイトです｡
本ウェブサイトの内容は以下の通りです｡
簡単な要約をお願いします｡
ほら､ ここにスペースがあったほうがよさそうだ｡ そうしないと混乱するかもしれない｡
もう一度やってみよう｡
そのような小さな矛盾を見つけることができるからだ｡
実際､ 今見ると､ もっと素敵になると思うよ｡
このようにキャリッジ・リターンがあるとする｡
このプロンプトを見てみよう｡
今､ あなたはウェブサイトを見ている｡
では､ メッセージ・オブジェクトについて話そう｡
だからOpenAIは､ 特定のフォーマットで会話を受け取ることを期待している｡
これはOpenAIが考え出したフォーマットで､
彼らのAPIに使われている｡
つまり､ これはもともとOpenAIのAPIの使用方法だったのが､ このアプローチを使用する多くの異なるモデルにおける標準のようなものになったということだ｡
その仕組みはこうだ｡
会話を記述しようとするとき､ Pythonの辞書のリストを使って記述する｡
つまり､ リストの各要素が辞書であるリストだ｡
その辞書はこうなっている｡
これは2つの要素を持つ辞書である｡
そのうちの1つはroleのキーを持ち､ ここではroleのキーであるsystemかuserのどちらかの値である｡
そして､ その価値はコンテンツのキーとなるシステムである｡
そして､ その値はもちろんシステム・メッセージである｡
もうひとつ､ 役割のカギを握る辞書がある｡
ユーザーメッセージなので､ 値はuserである｡
ユーザープロンプトコンテンツは､ ユーザメッセージが入る場所である｡
ユーザーメッセージとユーザープロンプトは同じものです｡
だから､ うまく説明できなかったかもしれないが､ こうして視覚的に見れば理解できるだろう｡
これは､ ロールとコンテンツ､ システムとシステム､ メッセージ・ユーザーとユーザー・メッセージを持つ辞書に過ぎない｡
他にもいくつか役割があるが､ それは追って説明する｡
今はこれで十分だ｡
これがメッセージの作り方だ｡
そして､ この次の関数のdefメッセージを見てもらえば､ これが作成されていることが一目瞭然だろう｡
これは､ まさにこの構造をコードを使って作っている｡
私たちが考えた一般的なシステムプロンプトを入れるんだ｡
そして､ ウェブサイトのユーザー・プロンプトを作成する｡
では､ それを実行してみよう｡
そして今､ 私のウェブサイトのオブジェクトであるEdへのメッセージと言えば､ 空行などが見えるように印刷することは明らかだろう｡
実は､ 申し訳ないが､ この場合は印刷しない方がいいかもしれない｡
こうすれば､ 少しはスッキリするかもしれない｡
これでよし｡
そして今､ それが2つの役割システムのリストであることがわかるだろう｡
そして､ システムメッセージの役割ユーザーがいる｡
そして､ そこにユーザーメッセージがある｡
オーケー｡
これをまとめる時が来た｡
今こそ実際にやるときだ｡
OpenAIのAPIはとてもシンプルで､ フロンティアモデルを呼び出してこれをやってくれる｡
だから､ 今は覚えておくべきことがいくつかあるように見えるかもしれない｡
すぐに慣れるだろうが､ これからsummarizeという関数を作る｡
そしてそれは､ 私たちの問題を解決し､ 渡されたURLを要約するビジネスを行うことだ｡
エディターの時と同じように､ まずそのURLのウェブサイトを作成する｡
そこでOpenAIと呼んでいる｡
OpenAIとは､ OpenAIのオブジェクトのことだ｡
我々はOpenAIのドットチャット､ ドットコンプリート､ ドットクリエイトを作った｡
そして､ 今はただ暗記すればいいということだ｡
そのことについては､ 後でいろいろと理解できるだろう｡
しかし､ OpenAIに関する限り､ これは補完APIとして知られている｡ なぜなら､ この会話を完成させ､
次に何が来る可能性が最も高いかを予測するよう求めているからだ｡
使用するモデルの名前を渡す｡
GPT4ミニと呼ばれるモデルを使う｡
地球上で最高級モデルのひとつであるGPT 4の軽量・廉価版であり､ これを使うには1セントもかからない｡
モデルを渡して､ それからメッセージを渡す｡ メッセージは､
今作ったこの構造体を使う｡
戻ってきたものをこのオブジェクト・レスポンスに入れる｡
そしてレスポンスが返ってきたら､ レスポンス・ドット・チョイス・ゼロ・ドット・メッセージ・ドット・コンテンツと呼ぶ｡
さて､ これが何なのか､ 私たちが知る必要のない別の日に説明しよう｡
今のところはね｡
あとは､ レスポンス・ドット・チョイス・ゼロ・ドット・メッセージ・ドット・コンテンツを実行することだけだ｡
それでいいんだ｡
これが要約機能だ｡
ということで､ 私たちが運営しているウェブサイトを要約してみよう｡
現在はクラウド上のOpenAIに接続している｡
往復するんだ｡
以下は私のウェブサイトの要約である｡
ほんのわずかなお金を使い､ 私のウェブサイトを要約した｡
私たちは､ これを素敵なスタイルで印刷することができるので､ 少し良いことができます｡
ええと､ GPT4はマークダウンで回答するようお願いしました｡ つまり､ 見出しや太字のものなど､
さまざまな文字を使って回答しているということです｡
Jupyter Labsの機能を使って､ マークダウン形式で表示させることもできる｡
だから､ そうしよう｡
この要約表示機能を使って､ もう一度やってみよう｡
今回もクラウド上のミニをGPTにする｡
そして､ これが私のウェブサイトの要約である｡
ええと､ 僕について何か書いてある｡
とてもきれいなフォーマットで､ とてもきれいに構成されている｡
かなり印象的だ｡
そしてどうやら､ 私が独自に開発したLMSでの仕事にハイライトを当て､ AIとLMSに関連するリソースを提供し､
この分野での知識の発展に尽力していることをアピールしているようだ｡
よかったね､ ミニのGPT｡
とてもいいまとめだ｡
オーケー｡
そして今､ さらにいくつかのウェブサイトを試すことができる｡
CNNを要約してみよう｡ comに移籍した｡
まあ､ どうなるか見てみよう｡
CNNの方がはるかに大きな結果を出しているのは明らかだ｡
それで､ 何が起こっているのか､ いくつかの情報を得ることができた｡
実は今､ 11月5日の夕方にこれを録音しているんですが､ これは今行われている2024年の選挙の日なんです｡
もちろん､ それはCNNのウェブページで紹介されている｡
クロードのウェブサイトである "アントロピック "を要約することもできる｡
素敵なページもある｡
さあ､ どうぞ
その詳細については､ 彼らのウェブページのこの素敵な要約をご覧いただきたい｡
分かった｡
これで､ 最初のインスタント・グラティフィケーションは終了だ｡
ジューシーだ｡
実際に役に立つことをしたんだ｡
我々はウェブをスクラップした｡
要約は最も一般的なAIの使用例の一つである｡
一般的なものなので､ あらゆる用途に使える｡
このコースの間､ いくつかの異なる方法でそれを行う予定だが､ 8週目の粘着ソリューションでも､
要約を行うものを使う予定だ｡
だから､ すでに実験していることは素晴らしいことなんだ｡
だから､ 要約のビジネスへの応用は他にもたくさんある｡
これは有効活用できるはずだ｡
すぐにでも自分の仕事に応用できる方法を思いついたり､ GitHubで要約の実例となるプロジェクトをいくつか作ったりできるはずだ｡
ニュースの要約､ 財務報告書からの業績の要約､ 履歴書､ カバーレターなどに応用できるだろう｡
履歴書からカバーレターを作成することもできる｡
ドキュメントの要約でできることはたくさんある｡
それに加えて､ ウェブのスクレイピングという側面もある｡
だから､ あなたのビジネスに要約をどのように適用するか考え､ これを拡張して要約をしてみてほしい｡
また､ 技術志向の人向けには､ この方法を使うとすぐにわかることがある｡ それは､
この方法では要約できないウェブサイトがたくさんあるということで､ それはウェブページのレンダリングにJavaScriptを使っていて､
かなり単純化しているからだ｡
アプローチは､ ただサーバーにリクエストして､ 返ってきたものを受け取っただけだ｡
しかし､ 解決策はある｡
解決策としては､ セレニウムなどのプラットフォームや､ playwrightを使えば､ ページをレンダリングして､
そのように実行することができる｡
だから､ もしあなたが技術的な傾向があり､ そのようなことについてのバックグラウンドがあるのなら､
本当に興味深い挑戦は､ これをもう少しビーフなものに変えて､ セレンをミックスに加えることだ｡
うーん､ 偶然にも､ 誰かがすでにそれをやっている｡
ええと､ 生徒の一人です､ ありがとうございました｡
そして､ このフォルダーのコミュニティへの貢献を見てみると､ いくつかの異なる解決策がある｡
そのひとつがセレンベースのソリューションだ｡
だから､ いつでも中に入って自分で見ることができる｡
あるいは､ あなたにもチャンスがある｡
そこに解決策があるはずだ｡
そして､ もしあなたがその解決策や何かを思いついたなら､ 他の人がその恩恵を受けられるようにコードを共有してくれると嬉しい｡
理想的なのは､ それをコミュニティへの貢献フォルダに入れ､ 出力をクリアすることだ｡
そこでカーネルを再起動し､ すべてのセルの出力をクリアする｡
そうしないと､ 出力されたものすべてがコードにチェックされることになる｡
だから､ そうしてくれ｡
そして､ PR（プル・リクエスト）を提出してもらえれば､ それをコードにマージすることができる｡
そして､ それがあなたにとって初めてのことであるなら､ それはちょっとしたプロセスなのだ｡
そのために必要なことは､ ここに書いてある｡
とにかく､ これが最初のプロジェクトで､ 多くのプロジェクトの最初のものだった｡
シンプルなプロジェクトだが､ 重要なものだ｡
非常に重要なビジネスユースケースだ｡
有意義なものであったことを願っている｡
また次のビデオでお会いしましょう｡
週目｡
初日｡