見出し画像

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

https://ai.nuevo.jp/send_mail/

開発環境

| | |
|:------------:|:------------:|
| Server | lightSail |
| Language | Python3.11 |
| Framework | Django |
| DB | sqlite3 |

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

目的

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

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

コード

    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には十分なんだと気づいた。情報を与え過ぎても、思うように生成してくれるわけではないので、あくまで効率化してくれるのを目的としただけのアプリです。

アプリ画面


感想

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


#Python #API #djangp #生成AI #ChatGPT


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