Slide 1

Slide 1 text

2023年3月23日 (木) IoTLT vol.97 @ソフトバンク 豊田陽介( ) @youtoy ChatGPT(GPT-4版)でIoTやってみた

Slide 2

Slide 2 text

自己紹介 豊田陽介( ) @youtoy ・IT系イベント主催、登壇や運営なども ・子ども向けの活動いろいろ ・ Microsoft MVP(2021/10 から) プライベートでの活動 ・ガジェット大好き ・昨年12月の ChatGPT熱が、昨月くらい  から再燃中 ※ 昨年のアドベントカレンダーで、12月   2日やその他の日で ChatGPTネタの   記事を書いたりしてた 好きなこと、他

Slide 3

Slide 3 text

生成系AIの話題、 盛りあがってますよね!

Slide 4

Slide 4 text

一昨日・昨日だけを見ても(その1) Adobeの画像生成AI 「Adobe Firefly」 Googleの対話AI 「Bard」の一般公開 日本はまだ 引用: https://www.itmedia.co.jp/news/articles/2303/21/news079.html

Slide 5

Slide 5 text

一昨日・昨日だけを見ても(その2) Microsoftの画像生成AI 「Bing Image Creator」 GitHubのコーディング支援 「GitHub Copilot X」 引用: https://japan.cnet.com/article/35201549/ 今は英語 での入力

Slide 6

Slide 6 text

「Bing Image Creator」を軽く試してみた プロンプト 「Fantastic scenery of  ice and flames」 DeepL翻訳で「氷と炎が 入りまじる幻想的な風景」 を英訳したもの

Slide 7

Slide 7 text

そんな生成系AIの1つ: OpenAIの「ChatGPT」

Slide 8

Slide 8 text

ChatGPTとは? ■ 話題になりすぎてて、詳細説明は不要かも... ・OpenAIの出した対話型AI ・提供開始などは以下のとおり   ・2022年11月30日: 一般公開   ・2023年3月2日: ChatGPT APIの一般公開 ※1   ・2023年3月15日: GPT-4版提供 ※2 ※3     ※1 従量課金     ※2 Webからの利用には、有償版「ChatGPT Plus」が必要     ※3 現状、GPT-4のAPI利用はwaitlist登録が必要

Slide 9

Slide 9 text

そんな「ChatGPT」を 使ってIoT

Slide 10

Slide 10 text

最初の検証は 内容をシンプルにして実施

Slide 11

Slide 11 text

シンプルな機能の開発を 手伝ってもらう 「デバイスからのスマホ通知」

Slide 12

Slide 12 text

ここ数日のChatGPTの不具合に 見舞われ、ちょっと中途半端... 3/20 に使えない状態に その後、履歴が出ない・長文の 出力が途中でエラーに (履歴機能は、今朝7時台に復活)

Slide 13

Slide 13 text

試そうとしたこと シンプルな仕組みの例:  M5Stack系デバイスのボタンを押したら  スマホのLINEアプリに通知(LINE Notifyを利用) 検証内容:  ・自分で作った場合と、以下を試した場合の比較   ・適当なプロンプト(詳細は書かない)で試す   ・補足情報ありのプロンプトなどで試す   ・情報がある/ないはずのデバイスについて聞く    (M5StickC Plus/ATOMS3 Lite)   ・ボタン押下をユニットを使った処理に変更【未完】  ・細かな部分の検証【未完】

Slide 14

Slide 14 text

結果:「適当なプロンプト(詳細は書かない)」 プロンプト:  M5Stackを使ってLINE Notifyで通知を送る  プログラム 出力の概要:  ・LINE Notifyのアクセストークン取得に関する簡単な説明  ・Arduino IDE開発の準備について簡単な説明  ・loop()の中身が空、1度だけ通知を送るプログラム    ※ LINE Notifyの処理のトリガーを指定してない部分は、      「setup()のWi-Fi接続成功後に1度だけ処理」に 出力は 「手順説明   + プログラム」 プログラム は、setup() で1回処理と いうものに

Slide 15

Slide 15 text

結果:「適当なプロンプト(詳細は書かない)」 ChatGPTでの入出力でのスクショ

Slide 16

