見出し画像

自力でコード書けない非エンジニアがGPT4新機能ハッカソン24耐で優勝する話


汝アプライせよ、さらば道は開かれん

去る2023年11月17日、「GPT4ハッカソン24耐」というイベントが開催されました。
2023年11月6日にリリースされた、OpenAIのGPT-4を中心とした新しい機能を使って24時間で何か作ろう!と言うハッカソンです。

私はタイトルの通りコードが自力で書けないし、主催者のShi3zさんの開催告知には下記の通り「とにかくガチ勢だけ来てほしい」とあります。

Shi3zさんのnoteより

勇気を持ってアプライするところから始まる学習もありますが、少し門外漢が過ぎるな、と指を咥えておりました。


ハッカソンの開催も目前に迫った11月12日、Shi3zさんから「GPTsで参加してもいいよ」の発信がありました。

Shi3zさんのnoteより

この時点で開催5日前、私は朝から、職場、マンガ仲間、AI勉強している仲間などに呼びかけました。
参加するには、最低2名のチームであることが要件です。
しかし、いかにフットワーク軽い人でも、5日後の24時間ハッカソンに気軽に飛び込んでくる人は流石に見つからず、、

Shi3zさんが主催されている「教養としてのAI講座」のDiscordに、「参加したいんだけどメンバーが見つからない」と書き込んだところ、御大から同様にメンバー探しが難航していたけいすけさんと組んじゃえば?という啓示が。

「教養としてのAI講座」Discordより

けいすけさんとはこの時点でオンラインでも会話したことがありません。要は全くの他人同士でした。
私は前述の通り自力でコードが書けませんし、見たところエンジニアであるけいすけさんにとって足手纏いでしか無いのですが、思い切ってお誘いしてみたところ…

快諾してくださいました…!ありがとうございます🙏🙏🙏

ちなみに、このやりとりは、「第2回 #生成AIなんでもLT会 」当日の登壇前にやっていて…

11月15日に、#コルクラボマンガ専科 第8期の卒業課題の提出日を控えていて…

心中はちゃめちゃだったので、けいすけさんにもShi3zにも失礼がなかったかたいへん気掛かりです。。

ともかく、チーム「しらすごはん」として、#GPTハッカソン24耐 への参加切符を掴むことができたのでした。


AIしかできないことを、人間は発想できない?

そんなわけで、当日会場でけいすけさんと初対面を果たします。

けいすけさんのXアカウント

けいすけさんは、私がコードひとっつも書けないポンコツにも関わらず、前向きに取り組んでくださって、めちゃくちゃ頼れるエンジニアお兄さんでした。
大感謝。。


ハッカソンのテーマは「その手があったか!」

開催告知では、テーマは当日発表となっていましたので、最初にルールとテーマの発表がありました。

ルールはざっくり言うと

  • OpenAIのなんかを使って、たくさんなんか作れ

  • すごい!笑える!ものを作れ

  • 他人に迷惑かけない

テーマは「その手があったか!」というものを作る。
これぞハッカソン、というテーマです。


OpenAI DevDayの新リリースをキャッチアップしよう

冒頭で触れた通り、11月6日にOpenAIからいくつかの大きなリリースがありました。
と言うか、この日はOpenAIの最初の開発者向けカンファレンスで、みんながどんなリリースがあるのかかぶりつきで見ていたと思います。

大まかには、下記のようなリリースがありました。

  • 128kのコンテクスト長を扱えるGPT-4-turbo

  • マルチモーダルに対応したGPT-4-Vision

  • Whisperのアップデート

  • Open Assistant

  • GPTs

テキスト、画像、音声をシームレスに扱えることで、できることは大きく広がる予感がありました。
ハッカソンでは、これらを積極的に使って何か作ってみよう、という目的もありました。
かくして、24時間耐久ハッカソンは幕を開けたのです。


面白い!って何だろう…

どんなものを作ったら面白いか、けいすけさんとたくさん話したのですが、これがとても難しい。
私たちはいろいろなタスクをAIに任せたり手伝ってもらったりして、すごく便利に使えている気がしますが、その中身は、「人間にもできるけどAIにやらせたい」ことばかりで、「AIにしかできないこと」ではないよね、という気づきがありました。

それで、AIだからできること、を色々考えてみるのですが、なかなか人間前提の発想の外にいけなかったり、アイデアはあっても現状OpenAIのAPIでは解けない問題であったり、、
(ここで出たアイデアは、将来けいすけさんが実現を目指されるかもしれないので、伏せておきます)

ちょっと作ってみたりしながらあれこれ話し合ったのですが、なかなか「これだ!」というものが見つかりません。


ハックしよう

ちょっと頭を切り替えて、この24時間でハックできるものはなんだろう?という発想で色々と相談しまして、よしなんかお金になるもの作ろう!ということで、GPT-4を使って、著作権の切れている作品をギャル語に変換してKindleでセルフパブリッシングしてみることにしました。

けいすけさんはコードを書いて、私は最初ChatGPTでやっていたのですが、時間がかかるのでHugging Face SpacesにGPT-4-1106-previewを使ったアプリを組んで(これぐらいはできるのです)、いくつかの作品をギャル語に変換して、Kindleにアップロードしてみました。

Kindleは提出してから審査に最大72時間かかる、とありましたが、ここれがハッカソンの時間内にアクセプトされて、販売開始することができました。

