IoTやMixed Realityなどの技術を取り入れて活動している田中正吾氏

田中正吾氏:初めての方もいるかなと思うので、私の細かいところを紹介します。屋号はワンフットシーバスです。15、16年ぐらいフリーランスをやっているのですが、最近も3月に、ご存じ確定申告が無事に終わりましたというところで、まったくIoTが使えなくて、そういうところにも活かしていきたいなと日々思っています。

2004年よりフリーランスになり、最近ではWebフロントエンドをベースにしながらも、情報やインターフェイスを合わせたアプローチで、現実世界の情報をより細かく取るIoTの視点であったり、例えば現実空間に対してデータを可視化したり加えたりするようなMixed Reality、HoloLens。このような技術にも取り組みながら、活動しています。

先ほど紹介いただいたとおり、Microsoft MVPとかIBM Championとか、そういうところをやっています。あとウォンバットが大好きです。

今日は、ChatGPT、言葉でチャットするほうなのですが、画像生成AIでなんとか仲良くなりつつあるという感じですかね。Bingで画像生成ができたんですよ。僕はウォンバットがすごく好きなので、なんとか出したら、最近良い感じになってよかったなというところです。

ちょうど半年以上前にMidjourneyでがんばっていた時、ちょっと顔が溶けちゃったウォンバットじゃなくてカピバラが出たとかね。あと目が4つあるとか、そういうのが出てきてちょっと心が折れかけたのですが、まぁなんとか地道にやっています。

ChatGPTの魅力とは?

ではスタートということで、ChatGPT。話題になってきていますが、まず導入の話として、私の印象を話していこうかなと思っています。私が感動したところを重視して言うと、やはり人間の言葉、自然言語で聞くとうまく理解してくれること。しかも、かなりのジャンルに万能に対応できて、さらに自然言語で人間がわかるように返答してくれる仕組み、あるいは相手。というところで、このようなかたちでChatGPTがあるんだなと実際に使っていて感じます。

このとおり、人間の言葉を理解する。回答ジャンルは万能。もちろん得手・不得手はあります。回答に対して人間の言葉で返してくれる。ここまでやってくれるので、非常におもしろいテクノロジーだなと感じています。

私もこのようなかたちでいろいろとあれこれ触っていて、自分が使っているテクノロジー、例えばIoTやHoloLensのようなMixed RealityとかWebとか、そういうものに対してだんだん近づいてきたな、使っていくと楽しいなと思っています。

OpenAIのWeb版とOpenAIのChatGPT APIは基本的に同じ印象

では、OpenAI社のChatGPT APIとは何か? というところです。日進月歩で日々情報が変わっていますが、私が言えるところで説明していこうかなと思っています。

こちらにあるとおり、OpenAI社のAPIは、このようなかたちでいろいろなプラットフォームがあります。Chatをするところはもちろんありますし、音声を返すところとか、実際にイメージジェネレーション、先ほどの画像生成みたいなところもあります。

このようなところをOpenAI社がやっています。すごいところは、今までモデルデータとかを学習して作るみたいなカスタムがあったのですが、そこを、すべてに使いやすいWeb版の入力、インターフェイスなどでテストできるようにしてくれているところです。さらに、APIというかたちでシステムにも組み込みやすく提供することもけっこうがんばっている。というところで、非常にありがたいサービスだなと感じています。

今回私が包括しているところでは、Chat completionというサービスを使います。もちろん画像生成や音声認識など他にもいろいろあるのですが、話題のChatが自分でも非常にいいなと感じたので、ここを中心にやっていきます。

これを並べていくと、ModerationとかEmbeddingsとか、Fine-tuningとか本当にいろいろあるので、実際にこのドキュメントを見ると目移りしてしまいますが、Chat compiletionという、最初にお見せした、実際にChatの自然言語のやりとりで聞かれたものを理解して回答して実際に言葉が返ってくるというところが実際にどんなものかというと、OpenAIのChatとなると、Web版で(スライドを示して)このようなかたちで答えるものがあります。実際に使った感覚は、同じ感じですね。厳密に言うとモデルが違うらしいのですが、私がいろいろとやっている限りだと同じように返答が返ってくるなぁという感じがしています。突然ね、「こっちのほうがすごい」みたいなものを返してくれる感じではないです。

何が言いたいのかというと、OpenAIのWeb版と、OpenAIのChatGPT APIというかたちでやっているものは同じ感じです。このように「ごく基本的なindex.htmlでください」とか頼むと、たまに忘れるじゃないですか。マークアップとか。そういう時とかに、基本的に同じように返してくれました。

実際にどのように違うかは、私も文献を読んだりして自分が理解する上ではいいのですが、やはりこういう時にはしっかりした文献がないと僕も自信を持って言えない部分があるので、ちょっと他の人の力を借りてしまいます。