Slide 16 text

結果:「適当なプロンプト(詳細は書かない)」 途中で出力が途切れたので 「続きを書いて」という入力を ChatGPTでの入出力でのスクショ

Slide 17

Slide 17 text

ここで得られた内容は、 「ちょっとだけ手直しをしたら 動くもの」という感じ

Slide 18

Slide 18 text

結果:最初の入力に情報を足して試す プロンプト:  M5StickC Plus のボタンを押したら、LINE Notify  で通知が送られるプログラム 出力の主な差分:

Slide 19

Slide 19 text

動くものが出てきた (アクセストークン、SSID・ パスワードを書きかえるだけ)

Slide 20

Slide 20 text

改善された理由は、 おそらくは再生成して出力が 変わったことと思われる (プロンプトの変更による改善ではなさそう)

Slide 21

Slide 21 text

結果:デバイス指定を2つ目の入力で プロンプト(ボタン押下指定あり+以下):  デバイスは、M5StickC Plusを使いたいのですが、スケッチ例は  そのまま使えますか?何か変更が必要ですか? 出力の冒頭部分: 【修正に関する補足】 ・M5StickC Plusのライブラリ  をインポート ・ボタンA〜Cを使ったサンプル  を、AとBのみにする変更

Slide 22

Slide 22 text

結果:ATOMS3 Liteを指定してみる ・ChatGPTの学習データには情報がないはず ⇒ ChatGPTの正常動作だが存在しないものも... 何度か試した結果: 「よく分からないので、Python  でLINE Notifyを使う方法を...」 「ATOMS3Lite.h」の インクルード ※ 実際には存在しない 「M5Atom.h」の インクルード

Slide 23

Slide 23 text

結果:ATOMS3 Liteを指定してみる ・「M5AtomS3.h」という名称だけ出してみる この時は、知らないライブラリ という内容込みの返答など

Slide 24

Slide 24 text

出てきた情報の正しさは 要検証という感じ (この挙動はChatGPTの仕様通りだけれど...)

Slide 25

Slide 25 text

Bingでもやってみた

Slide 26

Slide 26 text

結果:「少し補足情報あり」のプロンプト プロンプト(3つ):  M5StickC Plus のボタンを押したら、LINE Notify  で通知が送られるプログラム  Arduino IDE のプログラムを示してください  サンプルコードを見せてください サンプルコードを見せてください 出力結果:  ・LINE Notifyのアクセストークン・無線LAN情報   (SSID・パスワード)を変更するだけで無事に動作 ここでコードが出てきた

Slide 27

Slide 27 text

結果:「少し補足情報あり」のプロンプト

Slide 28

Slide 28 text

結果:「少し補足情報あり」のプロンプト

Slide 29

Slide 29 text

結果:「少し補足情報あり」のプロンプト プロンプト(1つ):  M5StickC Plus のボタンを押したら、LINE Notifyで  通知が送られるプログラムのサンプルコードを見せてください サンプルコードを見せてください 出力結果:  ・人感センサーを使う仕組みが混じったものが出てきたり

Slide 30

Slide 30 text

より複雑な内容で試したり、 より良い出力を得られるコツなど を模索していきたい

Slide 31

Slide 31 text

引き続き「生成AI + IoT」の お試しをやっていきたい!

Slide 32

Slide 32 text

余談:ChatGPT APIを処理に 組み込んだお試しの中の1つ

Slide 33

Slide 33 text

ブラウザで動く音声対話 ブラウザで p5.js ・p5.speech・ ChatGPT API を 利用した実装で ChatGPTと声でやりとりする仕組みの簡単な試作

Slide 34

Slide 34 text

APIを呼び出す処理はChatGPT作(GPT-3.5版) 公式の curlサンプルから ブラウザの fetch で呼び 出す処理の作成を依頼

Slide 35

Slide 35 text

余談:IoT系以外のコード 生成のお試しの1つ

Slide 36

Slide 36 text

p5.js(JavaScript)実装のブロック崩し プロンプト:「p5.jsでブロック崩しが遊べるプログラムを作って」 クラス構文も 使われた180行 ほどのプログラム

Slide 37

Slide 37 text

終わり!