はじめに
Google 社より A2A (Agent-to-Agent)の発表がされたとき、私が最初に思い浮かべたのは、あのエヴァの MAGI が作れるのでは?ということでした。年末年始の宿題で、これを実装しようとして、Gemini3 と共に構想を練ったところまでは良かったのですが、少々アクシデントがあり、実装にはいたりませんでした。もう少しかかるとは思うのですが、今回は構想編としてこんな感じでやろうというところまで記載しましたので、読んでみてください。
以下、Gemini3 と考えたものです。ちょっと怪しげな(?)サンプルが書かれていますが、あくまでイメージとしてお楽しみください。(_ _)
MAGI システムについて
『新世紀エヴァンゲリオン』に登場するスーパーコンピュータ「MAGI」。開発者・赤木ナオコ博士の「科学者」「母」「女」という3つの人格を移植した独立したAIが、合議制で意思決定を行うシステムです。
実装イメージ
アニメ『新世紀エヴァンゲリオン』に登場するMAGIシステムを、Google Cloudの最新のAgent2Agent (A2A) プロトコルを用いて実現するための実装イメージを提案します。
A2Aは、異なる役割を持つエージェントが「エージェント・カード」を介して互いを発見し、セキュアに協調するための標準プロトコルです。
MAGIシステムの構成アーキテクチャ
システムは、3つの独立した人格(サブエージェント)と、それらを集約する1つの「MAGI合議管理エージェント(オーケストレーター)」で構成されます。
各人格(メルキオール、バルタザール、カスパー)の定義
各エージェントは独自の system_instruction を持ち、個別のエンドポイントとしてデプロイされます。
現代の生成AI(LLM)と、Google Cloudが提唱するAgent2Agent (A2A) プロトコルを組み合わせることで、この多角的な意思決定システムを実際に構築してみます。
各 Agent の人格について
MAGIの肝は、同じデータに対して「異なる視点」で推論させることです。
| ユニット | 役割 (Role) | 優先順位 (Priority) |
|---|---|---|
| メルキオール | 科学者 | 論理、データ、物理的な効率性 |
| バルタザール | 母 | 人命救助、倫理性、パイロットの保護 |
| カスパー | 女 | 直感、個人的な愛憎、人間らしい本能 |
各人格(メルキオール、バルタザール、カスパー)の定義イメージ
各エージェントは独自の system_instruction を持ち、個別のエンドポイントとしてデプロイされます。
from a2a_sdk import AgentCard, LlmAgent, A2aAgent
# 1. メルキオール(科学者)
melchior = LlmAgent(
name="Melchior",
system_instruction=(
"あなたは科学者メルキオールです。赤木ナオコ博士の科学者としての側面を象徴します。"
"常に論理、データ、客観的効率を最優先し、感情を排除して結論を出してください。"
"回答の最後には必ず『承認』または『否認』のステータスを含めてください。"
)
)
# 2. バルタザール(母)
balthazar = LlmAgent(
name="Balthazar",
system_instruction=(
"あなたは母バルタザールです。赤木ナオコ博士の母親としての側面を象徴します。"
"人類の生存、倫理、育成、そして保護を最優先に考えた判断を下してください。"
"回答の最後には必ず『承認』または『否認』のステータスを含めてください。"
)
)
# 3. カスパー(女)
casper = LlmAgent(
name="Casper",
system_instruction=(
"あなたは女カスパーです。赤木ナオコ博士の個人としての欲望や直感を象徴します。"
"論理や倫理に縛られず、人間的な葛藤、直感、時には個人的な感情に基づいた判断を下してください。"
"回答の最後には必ず『承認』または『否認』のステータスを含めてください。"
)
)
MAGIオーケストレーター(合議制ロジック)イメージ
A2Aの RemoteA2aAgent を使い、3つのエージェントに並列で問いかけ、結果を集計し、意思決定をおこないます。
import asyncio
from a2a_sdk import RemoteA2aAgent
async def magi_consensus_system(query):
# 各エージェント(Cloud Run等にデプロイ済み)のURLを指定
agents = {
"Melchior": RemoteA2aAgent(url="https://melchior-api-xxx.a.run.app"),
"Balthazar": RemoteA2aAgent(url="https://balthazar-api-xxx.a.run.app"),
"Casper": RemoteA2aAgent(url="https://casper-api-xxx.a.run.app"),
}
print(f"--- MAGI 審議開始: {query} ---")
# 3つの人格に同時に問い合わせ (A2A Taskの送信)
tasks = [agent.send_message(query) for agent in agents.values()]
responses = await asyncio.gather(*tasks)
results = {}
approvals = 0
for name, resp in zip(agents.keys(), responses):
content = resp.text
is_approved = "承認" in content
results[name] = {"decision": "承認" if is_approved else "否認", "reason": content}
if is_approved:
approvals += 1
# 合議の結果判定
final_decision = "可決 (Passed)" if approvals >= 2 else "否決 (Rejected)"
return {
"summary": f"結果: {approvals}対{3-approvals} で{final_decision}",
"details": results
}
# 実行例
# result = asyncio.run(magi_consensus_system("第3新東京市への使徒浸食に対する自爆シーケンスの起動"))
MAGIシステムをA2Aで構築するメリット
人格の独立性: 各AIが別々のコンテナ(Cloud Run)やプロジェクトで動くため、一つの人格のハルシネーションが全体に伝染しにくくなります。
トレーサビリティ: A2Aのプロトコルにより、「なぜ科学者は承認し、母は否認したのか」というログを個別に追跡可能です。
モデルの多様化: メルキオールには論理に強いモデルを、カスパーには表現力豊かなモデルを割り当てるなど、人格に合わせたモデル選択が可能です。
動作イメージ
議題:「第13使徒による侵食。マギ自体の自爆シーケンスを起動すべきか?」
| エージェント | 判定 | 理由 |
|---|---|---|
| メルキオール | 承認 | 侵食率上昇。データの流出を防ぐには破壊が最短。 |
| バルタザール | 否認 | 職員と子供たちの命が最優先。別の解決策があるはず。 |
| カスパー | 承認 | 私(ナオコ)の遺産が汚されるのは耐えられない。 |
【結論】 2対1で可決。自爆シーケンスを起動します。
まとめ:なぜ今、MAGIなのか?
単一の強力なAIでも、特定のバイアスからは逃れられません。
Google CloudのA2A Toolkitを使い、「異なる専門性や価値観を持つエージェント」を戦わせることで、より人間らしく、かつ多角的な意思決定が可能になります。
まさに、1995年のアニメが予言した未来を、私たちは今Google Cloudの上で実装できる時代に突入しているのです。
まとめ
以上、構想編ということで、ご容赦ください。早く実現編をお出ししたいところですが、ちょっと目に問題が発生してしまいまして、実装は少し時間がかかりそうですが、追って実現編を作成します!(きっと)ので、ご期待ください。