0
0

【生成AIアプリ100チャレンジ】(21)格言検索

Last updated at Posted at 2024-05-07

スクリーンショット 2024-05-07 20.18.35.png

開発環境

Server lightSail
Language Python3.11
Framework Django
DB sqlite3

ローカル環境ではPythonのvenvを使用。エディタはvs codeです。
目的
格言・名作を検索してくれるアプリ。
元気になりたいとか、やる気を出したい、仕事、人生で悩んでいるときに格言を見つけてくれる。

コード

qiita.rb

    try:
        OPENAI_API_KEY = os.environ['OPENAI_API_IMAGE_KEY']
    except KeyError:
        return HttpResponse("OPENAI_API_APIキーが設定されていません。", status=500)
    try:
        API_KEY = os.environ['DEEPL_API_KEY']
    except KeyError:
        return HttpResponse("DEEPL_APIキーが設定されていません。", status=500)
    translator = ""
    english_result = ""
    japanese_result = ""
    if request.method == "POST":
        form = ChatForm(request.POST)
        if form.is_valid():
            category = form.cleaned_data['category']
            details = form.cleaned_data['texts']
            try:
                def translate_text(text, auth_key, source_lang, target_lang):
                    translator = deepl.Translator(auth_key)
                    result = translator.translate_text(text, source_lang = source_lang, target_lang = target_lang)
                    return result.text
                details = translate_text(details, API_KEY, 'JA', 'EN-GB')
                client = OpenAI(
                    api_key = OPENAI_API_KEY,
                )
                response = client.chat.completions.create(
                    model="gpt-4",
                    messages=[
                        {
                            "role": "user",
                            "content": f"""
                            You are a historian.
                            What are some sayings of famous people from the past and present and what is the name of the famous person?
                            category is {category} And about {details}
                            Please pick three aphorisms.
                            Please output in the form of ' aphorisms <br /> by speaker '.
                            """
                        },
                    ],
                )
                english_result = response.choices[0].message.content
                japanese_result = translate_text(english_result, API_KEY, 'EN', 'JA')
            except Exception as e:
                return HttpResponse(f"API呼び出し中にエラーが発生しました: {str(e)}", status=500)
        else:
            return HttpResponse("フォームのデータが無効です。", status=400)
    else:
        form = ChatForm()

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

アプリ画面
スクリーンショット 2024-05-07 20.18.35.png

感想
格言・名言を検索して、発言者とともに出力してくれます。
日本語と英語で出力されます。

0
0
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
0