はじめに
色々な使用例が既にあるのですが、何か作ってみたいなと思ったら簡単にできたので記事にしてみます。
開発環境
- ChatGPTアカウント
- Python3.x系
- Flask
OpenAI APIキーの取得
詳しく説明されているのでこちらをご参照下さい。
ライブラリのインストール
pip3 install openai
ファイル構成
- main.py
- templates/letter.html
スクリプト
#!/usr/bin/env python3
from flask import Flask, request, render_template
import openai
app = Flask(__name__)
openai.organization = "org-[自分のOrganization ID]"
openai.api_key = "sk-[取得したAPIキー]"
@app.route('/', methods=["GET", "POST"])
def index():
msg = ""
if len(request.form) > 0:
vals = request.form
txt = """
私の名前は「{}」
相手の名前は「{}」
二人の関係性は「{}」
馴れ初めは「{}」
相手の好きなところは「{}」
手紙を受け取った後に望むことは「{}」
""".format(
vals["sender"],
vals["reciever"],
vals["relation"],
vals["at_begining"],
vals["point"],
vals["what_you_want"]
)
try:
rs = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": "あなたは手紙の代筆をしている人です"},
{"role": "user", "content": "大好きな人に思いを伝えるための手紙を送りたいので文章を考えてもらいたい"},
{"role": "assistant", "content": "詳細を教えて頂けますか?"},
{"role": "user", "content": txt},
]
)
msg += rs['choices'][0]['message']['content']
except:
msg += """
しばらく待ってから再度実行してみて下さい。
"""
return render_template("letter.html",
msg=msg
)
if __name__ == '__main__':
app.run(host='0.0.0.0', port=8080, debug=False)
テンプレートファイル
<html lang="ja">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width" >
<title>ラブレター代筆</title>
</head>
<body>
<div id="page">
<div id="header">
<h1>ラブレター代筆</h1>
</div>
<form id="body" method="post">
<table>
<tr>
<td>相手の名前 :</td>
<td><input type="test" name="reciever" value="" /></td>
</tr>
<tr>
<td>あなたの名前 :</td>
<td><input type="test" name="sender" value="" /></td>
</tr>
<tr>
<td>関係性 :</td>
<td><input type="test" name="relation" value="" /></td>
</tr>
<tr>
<td>馴れ初め :</td>
<td><input type="test" name="at_begining" value="" /></td>
</tr>
<tr>
<td>好きなところ :</td>
<td><input type="test" name="point" value="" /></td>
</tr>
<tr>
<td>求めること :</td>
<td><input type="test" name="what_you_want" value="" /></td>
</tr>
<tr>
<td> </td>
<td><input type="submit" name="submit" value="送信" /></td>
</tr>
</table>
</form>
<div id="answer">
<pre>{{msg}}</pre>
</div>
</div>
</body>
</html>
実行
python3 main.py
実行したらWebブラウザでアクセスしてみます。
できた!
参考までに完成したWebアプリケーションをこちらでお試し頂けます。