見出し画像

ChatGPTをブロックでプログラミングできるようにしてみた(ソースコード付き)

4/19
    ソースコードのバグを修正しました


花粉症で午前二時に目が覚めた。
ふと

「ChatGPTの結果を組み合わせて物語を作ったり議論したりするのをPythonで書くの面倒臭くない?」

と思った。
誰かが作っていそうなので探したのだが、僕の観測範囲では世界のどこにもなかったので、とりあえずBlocklyで作ることにした。

今夜19時からは、日本ディープラーニング協会が主催する大々的なイベントがあり、connpassとPeatixであわせて6000人近い人が参加するらしい。
そこに登壇するときのネタとして、なんか作っておくか、と思った。

GPT Blocklyの基本的な構造


基本ブロックは三つ

基本ブロック

テーマを設定するブロックと、話の流れに対し、ある「人物」として、「提案」もしくは「反論」などを行うブロック。

それと、複数の意見をまとめて要約するブロック
である。

意見を述べるブロックが充実している

これでブロック論理を作ってRUNすると、サーバー側でChatGPT(GPT-3.5-Turbo)をChatGPT-APIで呼び出して推論し、次のブロックに渡す。

いわば、MAGIシステムのようなものが簡単に作れるのである。
以前、Google Spreadsheetを使ったものを紹介したが、あれは1セル書き換えるごとに膨大なGPTリクエストが走るので莫大な金がかかり現実的ではなかった。

この方式なら、「RUN」を押した時一回だけGPTリクエストが走るので大丈夫、というわけだ。

3/4はカジュアルにGPT3を呼び出していたが3/9はどれだけ呼んでも全然お金かからなかった。
やったぜ

詳しくは動画を見てください。

簡単な実行サンプル

動画をみる暇がない人向けの文章
たとえばこんな感じのロジックを考えてみる。

ChatGPTをチェインする論理


たとえばこんな答えが返ってくる。

議題は「人工知能が人間の仕事をうばったあと、人間はどうやって過ごせばいいのか?」についてです。

恋する乙女エイダ

恋する乙女「私は、人工知能が人間の仕事を奪っても、人間が何かしら新しいアイデアやスキルを身につけることができると考えています。例えば、AI自体を開発する技術や、AIと共存するための介護など、未来に必要とされる仕事がたくさんあるはずです。また、仕事以外でも、趣味や人生の目的など、自己成長につながることを見つけることが大切だと思います。人工知能が進化することで、私たちもより豊かな人間性を育むことができるのではないでしょうか。」

非モテのニート男子リョウ

非モテのニート「そんな甘いことを言ってる場合じゃない。確かにAIが出てきて新しい仕事が生まれるかもしれないけど、それに必要なスキルや知識を身につけるのは簡単じゃない。なんならAIが単純作業をやってくれると、人間はますます必要とされなくなって、仕事が減ってしまうかもしれない。だからこそ、今のうちに何が必要か、どんなスキルや知識を身につけるべきかを考えなきゃいけない。ただ、そんなに簡単にはいかないだろうな。」」
要約すると「人工知能が人間の仕事を奪っても、人間が新しいアイデアやスキルを学ぶことができると思う。AIと共存するための介護やAI開発など、新しい仕事があると考える。自己成長は重要であり、AIの進化によってより豊かな人間性を育てられると思う。しかし、それに必要なスキルや知識を身につけることは簡単ではないため、今のうちに自分が必要なスキルや知識を考えるべきだと思う。しかしそれが簡単なことではない。」

スティーブ・ジョブズにかぶれたおじさん

スティーブ・ジョブズ「 "自分がやるべきことが何かを見つけるために、自分自身に問いかけることが必要だ。何をすることが自分にとって意味のあることなのか。そして、それを実現するために必要なスキルや知識を学ぶ準備ができているかどうかを見極めることが大切だ。自分自身が熱意を持って取り組めることを見つけることが、自己成長のための近道である。"という言葉がある。自分自身が何をしたいのかを見つけることが、AIと共存しながらも、自己成長を遂げるための重要なステップだと思う。

