見出し画像

【生成AIアプリ100チャレンジ】(20)音楽レビューアプリ

#Python #API #django #生成AI #ChatGPT

https://ai.nuevo.jp/music_review/

開発環境

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

ローカル環境ではPythonのvenvを使用。エディタはvs codeです。
目的
音楽レビューのフレームワークです。
タイトル、アーティスト、プロデューサー、ジャンル、レーベル、推薦曲、リリース日などを入力して、フレームワークに沿ってレビューを完成してくれます。

コード


    chat_results = ""
    if request.method == "POST":
        form = ChatForm(request.POST)
        if form.is_valid():
            title = form.cleaned_data['title']
            artist = form.cleaned_data['artist']
            genre = form.cleaned_data['genre']
            producer  = form.cleaned_data['producer']
            label = form.cleaned_data['label']
            recommend = form.cleaned_data['recommend']
            track_list = form.cleaned_data['track_list']
            members = form.cleaned_data['members']
            if 'release' in form.cleaned_data and form.cleaned_data['release'] is not None:
                release = form.cleaned_data['release']
                release = release.strftime('%Y-%m-%d')
            else:
                release = ''
            review = form.cleaned_data['review']
            try:
                client = OpenAI(
                    api_key = OPENAI_API_KEY,
                )
                review = client.chat.completions.create(
                    model="gpt-3.5-turbo",
                    messages=[
                        {
                            "role": "system",
                            "content": f"""
                            導入部
                            \nーーーーーーーーーーーーーーーーーーーーーー\n
                            {review}
                            \nーーーーーーーーーーーーーーーーーーーーーー\n
                            この音楽作品の評論を書いています。300文字以内に綺麗に校正してまとめてください。
                            """
                        }
                    ],
                )
                review_result = review.choices[0].message.content
                review_result = review_result.replace("\n", "<br>")
                print(review_result)

                tracks = track_list.split("\n")
                numbered_track_list = ""
                for i, track in enumerate(tracks, start=1):
                    numbered_track_list += f"{i}. {track}<br>"
                members = members.replace("\n", "<br>")
                chat_results = "アルバム名:" + title + "<br>アーティスト:" + artist + "<br>ジャンル:" + genre + "<br>プロデューサー:" + producer + "<br>レーベル:" + label + "<br>リリース:" + release + "<br><br>レビュー:<br>" + review_result + "<br><br>おすすめ曲:<br>" + recommend + "<br><br>収録曲:<br>" + numbered_track_list + "<br><br>参加メンバー:<br>" + members

            except Exception as e:
                return HttpResponse(f"API呼び出し中にエラーが発生しました: {str(e)}", status=500)
        else:
            return HttpResponse("フォームのデータが無効です。", status=400)
    else:
        form = ChatForm()

各フレームワークの課題に合わせて出力されます。

感想
レビューの校正は一部分ですが、収録曲などを整理してフォーマット通りに出力してくれるので助かります。

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