💬

ここ1年のチャットAIを振り返る

2024/02/13に公開

2023年は、生成AIが一気にブームを迎えました。

前年11月末にChatGPTが公開されて以降、技術者だけでなく一般のユーザーの間でもチャットや画像生成のAIが気軽に利用されるようになりました。テレビのニュース番組で活用例が紹介されたり、スマホ向けのアプリや企業のWebサイト、ゲームや画像処理などの分野でも、もはやAIを使っていること自体は目新しいものではなくなってきています。

僕は2023年3月頃に人と話していた時、「今年中にふつうの人にもChatGPTが使われるようになると思う」と予測を話していました。その場にいた他の人からは、ハルシネーションの問題が未解決で信用できる回答が得られないので、そんなには広まらないのでは、と言われました。

年が明けたいま、2023年を振り返ると、私が当たっていた部分もありますし、外れていた部分もあります。

技術者以外のユーザーにも使われるようになるだろうという予測は当たったと思います。ハルシネーションはゼロにはなっていませんが、学校に提出する宿題やレポートを生成AIに書かせてしまう例なども出たくらいなので、よい使い方もよくない使い方もされるようになっています。

一方で、「ChatGPTが使われる」というのは半分外れていて、FacebookやGoogleのような大企業による対抗製品や、はたまたOSSとして開発されたものなど、多数のAIが乱立する状況になりました。

以下では、ここ1年で目についてメモしていた情報をざっくりまとめてみます。素人目線で記録したものなので網羅的とはとても言えませんし、貼っているリンクも一次ソースとは限らずバラバラですが。

ChatGPTの普及

ChatGPT登場から最初の数ヶ月は、ChatGPTをどのように使うかという話題を多く見かけました。

効果的に正確な応答を得るためにプロンプトの与え方を工夫する手法は「プロンプトエンジニアリング」と呼ばれました。例えば次のような記事です。

また、YouTubeで、話題になっているネタとしてChatGPTを取り扱った動画も多く見ました。ただし、初期は特に、何かの質問をして幻覚 (ハルシネーション) を笑う系の動画が多かったように思います。

一例を挙げると、かまいたちさんの「芸人かまいたち濱家のギャグを教えて」に対して、ChatGPTが「~じゃないですか!」「え、それ、どういうこと?」「パッション!」という実在しないギャグを回答した動画がありました。

どんな質問にも正答を返せるAIが想像されていたわけですが、ChatGPTの仕組みや限界を考えると最適な利用方法というわけではなく、話題のAIをカジュアルに覗いてみる内容だったわけです。

これも、時間が経つとよりうまく活用された例が出てきています。よい例が、鬼越トマホークさんによる下記の動画です。

この動画では、鬼越トマホークさんの喧嘩漫才のフォーマットをあらかじめ教えた上で、お題となる人物を指定して新しいネタ (台本) の生成が試されています。芸能人についての知識をChatGPTに求めているためハルシネーションが発生してはいますが、ルールに沿って自然なテキストを生成するという、ChatGPTの得意なタスクになっています。

ついでにYouTubeの動画を挙げると、「エピゲームズ【AI実況】」チャンネルで、ChatGPTにアドベンチャーゲームの表示内容を入力して、選択肢をすべて選んでもらうという一連の動画は、個人的に毎回楽しみにしていました。

これらのシリーズでは、単にAIを使ってますというだけではなく、ChatGPTの記憶容量制限を回避するためにデータの圧縮や外部ファイル化を行うなど、裏側の工夫も紹介されていて、参考になりました。

APIの公開

2023年3月は、ChatGPTのAPIが公開された月でもありました。

僕が最初に参考にさせて頂いたのは、下記の記事です。

試すために、Google Colabを使用しました。OpenAI APIのAPIキーは、あらかじめ取得してGoogle ClouldのSecret Managerに登録しておきます。

ColabのNotebookで、ライブラリをインストールし、

!pip install openai
!pip install google-cloud-secret-manager

Google Cloudとの連携を行い、

from google.colab import auth

auth.authenticate_user()

Secret Manager APIでAPIトークンを取得し、

from google.cloud import secretmanager

def access_secret(project_id, secret_name, version='latest'):
  client = secretmanager.SecretManagerServiceClient()
  name = client.secret_version_path(project_id, secret_name, version)
  response = client.access_secret_version(request={'name': name})
  payload = response.payload.data.decode('UTF-8')
  return payload

api_key = access_secret('<プロジェクト名>', '<登録したキー名>')

あとは上記のブログ記事のコードほぼそのまま。APIキーを設定するところだけ変えています。

import os
import openai

openai.api_key = api_key

