Slide 1

Slide 1 text

ALGYAN ChatGPT研究会 第 3 弾 OpenAI 社の ChatGPT API の使ってみ て考えたこと ワンフットシーバス 田中正吾

Slide 2

Slide 2 text

私の話はスライドを後ほど共有します。 話す内容に注力いただいて大丈夫です!

Slide 3

Slide 3 text

45 分くらいを目指してアレコレ話します のこり時間は質疑応答などで

Slide 4

Slide 4 text

田中正吾(たなかせいご) 屋号:ワンフットシーバス 2004年よりフリーランス。最近ではWEBフロン トエンドをベースにしながらも、情報とインター フェースが合わさるアプローチという視点でIoT やMixed Realityといった技術も取り入れながら 活動しています。 Microsoft MVP。IBM Champion。 ウォンバットが好き。

Slide 5

Slide 5 text

画像生成 AI と何とか仲良くなりつつある近況 Bing 画像生成でかわいいウォンバット画像を生成したら良いものも生成できつつあるメモ https://www.1ft-seabass.jp/memo/2023/04/08/microsoft-bing-image-creator-wombat-try/

Slide 6

Slide 6 text

ChatGPT の私の印象 人間の言葉(自然言語)で聞くと、うまく理解してくれて、かなりジャンルは万能に対応でき、 人間の言葉(自然言語)で人間が分かるように返答してくれる仕組みあるいは相手 人間の言葉を理解 人間の言葉で回答 回答ジャンルは万能 (得手不得手はある)

Slide 7

Slide 7 text

OpenAI 社の ChatGPT API 使うのはこの API です https://platform.openai.com/overview

Slide 8

Slide 8 text

Chat completion を使います 画像生成とか音声認識とか他にもいろいろあるんですが、話題のチャットの仕組みを使います

Slide 9

Slide 9 text

おおまかには OpenAI の Web 版で 使えるのと近いもの たしかに API と Web 版で比較してやってみても同じような印象(あくまで印象ですが)

Slide 10

Slide 10 text

クラスメソッドさんの記事で言及があった 「gpt-3.5-turbo」は小規模で速度が速く、比較的簡単な自然言語処理タスクに 使用されることが多い点があります。とのこと。 https://dev.classmethod.jp/articles/open-api-lambda-test/

Slide 11

Slide 11 text

簡単なデモを通して OpenAI 使ってみます!

Slide 12

Slide 12 text

2023/4/1 ごろの情報で進めます 進化が目まぐるしいので違いがあったらご容赦

Slide 13

Slide 13 text

API reference ページで API Keys の リンクがあるので、そこからアクセス https://platform.openai.com/docs/api-reference/authentication

Slide 14

Slide 14 text

ログイン聞かれるのでログインします わたしはうっかり Sign up 押しがちなのは秘密

Slide 15

Slide 15 text

API Keys のページで Create new secret key ボタンをクリックしてキーをメモ

Slide 16

Slide 16 text

一度しか生成されないので 閉じる前にメモしておきましょう!

Slide 17

Slide 17 text

素の REST API であったり公式の Python や Node.js ライブラリが使えます

Slide 18

Slide 18 text

Chat の API の説明はこのあたり 簡単に仕様をご紹介します。見やすい。 https://platform.openai.com/docs/api-reference/chat/create

Slide 19

Slide 19 text

今回はつなぐツールとして Node-RED 使います API や IoT につなぎやすい Node.js 製ローコードツール

Slide 20

Slide 20 text

Node-RED では chatgpt で調べると すでに 3 つもあります API ベースでつながるものです

Slide 21

Slide 21 text

今回は node-red-contrib-simple-chatgpt を つかってつないでみます

Slide 22

Slide 22 text

作者のがおまるさんの記事がくわしいです API Key 入れるだけでサッと使えるところが素敵すぎる https://zenn.dev/gaomar/articles/e46cba8e489dfa

Slide 23

Slide 23 text

ウォンバットの質問をしてみます Web 版ではこう返ってくる。

Slide 24

Slide 24 text

こんなフローで質問チャレンジ

Slide 25

Slide 25 text

ChatGPT ノードは API Key を Token に設定

Slide 26

Slide 26 text

ChatGPT ノードに送り込む質問を 手前の change ノードで仕込んでおく

Slide 27

Slide 27 text

デモしてみます!

Slide 28

Slide 28 text

➔ ChatGPT API で Web 版のような応答ができる ➔ 少し応答を待つのは Web 版だと徐々に出てくるので緩和 されて見えるが同じくらいっぽい ➔ おなじ質問も聞くたびに少しずつ変わって面白い ウォンバット質問デモのポイント

Slide 29

Slide 29 text

ChatGPT はこういったカジュアルな質問も 良い感じに答えてくれる 人間の言葉を理解 人間の言葉で回答 回答ジャンルは万能 (得手不得手はある)

