見出し画像

AIを語りたいなら最低限Pythonをやるべき。足し算より簡単なんだから

昨日は新潟県長岡市に行って、市役所の職員向けと、一般向けに二回の講演を行った。

市役所の職員からの質問事項をよく読むと、ChatGPTを闇雲に何にでも使おうとして苦戦している姿が見てとれた。

たとえばこんな感じだ。

⚪︎時に東京駅につく新幹線を予約したいとChatGPTに言ったが、公式サイトをチェックしろと言われた

我々からすればその回答は当たり前なのだが、闇雲になんでもChatGPTでやろうとするとこうなってしまうという典型的な例だった。当たり前だが、その目的ならえきねっと一択だ。

ChatGPTには限界がある。しかも低い。
だから通常はPluginと組み合わせたり、プログラムから呼び出したりするという「工夫」が必要になる。

GPTを使うプログラムを書くのはものすごく簡単だ。
たぶんプログラムの世界でも最も簡単な部類だろう。
たとえば僕がプログラムでGPTを使おうかなと思った時、こんなふうに書く

from gpt3z import gpt
gpt("なんか面白いことを言え")

gpt3zはものすごく適当に書かれたモジュールだが、中身は基本的にGPT3か4を呼び出しているだけだ。本当は簡単過ぎてモジュールにする必要もない

GPTを使ったプログラミングは、Pythonを、というよりもプログラミングという概念そのものを学ぶのに最も適した題材かもしれない。

なぜなら、プログラミングの基本は、代入と分岐、繰り返しの三つくらいしかないからだ。

from gpt3z import gpt
a=gpt("AIについて本を書こうと思う。五章構成で英語の目次と各章の概要を書け")
b=gpt(f"{a} この目次の第一章を日本語で書け")
c=gpt(f"{a} この目次の第二章を日本語で書け")
d=gpt(f"{a} この目次の第三章を日本語で書け")
e=gpt(f"{a} この目次の第四章を日本語で書け")
f=gpt(f"{a} この目次の第五章を日本語で書け")
bs=gpt(f"{b}を20文字で要約しろ")
cs=gpt(f"{c}を20文字で要約しろ")
ds=gpt(f"{d}を20文字で要約しろ")
es=gpt(f"{e}を20文字で要約しろ")
fs=gpt(f"{f}を20文字で要約しろ")
end=gpt(f"以下の要約を元に結論を書け 第一章 {bs} 第二章 {cs} 第三章 {ds} 第四章{es} 第五章{fs}") 

プログラミングに全く疎い人であっても、このプログラムが何をしようとしているかぼんやりと想像することができるはずだ。実際のところ、僕は最近の二冊の本をこのような方法で書いた。

GPTはこのように使った時、最も効果を発揮するのである。
世に蔓延るプロンプト芸は、全て忘れてよろしい。
大切なのは、自分の目的を達成するために最短時間で解決するにはどうするか考えることで、ハッカーとはまさに「手間を省く」ことを最優先する生き方、考え方を実践する人々である。

というわけで、長岡市長にPythonを教えることになった。
まあ教えると言っても、何も教えることはないのだが。
足し算と同じくらい簡単なものをわからないとは言わせない。

ちなみにgpt関数はこんな感じ

import openai
import os
os.environ["OPENAI_API_KEY"] = "<OpenAIのAPIキー>"


def gpt(utterance):
    response = openai.ChatCompletion.create(
    model="gpt-3.5-turbo",
    messages=[
        {"role": "system", "content": "あなたは役に立つアシスタントです。"},
        {"role": "user", "content": utterance},
    ]
    )
    return response["choices"][0]["message"]["content"]