CLOSE

Generative AI 時代のサービス開発者への道(全3記事)

LLMを使ったサービス開発で気をつけるべきことは? 日本マイクロソフトの大森氏が贈る、生成AI活用のステップ

「Generative AI 時代のサービス開発者への道」というタイトルで登壇したのは、日本マイクロソフト株式会社・大森彩子氏。Generative AIの歴史、サービス開発にGenerative AIを活用するための心構えとTipsを日本CTO協会が主催の「Developer eXperience Day 2023」で発表しました。全3回。2回目は、LLMを使用したサービス開発で注力すべきこと。前回はこちら。

GPT-3とGPT-4はどう違うのか?

大森彩子氏:では、ChatGPTのGPT-3からGPT-4の間でどれくらい(能力が)向上しているのかというところを、実例を使って紹介したいと思います。(スライドを示して)こちらはスクリーンショットになりますが、弊社のAzure上にホストしている、OpenAI社の技術提供を受けているAIモデルです。

ちょっとマイクロソフトのお話になりますが、「Azure OpenAI Services」というサービスでは、こういったGUI画面が用意されていて、どういうテキストやどういうプロンプトを入力すると答えが出るのかがその場で画面に示されるようになっています。このグリーンになっているところがAIが実際に生成した文章です。

プロンプトとして例えば「ChatGPTって何ですか? ちょっと定義してみてください」。というものをやってみます。

他の登壇したセッションで、その参加者から事前にお話をうかがう機会があったので、「ChatGPTを自らみなさんの言葉でちょっと考えて教えてください」とお願いして書いてもらったデータを出してみました。ChatGPTさんにそれをサマリーしてもらおうということで、「3点ぐらいでまとめてください」と言って書いた結果が、このグリーンの部分です。

だいたいいい感じにサマリーできています。「3点ぐらいでまとめてください」という指示をプロンプトで出しているので、3点ぐらいにまとめています。

それがGPT-4になるとどうなるかというと、まったく同じデータですね「ChatGPTとは何か」という、みなさんが30人ほどで書いた定義の文章をまとめて、「300字ぐらいでまとめてください」と書いてみました。こちらはもちろんChatGPTでもGPT-3.5でもできるのですが、せっかくなのでGPT-4に食べさせてみたところ、いい感じに文章の構成ができている。

(スライドを示して)この部分は非常にナチュラルにできています。言語を構成して、日本語ネイティブな人が「そうだね。日本語としてちゃんとすごくわかるね」というかたちで構成してくれるのが現在のGPT-4です。

まずは使用例を紹介しました。“プロンプト”というお話をしましたが、(GenerativeAIを)コントロールする中で、プロンプトエンジニアリングをすでに工夫されたり、格闘されている方がいると思います。

念のためそのあたりを解説すると、典型的なものはシステムメッセージです。例えば「あなたはコンサルタントです」とメッセージを出すと、AIはそのように振る舞うことができます。あとは、ある程度タスクを分割する。ほかには「こんなかたちで出してください」と(指示をする)。例えば「表形式で出してください」と例示して出させることによって、その意を汲んで埋めるかたちで推定という能力が上がることが一般的には知られています。

コントロールしにくい、狙った答えを出してくれない…LLMを利用する時の課題

では実際にGenerative AIですね。生成AIを使ってどういうふうにサービスを構成したらいいのか。そういったヒントになるお話をしたいと思います。

(スライドを示して)こちらは先ほどお話しした、ChatGPTがなぜ注目されたかというところなのですが、LLMを利用する上での課題というところで、全部が全部チャットでいいとは限らない。

チャットがすごく流行していて、なんでもかんでもチャットでやりたいという風潮はあると思いますが、すべての業務にチャットを使うのかというと、それについては否だと思うんですね。チャット以外を使う方法も考える必要があります。

先ほど、プロンプトエンジニアリング(について)もお話ししましたが、なかなかコントロールがしにくい。思ったように、狙ったように答えを出してくれないというお話を聞きます。また、データの問題では、データをちょっと与えて(グラウンディング)、答えを作ってもらうというお話もしましたが、やはりトークン数と呼ばれる、いっぺんにプロンプトと一緒に与えられるデータの量は上限があるので、例えば会社が持っている用語集のデータを全部与えたいのに、全部与えられるとも限らず、限界を感じるといったお話を聞きます。

LLMを使ったサービス開発で注力すべきことは?

そういった時には、どういうふうに考えたらいいのか。マイクロソフトが2023年5月に発表したフレームワーク「Copilot Stack」を例としてお話しします。

(スライドを示して)こちらは5月に開催された「Microsoft Build 2023」というマイクロソフト本社の技術イベントですね。年に2回ほど大きなイベントがあって、その1つです。実際にGenerative AIを使っていく上で、どのようにアプリケーション開発をするのか、どういったところで使っていけばいいのかというところで示されたのが、このCopilot Stackです。

