はじめに
chatGPTで使われているモデルgpt-3.5-turboがAPI化されたので、それで何か作ってみようということで、いつものstreamlitを使って文章変換アプリを作ってみました。
機能
アプリの機能としては入力された文章を「要約」「校正」「英語翻訳」「関西弁変換」という形の文章変換機能にしました。
下準備と料金について
python環境にpipでstreamlitとopenaiのインストールをしておく事と、OpenAIでAPIキーを発行しておいて下さい。
ちなみにAPIの利用料金は1000トークンあたり0.002ドル(日本円で0.27円)となっていて、OpenAI会員登録時に3ヶ月間有効の18ドル相当のクレジットが付与されます。
※2023/3/11時点
ソースコード
{
"API_KEY": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
}
import json
import openai
import streamlit as st
pronpt_dict = {'要約して': '次の文を要約して下さい。',
'校正して': '次の文を校正して下さい。',
'英語に翻訳して': '次の文を英語に翻訳して下さい。',
'関西弁にして': '次の文を関西弁にして下さい。'}
def chatgpt_sentence_conversion(api_key, prompt):
openai.api_key = api_key
model = "gpt-3.5-turbo"
messages=[{"role": "user", "content": prompt},]
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[
{"role": "user", "content": prompt},
]
)
return response["choices"][0]["message"]["content"]
def get_gpt_apikey():
with open('secret.json') as f:
secret = json.load(f)
return secret["API_KEY"]
def main():
st.title('文章変換アプリ with GPT3.5')
select_command = st.sidebar.radio('変換種別', ('要約して',
'校正して',
'英語に翻訳して',
'関西弁にして'))
pronpt_command = pronpt_dict.get(select_command)
pronpt_sentence = st.text_area('こちらにテキストを入力して下さい。')
if pronpt_sentence is not None:
if st.button('実行'):
api_key = get_gpt_apikey()
response = chatgpt_sentence_conversion(api_key, pronpt_command+pronpt_sentence)
st.write('変換結果')
st.write(response)
if __name__ == '__main__':
main()
画面
実施結果
要約
入力テキスト
日本代表が第5回WBC(ワールド・ベースボール・クラシック)の第2戦で韓国代表と対戦し、13対4で快勝して2連勝を飾った。日本は3回表、先発のダルビッシュ有が8番・ヤン・ウィジの2ラン本塁打などで3点を先行されたが、直後の3回裏、1番のラーズ・ヌートバー、2番・近藤健介、5番・吉田正尚のタイムリーで4点を奪って逆転。5回には近藤のソロ本塁打などで2点を追加すると、6回には3番・大谷翔平のライト前タイムリーなどで5点を加えた。7回にはさらに押し出し四球などで2点を挙げた。
変換結果
日本代表は第5回WBCの第2戦で韓国代表を13対4で破り、2連勝を達成した。前半はダルビッシュ有が先制点を取られたが、後半にはラーズ・ヌートバーや近藤健介、吉田正尚、大谷翔平らが活躍し、得点を重ねた。
校正
入力テキスト
サーバ上のデータファイル中には、ユーザが入力したパスワードおよびマスターパスワードは、 すべて暗号化されて記録されます。
変換結果
サーバ上のデータファイルには、ユーザーが入力したパスワードおよびマスターパスワードがすべて暗号化されて記録されます。
英語翻訳
入力テキスト
WBC第2戦、日本代表が韓国代表と対戦し13対4で勝った。
変換結果
In the second game of the WBC, the Japanese team defeated the Korean team with a score of 13 to 4.
関西弁変換
入力テキスト
今週末ユニバーサルスタジオ行かない?
変換結果
今週末、ユニバーサルスタジオ行かへん?
おわりに
入力テキストの前に「次の文章を〇〇して下さい。」と付けてAPIに送るだけで動作するので、簡単にアプリが作れますね。これを使えばコード生成とかにも応用できそうだけど、料金が掛かることはお忘れなく。