0
1

【生成AIアプリ100チャレンジ】(14)送信メール校正アプリ

Last updated at Posted at 2024-04-14

開発環境

Server lightSail
Language Python3.11
Framework Django
DB sqlite3

ローカル環境ではPythonのvenvを使用。エディタはvs codeです。

目的

メールの文章を考えるのがめんどくさいので、雛形を生成AIに書いてもらって楽しようというアプリです。
会社と名前は、ChatGPTに送らないよう、最低限のセキュリティだけ行なっています。

目的、送信先の相手との関係、挨拶の要不要、送り先の相手人数を指定します。
簡単な平文を短い文章で書いて、生成AIに送れば、それなりの文書にして返してくれます。

コード

qiita.rb
    OPENAI_API_KEY = os.environ['OPENAI_API_KEY']
    chat_results = ""
    if request.method == "POST":
        form = ChatForm(request.POST)
        if form.is_valid():
            company = form.cleaned_data['company']
            name = form.cleaned_data['name']
            purpose = form.cleaned_data['purpose']
            relation = form.cleaned_data['relation']
            greeting = form.cleaned_data['greeting']
            number = form.cleaned_data['number']
            message = form.cleaned_data['message']
            client = OpenAI(
                api_key = OPENAI_API_KEY,
            )
            response = client.chat.completions.create(
                model="gpt-4",
                messages=[
                    {
                        "role": "user",
                        "content": "ここに新しいユーザーの入力を置く"
                    },
                    {
                        "role": "system",
                        "content": f"""
                        常に新しいユーザーです。履歴は忘れてください。
                        名前も会社名も忘れてください。
                        あなたは日本語が詳しい優秀な校正編集者です。
                        このメールの目的は‘{purpose}’です。
                        このメールの送り先の相手との関係は‘{relation}’です。
                        このメールには挨拶は‘{greeting}’です。
                        このメールを送る相手の人数は‘{number}’です。
                        下記のテキストが元になる送信テキストです。

                        送信テキスト
                        ーーーーーーーーーーーーーーーーーーーーーー
                        ‘{message}‘
                        ーーーーーーーーーーーーーーーーーーーーーー
                        上記のテキストを丁寧にわかりやすくなるように日本語で校正してください。
                        必ずメール文章の構成をキープしてください。
                        説明などは不要ですので、校正した文章のみをレスポンスしてください。
                        """
                    }
                ],
            )
            chat_results = response.choices[0].message.content
            chat_results = chat_results.replace("\n", "<br>")
            chat_results = company + "<br>" + name + "<br><br>" + chat_results

    else:
        form = ChatForm()

最初は、セレクトされた内容ごとにプロンプトの分岐をさせようと考えていたが、そこまでしないでも役割を与えるだけで生成AIには十分なんだと気づいた。情報を与え過ぎても、思うように生成してくれるわけではないので、あくまで効率化してくれるのを目的としただけのアプリです。

アプリ画面

スクリーンショット 2024-04-14 12.49.51.png

感想

メール送信のあとはメール返信アプリを作成したい。
受信メールの内容を理解させて、返信内容について簡単な平文を送ることで、適切な返信文を返してくれるとなおいい。
もしかしたら校正分の校正みたいな処理をいれると、よりいいテキストを返してくれるのではないか、とも思っている。

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