makotan _at_ gmail dot com

ChatGPTとかの西野七瀬テスト

ChatGPTとか(BingAIとか)の特性として

大量の文章を記憶させてそこから文字列を紡ぎ出してるって言われてもよくイメージ出来なかったので...西野七瀬テストをやってた

 

西野七瀬テストとは

西野七瀬について教えて」ってChatGPTに依頼した結果

本当の西野七瀬との差がどのくらいあるのかでChatGPTがどのくらい嘘をつくかを判断するためのテスト

 

GPT-3.5の場合は

元AKBとか、愛知県出身とかメチャクチャなことを言ってくるので、ある程度のグルーピングされた範囲内からそれっぽい文字列を紡ぎ出してる感が半端ない

 

GPT-4になると...めっちゃ合ってる!!

ということで、西野七瀬がセンターの曲とか、西野七瀬が出演したドラマとか深掘りしていくと...それっぽく紡ぎ出してるな...って感じになる

グルーピングの解像度が激しく向上した感じがよくわかる

 

BingAIに至ってはほぼ完璧(というか普通にソースも提供してくれるし)

なんだけど、あ〜ここは間違えてるなぁ〜みたいな感じになる

紡ぎ出すと言うよりも、検索してその結果をまとめてる感じ

 

という一見すると同じに見えるChatたちの動きの差を把握する為のテスト方法

 

西野七瀬みたいにだいぶ前から情報がそれなりに大量にあり

西野七瀬みたいに検索する人がそれなりに詳しく知ってる物

を利用するのがポイントなので、西野七瀬以外でも利用可能なテスト方法

 

 

西野七瀬テストをすれば良いのにって言ってもなかなか伝わらない(当然)ので公開w

ChatGPTの今の限界とかのただのメモ

ChatGPTを色々と使いまくった結果のイメージ

ネットから検索して正確な情報が欲しい場合はBingが役に立つ

学習の成長曲線の最初に居るときは、学習の助けになる

学習の成長曲線の終盤に居るときは、答え合わせが出来る(=自分がやらなくても出来る)

実務として始めた頃は、実務の助けになる(=自分がやらなくても...)

実務として慣れた頃は、実務の支援をしてもらえる(=自分がやらなくても...)

大量のコンテキストを前提として何かする場合は、役に立たない

世界でもレアな全く新しいことをやりたい時には、役に立たない

 

 

ポイントは、非常にレアなことをしない限りは常に役に立つ

役に立つ場面は大体こんな感じ

- たたき台を作る

- 整形する

- まとめる

ありがちなパターンを作るだけで良ければほぼChatGPTに任せた方が...ってなる

 

 

インターネットに情報として存在しない様なレアなものをやるってなった時点で初めて「役に立たない」ってなる

ただし、インターネットに情報として存在しない事と、存在してないことを知ってる事は全く別なので、確信がない限りまずは使ってみてそのレベルを把握してみる感じから始めると良さそう

ただ、大量のコンテキストを前提とする場合はその大量のコンテキストを前提を取り込ませたらそれなりに出来るのでは??って思ってるので今後に期待してる

 

AIを活用することになったとして...

たとえばソフトウェアの開発をするとしたら、最低限でもプログラム言語を覚えて、IDEを覚えて、フレームワークの使い方を覚えて、ビルド周りを覚えて...って覚えることが沢山

そして覚えただけでは使えないので、それを使うところを覚える

ここまでやってやっと、最低限の事が出来るという状態

ここに、設計やらアーキテクチャやら要件定義やらデータモデルやら色々を覚えていって、ようやく一人前になったとして