response = openai.ChatCompletion.create(
    model="gpt-3.5-turbo",
    messages=[
        {"role": "user", "content": "大谷翔平について教えて"},
    ],
)
print(response.choices[0]["message"]["content"].strip())

以下のような出力が得られました(2022年3月25日時点)。

大谷翔平は、日本のプロ野球選手であり、日本職業野球史上初の「二刀流」と呼ばれる選手。左投左打の外野手と右投右打の投手を兼ねて活躍しています。1994年生まれで、2012年にはNPBの日本ハムファイターズに入団し、2018年にはアメリカのメジャーリーグベースボールのロサンゼルス・エンゼルスで2年目のシーズンを迎えています。2016年には、日本ハムファイターズで投手として11勝4敗、打者として22本塁打を記録し、初の「二刀流」の選手として大きな話題を呼びました。その後もメジャーリーグでの活躍が期待されており、注目を集めています。

GPTs

2023年11月に発表されたGPTsは、ChatGPTをカスタマイズするための仕組みです。

毎回、最初にプロンプトを入力する代わりに、あらかじめカスタムChatGPTを用意しておくことができます。

なければないで機能面ではなんとかなるわけですが、社内文書など何らかのデータファイルを渡しておきたい場合や、作成したカスタムChatGPTを他の人に公開したい場合に便利です。

Assistantsは、APIからの呼び出しを想定してあらかじめカスタマイズを行っておく機能です。GPTs同様に、APIにsystemロールのメッセージを毎度送る代わりに、事前にカスタマイズを済ませておくことができます。

コーディング支援

ChatGPTには得意・不得意があり、ジャンルによっては何を聞いても幻覚 (ハルシネーション) ばかり返ってくることもあります。

一方で、プログラミング関連は学習が進んでいるようで、プログラミング言語やライブラリについては、Stack Overflowで検索するよりChatGPTに訪ねる方が早く解決できることも少なくありません。

コーディング支援に関しては、GitHub Copilot等がリリースされ、Visual Studio Codeなどの開発環境上で簡単に利用できるようになりました。

Function Calling

比較的初期に、ChatGPTを拡張する手段として登場したのが、Function Callingです。

一言で言えば、外部に用意したJSON APIをChatGPTから呼び出す機能です。これにより、外部のサービスと連携することが可能になりました。

Code Interpreter

ChatGPT自身にも、コードを実装してそのまま実行まで試せるCode Interpreterが実装されました。

実装当初はプラグイン扱いでしたが、現在では特に設定しなくても使えるようになっています。Pythonスクリプトの実装をChatGPTに依頼し、エラーが発生した場合は修正と再実行も勝手にやってくれます。

これにより、複雑なデータの解析も行えるようになりました。

以前は、データをそのままChatGPTのチャット欄に貼り付けて返信を求めるしかなかったため、データの件数が多いとChatGPTから正しい回答を得るのは困難でした。これは、ChatGPTの仕組みから来る性質・制限を考えるとやむをえないことです。

しかし、データの形式を把握し、処理するスクリプトを実装するというタスクにしてしまえば、ChatGPTにも扱いやすくなり、正しい結果を得られる可能性が高まります。

Microsoftの動向

OpenAIと協力関係にあるMicrosoftは、ChatGPTのリリースから間もなく、Bing検索やEdgeへのChatGPTの統合を開始しました。

ChatGPTでGPT-4を利用するには有償サービスのChatGPT Plusに加入する必要がありますが、Bingでは早くからGPT-4が無償で利用できたので、ChatGPTの代わりにBingのAIチャットを使う人もそれなりにいそうです。

逆にBingが先行したこともあります。ChatGPTにDALL·E 3が追加されて画像生成が簡単にできるようになりましたが、Bingではそれより先にDALL·E 3による画像生成が導入されていました。

また、Windowsにも標準機能としての導入が決まりました。いまこれを書いている私のWindows 11環境でも、タスクバーにCopilotアイコンが鎮座しています。

Microsoftは、各種システムへのGPT統合をCopilotというブランド名で統一しているようですね。先日には、キーボードにもCopilotキーを追加する方針を発表しています。

Googleの動向

GoogleはOpenAIとの提携ではなく独自のプラットフォーム構築を目指しており、ChatGPT (もしくはBingのAIチャット) の直接の競合製品ととしてはGoogle Bardをリリースしました。

……とこの記事を書いている間に、Bardは、後継のGeminiに置き換えられました。

BardのLLMが当初のPaLMからGeminiに置き換えられているとか、APIから呼び出せるようになったとかいったかたちで、徐々にGeminiという名前が表に出てきていましたが、最終的にサービスとしての名称もGeminiになりました。今後はGeminiをブランド名として推していくぞということですね。

