見出し画像

【Streamlit × OpenAI API】自然言語で野球選手の将来成績表を生成できるWebアプリを作ってみた!

はじめに

※本記事概要の95%はChatGPTを用いて書かれております。

みなさん、こんにちは!今回は、自然言語で野球選手の将来成績の年度別成績表を簡単に生成できるWebアプリを作成してみました。PythonのStreamlitを使って、サクッとWebアプリを作り、Streamlitのサーバーにアップして公開できちゃいました。ぜひ遊んでみて下さい!

アプリURL

ソースコード

実は僕、野球選手の年度別成績表を見るのが超好きで、実況パワフルプロ野球のペナントモードで1シーズン分の成績表を計算して眺めるのが趣味だったんです。一時期はWii, PS2, DS, PSPで同時にペナントを回して、結果確認して、ペナント回して、確認して、回して、、、で遊んでました。でも、このアプリのおかげで、もうそんな手間をかけずに楽しい成績表を生成してニヤニヤできちゃいます!

この記事では、アプリの作り方や技術的なポイントについてざっくりと紹介します。同じようなアプリを作りたい人にとって、ちょっとした参考になれば嬉しいです。それじゃあ、みんなもOpenAI APIとStreamlitで、自分だけのアプリを作って楽しんでみて下さい!

野球選手成績生成の実例

佐々木朗希選手の2021年、2022年の成績を元に下記のプロンプトを加えて2030年までの成績を生成してもらいました。(成績予測ではありません。)
入力プロンプト:2026年度に怪我をしてしまい、その年度は欠場、それ以降成績が下降した。

さらに成績表と追加のプロンプトから年度別の選手経歴を生成する機能も追加しています。
入力プロンプト : 岩手県出身。高校時代に最速163km/hのストレートを投げて話題に。甲子園への出場は叶わなかったが、千葉ロッテにドラフト1位で入団。球界最高レベルのスピードボールを武器に活躍する。
出力 : 
彼の名前は翔太。岩手県出身の若き投手で、高校時代に最速163km/hのストレートを投げることができる逸材だった。しかし、甲子園への出場は叶わず、その才能は多くの人には知られていなかった。そんな彼が、千葉ロッテにドラフト1位で入団することになったのだ。 2021年、18歳の翔太はロッテの一員としてプロの舞台に立つ。11試合に登板し、3勝2敗という成績を残す。防御率2.27という素晴らしい数字を記録し、その才能の片鱗を見せつけた。しかし、彼はまだまだ成長途中であり、その若さゆえのもどかしさや苦しさも感じていた。 翌2022年、19歳になった翔太はさらなる飛躍を遂げる。20試合に登板し、9勝4敗という好成績を収める。防御率は2.02とさらに向上し、リーグでもトップクラスの投手として名を連ねるようになる。彼の球界最高レベルのスピードボールは、多くの打者を手玉に取り、173奪三振を記録する。 2023年から2025年にかけて、翔太は安定した成績を残し続ける。特に2024年には、30試合に登板し15勝10敗という自己最高の成績を収める。しかし、2026年、突如彼の名前は成績表から消える。その理由は、故障による長期離脱だった。彼はその年を棒に振り、苦しいリハビリ生活を送ることになる。 2027年、24歳の翔太は復帰を果たす。26試合に登板し、9勝7敗という成績を残す。防御率2.48という好成績を収め、復活をアピールする。しかし、彼は以前のような圧倒的な投球を取り戻せず、若干の焦りを感じていた。 2028年から2030年にかけて、翔太は徐々に成績を落としていく。特に2029年には、防御率が3.52まで上昇し、リーグの平均に近い成績になってしまう。しかし、彼は諦めず、日々の練習に励み続ける。 翔太のストーリーは、若くしてプロの舞台で活躍し、故障による苦難を乗り越え、再び立ち上がる姿を描いている。彼の成長具合やもどかしさ、苦しさが、この成績表から感じられるだろう。そして、彼のこれからの活躍が、ファンやチームメイトに勇気と希望を与え続けることだろう。

(なかなか読ませますね)

準備

OpenAI APIの概要

APIの機能と利用方法

OpenAI APIとは昨今巷を賑わしているChatGPTのモデルをAPIとして提供するサービスです。これにより、今回のようなWebアプリケーションなどに組み込んで利用することができます。利用のためにはAPIキーを発行して通信時に読み込む必要があります。

OpenAI APIの課金と制限

OpenAI APIの各モデルの課金体系はこちらです。

課金には上限をつけることができます。Billing→Usage limitsから決めることができます。

ユーザーがAPIの課金額の上限を決められる。
私の設定

Streamlit Secrets機能

streamlitにはcomunity cloudと呼ばれる機能があり、streamlitを使って作ったWebアプリを簡単に公開することができます。

今回のようにAPIキーを伴うWebアプリの場合はCloudのSecrets機能を使うと良いです。

Cloud側でSecretsにOpenAI API キーを設定することでスクリプト内で下記のように読み込むことができます。

# OpenAI APIキーを設定する
openai.api_key = st.secrets["OPENAI_API_KEY"]

まとめ

今回OpenAI APIとStereamlitを組み合わせて、GPTを使ったWebアプリを作成しました。また、streamlit cloudを使って公開することができました。その際のセキュリティ部分についてのTipsを共有しています。今後もいろいろ作っていきたいと思っています。

この記事が参加している募集

野球が好き

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