なんと、、1週間程かかると予想していたLINEアプリ開発が2日で終わってしまった。
今回つくったのはボケてをAI検索するLINEアプリ 〜AIボケテンダー「エイジ」〜
話題のChatGPT(GPT-4)、何が便利かは実際に使ってみないとわからない。
いろいろな使い方が発見されているが、その中でも興味深いのは「プログラミングも自動化してくれる」というもの。ある意味自動化の権化であるプログラミングそのものすら自動化してくれるのか!
そこで、いったい何をどこまでやってくれるのか、実際の開発に試してみることにした。
実際にやってみて感じた良いところ
・開発が(体感)三倍速になる
・なんでも知っててなんでも即レスくれる超優秀な後輩感
・ググる回数は実に1/3以下に減る
・細かい文法やライブラリを覚える必要がなくなる
・割と無茶振りしてみると予想以上に応えてくれる
・初めての言語でもたぶん使いこなせる
逆に感じた(現時点での)限界
・複雑なシステム構造などはまだ理解できない
・指示するための一定の技術的知識は必須。
・自信満々に嘘はつくので盲信はできない
→信じすぎてハマって出戻りしたこともあった
それでは、開発の流れにそって具体的に紹介していく。
まずアイコンの制作も自動化
(アイコン制作:通常1時間→10分に短縮)
今回アイコンの制作もChatGPT+Midjourny(AI自動画像生成)で自動化してしまった。
まずChatGPTにMidjournyへ渡すワード30個を考えさせる→そのワードを元にMidjournyで画像生成。イマイチだったらChatGPTにまた戻ってワードをアップデートを3,4回繰り返すうちにアイコンが完成する
完成したアイコン
実装方針を相談する
ややこしい話だが、ChatGPTに対して、ChatGPTのAPIを使ってどのようなことが実現できるのか、その方針から相談できる。
環境構築のやり方も教えてもらう
(環境構築:通常3時間→30分に短縮)
普段は経営や事業ばかりしていて使っているので、プログラミングできる時間はあまりない。なのでpythonでコーディングするのは実に3年ぶりぐらいだろうか。実行環境構築手順方法すらも忘れていたので手順をサクッと教えてもらう。
Open AIのAPIの叩き方を教えてもらい、サンプルコードを書いてもらう
(サンプルソース動作確認:通常1時間→10分に短縮)
方向性が決まったらより具体的な指示を出し、一旦実行できそうなサンプルコードまで書いてもらい理解を深める。
また、書いてもらったコードの理解をさらに深めるために、csvの内容についても教えてもらうなど。このときにほかから持ってきたソースコードごと貼り付けたうえでその内容を解説してもらうのもOK。
※ただし書いてくれたソースの精度はどうしても不安が残るので、結局は公式サイトのサンプルソースの方をより参考にした
https://github.com/openai/openai-cookbook/blob/main/examples/Semantic_text_search_using_embeddings.ipynb
実際のコーディングとエラーの修正
(実コード一旦実装:通常2時間→30分に短縮)
ファイル名や実装内容など明示して指示をだすことで、実際の本番コードを書いてもらう。
そしてエラーが出たら解説してもらい直してもらう
(エラー調査一回:通常20分→5分に短縮)
エラーの内容もそのまま貼り付けて解説をもらう。さっきまでのソースの内容も一時記憶してくれているので、いちいちこれまでの説明が不要。自分でエラーを追う前にまずChatGPTに貼り付けて回答を待つ→その間に初めて自分でもエラー文を読む。のが効率的。
GCPでAPI化しデプロイ完了
(サーバ構築:通常2時間→30分に短縮)
この間もいろいろとChatGPTにやり方を教えてもらいスピードアップ
Line APIの実コード実装
(実コード実装:通常2時間→30分に短縮)
Line APIを使った開発は以前コロナボットでもやっていたので概要はわかっていたが、ソースの書き方までは忘れていた。今回は過去に自分で書いたソースを見直すこともなくChatGPTにソースを実装してもらいコピペでサクッと行けた。
ソースコードの修正
(ソース書き換え:通常20分→5分)
開発を進めていると、データの順番を入れ替えたり、入力元を変えたり、出力形式を少し変えたりと何かとコード変更が発生する。そんな修正も指示すればすぐやってくれる
これがChatGPTへの生々しい指示一覧!
とくに編集も加えず、今回ChatGPTに指示した内容をそのまま一覧にする。(たぶん実際はこの倍ぐらいある。類似してたり記録漏れなどもあったので)
中身は深く考えず、こんなことを指示したんだなぁぐらいでざっと見て欲しい。(というか僕も覚えていないものが多い笑)
肌感では、期待通りの合格回答が得られた率は8割以上。上出来といえる。
もうググったりいろんな人に質問したりと時間がかかってた時代には戻れない。プログラミング開発速度はグッと上がったということを実感。
カテゴリ:質問&TIPS編
chatgpt apiでデータ学習させて制度の高い検索ボットをつくることはできる?
でも、関連性の高い検索を実現するにはembeddingのほうが良くないですか?
この方法が説明されているAPIリファレンスのURLを教えて
openaiの埋め込みのapiの料金を教えて
この場合の1行あたりの平均トークン数はいくつですか?
データセットのインプットはテキストデータで、レスポンスは関連度の高い順のurlリストとなるような検索に使いたいけどどうやる?
このときのget_embeddingsの実行は1万件のデータならどれぐらい時間やAPI使用量がかかりますか? 2021年9月時点の情報で良いです
openapi でembeddingのrecommendをやりたいです。csvの読み込みやapi呼び出しのやり方を解説して
cloud functionsでcloud strageから読んだデータをメモリに保管しておいて、毎回のアクセスで読み込まないようにキャッシュする方法はありますか?グローバル変数などで
macでutf-8のcsvを編集する方法は?
シェルのコマンドを実行するときに実行にかかった秒数を表示するには? python –versionコマンドの例で
pythonで一行だけでなく範囲を指定してコメントアウトするには?
line messaging apiのwebhookをつかって、cloud functionでラインでメッセージが送られてきたらhello worldと返すようなapiの開発の流れを詳しく教えて
カテゴリ:環境構築編
python 実行環境を作るには? macです
Default output format [None]:にはなにをいれる?
YOUR_ROLE_ARNはどこを調べたら出てくる?
こんなエラーが出たけどうどうしたらインストールできる? You have 2 outdated formulae installed.
こうなりました % brew upgrade openssl
Error: openssl not installed
カテゴリ:実装編
このソースコードの実行が早くなるように書き換えて
このソースコードでopenaiのapiを実際に叩いているのはどの関数ですか?
このときのyour_csv_file.csvファイルの内容はどんなものになりますか?例を示してください
このサンプルコードを、実行できる一つのテキストに統合して
このソースコードに日本語のわかりやすいコメントを付けて(後略)
さっきのサンプルコードについて、csvの内容をid,textだけのシンプルな2列にした内容で書き換えてみて
これはcloud functionsでrequestを受け取るところです。パラメータqに検索ワードが入力されて、search_queryに代入するように書き換えて # def main(request):(後略)
このソースコードについてsearch_queryをコンソールからの引数を当てはめるのと、該当した行のidについて”https://bokete.jp/“を冒頭につけてprint出力するように書き換えて(後略)
このソースの、index_col,dropna,headの意味をそれぞれ教えて # imports(後略)
このソースコードについて、csvから1000件ずつ読み込んで逐次実行し、1000件ずつ結果をcsvに付け足して保存する。いま何件まで完了したかをprint表示するようにソースコードを書き換えて(後略)
下記のコードで、 cloud strageからの最初の実行でcsvの読み込みが遅いので、事前に常時メモリにロードしておき初回実行のレスポンスを早めることはできますか? import os(後略)
この関数について、return_textに、配列resultsから生成したURL一覧が入るように書き換えて
このtiketokenってなに? # imports
import pandas as pd
import tiktoken(後略)
このソースのprint出力から、 id: という出力をカットして本当のid番号だけが出力されるようにしたい
このときに、テキストだけじゃなくidもprintしたい
さっきのコードだけど、丁寧なコメントも付けてみて
ソースコードを日本語に直して、入力ファイル名は冒頭の変数宣言にして、 ./data/sample100.csvにして
embedding のapplyなどをつかって、csvファイルを読み取りベクトルデータに変換して別のcsvファイルに保存するコードを書いて
your_query_textについて、pythonでコマンド実行時にパラメータで渡す形にこのコードを修正して
カテゴリ:エラー解決編
このエラーはどういう意味ですか? /Users/(中略)/./dataset.py:45: SettingWithCopyWarning:
このソースの問題点を教えて import openai(後略)
cloud functionsでコンソールからのデプロイに失敗したときのデプロイエラーを調べるログはどこから見れる?
この文法エラーを直して
このソースコードに問題があるところを指摘して
このエラーの直し方 % python ./dataset.py
Traceback (most recent call last):(後略)
終わります。みんなでやってみよう!
今回LINEアプリ開発を3倍速で作ったときのChatGPTへの指示を載せてみました。
GhatGPTを使うことで一気に開発スピードがアップするイメージがもてただろうか?
誰でも簡単にサクッとプログラミングが出来る時代。
素晴らしい時代。
開発が簡単になる先に大事なことは課題発見力、アイディアや行動力になってきます。
臆することなく突き進んでいきましょう。
AIの時代はまだまだ始まったばかり!
あわせて読みたい
①今回開発したLINEアプリで笑いたいならこちら!
今回つくったボケてをAI検索するLINEアプリ 〜AIボケテンダー「エイジ」〜
②今回のOpenAI APIを使ったLINE BOT開発について、エンジニア向けに詳しい流れやソースについても解説!
OpenAI API Embeddings+GCPで検索AI系LINEアプリの作り方 #34