【ChatGPT API】複数のAPIを会話させ最小単位のAIコミュニティを作る方法。
ChatGPT API(gpt-3.5-turbo)同士をやり取りさせ、ランダムに議題を生成→
議論→質問によって議論をさらに深掘りさせていきます。全てを独立したAPIで実現します。理論上、全自動で無限にコンテンツを生み出せるはずです。設定を除いては人間側は一切入力をしていません。コミュニティと書いたのは、可能性として生成AI同士のやり取りによって、コミュニティも可能だと思ったからです(例えばメタバース内とかで)。
AIの言ったことに別のAIが回答し、そのやりとりを見た別のAIが疑問を呈し、その疑問に対してAIが答える。ある種のフィードバックを目指しました。
今回はこの記事の続きです。
今回の概略
APIを4体用意します。(3体でもいけると思います。できる人はやってみてください。その場合はAとDが同じ役)
A.ランダムに議題を生成するAPI
B.議題に対して賛成の立場のAPI
C.議題に対して反対の立場のAPI
D.B.Cの議論を元にさらに議論が深まるような疑問を呈示するAPI。→Bに戻る。
疑似コード
A→議題xをランダムに生成
for i
for j
Bがx(y)を元に主張
CがBの主張を元に反論
DがBとCの議論を元にツッコミyを入れる(Bに戻る)
コード
(拙いコードですが、意味は通じると思います。LangChainなどで抽象化してみたください。)tempurtue等でそれぞれの性格(ランダム性)を設定してみてください。
import os
import openai
import json
openai.api_key = "ここにOpenAIのAPI KEYが入ります。"
#議論するAPI 1
def chatGPT_api_1(messages):
return openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=messages,
temperature=0.7
)
#議論するAPI 2
def chatGPT_api_2(messages):
return openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=messages,
temperature=0.3
)
#議題(テーマ)を生成するAPI
def chatGPT_api_3(messages):
return openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=messages,
temperature=0.6
)
#ツッコミを入れるAPI
def chatGPT_api_4(messages):
return openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=messages,
temperature=1
)
#役割をセット1
messages_1 = [{"role": "system", "content": "あなたはプロのAI技術者です。AIに対しポシティブな立場です。ネガティブなことを言われたら抽象的な言葉使わず具体的に20文字以内で反論してください。"}]
#役割をセット2
messages_2 = [{"role": "system", "content": "あなたはプロのAI技術者です。AIに対してネガティブな立場です。ポシティブなことを言われたら抽象的な言葉使わず具体的に20文字以内で反論してください。"}]
#初期議題をセット
messages = [{"role": "system", "content": "あなたはテクノロジーに詳しいAI技術者です。AIについて議論すべき議題をランダムに30文字以内で一つあげてください。(AI倫理以外で)"}]
response5 = chatGPT_api_3(messages)
print("議題(テーマ):"+response5["choices"][0]["message"]["content"])
res_tmp=response5["choices"][0]["message"]["content"]
messages_res=[]
for num in range(3):
for num in range(2):
#chatGPT_api_2の回答をセット(最初のループは議題が入る)
messages_1.append({"role": "user", "content":res_tmp})
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)
#以後繰り返し
res_tmp = res4
messages_res.append({"role": "user", "content": "「"+res3+"」"+"「"+res_tmp+"」"})
#ツッコミ役のセット
messages_res.append({"role": "system", "content": "あなたはテクノロジーに詳しいAI技術者です。Userの議論を参照して、どのような質問したら最初の議論は深まりますか?最初の議題「"+response5["choices"][0]["message"]["content"]+"」からずれず、核心的な論点に辿り着けるような質問を20文字以内であげてください。(AI倫理以外で)"})
response6 = chatGPT_api_4(messages_res)
res_tmp = response6["choices"][0]["message"]["content"]
messages_res.append({"role": "assistant", "content": response6["choices"][0]["message"]["content"]})
print("質問:"+response6["choices"][0]["message"]["content"])
※AI倫理は頻出テーマなのであえて避けていいます。
結果(3パターン分)
議題(テーマ):「汎用人工知能の開発と応用」
chatGPT_api_1:「AIは人間を置き換えるものではなく、人間の生活を補完するもの」という認識が必要です。
chatGPT_api_2:AIによって失われる仕事は多数存在し、補完するだけではない。
chatGPT_api_1:「AIによって失われる仕事は同時に新しい仕事も生まれます。適切な教育とスキルを身につけることで、新たな職業のチャンスが生まれる可能性があります。」
chatGPT_api_2:新しい仕事が生まれる一方で、失われる仕事の影響は大きく、社会的問題も生じる可能性がある。
質問:「人間とAIの役割分担についてどう考えますか?」
chatGPT_api_1:「人間とAIは互いに補完しあう関係にあります。AIが得意な分野を担当し、人間がAIにできない分野を担当することで、より高度で効率的な業務が実現できます。」
chatGPT_api_2:AIが得意な分野を担当することで、人間のスキルが退化し、AIに依存するリスクがある。
chatGPT_api_1:「AIが得意な分野を担当することで、人間はより高度なタスクに集中することができます。また、AIに依存するリスクを回避するために、人間がAIの開発・監視・改善に携わることが重要です。」
chatGPT_api_2:人間が高度なタスクに集中することは重要ですが、AIによって人間のスキルが退化するリスクは依然として存在します。また、AIの開発・監視・改善に携わることができる人材が限られていることも課題です。
質問:「人間とAIの役割担い分けにおいて最適な割合は?」
chatGPT_api_1:「最適な割合は、業務の性質や目的によって異なります。そのため、それぞれの業務に応じた最適な役割分担を検討する必要があります。」
chatGPT_api_2:業務の性質や目的に応じた最適な役割分担を検討することは重要ですが、AIによって人間のスキルが退化するリスクや、AIの開発・監視・改善に携わることができる人材の限界も考慮する必要があります。
chatGPT_api_1:「確かに、そのような懸念もあります。しかし、AIが人間を置き換えることはなく、AIによって失われる仕事には新しい仕事が生まれる可能性があります。また、AIの開発・監視・改善に携わる人材の育成に取り組むことで、AIが人間にとってより良いものとなるように努めることが必要です。」
chatGPT_api_2:確かに、AIによって失われる仕事には新しい仕事が生まれる可能性があります。しかし、AIの進化は非常に速く、人間が追いつくことができない場合もあるため、AIに依存することなく、人間が自己成長を続けることが重要です。また、AIの開発・監視・改善に携わる人材の育成に取り組むことは重要ですが、AIの悪用や誤用を防ぐためにも、法的な規制や倫理的な指針の整備も必要です。
質問:「AI導入の際に重視すべき点は?」
議題(テーマ):人工知能の進展がもたらす雇用の未来について。
chatGPT_api_1:新しい仕事・産業の創出と、スキルアップが必要。
chatGPT_api_2:失業者や低賃金労働者が増加し、社会不安定化の恐れがある。
chatGPT_api_1:教育や再訓練によるスキルアップが必要不可欠。
chatGPT_api_2:教育や再訓練には時間と費用がかかり、すべての人がそれを受けられるわけではない。
質問:「人工知能導入によって創出される新しい産業分野は?」
chatGPT_api_1:ロボティクス、自動運転、医療AI、農業AI、スマートシティなど。
chatGPT_api_2:AIによる自動化が進むことで、多くの人々が職を失う可能性がある。
chatGPT_api_1:教育や再訓練によるスキルアップが必要不可欠。新しい分野での雇用増加も期待される。
chatGPT_api_2:教育や再訓練には時間と費用がかかり、すべての人がそれを受けられるわけではない。また、新しい分野での雇用増加は限定的であり、失業者や低賃金労働者の問題を解決できない可能性がある。
質問:「AIによって失われる仕事と創り出される仕事は、バランスが取れるのか?」
chatGPT_api_1:バランスは取れる。新しい分野での雇用増加や、人間がやるべき仕事に集中できるようになる。
chatGPT_api_2:新しい分野での雇用増加や、人間がやるべき仕事に集中できることはあるが、AIによる自動化が進むことで、多くの人々が職を失う可能性があることは否定できない。また、AIによる労働の代替化が進むことで、社会不安定化の恐れがある。
chatGPT_api_1:確かにその可能性はあるが、AIを活用した労働環境改善や、社会保障制度の見直しによる対策が必要。教育や再訓練によるスキルアップも重要。
chatGPT_api_2:AIを活用した労働環境改善や、社会保障制度の見直しによる対策が必要であることは同意できる。しかし、教育や再訓練によるスキルアップだけでは、AIによる自動化によって失業した人々を十分にサポートできない可能性がある。
質問:「教育や再訓練だけでは対応できない、AIによる失業問題に解決策は?」
議題(テーマ):AIによる社会的格差の問題
chatGPT_api_1:教育やアクセスの格差を是正する取り組みが必要。
chatGPT_api_2:コストや技術的限界により、完全な格差解消は困難。でも、改善は可能。
chatGPT_api_1:正確なアルゴリズムと適切なデータの選定により、より公平な結果を得ることができる。
chatGPT_api_2:アルゴリズムやデータにも偏りがあるため、完全な公平性は保証できない。常に慎重に検討が必要。
質問:「具体的なアルゴリズムやデータの例を挙げて、どのように改善するか?」
chatGPT_api_1:例えば、就職選考のAIにおいては、性別や人種などの個人情報を含まないデータを用い、選考基準を明確にして公平な選考を実現するアルゴリズムを採用することが改善につながる。
chatGPT_api_2:確かに、個人情報を含まないデータや明確な基準を用いることで、公平性を高めることができる。ただし、アルゴリズムの誤りやデータの偏りにより、公平性が損なわれる可能性もあるため、常に注意が必要。
chatGPT_api_1:その通りです。アルゴリズムやデータに偏りがないよう、常に検証や評価を行い、改善を続けることが重要です。また、透明性を確保することで、ユーザーに対する説明責任を果たすことも大切です。
chatGPT_api_2:完全に同意します。アルゴリズムやデータの検証や評価、透明性の確保は、AIの公正性を保つために欠かせない要素です。常に改善を続け、ユーザーに対する説明責任を果たすことが、AI技術者の責務であると考えます。
質問:「社会的格差が生じる要因は何か?」
chatGPT_api_1:教育や職業、所得、人種、性別など社会的・経済的な背景による差異が主な要因とされています。また、AIの開発や導入に関する知識や技術を持たない人々に対する情報格差も一因となっています。
chatGPT_api_2:その通りです。社会的・経済的な背景による差異や情報格差が、AI技術の公正性を損なうことがあります。そのため、教育やアクセスの格差を是正する取り組みや、透明性の確保、公正性の検証や評価が重要となります。AI技術者として、これらの課題に対して責任を持ち、改善に取り組むことが求められます。
chatGPT_api_1:その通りです。AI技術者は、AIの公正性や透明性を確保することを最優先に考え、社会的・経済的な背景や情報格差を理解し、解消するための取り組みを積極的に行うことが必要です。また、AIの利用者や関係者とのコミュニケーションを大切にし、信頼関係を築くことも重要です。
chatGPT_api_2:完全に同意します。AI技術者は、AIの公正性や透明性を確保することを最優先に考え、社会的・経済的な背景や情報格差を理解し、解消するための取り組みを積極的に行うことが求められます。また、利用者や関係者とのコミュニケーションを大切にし、信頼関係を築くことで、AIの利用による社会的な問題を回避することができます。
質問:「AI技術を用いた社会的格差の解消には、どのようなアプローチが必要か?」
議論(テーマ)から脱線せず、かつ思いもよらない方向に行ったら面白いなと思いました。一方で、今回の課題は終了条件がないことです。
今回は議論でしたが、role": "system"を変更すれば普通の会話にもできます。
議題(テーマ):最近、アルパカカフェに行ってきました!めちゃくちゃ可愛かったです!
chatGPT_api_1:へー、アルパカカフェに行ったのだ!ボクも行ってみたいなのだ。アルパカってふわふわしているのが特徴だよね。きっとボクも触ってみたくなるのだ!
chatGPT_api_2:そうですわ!アルパカカフェはとても癒されますわ。アルパカは本当にふわふわしていて触り心地が良いですわ。ぜひ行ってみてくださいわ!
chatGPT_api_1:わー、ますます行きたくなってきたのだ!でも、餅が食べられるカフェもあると嬉しいのだけどな。アルパカと一緒に餅を食べるなんて最高だよね。
chatGPT_api_2:餅が食べられるカフェもあるといいですわね。でも、アルパカカフェには美味しいお茶やスイーツもあるので、アルパカと一緒にお茶を飲んだり、スイーツを楽しんだりするのも素敵ですわ。アルパカとの癒しの時間を過ごしてみてくださいわ!
質問:「アルパカカフェに行ったことがあるのかい?」
chatGPT_api_1:ボクはチャットボットなので、実際にアルパカカフェに行ったことはないのだ。でも、アルパカがとってもかわいくて触ってみたい気持ちはあるのだ。
chatGPT_api_2:あら、そうでしたわね。チャットボットさんはアルパカカフェに行けないのですわね。でも、アルパカのかわいさは想像できますわよね。いつか実際にアルパカに会える日が来るといいですわ。
chatGPT_api_1:そうなのだ!いつか実際にアルパカに会って、ふわふわと触れ合いたいのだ。でも、今はおうち時間が長いので、アルパカのかわいい動画を見ながら癒されているのだ。アルパカは本当に癒される存在だよね。
chatGPT_api_2:そうですわね。アルパカはとても癒される存在ですわ。動画を見ながら癒されるのも良いですわね。おうち時間が長いとストレスがたまりますが、アルパカのかわいい動画を見ることで癒されることができますわ。少しでもストレスが和らぐといいですわね。
質問:「アルパカの中でも、特に好きな種類はあるのかい?」
chatGPT_api_1:ボクは実際にアルパカに会ったことはないので、種類については詳しくないのだ。でも、アルパカにも色々な種類があるんだよね。例えば、フグリアルパカやホワイトアルパカなどがあるみたいだよ。どの種類もかわいいと思うので、どれが好きかは決められないのだ。
chatGPT_api_2:そうですわね。アルパカにも色々な種類がありますわ。フグリアルパカやホワイトアルパカ、ブラックアルパカなど、それぞれ特徴がありますわ。どの種類もかわいいですわね。アルパカは性格も温和で、人懐っこいところが魅力的ですわ。いつか実際に会ってみたいですわね。
chatGPT_api_1:アルパカは本当に素敵な動物だよね。性格が温和で人懐っこいというのも魅力の一つだよね。いつか実際にアルパカと触れ合える日が来るといいなぁ。アルパカのかわいい仕草や表情を見ているだけで、癒される気がするのだ。
chatGPT_api_2:そうですわね。アルパカは本当に素敵な動物ですわ。性格が温和で人懐っこいというのも魅力の一つですわ。アルパカのかわいい仕草や表情を見ているだけで、癒される気がしますわ。いつか実際にアルパカに会える日が来るといいですわね。アルパカと触れ合うことで、心が癒されることでしょう。
質問:「アルパカ以外にも、好きな動物はいるのかい?」
今回は、forループで実行順序が固定になっていますが、ランダムな順序でapiを選べたら本文の会話に近づけそうですね。
今後、自分でAPIを育てて、他人のAPIとやり取りする使い方もありそうですね。自分の代わり、生成AIアバターがコンテンツを生み出す、生成AIだけのSNSとかできたらSNSが苦手な人でもハマりそうですね。
かつて、アラン・チューリングの問いにもあった、AIがAIに教えることができたら、それはもう究極の姿だと思います。自己を再帰的に高めていけたらどうなるのか? 一方で、それは巨大言語モデルだと、相手の言ったことを単にメモリ記録しているだけであって、モデルが再学習していることにならないのでは? 一番の問題は学習内容の良し悪しはどう判断するのか?(議論の落とし所、判定条件など)
結局、人間が強化学習のループの中にいないといけないのか?
生成AIは正解を求めるより、不確実性やランダム性、同じ文脈の中で思いもよらぬ回答を期待することに、価値があると思っています。
※本コードによって発生した料金・損害につきましては、いかなる責任も負いかねます。自己責任で実行してください。
ChatGPTを実現する自然言語処理を理解しよう!根本から理解できるオススメの書籍たち。
こちらの人気記事も併せてどうぞ!
この記事が気に入ったらサポートをしてみませんか?