大きく分けるとフロントの部分ですね。UIの部分と、「orchestration」と書いてある真ん中の部分。このモデルを使ったり工夫したりして必要な答えをいろいろと出す部分ですね。それから一番下の部分が「Foundation models」と呼ばれる、Generative AIの各種APIですね。その3段構成で考えていただくのが、1つの例です。

じゃあフロントの部分ってどういったことですか? ということで、最近マイクロソフトでは、その部分でCopilotという名前が付いた製品が増えています。

「Microsoft 365」、Office製品に搭載されるGenerative AIを使ったCopilotですね。”副操縦士”と呼ばれるヘルパーアプリ。それからこのあとには、WindowsのCopilotと呼ばれる、Windows 11に搭載されるWindows Copilotというかたちで、マイクロソフトは「例えばUIからAIをこういうふうに使えますよ」と提案しています。

この部分(Copilotの製品がカバーする領域)は正確に言うと、このCopilotと呼ばれるUIの部分と、その下のAI orchestrationですね。その2つをまとめてマイクロソフトは提供するかたちなのですが、そのCopilotという部分でのユーザーのフロント(UI)はやはりチャットなんですね。

先ほど「チャットがすべて良いというわけではない」というお話をしましたが、例えばフロントをチャットとした場合「こういうことをやりたい」と言ってもらえれば、そこを助けるかたちでアプリケーションを提供しています。なので、こちらは将来的にはCopilotと呼ばれる製品名です。

そのUIの部分はマイクロソフトが提供するとして、今みなさまがやりたいその下の部分、orchestrationなどのソリューションは、みなさまに自由に作成していただけるように、別途「plugin」という名称で組み込みが可能なようにしていきます。もちろん実際にはUIのほうに注力していただくのもいいのですが、例えばUIはこういったマイクロソフトが提供するものに委ねてしまうというのもありですし、他のサードパーティ、他の会社に任せてしまうというのもありです。

ですが、やはり一番注力していただきたいのはこういったフロントの部分ではなく、その後ろの部分ですね。Foundation modelsと呼ばれるGenerative AIをうまく使って、どうこうする。単に1回APIに投げてシングルタスクをやってもらうのではなく、さまざまな機能を組み合わせるんですね。

Generative AIもただ1回投げるだけではなくて「成形して」と言って投げて、答えを取得する。いい感じにプロンプトのデータを工夫したり、いったん「ちょっと推測して・推定して」と投げて答えを取得してから、最終的にユーザーに返す時にも「もうちょっといい感じの文章に直して」と投げて校正してもらってから出す。そういった(Generative AIを使いこなす)部分を中心として考えていただきたいというのがマイクロソフトのメッセージです。

もしかすると、こちら(Microsoft 365 Copilot、Windows Copilot)の動画に釘付けになっている方もいるかと思いますが(笑)。まずはプレビューというかたちでみなさまに使っていただくようになるかと思いますので、ぜひ楽しみにしていただければと思います。

オーケストレーションの部分をもっと考えてほしい

ちょっとお話を続けますが、こういったCopilotはさておき、その後ですね。実際のオーケストレーションの部分をもうちょっとみなさまに考えていただきたいというのが、これからお話しする内容です。

メインとしてはプロンプト。あとはLangChainというライブラリ名などで「Chain」という呼び方をするのですが、そういったさまざまなAIのモデルですね、Foundation Modelである、もちろんCognitiveも含めたさまざまなモデル、もしくは自社で開発したモデルを組み合わせる部分。それと、グラウンディングですね、さまざまなデータを外部から取ってきて与えて、そのAIモデルで使えるようにする。そういったいくつかの部分に分けて考えていただくフレームワークをぜひ覚えておいていただければと思います。

スライドにソリューションデモと書いてありますが、我々もどういったかたちで作れば(GenerativeAIの活用方法を)みなさんにわかっていただきやすいか、いろいろ試行錯誤をしてきたので、一例を少し題材としてみなさまにお話ししたいと思います。

最初に考えたのは、冷蔵庫の中身や家族構成を考えて「今夜はこんな感じの献立にすればいいんじゃない?」と提案をしてくれて、もちろんレシピも出してくれる。そんなのがあるといいよね、というソリューションです。

ちょっとこれはどこかで聞いたことがあるよねと思われた方、正解です。さまざまなモノに搭載されようとしていました。例えば冷蔵庫とか電子レンジとか、もしくはスーパーとか、そういった「搭載するとそれ便利よね」というアプリケーションで、応用がいろいろ利きます。

実は一昔前もCognitie AIで考えていたのですが、それが非常にやりやすくなったというか、我々があまり考えなくてもGenerative AIがやってくれる部分が増えたというのが最近のAIの発展になります。

もちろん冷蔵庫の中にあるものは(ユーザーが)インプットしますが、将来的には冷蔵庫が勝手に教えてくれるかもしれません。家族構成、好き嫌い、アレルギーなども(ユーザーが)入力するとして、足りない材料はあるとしても「こんなメニューにするとバランスが良いんじゃないかな?」というメニューを提案してくれて、かつレシピも提案してくれるというところまではけっこう簡単にできます。

