そしてここでもう一度､ 私たちはお気に入りの場所､ Jupyter Labにいることに気づく｡
数週間で準備完了｡
2週目の練習
2週目のフォルダーに入り､ 2週目の初日を迎える｡
ええと､ それで......｡
第1週目では､ チャット・ユーザー・インターフェースを通して複数のfrontier LMSを使い､ ウェブを通して使う方法､
そしてAPIを通してOpenAIのAPIに接続したことを思い出してください｡
そこで今日は､ AnthropicとGoogleのAPIをミックスに加え､ OpenAIを使用する私たちのスキルに加わります｡
ええと､ だから､ もうひとつ念を押しておくけど､ この話を続けていると殺されちゃうよ｡
ここでキーをセットする｡
OpenAIのキーを設定することができます｡ おそらく先週すでに設定したと思いますが､ anthropicとGoogleのGeminiのキーを設定することができます｡
でも､ グーグル・キーの設定にはもっと冒険が必要なんだ｡
一度セットアップしたら､ あとは作るだけだ｡
というファイルはすでに作成されているはずだ｡
鍵がその形であることを確認する｡
その代わりに､ これらのセルにキーを入力することもできる｡
そうすることは可能だ｡
セキュリティ上の理由から推奨されていない｡
いつかこれを公開し､ 他の人があなたの鍵を見ることになったときのために｡
さて､ 前置きはここまで｡
インポートをしよう｡
環境変数を設定するコードのブロックを実行してみよう｡
あなたはよくご存じでしょう｡
そして今､ このセルで､ OpenAIに同じ呼び出しをして､ OpenAI APIへの接続を確立しているのがわかるだろう｡
でも､ クロードには似たようなものがあるし､ 双子座のグーグルにはちょっと違うものがある｡
つまり､ この3つのコマンドは､ ある意味類似しているんだ｡
オーケー｡
LLMSが得意なことをたくさん見てきたし､ つまずいたこともいくつかあったが､ ほとんどはLLMSが得意なことだった｡
その中で､ あまり得意でないことのひとつがジョークを言うことだ｡
非常にタイトな文脈を与えることで､ その中でジョークを作ろうとする｡
これは明らかに商業的な例ではないけれど､ APIを楽しみながら体験する方法なんだ｡
ええと､ API上で何人かのLLMにジョークを言ってもらう予定です｡
ええと､ それでどんな情報を？
API経由で送信する｡
通常､ 使用したいモデルの名前を常に指定する｡
通常､ システムメッセージとユーザーメッセージを伝える｡
全体的な背景を伝えるシステムメッセージは､ もうお馴染みですね｡
ユーザーメッセージは実際のプロンプトである｡
他にもいくつか特徴がある｡
他にもできることはある｡
温度と呼ばれるものを0から1の間で渡すことができ､ 通常､ 1はよりランダムで創造的な出力が欲しいことを意味し､
0は可能な限り低く集中した､ 決定論的な反復可能な設定となる｡
だから､ これもよく提供できるパラメーターのひとつだ｡
そこで今回は､ 「あなたはジョークを言うのが得意なアシスタントです」というシステムメッセージを設定する｡
そして､ ユーザー・プロンプトは､ データ・サイエンティストの聴衆に向けて軽いジョークを言う｡
それはあなたであり､ 私でもある｡
オーケー､ ではこの構成は､ あなたにとって非常に馴染みのあるものであることを願っている｡
ここでは､ プロンプトをリストに入れて､ システムとユーザーを要素とし､ これら2つの要素に役割を設定します｡
このリストに入るにあたって､ 説明するまでもないだろう｡
ええと､ 私が言ったように､ この､ この､ ええと､ ここの値､ ロールはシステムでもユーザーでもいい｡
後で分かることだ｡
アシスタントになることもある｡
だから､ システム・ユーザーでもアシスタントでもいい｡
そして今週の後半には､ そこに入れられる他のものも見つけることになる｡
だから
しかし今は､ これから使う2つのロールとして､ systemとuserを覚えておけばいい｡
だから､ それをプロンプトのリストに入れた｡
そして､ その前のセルを実行することも忘れてはならない｡
その前に､ ここでセルを実行したか？
はい､ 大丈夫です｡
さあ､ 始めよう｡
もう一度やってみよう｡
そのセルを実行する｡
このセルを実行する｡
とてもいい｡
古いGPTモデルの一つGPT 3から始めよう｡ 5ターボは､ ごく最近､ 最新で最高のフロンティアモデルのようだった｡
しかし､ それはすでに古いニュースだ｡
しかし､ 我々はこれを使う｡
OpenAIのAPIは､ OpenAI dot chat, dot completions, dot
create completionsで､ このAPIの名前は､ 基本的に既存のプロンプトのセットを受け取り､
会話を完成させるためにテキストを生成しようとするものです｡
そしてcreateを呼び出すと､ モデルを渡し､ おなじみのフォーマットでメッセージを渡します｡
では､ 見てみよう｡
そして､ 回答が返ってきたときに私たちがすることは､ 可能な選択肢のリストである完了点の選択肢を取ることだ｡
しかし､ そこに含まれる要素は1つだけだ｡
複数の選択肢を返すように指定する方法がある｡
でも､ それをやっていないので､ ただ1つ戻ってくるだけで､ もちろんゼロ地点にある｡
つまり､ completion dot choices zero dot messageはメッセージを返し､ contentはそれを文字列で返す｡
だから､ それを印刷するんだ｡
さて､ どんなジョークか見てみよう｡
データサイエンティスト向け GPT 3. 5ターボが思いつく｡
さあ､ 始めよう｡
データサイエンティストはなぜコンピューターと別れたのか？
二人の複雑な関係を処理しきれなかったのだ｡
オーケー､ オーケー｡
分かるよ､ 分かるんだ｡
世界一面白いジョークではないが､ ひどくはない｡
データサイエンティストは物事の関係をモデル化するが､ その複雑な関係を扱うことができなかったんだ｡
十分フェアだ｡
GPT3からすれば､ まったく問題ない､ 受け入れられるジョークだと思う｡ 5ターボ｡
では､ GPT four miniがもっとうまくやれるかどうか見てみよう｡
今回は､ APIの使い方を少し拡張するだけだ｡
温度を含めているので､ ここで0から1の間の数値を渡すことができる｡
最もクリエイティブなものに1点､ 最もクリエイティブでないものに0点｡
ええと､ それで､ この中で私は完成度の高い選択肢を持っていて､ メッセージの内容はゼロなんだ｡
繰り返しになるが､ あなたはこのことをよく知っているはずだ｡
そのパフォーマンスを見てみよう｡
データサイエンティストはなぜ統計学者と別れたのか？
彼女は彼があまりに意地悪だと感じたからだ｡
なかなかいいジョークだと思うよ｡
それでいいと思うよ｡
それは......ああ､ これはジョークとして受け入れられるね｡
llmsはあまり得意ではない､ と言ったのは厳しかったかもしれない｡ それは至極まっとうなジョークだからだ｡
そして､ GPT4にはちょっとした拍手を送りたい｡
じゃあ､ GPT4ミニを試してみよう｡
GPT4のマキシバージョンだ｡
ああ､ 大物だ｡
そして私たちはそれを問う｡
温度を同じにしよう｡
冗談で聞いてみよう｡
2人で､ どうなるか見てみよう｡
データサイエンティストはなぜ破産したのか？
なぜなら､ 彼らのアレーにはキャッシュが見つからなかったからだ｡
もし､ それが彼らの配列になかったら､ 私はその方がいいと思ったかもしれない｡
キャッシュは見つからなかった｡
大丈夫だろう｡
何か見落としているのかもしれない｡
よく分からないんだ｡
ええと､ もうひとつやってみよう｡
前にやったように､ 温度を少し下げてみよう｡
科学者たちはなぜロジスティック回帰モデルと決別したのか？
適切な相手が見つからなかったからだ｡
あ､ あのね､ それは至極まっとうなことだよ｡
それは受け入れられる｡
ミニとマキシのどっちが好きかわからないけど､ これはこれで､ なかなかしっかりしたギャグだよ｡
それは間違いなくパスだ｡
分かった｡
第3節に移ろう｡ 5.
ソネット
APIは驚くほど似ている｡
それは良いニュースだ｡
基本的にはとてもよく似ている｡
いくつかの違いがある｡
システム・メッセージは別の属性として渡さなければならない｡
そしてメッセージはまたこのデッキリストだ｡
しかしもちろん､ システムメッセージの最初のエントリーは持っていない｡
うーん､ それは少し違うかな｡
また､ Max tokensは､ OpenAI APIでトークンの最大数を指定するためのオプションです｡
クロードには必要なことだと思う｡
だからここにあるんだ｡
しかし､ それ以外はすべてよく似ているはずだ｡
API自体は少し覚えやすい｡
クロード・ドット・メッセージ・ドット・クリエイトだ｡
少し短いですが､ それ以外はOpenAIのChatGPTの完了が作成するものとよく似ています｡
あ､ そうだ｡
そして返答が返ってきたときには､ メッセージの内容はゼロになっている｡
繰り返しますが､ 最初の1つを要求していますが､ 1つしか返ってきません｡ なぜなら､
OpenAIのドット・コンテンツに相当するドット・テキストを1つしか要求していないからです｡
では､ 見てみよう｡
これは､ クロードのAPIフレームワークのために役立つことを期待している｡
さて､ クロードがジョークでどうするか見てみよう｡
もちろんだ｡
データサイエンティスト向けの軽いジョークを紹介しよう｡
データサイエンティストはなぜ恋人と別れるのか？
ただ､ その関係にあまりにばらつきがありすぎて､ それを正常化するいい方法が見つからなかった｡
ああ､ そうだね｡
よりオタク的というか......もう少し､ うーん､ データサイエンス的というか｡
ほんの少し笑えなくなったかもしれないが､ 決して悪くはない｡
GPT4よりGPT4が好きかどうかは､ 好みの問題だろう｡
完璧なジョークだ｡
爆発的に面白いというわけではないが､ 完璧にしっかりしていると言える｡
ひどくはない｡
うーん｡
いずれにせよ､ これはAPIについての話であり､ ジョークの話である｡
これからお見せしたいのは､ ストリーミングについてです｡
ストリーミングの例の前に､ ストリーミングについて簡単に話したのを覚えているかい？
マークダウンを復活させ､ そのマークダウンを処理しなければならなかったからだ｡
これは､ マークダウン・レスポンスを扱っていないので､ 少し単純に見える｡
同じモデル､ クラウド3にお願いするつもりだ｡ 冗談でまた5点､ でも今回は結果をストリーミングで返します｡
OpenAIにストリーミングを依頼したとき､ 別の属性stream equals trueを追加したことを覚えているだろうか｡
そしてそれは､ ストリーミング・モードであることを意味していた｡
クロードの場合は少し違う｡
余計な属性はない｡
その代わり､ dot createメソッドの代わりにdot streamメソッドを呼び出す｡
そこで少し異なるアプローチを取る｡
それは､ ストリーミングのための人間工学とOpenAIのニュアンスの違いだ｡
そこで､ クロード・メッセージ・ストリームと呼ぶことにする｡
それ以外は同じだ｡
そして､ 戻ってきたものについては､ ストリームとしての結果を持つコンテキスト・マネージャーを使用する｡
それから､ ストリーム・テキスト・ストリームのテキスト用だね｡
オープンAIは､ それに応えるチャンクのためのものだったことを覚えているだろう｡
だからOpenAIは､ 結果を読み返す方法がまた少し違っていた｡
でも､ それがある｡
それぞれの小さな塊を取り戻し､ その塊を印刷する｡
その理由は､ 各チャンクを別々の行に印刷しないようにするためです｡
そうでなければ､ とても読みにくい｡
だから､ この方がよく見えるはずだ｡
クロード3世はどうだったかな｡ 5ソネットは､ JupyterLabで私たちにストリームバックされるジョークで行う｡
これでよし｡
分かるか？
ストリーミングだよ｡
もちろん､ データサイエンティスト向けの軽いジョークだ｡
なぜ同じジョークを？
まったく同じジョークのようだが､ ブラームスの小太鼓が加えられている｡
最後に爆発があったのは良かった｡
なぜ以前より多くのメダルを要求したのだろう？
見てみよう｡
そうだ｡
同じだ｡
ええと､ それは
そして､ ちょっとした説明もある｡
このジョークは､ データサイエンスに共通する統計的概念を利用したものだ｡
少しマニアックだが､ データに精通した観客の笑いを誘うはずだ｡
まあ､ 君たちはデータに精通しているから､ それを判断するのは君たちだ｡
笑ってもらえましたか？
前進だ｡
双子座は構造が違う｡
実際にはかなり違うんだ｡
グーグルの名誉のために言っておくと､ トークンを設定する機能はもっと複雑だが､ APIはもう少しシンプルだ｡
ここではジェネレーティブ・モデル・オブジェクトを作成し､ モデルの名前を渡す｡
5フラッシュ
ジェミニ1のコンテキストウィンドウの大きさを覚えているだろうか｡ 5フラッシュ
覚えていますか？
以前はトップだった？
100万トークンという驚異的な数字だった｡
100万トークン｡
75万語｡
というわけで､ 双子座1号｡ 5フラッシュ
このオブジェクトを作成するときにシステム命令を渡し､ ジェミニ・ドットを呼び出す｡
ユーザープロンプトでコンテンツを生成する｡
しかも､ ただのレスポンス・ドット・テキストだ｡
リクエストもレスポンスも､ もう少しシンプルなAPIにしてみよう｡
重要なのは､ なぜデータサイエンティストは統計学者と別れたのか､ ということだ｡
p値で意見が一致しなかったからだ｡
ああ｡
まあ､ データ・サイエンスの側面はわかるよ｡
よく分からないんだ｡
ハハハ｡
ああ､ たぶん君はわかっているんだろうね｡
それに､ 僕は､ うとうとしているんだ｡
ああ､ その場合はぜひ指摘してほしい｡
でも､ そのジョークの面白さは特に分からない｡
だから私としては､ ジェミニはジェミニ1より遅れていると思う｡ ユーモアの価値という点では5フラッシュ｡
分かった｡
ともあれ､ ちょっと真面目にGPT4に戻ろう｡
最初の質問と同じだ｡
君は役に立つアシスタントだ｡
ビジネス上の問題がLLMのソリューションに適しているかどうかは､ どのように判断すればよいのでしょうか？
覚えているだろうか､ それが私たちがチャット・インターフェースを通じてした最初の質問だった｡
そして今､ 私たちはこれを再び一つにすることができる｡
これは､ あなたにとって馴染み深いものだろう｡
結果をマークダウンでストリームバックする｡
つまり､ OpenAI chat dot completions dot createだ｡
我々はモデルにパスを出す｡
大物を狙うんだ｡
プロンプトを使うんだ｡
温度を設定した｡
私たちはストリーム＝トゥルーと言う｡
それがOpenAIのやり方だ｡
ええと､ それからこれは､ 結果を再びストリームバックする方法です｡
マークダウンを扱っているので､ もう少し複雑だ｡
そのため､ 基本的に反復ごとにマークダウンを更新するために､ ここではある種の特別なことをしなければならない｡
もし､ 私たちがこのようにしなければならないと確信が持てないのであれば､ それを取り除いて違うやり方をしてみれば､
何が起こるかすぐにわかるだろう｡
見栄えは良くない｡
それを実行しよう
そして､ その結果がここにある｡
マークダウンが部分的にしか通過していないときに､ フリックが起こっているのがわかるだろう｡
そのため､ 小見出しを表すハッシュが複数ある場合などを解釈している｡
まだ1回しかハッシュを受け取っていないし､ 大きなヘディングが来ると思っている｡
少なくとも､ マークダウンが表示されるときにチカチカと点滅していたのは､ 一時的に見たことだと思う｡
しかし､ その最後には､ もちろん､ とてもきれいに構成された回答が返ってくる｡
分かった｡
これで､ さまざまなAPIについて理解していただけたと思う｡
そして､ 次のビデオでは､ 実際に2､ 3人のLLMがお互いに会話をする予定だ｡
それではまた｡