Slide 30

Slide 30 text

ところで、なぜ ChatGPT API をつかうの?

Slide 31

Slide 31 text

API の使う理由の一つとして プライバシーが保たれるので使ってます OpenAIのAPIを利用する場合、オプトインしない限りユーザーが送信したデータが 学習に利用されることはない、と改定されました。とのこと。 https://dev.classmethod.jp/articles/openai-data-usage-policy/

Slide 32

Slide 32 text

Web 版での「自然言語で答えてくれる」ことが 他の IT な仕組みに入れにくい悩ましさがある これを事例に話します

Slide 33

Slide 33 text

一見いいように素敵な回答見えるんですが ここからコピーしてペーストして使う手間がある つまり人間の目視でうまーくコピーアンドペーストして取り出す

Slide 34

Slide 34 text

このように API 経由でデータをもらえれば 活用しやすくなるので注目してます

Slide 35

Slide 35 text

さらに IT の仕組みに ChatGPT を なじませるアプローチ!

Slide 36

Slide 36 text

さきほどのように返答されても 他で扱うためには加工や抽出が重要 JSON で返してくれた方が扱いやすいはず

Slide 37

Slide 37 text

人間の言葉で返される特性は チャットには良いがシステムに組み込みにくい 「人間の言葉で回答」部分をうまくブラッシュアップしてみます! 人間の言葉を理解 人間の言葉で回答 回答ジャンルは万能 (得手不得手はある)

Slide 38

Slide 38 text

ChatGPT API でも Web 版でも 共通に大事なのは良い質問をつくること プロンプトをうまく組んでみる

Slide 39

Slide 39 text

うまく JSON で返ってくる質問の 試行錯誤をしてみました! いい感じのエアコン設定温度を JSON データで返答し HTTP API 的に ChatGPT が答えてくれる質問例のメモ https://www.1ft-seabass.jp/memo/2023/03/13/chatgpt-http-api-like-json-response-tips1/

Slide 40

Slide 40 text

いざデモしてみます! さきほどの質問を API で聞いてみる

Slide 41

Slide 41 text

➔ 人間の言葉で回答というのがシステムに組み込みにくいの で JSON データで返すようにして親和性を高めた ➔ ちゃんと JSON 例を質問の中で明示すれば ChatGPT は理 解してくれて返答してくれました。「人間の言葉を理解」 の特性がうまく効いてる。 ➔ JSON の回答をした上で、聞きたいことの値をうまく返答 してくれました。 JSON 縛り質問デモのポイント

Slide 42

Slide 42 text

ChatGPT はこちらの質問やルール次第で 回答も JSON に合わせてくれました 人間の言葉を理解 JSON データに 加工して回答 回答ジャンルは万能 (得手不得手はある) ブラッシュアップ!

Slide 43

Slide 43 text

次は万能な回答能力をルールを決めて 絞り込むことで回答精度アップ! 人間の言葉を理解 JSON データに 加工して回答 回答ジャンルは万能 (得手不得手はある) ブラッシュアップ!

Slide 44

Slide 44 text

回答精度をより実用へ目指してみたら もどかしい部分もありました LED へ設定する RGB 値を JSON データで返答し HTTP API 的に ChatGPT が答えてくれる質問例のメモ https://www.1ft-seabass.jp/memo/2023/03/14/chatgpt-http-api-like-json-response-tips2/

Slide 45

Slide 45 text

このナレッジでフロー作りました

Slide 46

Slide 46 text

template ノードで「赤」などと指定された言葉を 質問文に埋め込んで使っています

Slide 47

Slide 47 text

それではやってみます!

Slide 48

Slide 48 text

➔ しっかり質問を定義すれば、柔軟に返してくれる ➔ ただし、おなじ質問でも、少し違うカラーを返してくれる ことがあっておもしろい ➔ 例外についてはたまに JSON 縛りを忘れてしまうことが あっておもしろいけど、JSON データ壊れちゃうのでやめ てほしいw 色の質問デモ ver.1 のポイント

Slide 49

Slide 49 text

さらにブラッシュアップしたものがこちら! LED への RGB 値を JSON データで返答する ChatGPT API の仕組みを Node-RED でブラッシュアップしたメモ https://www.1ft-seabass.jp/memo/2023/03/17/chatgpt-http-api-like-json-response-tips-with-node-red/

Slide 50

Slide 50 text

このナレッジでデモしてみます!

Slide 51

Slide 51 text

➔ ルール・返答する JSON データ・返答前にチェック!とい う見出しでお願いを分かりやすくするとより通じる ➔ 例外処理を明確にお願いすることで説明文を加えないよう に誘導できる ➔ 説明を入れる値を入れるお願いを明確にすることで説明文 を加えないように誘導できる ➔ 質問をチューニングすると、ちゃんと JSON で回答してく れる仕組みができる! 色の質問デモ ver.2 のポイント

