AIエージェントの設計パターンについて教えてください。特にReActパターンとPlan-and-Executeパターンの違いを知りたいです。
AI
AIエージェントの設計パターンには主要なものがいくつかあります。ご質問のReActとPlan-and-Executeを比較しましょう。
ReAct パターン
Reasoning + Acting の略で、思考と行動を交互に繰り返します。各ステップで「考える -> 行動する -> 観察する」のサイクルを回し、逐次的に問題を解決します。柔軟性が高く、途中で方向転換が容易です。
Plan-and-Execute パターン
最初に全体計画を立て、その後に各ステップを実行します。複雑なタスクでは計画の修正も行います。事前に全体像を把握できるため、リソース効率が良い傾向があります。
主な違い
ReActは「走りながら考える」、Plan-and-Executeは「考えてから走る」アプローチです。単純なタスクにはReAct、複雑な多段階タスクにはPlan-and-Executeが適しています。
コードで実装例を見せてもらえますか?
AI
ReActパターンの簡略化した実装例です:
python
class ReActAgent:
def __init__(self, tools, llm):
self.tools = tools
self.llm = llm
self.history = []
def run(self, query: str) -> str:
# 思考-行動-観察ループ
while not self.is_done():
thought = self.llm.think(
query, self.history
)
action = self.select_tool(thought)
observation = action.execute()
self.history.append({
"thought": thought,
"action": action.name,
"observation": observation
})
return self.synthesize()
Plan-and-Execute パターンはこのようになります:
python
class PlanExecuteAgent:
def run(self, query: str) -> str:
# Step 1: 計画立案
plan = self.llm.create_plan(query)
# Step 2: 各ステップを実行
for step in plan.steps:
result = self.execute(step)
# 必要に応じて計画を修正
plan = self.replan_if_needed(
plan, result
)
return self.final_answer()
両パターンとも、LLMをコアエンジンとして使用しますが、制御フローが根本的に異なります。実際のプロダクションでは、両方を組み合わせたハイブリッドアプローチも有効です。
Model-4 は間違いを犯す可能性があります。重要な情報は確認してください。