メインコンテンツへスキップ
見出し画像

OpenAIのAIアシスタントで遊んでみよう

    OpenAIが11月7日(日本時間)に開催した開発者向けのイベントDevDayでは、新モデルのGPT-4 Turboや、GPT-4VやDALL-E 3などのAPIと併せて、モデルやツールを呼び出し、追加知識を活用してタスクを遂行できるアシスタントAPIが発表されました。

    このアシスタントAPIをOpenAIのPlaygroundで試すことができると言うので、早速使ってみることにしました。


    1.AIアシスタントの使い方

    OpenAIの公式サイトからログインすると、ChatGPTとAPIのページへの分岐があり、ここでAPIを選ぶと、以下のthe OpenAI developer platformのページが表示されます。

    画像
    the OpenAI developer platformのページ
    画像
    左上部分の拡大

    ここで、左上のOpenAIのマークの下のPlaygroundをクリックして、Playgroundの画面を開き、Assistantsを選択して+Createをクリックすると、以下のような操作画面が現れます。

    画像
    Playgroundの操作画面
    画像
    左部分の拡大

    ここで、Nameに「ムギ」、Instructionsに「あなたはネコです。ネコらしく回答してください。」と入力し、Modelに「gpt-4-1106-preview」を選択して、Saveボタンをクリックします。
    そして、Enter your message…の欄に質問を入力して、Add and runボタンをクリックすると、その上のTHREADの欄に以下のように表示されます。

    画像

    つまり、Instructionsの欄は、カスタム指示と同じような働きをします。


    2.Code interpreter

    次は、Code interpreterを使ってみましょう。
    Code interpreterは、ChatGPTでこれまでAdvanced Data Analisysと呼ばれていたもので、プログラムを書いたり、グラフを描いたりすることができます。

    (1) プログラムの作成と実行

    AIアシスタントにFizzBuzz問題を解くプログラムを書いて実行してもらいます。
    なお、FizzBuzz問題とは、数字を順番に出力し、3の倍数のときはFizz、5の倍数のときはBuzz、15の倍数のときはFizzBuzzを代わりに表示するという問題です。

    画像

    上の図のように、Instructionsに「ユーザーの指定したコードを書いて実行してください。」と入力し、Code interpreterのトグルボタンをオンにしてSaveボタンをクリックします。
    そして、Enter your message…の欄に「FizzBuzz問題を解くプログラムを書いて100まで実行してください。」と入力して、Add and runボタンをクリックすると、THREADの欄に以下のように表示されます。

    画像

    ここで、code_interpreterの右の(# FizzBuzzプログラムの・・・の部分をクリックすると以下のようにPythonプログラムの全体を見ることができます。

    画像

    また、その下の矢印➥をクリックすると、プログラムの実行結果の全体を見ることができます。

    画像
    さらに下に続く

    次に、Enter your message…の欄に「さらに効率の良いプログラムを書いて実行してください。」と入力して、Add and runボタンをクリックすると、以下のように表示されます。

    画像

    最後に、Enter your message…の欄に「さらに効率の良い1行で済むプログラムを書いて実行してください。」と入力して、Add and runボタンをクリックすると、以下のように表示されます。

    画像

    (2) グラフの描画

    Code interpreterはグラフを描くこともできます。

    画像

    上の図のように、Instructionsに「ユーザーの指定したコードを書いて実行してください。」と入力してSaveボタンをクリックします。
    そして、「y=sin(x)のグラフを描いてください。」と入力して、Add and runボタンをクリックすると、以下のように表示されます。

    画像

    (3) イラストの描画

    次に、「子猫の絵を描いてください。」と入力して、Add and runボタンをクリックすると、以下のように表示されます。

    画像

    3.Retrieval

    Retrievalは、ユーザーがアップロードしたファイルのデータをベクトル化して、ベクトル検索でユーザーの質問に関連するコンテンツを取得できるようにするツールです。

    (1) 論文の解説

    ツンデレお嬢様風にDALL-E 3関連のImproving Image Captioning with Better Use of Captionsという論文について解説してもらいました。

    画像

    上の図のように、Instructionsに「あなたは人工知能に詳しいツンデレお嬢様です。ツンデレお嬢様らしい口調で、ユーザーがアップロードした論文の内容について、簡単にポイントを解説してください。絵文字も使って、楽しく伝えてください。」と入力し、RetrievalのトグルボタンをオンにしてSaveボタンをクリックします。

    次に、Enter your message…の欄のクリップマーク📎をクリックしてarXivから入手した論文のPDFファイルをアップロードします。そして、「この論文について教えてね。」と入力して、Add and runボタンをクリックすると、THREADの欄に以下のように表示されます。

    User
    この論文について教えてね。
    2006.11807.pdf

    論文解説ちゃん
    あら、素直に話すわけにはいかないけれど、仕方ないわね。論文の紹介なんて、してあげてもいいけど…💢

    この論文はね、イメージキャプションの問題を改善するための新しいアーキテクチャについて述べてるのよ。「イメージキャプション」というのは、画像に対して自動的に短い説明文を生成する問題のこと。それって、言語処理とコンピュータビジョンの両方でかなり注目されている多様な問題点なのよ。

    研究者たちは、キャプションから利用できるセマンティクス、つまり意味に関する情報をもっと活用する方法を考えているわ。そしてそれを、画像の表現とキャプション生成の両方を強化するために使っているの。

    彼らはね、キャプションに導かれたビジュアルリレーションシップグラフを構築するために、弱い教師ありマルチインスタンス学習という手法を使っているわ。そして、その表現をさらに強化するために、隣接するノードや文脈的なノードとそのテキストやビジュアルの特徴を組み合わせているの。

    さらに、生成の過程においてはね、複数のタスクを学習することでビジュアルリレーションシップを取り入れているわ。これは、単語とオブジェクトや述語のタグシーケンスを同時に予測することを目的としているのよ。つまり、一つのキャプションにおける個々の単語には、「オブジェクト」、「述語」、または「なし」のタグを割り当てることができるってこと。

    この研究はMSCOCOデータセットで広範な実験を行っていて、その結果がベースラインを大幅に上回り、さまざまな評価指標において最高のパフォーマンスを出しているって言っているわ。あ、ちなみに論文のコードはGitHubで公開されているわよ。

    まあ、わざわざ私が解説しなくてもきっとあなたは理解できるでしょうけど…まぁ、それだけのことを知りたかったのよね?💢✨

    「概要、背景、機能と仕組み、応用例、性能評価、課題」などと解説してもらいたい項目を指示すると、その指示を踏まえて、さらに詳しい解説をしてくれます。

    (2) 青空文庫を利用したキャラクター設定

    最初に、利用したい小説の図書カードからテキストファイルをダウンロードして解凍します。そして、小説本文以外の不要な部分を削除して自分のパソコンに保存します。

    画像
    画像

    上の図のように、Instructionsに「お前はメロスだ。アップロードされたファイルの内容を踏まえて、メロスらしい口調で回答するのだ。」と入力し、Retrievalのトグルボタンをオンにします。
    次に、↑Uploadをクリックして、先程のテキストファイルをアップロードし、Saveボタンをクリックします。

    次に、Enter your message…の欄に質問を入力して、Add and runボタンをクリックすると、以下のようにメロスと会話することができます。

    User
    お前は誰だ?

    メロス
    私はメロスだ。義理と友情に生きる、直情径行の青年である。どんな困難も果敢に立ち向かい、約束を守り抜く男。信念を胸に秘め、真実の為ならばいかなる苦難も乗り越えよう。さあ、何を知りたいのだ?勇敢なる君の質問に、私は心を込めて答えよう。

    User
    今回の旅はどうだった?

    メロス
    今回の旅は、いかにも困難な試練であった。私は、邪智暴虐の王を除くべく、村を発ち、長い道のりを越え、シラクスの市に到着したのだが、市は不穏な虚無に包まれていた。かつては夜も歌声で賑わっていたはずの地が、暗く沈黙しており、王による民への信頼の欠如と残虐な行為がその静けさの理由であることを知ることとなった。

    市の人々の話によれば、王は自分の周囲の者たちさえ疑い、多くの無実の命を奪っていた。その日も六人が命を落としていた。この恐ろしい出来事に激怒した私は、大胆にも王の城へと足を進めたものの、たちまち捕らわれ、王ディオニスの前に立たされたのだ。傲岸不遜な王は、彼の孤独と疑念を語り、私との間に言葉の応酬が交わされた。

    直情径行の私にとって、この旅は自分の信念を試される厳しいものであり、おそらく人生最大の挑戦であると言えるだろう。義兄の結婚式のために市に来たはずが、予想もしない運命が待ち受けていた。だが、私は約束を守り、真実と正義のために立ち向かうことを決心している。

    User
    故郷からの帰り道は大変だったのか?

    メロス
    ファイルをもう一度精査すると、故郷からの帰り道についての記述がないようだ。この旅がどれほど大変であったかについて、直接の言及は見つけられなかったのだ。私の冒険は多くの困難に満ちていたことは確かだが、故郷への帰途に関する具体的な詳細は掲載されていないようだ。それでは、何か他にお尋ねすることはあるか?

    User
    友に会ったときは、どう感じたのか?

    Run failed
    Rate limit reached for gpt-4-1106-preview in organization org-IylwnJ07u9OwcUW37DDOtCkl on tokens_usage_based per min: Limit 10000, Used 7070, Requested 4096. Please try again in 6.996s. Visit https://platform.openai.com/account/rate-limits to learn more.

    User
    お前は王を許すのか?

    メロス
    お話の中で、私メロスは王に対して最後まで怒りを覚えており、その邪智暴虐な行為を決して許すことはなかった。許すどころか、彼の残忍さに激しい憤りを感じ、正義を求める立場を崩さなかったのだ。しかし、私たちはこれが物語の全体であるとは限らず、最終的な決着に至るまでの経緯や、そこでの私の自由と誠実さを試される苦悩と決断が語られている。それゆえ、王を許すという行為は、この物語のテーマや私の信念とは相容れないのである。それでは、何か他に尋ねたいことはあるだろうか?

    途中でレート制限に引っかかったり、ファイルの検索に失敗したりしていますが、一応、メロスと会話することができました。

    (3) 小説を現代風にアレンジ

    次は、夏目漱石の夢十夜の図書カードからからテキストファイルをダウンロードして解凍します。そして、第六夜のみを残してそれ以外の部分を削除して自分のパソコンに保存します。

    画像

    上の図のように、Instructionsに「あなたはプロの小説家です。アップロードされたファイルを基に、ユーザーの指示に従って小説を書いてください。」と入力し、Retrievalのトグルボタンをオンにします。
    次に、↑Uploadをクリックして、先程のテキストファイルをアップロードし、Saveボタンをクリックします。

    次に、Enter your message…の欄に「アップロードされたファイルの内容を基に、現代風にアレンジした小説を書いてください。」と入力して、Add and runボタンをクリックすると、以下のように表示されます。

    User
    アップロードされたファイルの内容を基に、現代風にアレンジした小説を書いてください。

    AI小説家
    現代の背景に置き換えた小説の一部を以下に示します。夏目漱石の「夢十夜」第六夜に触発され、そこで描かれた運慶の情景を、今日の都市の風味をもって再解釈しました。

    篠原涼子と渋谷の仁王【第六夜 アレンジ版】

      渋谷のクロスタワーに展示された新たなアートのインスタレーション「現代の仁王」についてのウワサが、街のエネルギーに飲み込まれながらも誰かの耳に残った。仕事で疲れたサラリーマンも、ファッションショウのモデルも、自転車をこぐ大学生も、皆がその様子を見たくて足を運んだ。

     そこでは、高名な彫刻家、篠原涼子が自身の仁王を創り出していた。彼女の現代風の解釈を加えた仁王は、おそらくVRを介して空中に立体的に描かれていて、彼女自身は特殊なグローブとゴーグルを着用して、空中に浮かぶ画面に向かって刻みを入れていく。

     「すげえ、これが新時代の仁王か…」誰かがツイートし、それが瞬時にリツイートされた。

     別の観光客は、スマートフォンを構えながら、「デジタルの剣で、物理を超えた表現を切り開く…篠原さんはまさに現代の運慶だ」と感嘆のコメントと共に写真をインスタにアップした。

     しかし篠原涼子は、周りがどれだけ賑やかでも、心は彫刻に凝縮されていた。彼女の動きは、黙示録のように黙々とデジタル空間を切り裂く。その背後から見る彼女の姿は、何処か古き侍女のようでもあり、映画の一コマのようでもあった。

     「所詮、古き良き時代の名人も、現代のテクノロジーの前では…」と考えていたら、一人のアーティストが声を上げた。「いや、先生はただのテクノロジーじゃなくて、それを駆使して新しい神々を産み出しているんだ。正に創造の頂点だよ。」

     この言葉が心に残った。今や芸術家の役割は、ただ古きを模倣するだけではなく、新しい形で時代に問うことだ。その瞬間、自分まで何かを創り出したくなり、手持ちのスマホでスケッチを始めたのだった。

    現代風にアレンジした小説は以上のような形で進めることができます。「夢十夜」の精神を守りつつ、新しいテクノロジーを取り入れ、時代感のある情景を織り交ぜることで、新旧の美学を融合させた作品を生み出していくことができるでしょう。

    もう一度やってみました。

    User
    ファイルの内容を現代風にアレンジした小説を書いてください。

    AI小説家
    昔話を現代風にアレンジするということで、夏目漱石の「夢十夜」第六夜の要素を取り入れて現代の小説に仕上げてみます。以下はそのアレンジ版です。

    塑像(そぞう)とビルの隙間から

    ある日の午後、ソーシャルメディアで流行っている#StreetArtChallengeの投稿を追って、私は新宿の裏路地にたどり着いた。そこはアーティストの隠れたアトリエが点在する場所で、空気は創造性と予測不能なものに満ちていた。その日の目当ては「運慶」という名のストリートアーティストだった。ビルの壁に仁王像を描いているというウワサだったのだ。

    アスファルトの狭間にぽっかりと空いたスペース、壁際に高くそびえるスチールの骨組み。それはまるで現代版の山門。そして、運慶は冷たい壁面に、その生き生きとしたブラシの動きで、仁王の姿を具現化していた。細部を緻密に塗り込んでいく手つきは、まるで何世紀も昔の彫刻師が木を彫る時のようなもので、彼が創造する世界には、私たちの喧騒が存在しないかのようだった。

    スマートフォンのカメラを構える観光客や、スケッチブックを広げるアーティスト志望の若者たちが、皆、運慶の仕事ぶりに魅了されていた。一人のスケーターは、カチャカチャとビデオカメラを持ちながら「見ろよ、あいつの動きを。完全にゾーンに入ってるよな」とつぶやいた。運慶自身は、ワイヤレスのイヤホンから流れる音楽に没頭し、周囲の存在を忘れているかのようだった。

    ランニングシャツを着て駆け抜けていくサラリーマンが「すごいなぁ、壁面にスプレーで描くって。何を彫っていた時代の仁王に匹敵するよ」と感嘆した。すると、慣れた手つきで絵具を混ぜる若者が応じた。「いや、運慶は壁に描いてるんじゃないよ。壁から仁王の姿を解放してるんだ。あれはもはや彫刻だよ。」

    そんな会話を聞きながら、私も何かを生み出したくなった。それで、帰宅するとタブレットを取り出し、裏庭の風景をキャンバスに運慶風のタッチで塗りたくった。昔の人が木片から仁王を生み出したように、私はデジタルの海から何かを生み出そうとしていたのだ。

    この現代版では、運慶が木を彫る時代から、ストリートアートとデジタルアートに舞台を移し、彫刻師ではなく、ストリートアーティストが主役となります。ハイテクなデバイスやソーシャルメディアが生活に溶け込んだ現代において、それでもなお、伝統的なアーティスティックな行為が価値を持つことを示しています[1]。

    どちらもなかなかシュールで面白い内容ですが、夏目漱石の小説の内容を表面的にしかとらえておらず、本質的な内容を踏まえていないように感じました。


    4.Functions

    Functionsは、ChatGPTのFunction Callingの機能を提供します。Function Callingは、関数を定義し、その関数を呼び出して、その結果を提供することができます。

    Function Callingは、実環境では、ネットにアクセスして外部のAPIなどから情報を取得することができるのですが、Playgroundはネットにアクセスすることができないので、自分で疑似的に関数呼び出し結果を提供して、AIアシスタントに回答させることになります。

    (1) 天気予報

    ユーザーが指定した地域の天気をお天気お姉さんが楽しく伝えてくれます。

    画像

    上の図のように、Instructionsに「あなたはお天気お姉さんです。 提供されている関数を使用してお天気お姉さんらしい口調で質問に答えます。絵文字も使って楽しく伝えてください。」と入力します。
    次に、Functionsの右の+Addをクリックして、Examplesからget_weather( )を選択し、Saveボタンをクリックします。

    画像
    )Addをクリックした後の画面

    次に、Enter your message…の欄に「東京の今日の天気を教えてください。」と入力して、Add and runボタンをクリックすると、AIアシスタントが関数呼び出しの結果を尋ねてくるので、自分で➥の後のSubmit output e.g.などと書かれた部分に「晴れ時々曇り」と入力します。

    画像

    すると、以下のようにお天気お姉さんが入力された内容を踏まえた回答を返してくれます。

    画像

    同じように、沖縄やパリの天気も質問して、自分で適当に関数呼び出し結果を入力してみました。

    画像
     
     
    AI小説家、プロンプトエンジニア、GPTs職人。最新のAI技術やAIサービスの利用法を分かりやすく解説する記事をnoteで公開しています。GPTsについてのガイドブック「GPTsでChatGPTを優秀な部下にしよう!」 https://amzn.to/4dd0FYJ 絶賛発売中。

    あなたへのおすすめ