ChatGPTを「何でも思考し、答えを出すAI」と誤解している人もいますが、これは正確ではありません。ChatGPTは検索エンジンではなく、それゆえに情報を効率的に探し出し、精確に提供する能力を期待すると、その期待は裏切られます。
ChatGPTの本質は大量のテキストデータから言語パターンを学習し、その学習を基に言語を生成することです。それはつまり、質問やコメントに対して確率的に最も適した回答を生成するということです。
しかし、現行のChatGPT-4の言語理解力は非常に高く、特定の領域での質問に対する答えとしては、優れたパートナーとなります。このAIの知識の深さと範囲は、一般的な人間が持つ知識を遥かに超越しています。それは事実です。 |
  |
以下はPythonプログラムを構築するシンプルな例ですが、これはシステムに精通している人がAIに命令するときに、問題解決に迅速に進むことができる事例と言えます。この場合、目指しているのは、サーバーに記録されたネットワークカメラのIPアドレスログから、カメラ番号に対応するIPアドレスを返すサブプログラムを作ることです。
このタスクは非常に専門的なものであり、ChatGPTが使用者の意図を理解している点に注目すべきです。また、質問の内容は実際にそのまま入力されていることも重要です。これらは事実です。
質問: 以下のような文字列がある。この中からlivecam30の行にあるIP4のアドレスを抽出するpythonのソースを書け
livecam23 ftp ***.249.22.197 livecam30 vsftpd:22468 ***.16.152.214 Mon Jun 5 12:40 - 12:40 (00:00)
wtmp begins Thu Jun 1 04:27:10 2023 livecam20 vsftpd:22462 ***.125.253.216 Mon Jun 5 12:40 - 12:40 (00:00)
wtmp begins Thu Jun 1 04:27:10 2023 livecam11 vsftpd:21738 ***.22.218.36 Mon Jun 5 12:30 - 12:30 (00:00)
wtmp begins Thu Jun 1 04:27:10 2023 livecam22 vsftpd:21733 ***.157.4.56 Mon Jun 5 12:30 - 12:30 (00:00)
回答: 以下は、与えられた文字列から"livecam30"の行にあるIPv4アドレスを抽出するPythonのソースコードです。 |
  |