Slide 52

Slide 52 text

回答精度をアップさせてしっかり JSON 回答できるようブラッシュアップ! 人間の言葉を理解 JSON データに 加工して回答 回答ジャンルは万能 (得手不得手はある) ブラッシュアップ! ブラッシュアップ!

Slide 53

Slide 53 text

他のシステムに馴染ませる調整の一例でした! ChatGPT さんは回答できるジャンルは万能だけど、あえてルールを決めて回答しやすく特化。 さらに JSON データに加工して回答してもらい、他のシステムにつなぎやすく。もう人間同士の対話っぽい。 人間の言葉を理解 JSON データに 加工して回答 ルールを決めて 回答しやすく特化 ブラッシュアップ! ブラッシュアップ! 人間の言葉を理解 人間の言葉で回答 回答ジャンルは万能 (得手不得手はある) ■ChatGPT の基本キャラクター ■他のシステムに馴染ませる調整(今回)

Slide 54

Slide 54 text

やっぱり ChatGPT でも IoT LEDチカチカさせてみたい!

Slide 55

Slide 55 text

obniz の LED システムに ChatGPT 経由で点灯命令してみます! さきほどの仕組みに obniz の LED 点灯をつないでみます!

Slide 56

Slide 56 text

それではやってみます!

Slide 57

Slide 57 text

さらにステップアップしたもの

Slide 58

Slide 58 text

こんな機能です ● {"type":"on"} ○ 機能 : LED がつく ○ セリフ : 「おんにして」 ● {"type":"off"} ○ 機能 : LED が消える ○ セリフ : 「おふにして」 ● {"type": "blink", "interval": 1, "count": 3} ○ 機能 : 3 回点滅する ○ セリフ : 「3回点滅して」

Slide 59

Slide 59 text

やってみます!

Slide 60

Slide 60 text

ChatGPT API を上手く組み込めました 人間の言葉を理解 JSON データに 加工して回答 ルールを決めて 回答しやすく特化 ブラッシュアップ! ブラッシュアップ! IoT 制御

Slide 61

Slide 61 text

入り口に音声認識を加えると より可能性が広がりました 人間の言葉を理解 JSON データに 加工して回答 ルールを決めて 回答しやすく特化 ブラッシュアップ! ブラッシュアップ! IoT 制御 なんらかの音声認識

Slide 62

Slide 62 text

HoloLens2 の音声認識から ChatGPT 経由の obniz への自然な呼びかけで指示できました 動画をお見せします!

Slide 63

Slide 63 text

こちらから動画も見れます https://twitter.com/1ft_seabass/status/1635135055503949829

Slide 64

Slide 64 text

すこしだけ料金の話 いろいろ情報が新しくなる昨今、計算が難しかったり有料・無料範囲がピンと来なかったりで 実際に使うときはご自分で調べていただいたほうが良いと思います~。

Slide 65

Slide 65 text

私も 3 ヶ月トライアルを大事に使ってましたが 最近越えたので課金しました https://help.openai.com/en/articles/4936830-what-happens-after-i-use-my-free-tokens-or-the-3-m onths-is-up-in-the-free-trial

Slide 66

Slide 66 text

いまの料金はこんな感じ 今後も変わると思うのであまり断言はできませんが https://openai.com/pricing

Slide 67

Slide 67 text

使いすぎると怖いので Usage limits を設定しました

Slide 68

Slide 68 text

➔ OpenAI の他の API (DALL·E とか Wisper とか) ◆ https://platform.openai.com/docs/guides/images ➔ センサー値+タイムスタンプの JSON データを与えてみた ら異常検知にも使えるかもしれない話 ➔ 地点に応じた日の出日の入りのデータを返すように作って いるが、なかなかうまくいかない話 ➔ 質問を多くするとテキスト量(トークン)多くなり悩み。 その点では GPT4 だとより質問作成負荷が下がる?話 エクストラ 時間があれば

Slide 69

Slide 69 text

異常検知ネタ

Slide 70

Slide 70 text

日の出・日の入りネタ

Slide 71

Slide 71 text

柴犬 API に自分で取って行ってもらうネタ 現状では自ら HTTP アクセスして答える機能はないみたい

Slide 72

Slide 72 text

➔ ChatGPT API を使うと Node-RED のようなサーバーなど と連携しやすくなる ➔ ChatGPT の特性も質問でうまく誘導すると IoT などに他 の仕組みに組み込みやすい JSON データの回答にできた ➔ 自然言語の理解がつよいので音声認識を加えるとより強力 になる ➔ 今回の案はあくまで一例だが質問次第で自分の仕組みに組 み込める可能性を感じた ➔ みなさんも是非 ChatGPT API 使ってみてください! まとめ