メルマガ読むならアプリが便利
アプリで開く

週刊Life is beautiful 2023年6月6日号: Google PaML2、GPTからAPIを安定して呼ぶ方法

週刊 Life is beautiful
今週のざっくばらん Google PaML2 Google I/O 2023で、Googleは、GPT4に対抗するPaLM2を発表しました。PaLM2を利用したチャットサービス(ChatGPTに相当するもの)は、Bardとして一般公開されましたが、APIの方は、申し込みが必要だったので、早速申し込んでおきました(Generative AI for Developersで、"Join the waitlist"をクリックします)。 先週になって、招待状が届いたので、早速試してみました。APIはOpenAIのものと良く似ており、実験用に作っている Python アプリを対応させるのに1時間もかかりませんでした。 しかし、GPT3/4向けに作ってきたプロンプトの多くが、PaLM2ではうまく動きません。色々と試した結果、日本語のSystemプロンプト(PaLM2ではcontextと呼ばれています)にはまだ対応していないことが判明しました。 英語のSystemプロンプトに関しても、少し複雑なものになると失敗してしまうので、GPT3/4と比べて「かなり使いにくい。アプリが作りにくい。」というのが私の第一印象です。 例えば、スターウォーズのヨーダのように倒置法で喋るように指示したとしても、GPT3であれば、以下のようにちゃんと倒置法で話してくれますが、 To control the Force, much training you must undergo. Patience and discipline you must have. Mastering your emotions, you must learn. Practice, practice, practice you must do. Only then, the Force you can control. PaLM2の場合、 Learn control of Force you must, young one. A powerful ally it is. In all things, balance you must find. In your emotions, your thoughts, your actions. Only then will you be able to harness the power of the Force. Meditation is key. Calm your mind and open yourself to the Force. Let it flow through you. Patience also is important. The Force is not something that can be mastered overnight. It takes time, practice, and dedication. But if you are willing to put in the effort, the Force will be yours to command. Remember, the Force is a powerful ally, but it can also be a dangerous one. Use it wisely. と途中から通常の文章になってしまっています。 Google I/Oを見て、「やはりGoogleは凄い、OpenAIもうかうかしていられない」という印象を持った人も多いと思いますが、APIを使ってみた限りでは、まだOpenAIの優位性は失われていないように感じました。 GPTからAPIを安定して呼ぶ方法 GPTに代表されるLLM(Large Language Model)の応用方法は色々と考えられますが、その一つとして今後重要な役割を果たしそうなのが、コンピュータを自然言語で操作する、NLUI(Natural Language User Interface)への応用です。家庭で活用するのであれば、「エアコンの温度を28度に設定して」とか「家の照明をベッドルーム以外全て消して」などの「言葉」を理解してエアコンや照明器具などを操作するイメージです。 ここで問題となるのは、APIとの連携です。LLMは「エアコンの温度を28度に設定して」という言葉を解釈することは出来ますが、APIを呼ぶことは出来ません。LLMが唯一出来るのは、それに言葉で答えるだけです。 一つのアプローチとしては、LLMにPythonやJavaScriptなどで記述されたプログラムを出力させ、それを実行するという方法があります。APIの定義をプロンプトとして与え、リクエストに応じて、必要なプログラムを生成させるのです。 試しに、以下のようなプロンプトをGPT3(3.5-turbo)に与えます。 system: あなたはホームオートメーション・システムで、ユーザーからのリクエストに応じて、必要なPythonのプログラムを生成することです。 APIの仕様は以下の通りです。 setAC(temperature: float) // in celsius user: エアコンの温度を28度に設定して。 その結果の出力は以下のとおりです。 以下は、要求を受け取ってユーザーの要件に従ってPythonコードを生成する関数の例です。 def setAC(temperature: float): code = “aircon.set_temperature({})”.format(temperature) return code この関数を、以下のように呼び出すことができます。 code = setAC(28) このコードが生成され、実行される場合、エアコンは28度に設定されます。 このアプローチには二つの問題が、あります。一つは、コード以外に「以下は、要求を受け取ってユーザーの要件に従ってPythonコードを生成する関数の例です。」のような余計な言葉が入ってしまっている点です。 プロンプトを工夫すれば、Pythonのコードだけを生成させることも可能ですが、それを直接実行するのにはかなりのリスクが伴います。想定もしていなかったようなプログラムが走ってしまう可能性があるからです。簡単なデモ程度ならば問題ありませんが、実際の商用アプリケーションには適していません。 当初、私は、この問題を解決するには、DSL(Domain Specific Language)を使うしかないと考えていました。DSLとは、特定のタスクを実行するためだけに定義された言語で、このケースのように、「定められたこと以外はして欲しくない」場合に適したアプローチです。 しかし、DSLを使うとなると、LLMにDSLの定義を誤解のないように伝える必要があり、それはそれで簡単な作業ではありません。 どうやったら良いかを試行錯誤していた時に、OpenAIからChatGPTのプラグインが発表されました。特定のアプリケーションをプラグインとしてChatGPTに登録しておくと、必要に応じて、プラグインを起動してくれる、という仕組みです。 「プラグインを起動する」とは、正しく私がやりたい「限定された条件でAPIを呼ぶ」ことに相当するので、この仕組みをリバース・エンジニアリングすれば、良い方法が見つかると思い、早速、プラグインの仕様(Chat Plugin)を見てみました。

この続きを見るには

この記事は約 NaN 分で読めます( NaN 文字 / 画像 NaN 枚)
これはバックナンバーです
  • シェアする
まぐまぐリーダーアプリ ダウンロードはこちら
  • 週刊 Life is beautiful
  • 「エンジニアのための経営学講座」を中心としたゼミ形式のメルマガ。世界に通用するエンジニアになるためには、今、何を勉強すべきか、どんな時間の過ごし方をすべきか。毎週火曜日発行。連載:菅首相に会って来た/米国で起業する時に知っておかねばならないこと。
  • 880円 / 月(税込)
  • 毎週 火曜日(年末年始を除く)