本当はハッカソン内で10作品ずつぐらい販売したかったのですが、Kindleには「生成AIを使った作品は1日に3つしかアップロードできない」という制約があり、叶いませんでした。
しかたがないので、お互いに3冊ずつアップロードしました。


いろいろ作ってみる

ひとまず1つは発表できるネタができたので、睡魔と戦ったり、頭が回らなくなったりしながら、それぞれOpenAIのAPIなどを使って色々作ってみました。
ここでは、私が作ってみたものを紹介します。


GPTママの読み聞かせ

WhisperのText-to-Speechのコードが簡単だったので、先のギャル語文学の要領で、入力した文字列を、ママの読み聞かせ風に変換してくれるアプリケーションをHugging Face Spacesに作り、「文学を読んでくれるママ」シリーズをnoteに公開しました。
挿絵はDALL-Eで作りました。

さらに、GPTでママの読み聞かせ風に変換したテキストをGoogle Colab上でWhisperのText-to-Speechを使って読み上げさせて、読み聞かせ音声を生成。
YouTubeに読み聞かせ動画を作りました。

ソースコード

!pip install openai

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

from openai import OpenAI

# クライアントの準備
client = OpenAI()

# テキストの読み上げ
from pathlib import Path
response = client.audio.speech.create(
    model="tts-1",
    voice="nova",
    input="""
   <任意のテキスト>
    """
)

# 音声ファイルに出力
response.stream_to_file("./<任意のファイル名>.mp3")


画像の内容を説明してくれるGPT

WhisperのText-to-Speehが動かせたので、Google Colab上でGPT-4-Visonを組み合わせて、画像の内容を判別して音声読み上げしてくれるものを作りました。

自分のマンガの原稿を入力したのですが、複雑な画像の説明は難しいようでした。

1枚絵のイラストレーションならある程度説明できるようです。
ついでにギャル語で説明してもらいました。

ソースコード

!pip install openai

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

from google.colab import drive
drive.mount('/content/drive')

client = OpenAI()

from pathlib import Path

response = client.chat.completions.create(
  model="gpt-4-vision-preview",
  messages=[
    {
      "role": "user",
      "content": [
        {"type": "text", "text": "日本語で説明してください"},
        {
          "type": "image_url",
          "image_url": {
            "url": "<Google Colabのディレクトリにアップロードしたファイルのパス>"
          },
        },
      ],
    },
  ],
  max_tokens=600,
)

# 応答からテキスト内容を取得
content_text = response.choices[0].message.content.strip()

# Text-to-Speechを使用してテキストを音声に変換
audio_response = client.audio.speech.create(
    model="tts-1",
    voice="nova",
    input=content_text
)

# テキストの出力
print(content_text)

# 音声ファイルに出力
audio_response.stream_to_file("./manga-1.mp3")


とにかく真剣に話を聞いてくれるギャルGPTs

GPTsでも何か作ってみようと思い、どんなにネガティブなことを言っても、前向きに話を聞いてくれるギャルGPTsを作りました。
元気が出ます(寝ていないので発想がおかしくなっている)。


やっぱりものを作れるエンジニアってかっこいい

という感じで、私はこのような細々したものを作りながら、WhisperやGPT-4-Visionを動かしてみていたのですが、ハッカソンも残り2-3時間というところで、けいすけさんが、ハッカソンのライブ配信を自動実況する仕組みを作ってリリースしました。
すげぇ。。


結果発表!

そんなわけで、24時間耐久ハッカソンは無事に終了。
他の参加者の方も楽しく取り組まれていて、とにかく楽しかったハッカソンでした。
私はけいすけさんの力を大いに借りながら、とにかく完走できただけで感無量だったのですが…

GPTハッカソン24耐 最終発表会より

なんと優勝してしまいました…!

すべてけいすけさんのおかげです🙏


ふりかえり

これまで、アイデアソンやChatGPTのプロンプトを発明するぐらいの数時間のイベントには参加したことがあるのですが、日を跨ぐようなハッカソンに参加するのは初めてでした。

一定の制限化で、チームでなにか動くものを作り上げる、という体験は非常に楽しいものでした。
みんなハッカソンもっとやった方がいいよ。

そして、やはりアイデアを実際に動くものにできるスキルは必要だと、強く感じるところでした。
ちゃんと勉強しよう。。

ちなみに、主催者のShi3zさんも、ハッカソン中に6つぐらい動くものを作っておられました。
記事の最後に紹介します。

終わったあとに、参加者の皆さんと飲んだお酒もたいへん美味しかったです。
けいすけさん、Shi3zさん、参加者のみなさまや開催に協力してくださった関係者のみなさま、ありがとうございました。


参考

けいすけさんのX

https://twitter.com/kei31

けいすけさんのハッカソン関連のnote「ある程度長い文章の対義語をGPTにつくってもらった #GPTハッカソン24耐」

けいすけさんが作った「24時間耐久ハッカソン中継の実況」


GPTハッカソン24耐 最終発表会


第2回生成AIなんでもLT会

コルクラボマンガ専科の卒業課題


ハッカソン中に出版したKindle

Kindle Unlimitedで無料で読めます。


般若心経を読み聞かせてくれるママ(動画)


とにかく真剣に話を聞いてくれるギャル(GPTs)

https://chat.openai.com/g/g-Kw9rUjqTE-tonikakuzhen-jian-nihua-wowen-itekurerugiyaru


Shi3zさんのハッカソン関連のnote

この記事が気に入ったらサポートをしてみませんか?