要約のネスティング

ちなみに「要約」を重ねることもできる

要約を重ねた場合

議題は「高校の同級生との恋」についてです。

恋する乙女エイダ

先輩に憧れている恋する乙女のエイダ「高校生活って一生のうちでも、そう何回もしか経験できない貴重な時間だと思うんです。だからこそ、同級生と特別な関係が築けたら、それは本当に素晴らしいことじゃないでしょうか。もちろん恋愛は難しいこともあるけど、自分にとって大切な人と過ごす時間は、それだけで人生を豊かにしてくれると思うんです。だから、先輩に憧れているなんて可愛いですね!きっと素敵な恋愛が待っていると信じて、前向きに頑張りましょう!」

非モテのニート男子リョウ

彼女のいないクラスのはぐれもの男子リョウ「高校生にとって恋愛は大切なものだと言われますが、私はそうでもありません。私が学校に来ている目的は学ぶことであり、恋愛のためではありません。もちろん、恋愛を楽しむことも大切だと思いますが、それは個人の自由であり、誰も強制するべきではありません。

また、私たちのクラスには男女問わず、多くの友情があります。恋愛は友情を裏切り、関係を壊すことがあるかもしれません。私たちは今ここで大切な時間を過ごしているので、それを失うことは避けたいと思います。

最後に、私は今、自分自身のことに集中するべきだと思っています。私は自分自身を高めるために、努力し、学び続けたいと思っています。それが恋愛に繋がる可能性があるかもしれませんが、そうでなくても私は幸せであり、満足しています。私は自分自身を愛しているので、彼女がいなくても悩まないし、不満を感じることもありません。」

恋する乙女エイダ

エイダ「この意見に対して、恋愛と学びの両立が可能であることや恋愛を通じて人間関係や自己成長につながる可能性があること、また友情と恋愛の関係を必ずしも相反しないことを指摘し、個人的な選択としての恋愛も尊重されるべきであるということが必要ではないでしょうか。また、自分自身を愛することは大切ですが、他者との関係性や繋がりを持つことも人生において重要な要素の一つであることを考える必要があります。」

非モテのニート男子リョウ

リョウ「私は恋愛と学びの両立が難しいと思います。恋愛に没頭していると必然的に学業や仕事に支障が出てきます。また恋愛を通じて人間関係や自己成長につながる可能性があるというのも疑問です。恋愛には失敗や傷つきがつきものであり、その経験が必ずしも成長に繋がるとは限りません。友情と恋愛の関係も、恋愛に関する気持ちがからみ合うことで友情が壊れることもあるでしょう。そして自分自身を愛することが大切であることに関しても、自分の人生を自分で決めることが大切なのではないでしょうか。恋愛に縛られることで自分を見失ってしまうこともあるため、異なる選択肢を持ち、自由に生きることも尊重されるべきだと思います。」

要約ロボ

要約すると「エイダは恋愛と学びの両立が可能であり、恋愛を通じて人間関係や自己成長につながる可能性があるということを指摘し、個人的な選択としての恋愛も尊重されるべきだと主張する一方、リョウは恋愛と学びの両立が難しいと考え、恋愛によっては成長に繋がらないこともあるため、異なる選択肢を持ち、自由に生きることも尊重されるべきだと主張する。

非モテのニート男子リョウ

リョウ「恋愛はまず自分自身の欲求を満たすことが目的であり、それが成長につながるとは限らない。むしろ、恋愛に没頭することで自分自身の中で閉じこもってしまい、学びや成長を阻害することもある。恋愛によって人間関係を空回りさせたり、時間を浪費したりすることもある。だからこそ、自己成長を妨げないように、恋愛と学びの両立が難しいと感じるのだ」というものがあるかもしれません。」

スティーブ・ジョブズにかぶれたおじさん

