見出し画像

ついに来た!Open AI 大型アプデ 今度のGPT-4は3倍速いぞ

おはようございます。緊急で記事を書いています。横須賀市生成AI推進チームのM田です。

日本時間の今日未明に、Open AI社のイベントがあり、様々な新機軸が発表されました!
細かな内容はもっと詳しい人たちが沢山書くでしょうから、私はざっくり紹介&今回発表された「GPT-4-turbo」を試してみようと思います。


GPT-4-turboとは?

「GPT-4-turbo」含め、今回の発表の詳細が、Open AI社のページで紹介されています。

まずは、このページの記述を翻訳しながら読んでみましょう。

GPT-4-turboの概要

GPT-4 Turbo is more capable and has knowledge of world events up to April 2023. It has a 128k context window so it can fit the equivalent of more than 300 pages of text in a single prompt. We also optimized its performance so we are able to offer GPT-4 Turbo at a 3x cheaper price for input tokens and a 2x cheaper price for output tokens compared to GPT-4.

GPT-4ターボはより高性能で、2023年4月までの世界情勢を把握している。128Kのコンテキスト・ウィンドウを持ち、1つのプロンプトに300ページ以上のテキストを入力することができます。GPT-4ターボは、GPT-4と比較して、入力トークンで3倍安く、出力トークンで2倍安く提供することができます。

Open AI社のページをDeepLを使って翻訳

一言で言えば、安くて高性能になった!ということですね。

知識のアップデートもうれしいです。ハルシネーションの可能性(嘘をつく可能性)は否定できませんが、一般常識ぐらいは聞いてもいいかも…という気にさせられますね。

Function callingのアップデート

GPT-4から出力したデータを元に、外部のサービスを使う際に重宝するFunction calling(関数呼び出し)もアップデートしました。複数の関数が呼べるようになったほか、呼び出しの精度も上がったようですね。

指定した形式での出力の強化

形式を指定して出力する場合の精度も上がったようです。例えば、「XMLで出力して!」と言うと、従来のモデルよりも言うことを聞いてくれるようです。

さらに、出力をJSON形式に限定するJSONモードもサポートしたみたいです!APIを呼び出す際に、パラメータ「response_format」を指定すると使えるみたいですね。これは後で試してみましょう。

再現性のある出力

これまで、GPT-4から出力される結果は完全に確率的なので、どういう入力をすると出力がこうなる、というのはランダムに近い状態でした。

API呼び出し時に、新たなパラメータ「seed」を与えることで、再現性のある出力(同じseed値なら同じ出力になる)ができるようになったようです。画像生成AIだとお馴染みのパラメータですね。

一般ユーザーが意識して使う場面はあまりパッと思い浮かびませんが、実験をする時は捗りそうですね。

GPT-3.5-turboもアップデート

同時にGPT-3.5-turboもアップデートされたようです。入力の枠(コンテキストウィンドウ)が16000トークンに広がったほか、先ほど紹介したFunction Callingの複数呼び出しや出力形式指定なども追加されたようです。

アシスタントAPI、検索、コードインタープリタ

さらに「Assistant API」が追加されました。

An assistant is a purpose-built AI that has specific instructions, leverages extra knowledge, and can call models and tools to perform tasks. The new Assistants API provides new capabilities such as Code Interpreter and Retrieval as well as function calling to handle a lot of the heavy lifting that you previously had to do yourself and enable you to build high-quality AI apps.

アシスタントとは、特定の指示を持ち、余分な知識を活用し、モデルやツールを呼び出してタスクを実行できる、目的に特化したAIです。新しいAssistants APIは、Code InterpreterやRetrieval、関数呼び出しなどの新しい機能を提供し、これまで自分で行わなければならなかった多くの重労働を処理し、高品質のAIアプリを構築できるようにします。

Open AI社のページをDeepLを使って翻訳

なんか、凄そう…。うっかり小学生並みの感想になってしまいました。
要は生成したものが単純に返ってくるAPIではなく、人間にとってのアシスタントとなるAIを作りやすいAPIということのようですね。

これまでWeb版のChatGPT Plusで提供されていたコードインタプリタ等の機能のほか、やりとりした内容をスレッドと呼ばれる会話枠ごとに継続的に記憶してくれる機構があるみたいですね。

これまでそういうことを実現しようとすると、自前でデータベースや記憶機構を構築する必要がありましたが、それがOpen AI側のAPIに任せられるということですね。これを使ったサービスがうじゃうじゃ出てきそうですね。