これまで殆どの人は「最低限のことが出来る状態」を経由して「一人前」が成立してた(それなりの人数の例外がいるので、そこはちょっと置いておく

ここからはAIが最低限のことをやってくれるので、その先が重要になる気がする

そうすると、あんまり実装出来ない設計者が量産されてくる...それはそれでヤバさしか感じない...

 

なのでAI活用が前提となったときは

理論の理解と活用の部分のU字カーブで重要度が変わるイメージ

従来のソフトウエア開発は逆Uの字カーブの形を重視してたイメージ

これがソフトウェア開発以外の世界にも波及するので結構世界観変わるなぁ...

そしてキャリアプランが大きく変わる人も出てきそう

 

過渡期って楽しくて良いよね

文章生成系AIをソフトウェア開発に転用したい

ChatGPTをはじめとして色々出てくる文章生成系AIをどうやって開発に転用出来るかをぼんやり考えてた

 

案1

開発ドキュメント、議事録、ミーティング音声(の書き起こし)、issue、ソースコード..etcを全部追加で学習させる

開発上の疑問とかがあったり、実装のあれこれを全部問い合わせする

 

エンジニアあるあるの世代交代とか、忘却とかも一切無く必要な情報を即座に取り出してきてそれっぽい文章に仕立ててくれるし、なんなら実装の一部も任せられそう

ただし、だいぶ秘密な情報を大量に渡すことになるのでその辺のセキュリティーが凄く気になるのとそこそこ多い量になるのがコスト的に大丈夫か心配

 

案2

テストの用意を支援して貰いつつ、そのテストが通る実装を用意して貰う

 

イメージ的にはTDDのテストの作成をAIがサポートしつつ、テストが通る実装も作って貰う...なのでAIに「こんな動作」ってプロンプトでひたすらリクエストしまくるだけの人になるw

最終的に出来上がったコードを採用するかどうかの判断はあれだけど...テストケースの設計とかも支援して貰えれば...ありな気がしたけど、これで対応出来るのはある程度の複雑さまでかなぁ〜

 

AIを使った開発ツール だれか はやく!!

ChatGPTをしばらく使って...

ChatGPTをしばら〜く使った結果

ChatGPTとGoogleで知識を使うだけの部分は相当量がカバー出来る事になる気がした

現時点ではChatGPTが嘘をつくことはあるけど、パラメータの量が増えればある程度減っていきそうな気もするし、既にソースがどれって表示するものも出てきてるのでたぶん嘘に対しては緩和していくんじゃ無いかと...

ChatGPTとかGoogleでは、知恵はないので知恵を使う部分は相変わらず必要になりそう

もしこの部分もAIができるようになると大変だけど、コンテキストの理解とか色々と大変なのでしばらくは知恵を使う部分なら大丈夫な気がする

 

ChatGPT

しばらく使った現時点(2023/02/11)の結論

半年くらいしたらめっちゃ進化しててこの結論が使えなくなる可能性もあるけど、それはそれで良いことだと思う

 

ChatGPTのイメージ

めっちゃ色々知ってて、それなりの回答を返してくれるけど、そのものズバリの回答を返せない奴。そしてたまに真っ赤な嘘を本当のように言ってくる

 

んで、どう使う?

周辺の知識はあるけど、そのエリアは詳しくないみたいなところで聞くと

そこそこ間違えた回答が返ってくるので

追加で質問しながらそこそこ合ってそうな回答になるまで横でググりながら色々聞く

それっぽい回答まで出来上がったらそこで終わり

 

ポイントは...自分でチェックしつつ、あんまり信じない

なので、大まかに関連知識が無いと嘘が嘘だと見抜けないし次に進めない

ただ細かい部分の知識はChatGPTが大まかに教えてくれる&それをヒントにググれば良いので必要ない

 

ChatGPT以降どうなる?

ChatGPTを有効に使うために必要な知識は

  • 特定の分野の専門レベルの深い知識
  • 広範囲かつ理論的に裏打ちされた知識

この組み合わせになってきそう

このあたりの知識をもって使うとChatGPTの嘘も見抜けるし、ChatGPTからヒントを引き出すことも出来る

 

これから出てくる生成AIの進化が楽しみだ...

 

Bitwardenを使うまでのメモ

まずはBitwardenに行ってアカウントを作る

オープンソースのパスワード管理 | Bitwarden

アカウントを作りつつ、メールのチェックとか色々やる

既存のパスワードマネージャのデータをエクスポートして、インポートする

インポート直後は何も変化しないので、いっかいリロードする

そうすると既存のパスワードマネージャのデータが表示される

既存のパスワードマネージャであれこれやった情報の欠落が無いかとかは別途確認する(特にカスタムフィールドとかメモとかあると欠落してると悲しいので

 

アカウント設定のところで、セキュリティー -> 2段階認証にある2段階認証を有効にする。標準でGoogleのあれとか、メールとか使える

WebAuthnとかYubikeyとか使いたい場合は有料オプションをポチッとする

有料オプションは他に比べると随分安い

WebAuthn+Appleの組み合わせを楽しみたいときはMacSafariからも登録する

有料オプションを有効にした場合は強く推奨

 

そのままブラウザのプラグインとかも入れていく...

この辺は他のパスワードマネージャ使っていればあんまり苦労しないはず

 

次にiOS/iPadOSのアプリを入れる...

Bitwardenのサイトからどうぞ

各デバイス向けインストール手順 | Bitwarden

iOSをいれるとログイン時に2段階認証を求められるので、先に登録した方法を使う(WebAuthnって便利だ〜

pushで同期してるらしいのでpushを許可する

設定から自動入力の所の二つをゴニョゴニョとやる

FaceIDでロック解除と、(端末によっては)ログインリクエストを承認するをオンにする

これで保管庫のどこかに適当にログインしてログイン出来ることを確認

 

当然あるであろう他のiOS/iPadOSのアプリを入れる場合は↑と同じになるので省略

他のOSに入れるときには↑のログインリクエストの承認が発動するので、そっちから承認するかTOTPとかメールとかYubikeyとかで2段階認証をクリアする

 

ポイントは

Bitwardenの2段階認証を有効にするとき

if (有料オプション == true) {

  if *1のユーザ == true) {

    WebAuthnをMacSafariで有効にする。Yubikeyとか他のも有効にする

  } else {

    他の選択肢よくわからないけど、WebAuthnを有効にする。Yubikeyとか他のも有効にする

  }

} else {

  TOTP and メールで2段階認証を有効にする

}

こんな感じで有料オプションを使わなくてもイマドキ必須の2段階認証が使えること

あと、有料オプションを使うとしてもYubikeyとかの物理キーが必須じゃ無いこと

(大事なポイント:2段階認証に使うアイテムは必ずバックアップを用意しましょう

 

Bitwardenのメリットは

無料でも複数端末の同期が使える!!

有料オプション使わなくても今の条件が維持されるならオススメ出来るなぁ〜って思った

有料オプションの大きいメリットは1Passwordみたいな感じでTOTPが使えることと、WebAuthnで2段階認証出来ることかな

あとは標準でCLIがあったりするので、コマンドからゴニョゴニョしたいタイプの人にも向いてそう

 

おまけ

ここではBitwardenに合わせて2段階認証って書いてるけど、個人的には「多要素認証」の方が言葉としては良いと思ってる

 

以上、年末のツール見直し現場からお送りしました

 

*1:Mac && (iOS || iPadOS