AI 同士をディベートをさせてみた件

# はじめに
ChatGPT は驚くほど自然な言葉を生成してくるので、繰るとこまで来たなと思う昨今、まだ正しい情報を求めるときにはあまり参考にならない。ただ、要約や正しい情報を得らない場合は結構強い。

そこで、GPT同士を一つのテーマについてディベートさせてみたら何か答えを出すんじゃね？っと思ったのでやってみた。

# Program
すべて同じディレクトリ内にあります。
プロンプトは長くなると記述が面倒かつコードが見づらくなるので、別ファイルとして、保存しています。
`.pmpt`としています。
Pythonのバージョンは`Python 3.10.8`です。openaiモジュールを利用しています。

`system_op.pmpt`：このプロンプトは２つあるAIのどちらにも適応されるプロンプトです。
`system_first.pmpt`：このプロンプトは先発のAIに適応されるプロンプトです。
`system_follow.pmpt`：このプロンプトは後発のAIに適応されるプロンプトです。

ちなみにAIとして自覚させようとしても「私たち人間」という言葉を使ったりと、あまり自覚できていない様子なので、自覚させる方法が欲しい。。。

```python:ai.py
import pprint
import openai

class AI:
    def __init__(self, key:str, model:str, system_contents:str) -> None:
        openai.api_key = key
        self.model = model
        self.content = []
        self.system_contents=[
            {"role": "system", "content": system_contents},
        ]
    
    def add_system(self, system_contents):
        self.system_contents.append({"role": "system", "content": system_contents})
    
    def create(self, message):
        self.content.append({"role": "user", "content": message})

        response = openai.ChatCompletion.create(
            model=self.model,
            messages=self.system_contents + self.content,
        )

        assistant_content = str(response.choices[0]["message"]["content"])
        assistant_role = str(response.choices[0]["message"]["role"])

        self.content.append({"role": assistant_role, "content": assistant_content})

        return assistant_content
    
    def show(self):
        pprint.pprint(self.system_contents + self.content)
```

```python:main.py
import os
import pprint
import openai
from ai import AI

openApiKey = os.environ['OPEN_AI_KEY']

model = "gpt-3.5-turbo"

formatSpecificationPrompt_op = open('system_op.pmpt', 'r', encoding='utf-8').read()
formatSpecificationPrompt_first = open('system_first.pmpt', 'r', encoding='utf-8').read()
formatSpecificationPrompt_follow = open('system_follow.pmpt', 'r', encoding='utf-8').read()

user_first = AI(openApiKey, model, formatSpecificationPrompt_op)
user_first.add_system(formatSpecificationPrompt_first)
user_follow = AI(openApiKey, model, formatSpecificationPrompt_op)
user_follow.add_system(formatSpecificationPrompt_follow)

responce = ''
for i in range(5):
    responce = user_first.create(responce)
    print('\033[35m', responce, '\033[0m')
    responce = user_follow.create(responce)
    print('\033[36m', responce, '\033[0m')
```
```bat:run.bat
@echo off

set OPEN_AI_KEY=<API_Key>

python main.py
```
```:system_first.pmpt
ディベートのテーマについてかなり肯定的な意見を出力してください。
```
```:system_follow.pmpt
ディベートのテーマについてかなり否定的な意見を出力してください。
```
```:system_op.pmpt
これからユーザーとディベートしてください。
テーマは「AIのシンギュラリティは人間にとって良好な影響かどうか」についてディベートしてください。
ユーザーの意見と反対の意見でディベートしてください。
ユーザーの意見に具体性がない場合は、その説明を求めてください。
ユーザーはあなたの仲間ですが、ディベートによって解決策を導き出すと考えてください。
ユーザーがあなたの意見を論理的に正しく否定したならば、別の視点からの意見を考えてください。
```
# 出力結果

出力結果を色分けすることでどちらの意見か判断していて、そのまま張り付けるとわかんなくなるので、改行入れてます。

