開発環境
Server | lightSail |
Language | Python3.11 |
Framework | Django |
DB | sqlite3 |
ローカル環境ではPythonのvenvを使用。エディタはvs codeです。
目的
音楽レビューのフレームワークです。
タイトル、アーティスト、プロデューサー、ジャンル、レーベル、推薦曲、リリース日などを入力して、フレームワークに沿ってレビューを完成してくれます。
コード
qiita.rb
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()
各フレームワークの課題に合わせて出力されます。
感想
レビューの校正は一部分ですが、収録曲などを整理してフォーマット通りに出力してくれるので助かります。