(解説) まずは小手調べ。AIが最初の質問にどこまで適切に回答できるか様子を見た。その結果、意図通りの回答を得た。 IP4の理解と当方が意図する文字列抽出を完全に理解している。
質問: 上記の文字列はサーバー http://abc.com/log.dat から得られる。ソースを書き換えよ。
回答: 了解です。指定されたURL(http://abc.com/log.dat)からデータを取得し、そのデータから"livecam30"の行にあるIPv4アドレスを抽出するPythonのソースコードを以下に示します。
 |
  |
(解説) このように、徐々に問題をステップアップするほうがAIとの無駄なやり取りを減らす。
質問: extract_ipv4_addressはget_ip_addressに、引数はターゲットURLと文字列livecam30に変更。
回答: 了解しました。extract_ipv4_address関数をget_ip_addressにリネームし、引数をターゲットURLと文字列"livecam30"に変更したソースコードを以下に示します。
 |
  |
(解説) ここで行いたい事はモジュールを汎用的にし、どの「livecam番号」でも使用できるように変更すること。 当方の欲しい汎用的なプログラム仕様に変更したのだがchatGPTは完全に正解を出している。
質問: pattern = r"{0}.*?(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})".format(target_string) 行でエラーになります
回答: 申し訳ありません、誤りがありました。正しいソースコードを以下に示します。
 |
  |
(解説) 実際に得られたプログラムを実行したがエラーとなったのでエラー箇所を指摘し再度質問した。
質問: 正規表現の文字列{}がおかしいのでは?
回答: 申し訳ありません、おっしゃる通りです。正規表現の文字列に使用される波括弧 {} は、Pythonの文字列フォーマットにも使用される特殊文字です。そのため、波括弧を正規表現パターン内で使用する場合には、エスケープが必要です。おっしゃる通りに修正し、正しいソースコードを以下に示します。
 |
  |
(解説) 再び得られたプログラムを実行したがまた同じ個所でエラーとなったので当方にて怪しい部分を指摘してみた。 その結果、目的のプログラムを得たので以下にすべてのソースを掲載する。 import re import urllib.request
def get_ip_address(url, target_string): response = urllib.request.urlopen(url) data = response.read().decode("utf-8")
pattern = r"{}.*?(\d{{1,3}}\.\d{{1,3}}\.\d{{1,3}}\.\d{{1,3}})".format(re.escape(target_string)) match = re.search(pattern, data) if match: return match.group(1) else: return None
# ターゲットURLと文字列の設定 url = "http://abc.com/log.dat" target_string = "livecam30"
# IPv4アドレスの抽出 ipv4_address = get_ip_address(url, target_string) print(ipv4_address)
実行結果は「***.16.152.214」とIP4のアドレスを別サーバーに保管されているログデータから抽出できた。
 |
  |
総括 通常、人間に仕事を頼む際には、モジュールの仕様書を提出してからプログラミングを依頼しますが、ChatGPTに仕事を依頼すると、その手間が大幅に削減されます。初めての質問を人間に頼んだ場合、そのタスクを完了できる技術者はどれくらいいただろうか?また、頼んだ人間がある程度の知識を持っていたとしても、どれくらいの時間で完成させただろうか?
このタスクを完了するのにChatGPTは30分もかかりません。人間に依頼すると、各種の知識を前提に打ち合わせを行い、モジュールの仕様書を作成するまでを考えると、作業完了までにはかなりの時間を必要とします。特に、人間が必要な知識を持っていなければ、時間は日単位で経過するでしょう。
現在のChatGPTは、特定の領域の文章ベースの作業において驚異的な能力を発揮します。今後は、手足やセンサーを持った状態でも、一定の労働を可能にするでしょう。これが現実です。
現代のプログラミング言語は、システムを構築する前に、どのモジュールが存在するかを事前に調査する必要があります。この過程が非常に手間となるのです。しかし、AIは大量の既存の知識を探索し、利用可能かどうかを判断し、それを技術者に提供する能力を持っています。これは確かな事実です。
多くの人がChatGPTに些細な質問を投げかけ、それが真実か否かを議論していますが、その使用方法は間違っていると言えます。正しい使用方法は、人間の知識を基に、ChatGPTに対して適切な質問と回答を用いて、面倒な作業部分をどの程度補完できるかを確認しながら作業を進めることです。これは確かな事実であり、その結果もそれを証明しています。
ちなみに今までの文章はchatGPTに「私の書きなぐりの文章を断定調で読みやすい文章に編集せよ」と指令をして書かせた文章。 以下に最後の章のみ元となった文章の原文を記しておく。
以上の事を人間に頼むときにはモジュール仕様書を渡してからプログラムしてもらうのだが、chatGPTに仕事を頼むとその手間が大いに省ける。 この例において、もし一番最初の質問を人間に行った場合にはいったいどれだけの技術者がこのモジュールを仕上げてくれただろうか?頼んだ人間に多少知識があってもどのくらいの時間で仕上げてくれただろうか? これを仕上げるのに要した時間は30分もない。同じことを人間に頼むと諸々の知識を前提に打ち合わせを行ってからモジュール仕様書作成までを考えると作業終了まで膨大な時間を要する。特に人間に諸々の知識が無ければ日にち単位で時間が過ぎてゆく。 現在のchatGPTは特定分野の文章ベースの作業においてとんでもない力量を示すが、将来は手足とセンサーが付いたとしたらある程度の労働は可能になるだろう。翻ってコンピュータ技術者なら知識の乏しい人に対して今回の設問を実施した場合の難しさを理解していると思う。それが今回の例では短く抽象的な命令を的確にくみ取り、すべて間違いなくミッションをこなしてしまった。
現在のプログラム言語はどのようなモジュールがあるか事前に調べてからシステム構築する仕様になっている。これが実に面倒くさいのだ。昔なら「面倒くさいから自分で作ってしまえ」ということを良く行ったし許容されていた。しかし現在のシステムは膨大な過去の遺産を調べてから使用可能かどうか判断する作業から始める。すぐに結果の欲しいシステム開発の場合には実に面倒な作業だ。上記の例では「しれっと」reやurllib.requestのモジュールをchatGPTは使用しているが、初めて経験する仕様のプログラムではこうはいかない。つまり、AIが膨大な過去の遺産を調べて生かしてくれるだけで技術者にとっては大いに参考になるのだ。
いかがだろうか? 世間ではchatGPTにくだらない質問をして正解だとかウソを言っているとか言っているが、その使い方が誤っているとしか思えない。 正しい使い方は、人間の知識をベースにchatGPTに対して適切な質問と回答で面倒な作業部分を如何に補ってくれるであろうかを確認しながら作業を進めていくという事だと思う。
chatGPTに校正を頼んだ結果、私の個性が死んでいますね……
#chatGPT #AI #人工知能 #プログラム #コンピュータ  |
 |
 |
|
|