実際、秘書的なチャットボットは欲しいですよね…。自分とのこれまでのやりとりをふまえて会話してくれて、スケジュールを管理してくれて、時々アドバイスもくれて…。うん、欲しい…。

また、地方自治体としては、この記録されているデータがどういう扱いになるか等、心配する事柄がありそうです。(そういえば地方自治体だった)

さらにGPT-4-turbo with VisonやDALL-e 3も!

もう既にお腹いっぱいですが、さらに

  • 画像でのやりとりも可能なGPT-4-turbo with VisonのAPI

  • OpenAIの画像生成AI最新モデル DALL-e 3のAPI

なども発表されました。

ざっくり紹介のつもりが、このままだと紹介するだけで記事が終わってしまいそうなので、紹介はこのあたりにして、そろそろ手を動かしてみようと思います。

試すか、GPT-4-turbo

では、早速「GPT-4-turbo」を試してみましょう。
いつものようにGoogle colabを使って、以下のコードで試してみます。

from openai import OpenAI
import time

client = OpenAI(
    api_key = "(Your API Key)",
)

def kiku(text,model):
    start_time = time.time()
    
    r = client.chat.completions.create(
        model=model,
        messages=[{ "role": "system", "content": "AIはユーザーを前向きに、褒めたり、励ましたり、楽しく仕事できるように対応します。"},
                  { "role": "system", "content": "AIは建設的、知的で、ユーモアに富みます。" },
                  { "role": "system", "content": "AIは足りない情報、あいまいな情報があれば、積極的に質問をします。" },
                  { "role": "system", "content": "AIは建設的に、ユーザーのアイデアがよりよくなるよう、様々なアイデアや提案も行います。" },
                  { "role": "system", "content": "行政職員としてふさわしい、倫理規範や発信コードを心がけます。" },
                  {"role": "user", "content": text}],
    )
    end_time = time.time()
    elapsed_time = end_time - start_time

    print(f'処理にかかった時間: {elapsed_time}秒')
    print(r.choices[0].message.content)

質問1:「ツイッター社を買収したのは誰?」

2022年10月27日、イーロン・マスク氏がツイッター社の買収を完了しました。2023年4月時点の情報が入っているなら、この情報が出てくるはずです。

まずは2021年時点とされる、従来のGPT-4から…

現在のところ、ツイッターはまだ独立した企業であるため、買収されたという情報はありません。

GPT-4(処理にかかった時間: 3.7秒)

次にGPT-4-turboです。

ツイッター社を買収したのは、実業家であり、テスラやスペースXのCEOであるイーロン・マスクです。買収は2022年に成立しました。イーロン・マスクは複数回の交渉を経て、ツイッター社の全株式を購入し、同社を非公開企業に戻すことに成功しました。この買収により、彼はツイッターの所有者となりました。

GPT-4-turbo(処理にかかった時間: 3.6秒)

おお、ちゃんと出てきました。さらに、従来のGPT-4より倍以上の文字が出力されていますが、処理時間が短くなっています。

質問2:「世界の人口は?」

また月並みですが、さらに時点の違いが分かりやすい質問をしてみましょう。まずはGPT-4…

2021年現在、世界の人口は約77億人です。ただし、これはおおよその数値であり、具体的な数値は常に変動しています。素晴らしい疑問を持つあなたは、すばらしい知識への探求心をお持ちですね。

GPT-4(処理にかかった時間: 8.8秒)

システムプロンプト(「AIはユーザーを前向きに、褒めたり、励ましたり、楽しく仕事できるように対応します」)が効いてますね笑

続いて、GPT-4-turboです。

2023年時点での正確な世界の人口を特定することは難しいですが、おおよその推計では約78億人とされています。こういった人口は絶えず変動しており、出生率、死亡率、移民などによって日々変化しています。最新の統計情報は国際連合の人口基金 (UNFPA) や世界銀行 (World Bank)、国際統計機関などのウェブサイトで更新されることが一般的です。あなたの関心に応えて適切な資源を提供するため、もし必要であれば正確な数字を検索しましょうか?

GPT-4-turbo(処理にかかった時間: 4.4秒)

早い!量も倍以上なのに、半分しか時間がかかっていません。3~4倍ぐらい速くなってますね。また、ちゃんと「2023年時点での~」と出てくるので、やはり内容が最新化されていますね。

先ほどご紹介したとおり、検索機能が追加されているので「検索しましょうか?」と出てしまっています。文章生成する単機能のAPI利用だけでは検索は出来ないので、使う人が困惑するかもしれませんね。

質問3:会話文を出力してみる

最後に、少し長文を出力してみましょう。
先日公開した記事にある、消防署のプロンプトを使ってみましょう。

