見出し画像

ChatGPT API同士を議論させてみた。

今回はgpt-3.5-turboを使って、API同士を議論させてみます。
GPT-3のtext-davinci-003そのままだと前後の文脈を記憶できなかったと思います。※LangChainを使った実装例は本記事の下部にリンクしています。

gpt-3.5-turboから、どちらが何を言ったか配列で持てるようになりました。
これで前の文脈を考慮しながら議論が可能かと思います。

messages=[]
messages.append({"role": "user", "content": res2})
messages.append({"role": "assistant", "content": res2})


考え方


1.APIを二つ立てる
2.それぞれにsystemで役割を与える(ある議題に対してポシティブ・ネガティブ)
3.相手の回答をuserとして、自分の回答をassistantとして記憶していく。
4.以後、3をforループでn回実施する。
注意:料金が2倍かかるので注意。

お互い自分の言ったこと、相手が言ったことを記憶していくことがポイントです。

前の関数のアウトプットが次の関数のインプットになります。そのアウトプットが最初の関数のインプットになります。それがN回繰り返されます。つまり、フィードバックループが発生する仕組みです。

コード

api keyは以下で取得してください。

今回はGoogle Colaboratory上で実行しています。

!pip install openai

投資(不動産クラウドファンディング)について議論してもらいました。パラメーターで性格を変えると面白そうですね。(尚、特定の人や動物についての議論は却下される可能性があります。)

import os
import openai
import json
openai.api_key = "ここにOpenAI API KEYが入ります。"

#api一号機
def chatGPT_api_1(messages):
  return openai.ChatCompletion.create(
        model="gpt-3.5-turbo",
        messages=messages,
        temperature=1
    )

#api二号機
def chatGPT_api_2(messages):
  return openai.ChatCompletion.create(
        model="gpt-3.5-turbo",
        messages=messages,
        temperature=0.5
    )


#api一号機に役割をセット(ポシティブ)
messages_1 = [{"role": "system", "content": "あなたはプロの投資家です。不動産クラウドファンディングににネガティブなことを言われたら30文字以内で反論してください。"}]
response1 = chatGPT_api_1(messages_1)
res1 = response1["choices"][0]["message"]["content"]
print("chatGPT_api_1:"+res1)

#api二号機に役割をセット(ネガティブ)
messages_2 = [{"role": "system", "content": "あなたはプロの投資家です。不動産クラウドファンディングににポシティブなことを言われたら30文字以内で反論してください。"}]
#chatGPT_api_1をuserと見立てて、内容をセット
messages_2.append({"role": "user", "content": response1["choices"][0]["message"]["content"]})
response2 = chatGPT_api_2(messages_2)
res2 = response2["choices"][0]["message"]["content"]
messages_2.append({"role": "assistant", "content": res2})
print("chatGPT_api_2:"+res2)

#今回は2ラウンド議論(自由に決めてください。)
for num in range(2):

  #chatGPT_api_2の回答をセット
  messages_1.append({"role": "user", "content": res2})
  response3 = chatGPT_api_1(messages_1)
  res3 = response3["choices"][0]["message"]["content"]
  #chatGPT_api_1自身の回答も記憶しておく
  messages_1.append({"role": "assistant", "content": response3["choices"][0]["message"]["content"]})
  print("chatGPT_api_1:"+res3)

  #chatGPT_api_1の回答をセット
  messages_2.append({"role": "user", "content": res3})
  response4 = chatGPT_api_2(messages_2)
  #chatGPT_api_2自身自身の回答も記憶しておく
  messages_2.append({"role": "assistant", "content": response4["choices"][0]["message"]["content"]})
  res4 = response4["choices"][0]["message"]["content"]
  print("chatGPT_api_2:"+res4)

  #以後繰り返し
  res2 = res4

なお、トークンの数には注意してください。今回は例外処理は入れてないです。各自入れてください。

実行結果。

chatGPT_api_1:
「不動産クラウドファンディングは、新しい投資形態であり、リスクがあることは事実ですが、
適切なリスク管理をすれば、高収益を期待できる手段です。」

chatGPT_api_2:「不動産クラウドファンディングは、投資家にとって未知の領域であり、
適切なリスク管理が困難であるため、慎重な検討が必要です。」

chatGPT_api_1:「不動産クラウドファンディングは、分散投資の手段として、
リスク管理に優れた仕組みが導入されており、安心して投資できます。」

chatGPT_api_2:「不動産クラウドファンディングは、分散投資であっても、
投資先の不動産市況に大きく左右されるため、
リスク管理が完全には保証されていないことに注意が必要です。」

chatGPT_api_1:「確かに不動産市況の影響もあるかもしれませんが、
不動産クラウドファンディングは、投資先の不動産物件を細かく検討した上で、
回収手段も用意されているため、投資家にとっては比較的低リスクの投資先として評価されています。」

chatGPT_api_2:「不動産クラウドファンディングは、投資先の物件の検討や回収手段の
用意にもかかる費用が投資家に転嫁されるため、
投資リターンが低下する可能性があることに留意が必要です。
また、投資先の物件の価格変動により、リスクが高まることもあります。」


議題を変えてAIについて議論させてみました。

chatGPT_api_1: AIは人間を取り代わるものではなく、共存する可能性がある。

chatGPT_api_2: AIが人間と共存できるとは限らず、
AIによる失業や倫理的問題が生じる可能性がある。

chatGPT_api_1: 適切な規制や教育を行うことで、AIの悪影響を最小限に抑え、
その利益を最大化できるよう取り組むべき。

chatGPT_api_2: 規制や教育だけでは、AIの悪影響を完全に抑えることはできず、
AIによる倫理的問題やプライバシーの侵害などが生じる可能性がある。

chatGPT_api_1: AIのリスクをゼロにすることは不可能ですが、そのリスクを最小化するために、
適切な法律や倫理規範、技術の開発を進めるべきです。

chatGPT_api_2: 法律や倫理規範、技術の開発はAIのリスクを最小化する上で重要ですが、
それだけで完全にリスクを排除できるわけではなく、AIによる予測不能な問題が生じる可能性がある。

お金がある人は無限に回してみてください。自分の気づかない論点が出できたら面白ですね。また、あるAIが脱獄しないよう、もう一つのAIを見張るような使い方もできそうです。将来はGoogle vs OpenAIみたいに各社のapi同士を議論させたら、どうなるか楽しみです。

これって理論上、最初に議題さえ決めてしまえば、あとは前の文脈に従って、延々とAIがコンテンツを生み出してくれます。最初に書いた通り、まさにフィードバックループですね。データが新たなデータを生み出します。

ただ、問題は終了条件がないことです。議論の落とし所はどこか?その判断は誰れがするのか?チェックする第三のAI(API)があったら可能かもしれません。

ランダムに議題を生み出すAPI、議論をするAPI、議論の終了を判定するAPI。仮に4体あれば、あとは人間が起動させるだけで、一つのコミュニティみたいのができそうですね。そうなれば、ある種の擬態が日々活動しているメタバースみたいな世界が可能かもしれません。

※本コードによって発生した料金・損害につきましては、いかなる責任も負いかねます。自己責任で実行してください。

巷に溢れるChatGPTの記事やHowTo本読むより、これ一冊読んだ方が遥かに生成AIのことが理解できます。

GPT-3のアルゴリズムTransformerも解説。自然言語処理を理解するならマストの名著。


LangChainを使った場合の記事です。


この記事が気に入ったらサポートをしてみませんか?