というのは、Generative AIでGPT-3.5相当に「こんな感じの材料でレシピを作ってください」と言うと、実はレシピ手順を作ってくれます。(GPT)3.5の難点としては、材料を上から全部投入しようとするので、投入する順番に材料を書いて与えなければいけませんが、例えば「小麦粉」と言うと、「ボウルに入れて混ぜる」といったかたちで、きちんとなにかプラスαはしてくれるんですね。

「普通は小麦粉をそのままは焼かないよね」と思うじゃないですか。常識をある程度持っているので、そういったところを考慮してレシピを組み立ててもらうことが可能です。いちいち人間がそこを考えて調整をしなくても、自動で推測して(手順を)作ってくれるところは新しいですね。

あとは、レシピの名前、もしくは材料から、こんな感じの食べ物じゃないかな? と画像を生成してくれる機能もつけています。こちらは、DALL-Eと呼ばれる画像生成用モデルですね。DALL-E 2を使っていますが、それを使うとレシピからだいたいの画像を生成してくれます。

(生成された画像が)ちょっとまだ「?」みたいなところ、「そうかな? かたまり肉じゃないんじゃないかな?」みたいなところもありますが、難なく作ってくれるところまでできてくる。こういうところは以前のCognitive AIに比べて新しいのではないかなと思います。

デモ

このあたりを実際の動画で紹介すると、まずレシピですね。家族構成などを入れておいて、冷蔵庫の中身を入れていくと、こんなかたちでメニュー、材料、足りない物、手順などを出してくれます。

もちろん、足りないものを補ったり、レシピはやはり人間が作った物にはかなわないです。なので、そういったところはうまくAPIなどを使う、レシピのサイトや他のサービスとうまく連携して使っていくというのが適切かと思います。

全部のプロセスを全部をGenerative AIに任せればいいというのではなく、既存のサービスと組み合わせる。ここは既存のサービスを使ったほうがいいから使う、そのあともう少し複雑なこと、推定でできることは(Generative AIで)やっていこうというかたちが新しい使い方になります。

栄養バランスはただグラフで出力しているので、そんなに難しいものではありませんが、例えば栄養アドバイスなどの文章を生成する機能はGenerative AIが担うことになります。

分けて考えることが大事

簡単なシステムの構成図になります。(スライドを示して)LangChainなり、そういったステップはまだ人間が考えなければいけませんが、ある程度は外部のサービスやGenerative AIなどを使って、先ほどお見せしたような画面に必要な情報を作って提案するというのが、今の作り方になります。

過去これまでにみなさんが考えついたアイデアが、Generative AIを使うと「もっと簡単に構築できるかもしれない」と考えていただくのは1つの良いポイントではないかなと思います。

私も最初は(GenerativeAIで)「レシピが書けるの?」「手順書なんて作れるの?」と半信半疑だったのですが、例えば「ふわふわパンケーキを作りたいです」とだけ投げると、なんとなくそういった材料で作ってくれる手順が出力されたので「やはりそういうことができるようになったんだな」と、軽い驚きがありました。

実際にGenerative AIに対してAPI Callを投げてみて、どれぐらいの機能があるのか、できるかをご自分で確認していただくことは、やはり必要ではないかなと思います。

何回か繰り返してお話ししていますが、やはり全部のタスクを1回ではできないので、分けて考えるのが大事なポイントです。材料だけを投げて、1回だけでいい感じに栄養アドバイスまでくださいというのは、やはりコントロールしきれないんですね。

人間の頭の中でも、ここからここまではレシピを考えて、ここからは栄養アドバイスかな、と手順を分けて考えることがあると思います。そういったかたちでうまく作業のカテゴリを分けていく。一発でできない場合、さらにそれを細分化して考えていく。(処理を行うのに)適切な手段は何なのか、本当にGenerative AIなのか、それとも既存のサービスのほうがいいのか、人間が考えたもののほうがいいのか、そういうところを考えながら組み合わせて構築するといいというのが、このサンプルで気づいてほしいポイントです。

(次回へつづく)

続きを読むには会員登録
(無料)が必要です。

会員登録していただくと、すべての記事が制限なく閲覧でき、
著者フォローや記事の保存機能など、便利な機能がご利用いただけます。

無料会員登録

会員の方はこちら

関連タグ:

この記事のスピーカー

同じログの記事

コミュニティ情報

Brand Topics

Brand Topics

  • 孫正義氏が「知のゴールドラッシュ」到来と予測する背景 “24時間自分専用AIエージェント”も2〜3年以内に登場する?

人気の記事

人気の記事

新着イベント

ログミーBusinessに
記事掲載しませんか?

イベント・インタビュー・対談 etc.

“編集しない編集”で、
スピーカーの「意図をそのまま」お届け!