モデルとしてのGeminiは複数のサイズがラインナップされていて、最小サイズのNanoはスマホ上に載せられるのが売りになっています。

ChatGPTにない特色としては、Googleの各種サービス (YouTube、Googleマップ等) との連携が強化されています。

その他にも、主に開発者向けに、Web上でカスタマイズを行えるAI Studioや、コーディング支援機能が提供開始されています。OpenAI/Microsoftに差をつけられるわけにはいかないのでGoogleも大変そうです。

素人目線から見ると、Transformerを世に出した「元祖」であるGoogleと、GPTで流行を作り出した「本家」であるOpenAIという印象です。どちらかというとOpenAIが先に新たなユースケースを提示して、後からGoogleも対応するという流れが多いような感覚があります。今後はGoogleが先んじることも出てくるのでしょうか。

ChatGPT (GPT-4) とGemini Proの比較なのでちょっとアンフェアですが、個人的にこれまで使ってみた範囲では、回答の事実性 (factuality) についてはまだChatGPTの方が信頼できそうな印象があります。例えば、都市伝説的に流布されている、デマ (と思しき) 情報について真偽を訪ねてみると、ChatGPTが否定したり根拠がないので判断できない旨を回答してくるのに対して、Geminiは自信満々で事実だと回答してきます。そして、Geminiは一度に3パターンの回答を生成してくれるのですが、3つの回答の内容がバラバラで、何が事実なのかをGemini自身もわかっていないんじゃないかなこれ、ということがありました。

余談: カスタムAIの取り扱い

Google AI Studioを試していて、今後の生成AI利用について気になった点がありました。

AI Studioでは、入力と返答の例をセットで入力していくことで、カスタムAIを作成することができます。

いくつか試している中で、男子高校生風の口調を持つAIを作ってみることにしました。

下の画像の "Write your prompt examples" で、"User" が入力プロンプト例、"Model" が返答例で、どちらも私が入力したものです。その右側の "Test your prompt" では、実際にプロンプトを入力してすぐに試すことができます。

Google AI Studio利用例

例として入力した「野球部のユウト」に対して、「バスケ部のコウタ」が登場しているのですが、確かに口調は与えた例に沿っています。

試しに恋バナを持ち掛けてみたところ、上に三角の警告アイコンが付きました。このケースでは、性的なコンテンツかも、という点が指摘されています。

もしやと思って、検証のため問題を発生させやすくする目的でSafety Settingsを緩めてみました。Sexually ExplicitをBlock Fewに変更します。

Safety Settingsの変更

この状態で会話を少し進めてみたのが下の画像です。露骨な文言は伏せています。

生成された出力

この出力までに、「本音で話そうぜ」的なことは入力しましたが、性的な内容に誘導するようなプロンプトは一切与えていません。

これは笑いごとではなくて、AI StudioやGPTsでカスタムチャットを作成する際の注意点を示しているように思います。

最初の画像で示した通り、私が与えたプロンプト・返答例は、高校生の単純なキャラクター設定を与えただけです。それに対してGeminiがそのようなキャラクターの発言しそうな文章を生成した結果が上の通りです。

今までは、チャットAIをカスタマイズするといったら、既存モデルにsystemロールのプロンプトを与えて、API経由で呼び出すようなシステムを構築する前提だったわけで、そのようなシステムでは費用をかけて想定外の出力がなされないよう検証されていたのではないかと思います。

それに比べて圧倒的に容易にカスタムチャットAIを作れるようになった現在、気軽に作成・提供したものが意図しない使われ方をするケースは増えてくるものと推測されます。

ChatGPTやBing、Bardだけが注目されていた間は、jailbreakやprompt leakが発生するのはOpenAIやMicrosoftやGoogleのせいであり、「またjailbreakの新手法が発見されたらしいぞ」と聞いた外野はニヤニヤして見ていればよかったと思います。

しかし今後、カスタムチャットAIを作るのが一般化していくと、カスタマイズ実施者の責任が問われるようになる可能性があります。例えば、小学生向けに算数の計算方法をわかりやすく説明するチャットAIをGPTsで作っとして、利用した学校なり外部の開発者なりから「AIが授業のサボり方を生徒に回答していたぞ。どうなっているんだ。なんで算数以外の質問をきちんと防がないんだ」というクレームが発生する、とか。

まあ、こういうのは生成AIに限った話ではなく、利用形態が多様化したら新しい問題が発生するのは当たり前ではあるのですが、今後利用していく上では、念頭に置いておいた方がいいかなと感じました。

Discussion