クラスメソッドさんの記事で言及がありました。ChatGPTのAPIは、gpt-3.5-turboということで、小規模で速度が速く、比較的簡単な自然言語処理タスクに使用されることが多い。非常に速い速度で返してくれると、実際にクラスメソッドさんの記事に書かれていました。(スライドを示して)このようなかたちで書いてあります。実際ここにも使い方があり、Lambdaと結びつけるやり方だそうです。気になる方はぜひ見てください。

OpenAI発、ChatGPT APIの使い方

いろいろ話しましたが、やはりどう動くかの簡単なデモを通してコメントしていくのが一番いいかなと思いますので、やっていきます。

一応お断りしておくと、2023年4月頃の情報で進みます。進化が目まぐるしいので、違いがあったらご容赦ください。こんなふうに進めていきます。API referenceページというものがあります。こちらにAPIという取り方のリンクがあるので、そこからアクセスします。実際に見てみると、このようなかたちになっています。

けっこう英語で書かれているのですが、ACTPのAPIなどを使う感じの知識感でいくと、APIというリンクはすごくハッキリしています。僕の設定ではConflictionが見えちゃうのでちょっとクリックしませんが、実際にこのようなかたちでやっていけるということで、Bearer tokenのやり方ですね。

このようなかたちで進めていくのですが、クリックするとログインを聞かれるのでログインします。最初はこのようにログインします。実際にやってみると、ちょっとおもしろいものがあります。ログインとSign upの話で、Sign upをうっかり押しちゃって、もう1度アカウントを作りそうになったりします。これはなんか呪いがかかっているんですけど。ログインを打ちましょうというところですね。

API keysのページは、Create new secret keyボタンをクリックして、キーをメモしましょうというところです。これは1回しか出ませんのでご注意ください。これをやるとsecret keyが並んでいます。並んでいるだけで、きちんとメモしないと、もう1度作り直さないとAPIキーが取れないので、ここらへんはご注意ください。このとおり1度しか生成されないので、閉じる前にメモしておきましょう。

ドキュメントも豊富ですね。REST APIのドキュメントがあったり、公式でPythonやNode.jsのライブラリがあって、こちらの使い方も書いてあるので非常にわかりやすいかなと思っています。

ChatのAPIの説明はこのあたりですね、簡単に仕様を紹介します。実際に設定に行って、モデルを指定して、メッセージ……これはWeb版の問いかけみたいな部分ですね。このモデルも指定してあげることになります。実際にこちらをクリックして、ちょっと細かくお伝えしようかなと思っています。

実際にリクエストする時に、こういうことをやりましょうみたいなところで、「messagesの中にroleでユーザー側からの質問がHelloだったら」とか、いろいろと書かれています。

例えば、stremはWeb版などでタイプライターに出るようなかたちで、文字を受ける時に便利らしいですね。実際にいろいろな設定をすることができて、返答が返ってくるという説明が書いてあります。このようにいろいろとやっていけるという説明が、非常にわかりやすく書かれています。このあたりをみなさんもつなぐ時はぜひ見てください。

Node-REDとsimple-chatgptをつなぐツールとして活用

というところで、今回つなぐツールとして何を使ったかですが、Node-REDというツールを使いました。けっこうAPIとかIoTにつなぎやすいNode.js製のローコードツールで、実際に今日お見せする時もブロック同士が何をしているかがわかりやすいので、伝わりやすいかなと思いました。

Node-REDは、有志の人が実装している状態なのですが、ChatGPTに関してのブロック、Nodeというものもなんとすでに3つあります。先ほどお伝えしたACTPのAPIベースでつなぐものなのですが、custom-chatgpt。これは先ほどのAPIレバレッジで最も細かくパラメーターが設定できるものでした。

あとはsimple-chatgptという、日本のがおまるさん(高馬宏典氏)という方が作られたものもあります。こちらはパラメーターが固定なのですが、メッセージを流すだけでその返答が返ってくるという、ある意味Web版の、タイピングをして文字を入れてエイヤッと答えるぐらいの気軽さでやれるものです。

今回はnode-red-contrib-simple-chatgptを使ってつないでみようというところで、このようなかたちでインストールしています。実際の使い方は、作者のがおまるさんの記事が大変詳しくわかりやすいです。API key、先ほど取得したAPIを入れるだけでサッと使えるところが素敵です。

軽くお伝えしておくと、インストールして、secret keyを取得して、ChatGPTのブロックを入れて、実際にここに「おいしいラーメンを教えて」と文字を入れれば、答えるので、非常に使いやすいです。最近はsystemといって、事前に定義する文言も入れられるようになっていて進化しています。素敵です。

(次回へつづく)