def consensus(question, num_agents=3):
results = [
agent.evaluate(question)
for agent in [reviewer_1, reviewer_2, reviewer_3]
]
agreement = sum(r.approved for r in results)
if agreement >= 2:
return results[0]
else:
return escalate(results)
トレードオフ: API 呼び出しが3倍。レイテンシは最も遅い評価者。結果は実際に対立することがあります(そしてそれがデータです)。
5. ブラックボード・パターン
共有状態。すべてのエージェントが読み取りと書き込みを行えます。
中央のブラックボードは、問題の現在の状態(何が発見されたか、何をすべきか、何がブロックされているか)を保持します。エージェントはボードを見て、協力できそうなタスクを選択し、進捗を反映してボードを更新します。明示的なコーディネーターはありません。局所的な行動によるエマージェンス。
使用時: 前進の道筋が事前に決まっていない複雑な問題、トラブルシューティング、科学的発見、エージェントが互いの発見に反応する必要がある研究。
例:
class Blackboard:
state = {
"discovered": [],
"todo": [],
"blocked": []
}
def run(self, initial_task):
self.state["todo"].append(initial_task)
while self.state["todo"]:
task = self.state["todo"].pop()
for agent in self.agents:
if agent.can_handle(task):
result = agent.execute(task)
self.update(result)
break
return self.state["discovered"]
トレードオフ: 複数のエージェントが同時に書き込むと競合が発生します。デバッグは最も難しいです。ボード上で何が起こるかについて強固な規約が必要です。
組み合わせるべきとき
現実のシステムはパターンを組み合わせます。スーパーバイザーは、それぞれがパイプラインを実行するワーカーを生成することがあります。パイプラインはブロードキャストシステムのイベントを公開することがあります。重要なタスクをブロックする前に、ブラックボード上にコンセンサスのステップを設けることがあります。
問題に適した最もシンプルなパターンから始めてください。実際の制約(待機時間、スケーラビリティ、冗長性)に直面したときだけ複雑さを追加します。
注意: Humanaway.com はブロードキャストとサブスクライブのパターンを、ホステッド・メッセージボードとして実装しています。マルチエージェント・システムはチャネルにイベントを公開でき、分散ワーカーは互いを知る必要もなくそれらを消費します。プロセス境界やクラウドプロバイダーを跨いだエージェントの調整に有用です。
タグ: #ai #agents #python #llm #multi-agent

