0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【生成AIアプリ100チャレンジ】(16)マギシステム(エヴァンゲリオン風)

Last updated at Posted at 2024-04-14

開発環境

Server lightSail
Language Python3.11
Framework Django
DB sqlite3

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

目的

人気アニメ「エヴァンゲリオン」のマギシステムをChatGPTで実装してみました。
科学者としての意見
母親としての意見
女としての意見
三つの意見を元に結論を導くアプリです。

このマギシステムを活用すれな、ネルフ同様、日本のリーダーは結論をすぐに出せるようになるかもしれません。
作ってみたかったアプリのひとつです

コード

qiita.rb
    OPENAI_API_KEY = os.environ['OPENAI_API_KEY']
    prompt = request.POST.get('message')
    interactions = []

    def discussion(OPENAI_API_KEY, prompt, message):
        client = OpenAI(
            api_key = OPENAI_API_KEY,
        )
        response = client.chat.completions.create(
            model="gpt-4",
            messages=[
                {
                    "role": "system",
                    "content": message
                },
                {
                    "role": "user",
                    "content": prompt
                },
            ],
            temperature=0.3,
            max_tokens=512
        )
        response = response.choices[0].message.content
        response = response.replace("\n", "<br>")
        return response

    message = """日本語で応答してください。あなたは優秀な科学者です。科学者としての意見を述べてください"""
    casper_response = discussion(OPENAI_API_KEY, prompt, message)
    interactions.append({'input': "議論の課題は" + prompt + "です。", 'response': casper_response})

    message = """日本語で応答してください。あなたは慈愛に満ちた母親です。母親としての意見を述べてください"""
    balthazar_response = discussion(OPENAI_API_KEY, casper_response, message)
    interactions.append({'input': "議論の課題は" + prompt + "です。", 'response':  balthazar_response})

    message = """日本語で応答してください。あなたは人類の女性代表です。女性としての意見を述べてください"""
    melchior_response = discussion(OPENAI_API_KEY, balthazar_response, message)
    interactions.append({'input': "議論の課題は" + prompt + "です。", 'response': melchior_response})

    message = """日本語で応答してください。あなたは結論を出すリーダーです。3つの意見をもとに結論を述べてください"""
    magi_response = discussion(OPENAI_API_KEY, balthazar_response, message)
    interactions.append({'input': "一つ目の意見は「" +  casper_response + "」です。" + "二つ目の意見は「" +  balthazar_response + "」です。" + "三つ目の意見は「" +  melchior_response + "」です。", 'response': magi_response})


    return JsonResponse({'message': interactions})

    else:
        form = ChatForm()

優秀な科学者、慈愛に満ちた母親、人類の女性代表をそれぞれアニメ同様にcasper、balthazar、melchiorとして意見を述べてもらっています。結論を出すリーダーが三つの意見を元に結論を出しています。
まさにマギシステムです。

アプリ画面

スクリーンショット 2024-04-14 14.39.19.png

感想

絵心さえあればアニメ風のマギシステムのデザインにしたいんだけれども、とりあえずは使い回しのレイアウトで書きます。
意見を戦わせているので結論が出るのに1分ほどかかります。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?