Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ChatGPT(GPT-4版)でIoTやってみた / IoTLT vol.97

ChatGPT(GPT-4版)でIoTやってみた / IoTLT vol.97

you(@youtoy)

March 23, 2023
Tweet

More Decks by you(@youtoy)

Other Decks in Technology

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  8. 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登録が必要

    View Slide

  9. そんな「ChatGPT」を
    使ってIoT

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  25. Bingでもやってみた

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  37. 終わり!

    View Slide