0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ChatGPTを使ってラブレターを代筆してくれるWebアプリケーションを作ってみた

Last updated at Posted at 2023-04-26

はじめに

色々な使用例が既にあるのですが、何か作ってみたいなと思ったら簡単にできたので記事にしてみます。

開発環境

  • 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>&nbsp;</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アプリケーションをこちらでお試し頂けます。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?