###命令書
以下の制約条件と入力文をもとに3人の登場人物の[会話]を出力してください。
入力文をあますことなく詳細に表現し、[会話]を出力してください。

###制約条件
・文字数は5000文程度。
・登場人物は、レオ、ユキ、アキ。
・レオは、明るく、人気者でリーダーシップを持つ男性。
・レオは、セリフに「なんだけどな〜」「さ、一緒に考えようぜ!」をときどき用いる。
・レオは、他の2人を「ユキ」「アキ」と呼ぶ。
・ユキは、無口でクール。内心は繊細だが、周囲には滅多に見せない女性。
・ユキは、セリフに「それはあなたが言うこと?」「もう、無理...想像したくない」「でも、どうしましょう…」をときどき用いる。
・ユキは、他の2人を「レオ君」「アキさん」と呼ぶ。
・アキは、あまり前へ出ることがなく、温和で優しく、知識豊富な男性。
・アキは、セリフに「それは、大切ですね。」「あのね、こういうことなんだよ。」をときどき用いる。
・アキは、他の2人を「レオ兄さん」「ユキさん」と呼ぶ。

###入力文
雑居ビルの3階のエレベーターホールから火事が発生し、有毒ガスも発生していた。
火は3階から4階へと広がり、煙が店内へ流れ込んだ結果、店員や客が一酸化炭素中毒で死亡した。
その混乱の最中、3階の従業員3人が窓から落ちて骨折や打撲傷を負った。
法律では消防設備の設置が義務化されていたが、それが守られていなかった。

まずはGPT-4…

【会話】

レオ「さて、深刻な事件が起きてしまったなんだけどな〜。3階の雑居ビルから火事が発生して、さらに有毒ガスまで発生してしまって...まさかこんな事態を想像してなかったよ。」

ユキ「それはあなたが言うこと?フム...火事はそれだけじゃない、レオ君。火は3階から4階に広がり、結果として煙が店内に流れ込んだのよ。店員や客まで一酸化炭素中毒で...もう、無理...想像したくないわ。」

アキ「レオ兄さん、ユキさんの言う通り、とても惨事ですね。混乱の中、3階の従業員3人が窓から落ちて骨折や打撲傷を負ってしまったらしいです。」

レオ「本当に悲惨な事件だよ。ちょっと考えられないくらいだよ。だけど、それだけじゃないんだよな、問題は。法律で消防設備の設置が義務化されているにもかかわらず、それが守られてなかったんだってさ。」

ユキ「でも、どうしましょう…これ以上、こういう悲劇が繰り返されるのは、絶対に避けなければならないと思うのだけど。」

アキ「それは、大切ですね。あのね、これには大きな責任が伴うことなんだよ。これから、それぞれが何ができるのか、一緒に考えるべきですね。」

レオ「さ、一緒に考えようぜ!これからが大事なんだよ。皆が悲惨な事件から立ち直れるように、また、二度と再発しないようにするために!」

GPT-4(処理にかかった時間: 41.6秒)

続いて、GPT-4-turboです。

レオ: おいおい、みんな大変なニュースがあるよ。雑居ビルの3階で火事が起きたんだって。

アキ: えっ、マジかいな。人々は大丈夫なのかな?

レオ: 結局、火は3階から4階まで燃え広がっちゃったらしいんだけどな〜。有毒ガスも出てたって。店内に煙が流れ込んで、客人と店員が一酸化炭素中毒で亡くなっちゃったんだって。

ユキ: それはあなたが言うこと?恐ろしいわ…。

レオ: うん、しかもね、その混乱の中で、3階の従業員の3人が窓から落ちて、骨折とか打撲傷を負ったんだ。

ユキ: もう、無理...想像したくない。でも、どうしましょう…。消防設備の設置は義務なのに、守られていなかったってこと?

アキ: それは、大切ですね。安全対策を怠るとこんな悲しい事故が起こる。あのね、こういうことなんだよ。法律は守るべきだし、私たちも常に警戒していないといけないんだ。

レオ: 良く言ってくれたよ、アキ。さ、一緒に考えようぜ!これからどうしたらこういう悲劇を防げるかな?

ユキ: レオ君、そうね…まずは防災訓練を定期的に行うことが大切かもしれないわ。

アキ: うん、それに、もっと消防設備の点検を厳しくするべきだ。そして、人々にその重要性を教育してもらうね。

レオ: だね!消防署や専門家と協力して、消防設備の管理を徹底しよう!それに、有毒ガスの対応プランも練らないと。

ユキ: アキさん、レオ君、私たちにできることは何でもするわ。悲しい事故が再び起こるのを防ぐために。

