ラボのラジオ・デイへようこそ｡
もっとやることがある｡
続けよう｡
LLMを呼び出し､ とてもいいジョークを言うシンプルなユーザー・インターフェースを作ったところだった｡
ええと､ このまま続けましょう｡
次にやることは､ より見栄えのするユーザー・インターフェースを得る方法として､ マークダウンで応答するようアシスタントに求めることだ｡
マークダウンで書かれた優れた書式で､ グラディオの結果を表示できたらいいと思わない？
テキストボックスの代わりにマークダウンという言葉に置き換えるだけで､ 完璧にフォーマットされたマークダウンが出力される｡
それは素晴らしいことだろう？
いいことだと思わない？
このあたりはお分かりだろう｡
物事は本当にそうなんだ｡
これはいい｡
では､ あなたのメッセージを言いましょう｡
そうだな｡
あの､ タイムズ・スクエアからグランド・セントラルまでどうやって行けばいいんですか？
ニューヨーク・ナビゲーションに質問がある｡
どうなるか見てみよう｡
それを考えているんだ｡
さあ､ 行こう｡
これが返答だ｡
ニューヨークのタイムズ・スクエアからグランド・セントラル・ターミナルに行くには､ 私が話していたことを理解する必要がある｡
これらの手順を踏めば､ 良い見出しであることがわかるだろう｡
そして､ GPT4から戻ってきたマークダウンに記されているように､ 素敵なサブの弾丸や数字､ その他もろもろを備えている｡
とても簡単だ｡
他に何ができるか見てみよう｡
ええと､ ストリーミング｡
ストリーミングは前回で慣れた｡
そこで､ Jupyterの出力セルに戻ってきたときと同じように､ 結果をGradioのユーザー・インターフェースにストリームバックすることができる｡
それでは､ どうぞ｡
私たちは機能を変える｡
以前はGPTというメッセージだった｡
今はGPTストリームにしている｡
機能が違う｡
そして重要なのは､ これは実際には機能ではないということだ｡
結果を出して終わるという点ではジェネレーターだ｡
そしてグラディオは､ 私たちが関数ではなくジェネレーターを与えていることを検知する｡
そのため､ グラディオは自動的に反復性を持ち､ このジェネレーターから戻ってくるデータを少しずつ埋めていくことになる｡
だからいつもの話だ｡
メッセージを作成し､ 同じAPIコールであることを思い出してほしい｡
クロードのやり方を覚えているか？
そうなるといいね｡
クロードの場合は､ アトリビュートを持たず､ ドット・クリエイトの代わりにドット・ストリームを呼び出す｡
でも､ それ以外はよく似ている｡
ここでひとつ注目すべきことがある｡
ただ､ グラディオの場合はほんの少し微妙だ｡
結果をGradioにストリームバックする場合､ 結果のチャンクごとにストリームバックすることはない｡
これまでの累積結果をすべてストリームバックし､ さらに長い累積結果をストリームバックしなければならない｡
つまり､ 私がやっているのは､ 空の文字列から始めるということだ｡
そして､ 各チャンクごとにそれを足し算して､ これまでの累積結果を出す｡
そうしないと､ 個々の塊が出力セルに現れては消え､ 別のものに置き換わってしまう｡
だから､ こうしなければならない｡
意味がわからない場合は､ yield resultの代わりにyield chunkを試してみてほしい｡
申し訳ない｡
収量塊. 0. デルタ・ドット・コンテンツ
ええと｡
そうすれば､ 私が言っている意味がよくわかるだろう｡
見栄えは良くないだろう｡
とにかく､ これが我々のストリームGPTだ｡ メッセージGPTであった関数をストリームGPTに置き換えるだけで､
あとはGradioがやってくれるとしたら､ それは素晴らしいことではないだろうか｡
これは関数ではなくジェネレーターなんだ｡
そのため､ 彼らは結果をストリーミングで返したいと思っているはずだ｡
だから､ タイプライター・アニメーション風のエフェクトが必要なんだ｡
本当にそんな単純なことができるのか､ 見てみよう｡
そんな単純なことでいいのだろうか？
さあ､ 始めよう｡
タイムズ・スクエアからグランド・セントラルへはどうやって行くの？
さあ､ 行こう｡
もちろん､ それは簡単なことだ｡
もちろんそうだ｡
結果をストリームする｡
見た目も素晴らしい｡
マークダウンは素晴らしい｡
ええと､ だから､ もちろん､ クロードと一緒ならどんなに簡単かお見せしなければ､ 私の仕事ではありません｡
前にも書いたが､ クロードのAPIコールがあるのがわかるだろう｡
とてもよく似ている｡
ドットストリームを呼び出し､ パラメータは渡さない｡
トークンの最大数を指定する必要があり､ システム・メッセージは別に入力されることを覚えておいてほしい｡
それ以外は非常によく似ている｡
ストリーミングバックは､ ストリームとしての結果のためだけのものだ｡
つまり､ 結果をストリームとしてコンテキスト・マネージャーとする｡
そして､ 以前と同じように全回答を返す｡
そしてこの時点では､ 退屈なほどシンプルなものになるだろう｡
冗談はわかるだろう｡
代わりにその関数を渡すだけだ｡
そして今､ 私たちは代わりにクロードと話している｡
同じ質問をしよう｡
タイムズ・スクエアからグランド・セントラルへの行き方は？
そして､ クロードの回答が来た｡ 少し短く､ 2つの選択肢だけだが､ うまく構成されている｡
うまくフォーマットされている｡
実に素晴らしい｡
GPTとクロードのどちらかを選択できるようにすることで､ 一歩前進させることができます｡
でも､ それは次のセッションで話そうと思っている｡
だから､ そこで頑張るんだ｡