開発環境
Server | lightSail |
Language | Python3.11 |
Framework | Django |
DB | sqlite3 |
ローカル環境ではPythonのvenvを使用。エディタはvs codeです。
目的
読書感想文につづけて映像作品のレビューを評論フレームワークにあわせて、校正して出力してくれるアプリです。断片的なワードでもそれっぽくまとめていただけるので、インプットの後にアウトプットするときに使用するのが目的です。
コード
コード
qiita.rb
try:
OPENAI_API_KEY = os.environ['OPENAI_API_KEY']
except KeyError:
return HttpResponse("APIキーが設定されていません。", status=500)
chat_results = ""
if request.method == "POST":
form = ChatForm(request.POST)
if form.is_valid():
title = form.cleaned_data['title']
director = form.cleaned_data['director']
playwright = form.cleaned_data['playwright']
distributing = form.cleaned_data['distributing']
music = form.cleaned_data['music']
casts = form.cleaned_data['casts']
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 = ''
introduction = form.cleaned_data['introduction']
summary = form.cleaned_data['summary']
impressions = form.cleaned_data['impressions']
conclusion = form.cleaned_data['conclusion']
try:
client = OpenAI(
api_key = OPENAI_API_KEY,
)
introduction_review = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[
{
"role": "system",
"content": f"""
導入部
\nーーーーーーーーーーーーーーーーーーーーーー\n
{introduction}
\nーーーーーーーーーーーーーーーーーーーーーー\n
この映像作品を読んだきっかけを書いてありますので、300文字以内に綺麗に校正してまとめてください。
"""
}
],
)
introduction_result = introduction_review.choices[0].message.content
introduction_result = introduction_result.replace("\n", "<br>")
summary_review = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[
{
"role": "system",
"content": f"""
あなたは日本語が詳しい優秀な映像作品評論家です。
内容の要約
\nーーーーーーーーーーーーーーーーーーーーーー\n
{summary}
\nーーーーーーーーーーーーーーーーーーーーーー\n
主要な登場人物、設定、ストーリーの流れを簡潔に要約してあります。
映像作品の中で特に印象に残った場面やテーマについて触れています。
この映像作品の要約を書いてありますので、300文字以内に綺麗に校正してまとめてください。
"""
}
],
)
summary_result = summary_review.choices[0].message.content
summary_result = summary_result.replace("\n", "<br>")
impressions_review = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[
{
"role": "system",
"content": f"""
あなたは日本語が詳しい優秀な映像作品評論家です。
感想・考察
\nーーーーーーーーーーーーーーーーーーーーーー\n
{impressions}
\nーーーーーーーーーーーーーーーーーーーーーー\n
物語から何を感じ取ったか、どのような考えを持ったかのかが書かれています。
この映像作品の感想・考察を書いてありますので、300文字以内に綺麗に校正してまとめてください。
"""
}
],
)
impressions_result = impressions_review.choices[0].message.content
impressions_result = impressions_result.replace("\n", "<br>")
conclusion_review = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[
{
"role": "system",
"content": f"""
あなたは日本語が詳しい優秀な像作品評論家です。
結論
\nーーーーーーーーーーーーーーーーーーーーーー\n
{conclusion}
\nーーーーーーーーーーーーーーーーーーーーーー\n
物語から何を感じ取ったか、どのような考えを持ったかを述べています。
物語のテーマやメッセージが自分の人生にどのように活かしていくかを書いています。
この映像作品の結論を書いてありますので、300文字以内に綺麗に校正してまとめてください。
"""
}
],
)
conclusion_result = conclusion_review.choices[0].message.content
conclusion_result = conclusion_result.replace("\n", "<br>")
casts = casts.replace("\n", "<br>")
chat_results = "作品名:" + title + "<br>監督:" + director + "<br>脚本家:" + playwright + "<br>配給会社:" + distributing + "<br>公開日:" + release + "<br>主題歌:" + music + "<br><br>出演者:<br>" + casts + "<br><br>導入部:<br>" + introduction_result + "<br><br>内容の要約:<br>" + summary_result + "<br><br>感想・考察:<br>" + impressions_result + "<br><br>結論:<br>" + conclusion_result
except Exception as e:
return HttpResponse(f"API呼び出し中にエラーが発生しました: {str(e)}", status=500)
else:
return HttpResponse("フォームのデータが無効です。", status=400)
else:
form = ChatForm()
各フレームワークの課題に合わせて出力されます。
アプリ画面

感想
映像作品の感想を簡単に書けるので、フィルマークスにレビューを書くときに使いたい。