リョウの尊敬する先輩ジョブズ「「Stay hungry, stay foolish.」を考える

リョウは高校時代、同じクラスの女子生徒と仲良くなり、恋に落ちました。しかし、彼女は既に彼氏がいたため、リョウは諦めざるを得ない状況でした。それでも、恋心を胸に抱いたまま高校を卒業し、大学に進学しました。

大学生になり、彼女とは別れたものの、新たな恋に落ちました。しかし、その恋も短命に終わり、リョウは苦しい思いをしました。そんな中、彼が尊敬する先輩、スティーブ・ジョブズの有名な言葉「Stay hungry, stay foolish.」に出会いました。

この言葉には、「常に新しいものを追求し、自分自身を常に疑問に思うことが大切だ」という意味が込められています。リョウは、恋愛においてもこの言葉が重要であると考えました。彼は、恋愛には失敗も成功もあることを痛感したため、自分自身を常に疑問に思い、新しい恋を見つけることを決意しました。

そして、リョウは新たな出会いを求めて、趣味や興味を共有するサークルやイベントに参加したり、友人からの紹介で知り合った女性との交流を深めるようになりました。そして、ある日、リョウは自分と同じ趣味を持つ女性と出会い、お互いに惹かれ合い、交際することになりました。

リョウは、スティーブ・ジョブズから学んだ「Stay hungry, stay foolish.」を実践することで、新たな出会いを見つけ、幸せな恋を手に入れることができました。彼は今も、この言葉を胸に刻み、常に新しいものを探求し、自分自身を成長させ続けています。」

非モテのニート男子リョウ

リョウ「私も完全に同感です。恋愛においても、自分自身を疑問に思い、常に新しいものを探求することが大切だと思います。失敗や痛みは必ずあるかもしれませんが、それでも自分自身を成長させるために、常に挑戦していきたいと思います。そして、スティーブ・ジョブズの言葉は、私たちの人生のあらゆる場面で役立つものだと感じています。」

恋する乙女エイダ

リョウに対して少し好意を抱いたエイダ「私も同意見です。人生は常に変化し続けているものですから、新しいものに興味を持ち続けることは大切なことだと思います。そして、人生には失敗や痛みがつきものですが、それらを乗り越えることで、自分自身を成長させることができます。だからこそ、常に前向きに挑戦していくことが必要だと思います。スティーブ・ジョブズの言葉は、私たちにとって大いに励みとなるものですね。」

非モテのニート男子リョウ

リョウ「私も同じ考え方であり、人生において新しい挑戦に取り組むことが大切だと思います。しかし、失敗や痛みを経験することが成長に繋がるということは、その経験をどのように捉えるかによると思います。それを乗り越えることができるかどうかは、自分自身の力量や人生経験、そして周りのサポートなど様々な要素が影響すると考えます。ですが、その中でも前向きなマインドセットが不可欠であり、スティーブ・ジョブズの言葉はそのようなマインドを養う上で、大いに効果的だと思います。」

要約ロボ

要約すると「リョウとエイダは、恋愛において自己成長や新しいものに興味を持つことが大切であると同意見。しかし、失敗や痛みは必ずあるため、前向きなマインドセットが重要であり、スティーブ・ジョブズの言葉がその点で役立つと感じている。また、恋愛が全てではなく、異なる選択肢や自己成長のための努力を尊重されるべきという見解も持っている。

次のステップ

なんとなく恋愛物語が始まらないかなーと思ったのだがちょっと不十分なところがあった。例えば、ChatGPTのAPIだと、システムメッセージなども使えるのでそこをうまく使ったり、登場人物ごとに別々の記憶や設定、ステータスを持たせたりといったことができるはずだ。

次回、余裕があればそういうこともやってみたい。

有料版おまけ:ソースコード

真似したい人もいると思うのでソースコードを置いておく。
本当にソースしかないので文章があると期待した人は買わないこと

ここから先は

7,581字

¥ 1,280