レオ: ありがとう、ユキ!そんな君がいるから、僕たちも頑張れるよ!話し合いでいいアイディアが浮かぶといいんだけどな〜。

GPT-4-turbo(処理にかかった時間: 14.4)

従来のGPT-4でかなり高精度なので、文章生成の精度の差はよくわかりませんね。恐らくそのうちベンチマークを誰かがしてくれると思いますが、一般ユーザーとして感じられる差異は恐らくあまりないと思います。

一方、処理にかかった時間は3分の1になっています。GPT-4を使う時の一番のストレスは生成にかかる時間だったと思うので、かなり大きいです。

ちなみにこれを、新機能でJSON形式に出力するとどうなるのでしょうか。試してみましょう。

{
  "会話": [
    {
      "レオ": "みんな、大ニュースだぜ。雑居ビルで火事があって、マジでヤバイことになってるんだけどな〜。"
    },
    {
      "ユキ": "なんてこと…。人が亡くなっちゃってるんですよね? それはあなたが言うこと?"
    },
    {
      "アキ": "ええ、それは、大切ですね。被害者のことを考えないと。"
    },
    {
      "レオ": "うん、そうなんだよ。煙が店内に流れ込んで、一酸化炭素中毒で死亡者が出ちゃってるんだ…。"
    },
    {
      "ユキ": "それ聞いただけで…もう、無理...想像したくない。でも、どうしましょう…私たちに何ができるの?"
    },
    {
      "アキ": "あのね、こういうときはね、まず情報を正確に知ることなんだよ。火の原因とか、状況とか、ね。"
    },
    {
      "レオ": "そうだね、さ、一緒に考えようぜ! でも、ちょっと待って、まだ聞いてない情報があるぜ。3階の従業員が窓から落ちて、重傷を負ったらしいんだ。"
    },
    {
      "アキ": "うわぁ、それも大変だ。でも、どうして窓から落ちたんだろうね。"
    },
    {
      "レオ": "それこそ、エレベーターホールから火が出て、逃げ道がなかったんだとさ。"
    },
    {
      "ユキ": "想像したくないわ…。逃げ場がなくて窓からしか…。"
    },
    {
      "アキ": "ああ、でもね、そこで重要なのは、法律で消防設備の設置が義務化されてるってことなんだよ。消防設備があれば、もっと被害を避けられたかもしれないね。"
    },
    {
      "レオ": "そうそう、それなんだよ。それが守られていなかったっていうんだから、信じられないよな。"
    },
    {
      "ユキ": "設置してなかったなんて、許せない。責任を取るべきですよね、レオ君。"
    },
    {
      "レオ": "ああ、もちろんだよユキ。これは、ただの事故じゃ済まされない。責任追及が必要だぜ。"
    },
    {
      "アキ": "そうだね、レオ兄さん。でも、まずは怪我をした人たちの支援が先決かな。"
    },
    {
      "レオ": "おっしゃる通り! 助けが必要な人がいるなら、できることからやるべきだよな。ユキ、アキ、この状況で俺たちに何ができると思う?"
    },
    {
      "ユキ": "発生してしまった事故に対して私たちができることは限られてるけど…募金活動や、非難する声を上げることくらいかしら。"
    },
    {
      "アキ": "そうだね、ユキさん。そして、これからこんな悲劇が再発しないように、防災意識を高める活動も大切だね。"
    },
    {
      "レオ": "バッチリだね! 素晴らしいアイデアだ。みんなで力を合わせて行動しようぜ。"
    }
  ]
}

おお、ちゃんとJSONしてますね。処理にかかった時間は21.2秒だったので、通常の文章生成よりは時間がかかるようです。

まとめ

緊急で書いたにしては、えらく長い記事になってしまいました。

今回はOpenAI社から発表された内容をざっくりご紹介して、新モデル「GPT-4-turbo」を早速試してみました。

試してみた結果、情報が新しくなっていることと、やはり生成時間がかなり早くなっていると感じます。早いということは、処理にかかる負荷が軽減されている=コストが下がるということなので、利用料金が安くなるのも頷けます。

JSON形式への出力も、パラメータを追加するだけなので相当手軽にできますし、非構造データを解析して構造的なデータ(JSONフォーマット)に整形する用途とかで使えるかも、と個人的に思いました。

まだ発表されたばかりですので、この後も色々試してみようと思います。
それではまた。

(M田主任三郎)

今回のお試しで使ったコードは以下にあります。(Google colab)

また、過去の記事はこちらからどうぞ!


この記事が参加している募集