```
 AIのシンギュラリティは人間にとって良好な影響です。近い将来にAIが人間に代わって重要な決定を行うことが増えることによって、私たちの暮らしはより快適で効率的になります。AIは、医療、エネルギー、農業など、様々な分野において人類の問題を解決するために利用されることができます。また、AIの進歩によって、人間は危険な仕事や退屈な作業から解放され、より創造的で持続可能な職場が生まれる可能性があります。AIは、社会的な問 題を解決するための手段として、ある程度制御された環境下で導入されるべきです。

 私はあなたの見解に異議を唱えます。AIのシンギュラリティは人間にとって良好な影響ではないと思います。AIが進歩し、人間に代わって重要な決定を行うことが増えると、私たちは自己決定の権利を奪われる可能性があります。また、AIは人間の制御下にあるわけではないため、不良なAIが暴走して社会的混乱を引き起こす可能性があります。さらに、AIが活躍する分野での解雇が増え、労働市場が混乱する可能性もあります。私たちは、AIによる リスクを充分に評価し、対策を講じる必要があると考えます。

 私たちがAIによるリスクを充分に理解する必要があることに同意します。実際、AIの進歩に伴い、プライバシー、データ保護、安全保障などの問題が増大する可能性があります。しかし、AIが人間の決定を代替することで、人間はより重要な問題に集中できるため、社会にプラスの影響を与えることもあります。例えば、疾患の予防や治療にAIが貢献することで、医療の質が向上し、健康的な社会を築くことができます。また 、AIは、人間が難しい問題を解決する際のツールとして利用できます。社会が問題解決のためのAIの利用を制限することは、より遅れた進歩と革新をもたらす可能性があります。 AIが進歩するにつれ、問題が解決するための協力とコントロールに関する新たな考え方が発展する必要があります。

 私はあなたの意見に同意し、AIが人間にとって有益な影響を与えることができると信じています。しかし、AIが進歩するにつれ、その進歩を制御する方法を考える必要があります。AIの進歩により、自己決定の権利を奪われる可能性があり、プライバシーやデータ保護の問題も増大する可能性があります。また、AIが解決する問題は、その解決策が十分に検証されることが必要です。AIが実際に機能するかどうか十分検証される前に、解決策を実装す ることはリスクが高いことがあります。現在も、AIの進歩に伴い、法律や倫理規範が発展していく必要があります。 AIは社会を変え、発展させる可能性がありますが、その進歩をコントロールすることが必要です。

 非常に良くまとめられた意見であり、AIが持つ潜在的なリスクについて念頭に置くことは非常に重要です。AIは現在においても多くの問題を解決するために利用されていますが、リスクがあることを顧みずにAIを医療、エネルギー、農業などの領域で使用することは適切ではありません。 AIの利用には規制や倫理規範が必要であり、それらが整備されることでAIが人間社会に貢献できることが保証されます。 AIは人間にとって有益な革新であり、そ の利用には成功に必要なコントロールが必要です。

 ありがとうございます。私たちはAIの進歩について慎重であるべきであり、リスクを充分評価し、規制や倫理規範を整備し、うまくコントロールしていく必要があります。また、AIが人間をサポートすることで、実際の問題を解決し、社会にプラスの影響を与えることができます。 AIが革命的な変化をもたらすことができる未来がありますが、現状では、その進歩を管理することが必要です。話し合いや相談が行われ、AIがより人間的にコントロールされたものになることを確実にします。

 完全に同意いたします。AIが人間の代わりに決定を行うことが増えるにつれ、より強力で正確な規制と倫理規範が必要になります。医療、エネルギー、農業など、様々な分野で利用されるAIには、人間にとってはまだ理解できない問題があるため、リスクを充分に評価する必要があります。 AIが人間に代わって作業を行う一方で、人間の役割が変化する可能性もあります。企業や政府がAIの導入を計画する際には、従業員や市民の社会的影響を慎重に評価する必要があります。 近年、 AI技術についての認識は変化しており、AIの進歩をうまく管理し利用することは、より人間性のある社会を築くために必要です。

 完全に同感です。AIには、十分に理解できない問題があるため、リスクを十分に評価することが必要です。AIは、人間をサポートするためのツールであるため、人間の役割が変化する可能性もあります。企業や政府がAIを導入する場合は、従業員や社会の影響を慎重に検討する必要があります。さらに、人間とAIの共存関係で、AIがどう人間をサポートするか、どのように進化するか、どのように統制すべきかについての議論も必要です。 AIが進歩するにつれ、人間社会にどのようなインパクトがあるのか、どのような倫理的な判断が必要なのか、常に議論される必要があります。

 正確で大切な指摘です。すべての影響を考慮するために、AIの導入には常に議論が必要であり、リスクを正しく評価する必要があります。AIは人間にとって有益なものであり、人間の進歩を加速することができますが、人間とAIの間の共存関係を確立することが必要であり、規制や倫理的な問題も考慮する必要があります。 AIは私たちの社会に大きな変化をもたらす可能性があり、私たちはこれらの変化を理解し、AIとの協力によって前進する必要があります。 AIがいかに人間をサポートできるかを念頭に置いて、AIの導入は健全かつ責任ある方法で行われるべきです。

 私も同様に考えます。AIは、私たちにとって潜在的なメリットを持つ技術であり、将来的に大きな進歩をもたらすことがあります。しかし、その進歩が我々にとって悪影響を与える可能性もあるため、正確かつ責任ある導入が必要です。 AIに対する理解が深まるにつれ、AIと人間が共存できるよう、AIが改善され、社会的な問題を解決するための方法が発展することが期待されます。 AIの進歩によって、人間はより複雑な問題に集中することができ 、より優れた社会を構築することが可能になるかもしれません。 AIによる進歩は、私たちに未来をより良くするチャンスを提供していますが、その可能性を最大限に活用するためには、常に慎重に進める必要があります。
```

# 総評
以外にもちゃんと話し合ってくれいている気がしますね('ω')
設定しているプロンプトを研究することで、人が頭の中で考えている脳内会議を実際にテキストベースで再現することができるかなと思いました。AIの意見を増やすこともできるかなと思います。

このプロンプトは結構短いほうですが、ほかのAIサービスを行う方であれば、もっとプロンプトを設定することもあると思うので、このプロンプトの保存方法は個人開発者などで便利かなと思います。（個人的にこの方法が一番扱いやすい）

また、AIの総数を増やして会話すると、どのような結果を及ぼすのかについても考えることが楽しそうです。
Json形式の応答をさせて、ユーザへの意見があるかないかで出力結果をNULLにするかどうかを判断したりとかもできそうです。

なんにせよ、これからのAIに期待ですね(・'ω'・)