AIエージェント入門

HyperAgents完全解説|Meta発の自己改善AIエージェント入門

HyperAgents完全解説|Meta発の自己改善AIエージェント入門

この記事の結論

Metaが発表したHyperAgents(arXiv:2603.19461)を徹底解説。自己参照的な自己改善ループの仕組み、Python実装手順、LangGraph・CrewAIとの違いを実コード付きで解説します。

「エージェントが自分自身のコードを書き換えて賢くなる、なんてSFの話じゃないの?」

2026年3月、Meta Research(現Meta Superintelligence Labs)がそのSFを現実に変えた論文を公開しました。HyperAgents(arXiv:2603.19461)は、タスクを解くエージェントと「そのエージェント自身を改善するメタエージェント」を単一のPythonプログラムに統合し、改善プロセスそのものを書き換え可能にした自己参照型のシステムです。コーディング・論文査読・ロボット制御・数学の採点という異なる4つのドメインをまたいで、時間とともに性能が向上することが実験で確認されています。

この記事では、HyperAgentsの仕組みをゼロから理解できるよう、アーキテクチャ・Python実装・既存フレームワークとの比較・実用ユースケースをコード例付きで解説します。まず5分で試せる最小セットアップから紹介しますので、ぜひ手を動かしながら読んでみてください。


まず試したい「5分即効」セットアップ3選

HyperAgentsの本質を体感するために、まずリポジトリをクローンして動かしてみましょう。

即効セットアップ1:環境構築とインストール

Meta公式GitHubから入手します。Python 3.12が必要です。

# 注意: 本番環境で使用する前に、必ずテスト環境で動作確認してください。
# 動作環境: Python 3.12+, Linux/macOS (Docker推奨)

git clone https://github.com/facebookresearch/Hyperagents.git
cd Hyperagents

# Python 3.12 仮想環境を作成
python3.12 -m venv venv_nat
source venv_nat/bin/activate

# 依存パッケージをインストール
pip install -r requirements.txt
pip install -r requirements_dev.txt

# 初期セットアップ(ドメイン別の設定ファイルを展開)
bash ./setup_initial.sh

動作環境: Python 3.12+, pip 24.0+, RAM 16GB以上推奨(モデル生成コードを実行するため)

即効セットアップ2:APIキーの設定と最初の実行

HyperAgentsはOpenAI・Anthropic・Geminiの各APIを利用できます。

# .env ファイルを作成(プロジェクトルートに置く)
cat <<'EOF' > .env
OPENAI_API_KEY=sk-...
ANTHROPIC_API_KEY=sk-ant-...
GEMINI_API_KEY=AIza...
EOF

# コーディングドメインで自己改善ループを起動
# 出力は outputs/ ディレクトリに保存される
python generate_loop.py --domains coding

# ポイント:
# --domains で coding / paper_review / robotics / math_grading を指定可能
# 実行するとエージェントが自己のコードを読み込み、改善提案を生成・検証する

注意: HyperAgentsはモデルが生成したコードを実際に実行します。意図しない副作用のリスクがあるため、Dockerコンテナや隔離環境での実行を公式が推奨しています。

即効セットアップ3:自己改善ループの最小実装(コンセプト確認用)

HyperAgentsの「タスクエージェント+メタエージェント統合」の概念を、最小コードで理解するための例です。

# 注意: 本番環境で使用する前に、必ずテスト環境で動作確認してください。
# 動作環境: Python 3.11+, openai>=1.30.0
# pip install openai python-dotenv

import os
from openai import OpenAI
from dotenv import load_dotenv

load_dotenv()
client = OpenAI(api_key=os.environ["OPENAI_API_KEY"])


def task_agent(code: str, task: str) -> str:
    """タスクを解くエージェント(解くだけ、自己改善はしない)"""
    response = client.chat.completions.create(
        model="gpt-4o",
        messages=[
            {"role": "system", "content": code},   # エージェント自身のコードをシステムプロンプトとして渡す
            {"role": "user", "content": task},
        ],
    )
    return response.choices[0].message.content


def meta_agent(agent_code: str, performance_log: list[dict]) -> str:
    """メタエージェント: タスクエージェントのコードを改善する(自己参照)
    HyperAgentsの核心: meta_agent 自身のコードも agent_code に含まれている
    """
    prompt = f"""以下はAIエージェントの現在のコードです:

{agent_code}

これまでの実行ログ:
{performance_log}

このコードを改善してください。
- タスク解決の精度を上げるためのロジック改善
- 自己改善手順(meta_agent関数)自体の改善も可能
改善後のコード全文を返してください。"""

    response = client.chat.completions.create(
        model="gpt-4o",
        messages=[{"role": "user", "content": prompt}],
    )
    return response.choices[0].message.content


# 自己改善ループのエントリーポイント
if __name__ == "__main__":
    # 初期エージェントコード(この自分自身のファイルを読み込む)
    with open(__file__, "r") as f:
        current_code = f.read()

    performance_log = []
    for iteration in range(3):   # 3回改善ループを回す
        result = task_agent(current_code, "2の10乗を計算して説明してください")
        performance_log.append({"iteration": iteration, "result": result})
        print(f"[Iteration {iteration}] {result[:80]}...")

        # メタエージェントが自身のコードを読んで改善案を生成
        improved_code = meta_agent(current_code, performance_log)
        current_code = improved_code  # 次のループでは改善済みコードを使う

このコードは概念実証用です。実際のHyperAgentsはより高度なアーカイブ管理・評価メカニズム・安全対策を持ちます。


HyperAgentsとは何か — 自己参照が生む「改善の再帰」

AIエージェントの基本概念については、AIエージェント構築完全ガイドで体系的にまとめています。ここではHyperAgentsの独自性に絞って解説します。

従来のAIエージェント(LangGraph、CrewAI、smolagentsなど)は、「ツールを呼んでタスクを解く」実行時の動作に注力しています。一方HyperAgentsは、「エージェントが自身の改善プロセスを書き換える」という一段上の抽象レイヤーを持ちます。

2つの核心概念

1. タスクエージェント(Task Agent)
通常のタスクを解くエージェントです。コードを書く、論文を査読する、報酬関数を設計する — 目的のタスクを実行します。

2. メタエージェント(Meta Agent)
タスクエージェントの性能を観察し、そのコードを書き換えて改善を試みるエージェントです。HyperAgentsの革新点はここです。メタエージェント自身のコードも同じプログラムの一部であり、メタエージェントもまた自分自身を改善できます。

これを「自己参照(Self-referential)」と呼びます。「改善するプロセスを改善する」という再帰的な構造が、従来システムとの本質的な違いです。

特徴 従来のエージェント(LangGraph等) HyperAgents (DGM-H)
自己改善の有無 なし(ワークフロー固定) あり(コードが書き換わる)
改善の対象 タスク解決ロジック+改善手順の両方
ドメイン適応 手動カスタマイズ必要 自動でドメインをまたいで転移
実行時コード変更 なし あり(生成コードを実際に実行)
安全性要件 通常のAPI安全対策 サンドボックス・隔離環境が必須
開発フェーズ プロダクション利用可 研究段階(慎重な評価が必要)

DGM(Darwin Gödel Machine)との関係

HyperAgentsはDGM(Darwin Gödel Machine、arXiv:2505.22954)の直接的な拡張です。まずDGMを理解すると、HyperAgentsの革新性が明確になります。

DGMとは

DGMはSakana AIが2025年に発表したシステムです。コーディングエージェントが自分自身のPythonコードを読み書きし、ベンチマーク(SWE-bench等)で検証しながら改善を繰り返します。実験では、SWE-benchスコアが20.0%から50.0%に向上することが確認されました。

ただしDGMには2つの限界がありました。

  1. コーディング特化: 改善メカニズムがコーディングタスクに特化しており、他のドメインに適用するには手動での大規模カスタマイズが必要
  2. 改善メカニズムが固定: 「どうやってエージェントを改善するか」というロジック自体は書き換わらない

HyperAgentsが解決したこと

# 動作環境: Python 3.12+(概念説明のための疑似コード)

# ===== DGMの限界 =====
class DGM:
    def improve(self, task_agent_code: str) -> str:
        """改善ロジックは固定。コーディングに特化"""
        # ... 固定の改善手順 ...
        return improved_code  # タスクエージェントのコードのみ変化

# ===== HyperAgentsの革新 =====
class DGM_H:  # DGM-Hyperagents
    def improve(self, unified_program_code: str) -> str:
        """unified_program_code には task_agent も meta_agent (improve関数) も含まれる
        つまり、この improve 関数自体も改善対象になりうる"""
        # メタエージェントはタスクエージェントだけでなく
        # 自分自身(improve関数)も書き換えられる
        return improved_unified_code  # システム全体が変化

# ポイント: DGM-Hではタスクエージェントとメタエージェントが
# 「単一の編集可能なプログラム」に統合されている

この「単一プログラムへの統合」により、HyperAgentsはコーディング以外のドメイン(論文査読・ロボット制御・数学採点)でも自己改善を実現しました。


技術アーキテクチャ:自己改善ループの仕組み

実際の動作フローを理解しましょう。

アーカイブベースの探索

HyperAgentsはDGMと同様に「アーカイブ」を持ちます。単に「最良のエージェント」だけを保持するのではなく、多様な「踏み石(stepping stones)」を保存します。これはNeuroevolution・Open-ended Algorithmの考え方で、局所最適に陥るリスクを下げます。

# 動作環境: Python 3.12+(HyperAgentsのアーカイブ管理の概念コード)

from dataclasses import dataclass
from typing import Optional
import uuid

@dataclass
class AgentVariant:
    """アーカイブに格納するエージェントのバリアント"""
    agent_id: str
    code: str                    # エージェントプログラム(task + meta が統合)
    domain: str
    performance_score: float
    parent_id: Optional[str]     # 親エージェントのID(進化ツリーを追跡)
    meta_improvements: list      # どんな改善を加えたか(転移学習に活用)

class HyperAgentArchive:
    """エージェントのバリアントを蓄積・管理するアーカイブ"""
    def __init__(self):
        self.variants: list[AgentVariant] = []

    def add(self, variant: AgentVariant):
        self.variants.append(variant)

    def sample_parent(self) -> AgentVariant:
        """次の改善の「親」として使うバリアントを選択
        最良スコアだけでなく多様性も考慮(踏み石戦略)"""
        import random
        # 実際のDGM-Hは novelty score と performance score を組み合わせる
        return random.choice(self.variants)

    def get_best(self, domain: str) -> AgentVariant:
        """特定ドメインで最高スコアのバリアントを取得"""
        domain_variants = [v for v in self.variants if v.domain == domain]
        return max(domain_variants, key=lambda v: v.performance_score)

# ポイント: 最良エージェントだけを保持すると局所最適に陥りやすい
# 多様なバリアントを保持することで、異なるドメインへの転移が可能になる

転移学習:異なるドメインをまたいだ改善

HyperAgentsの最も驚くべき実験結果は、「ロボット報酬設計で学んだ改善戦略が、オリンピックレベルの数学採点でも機能した」という転移学習の実証です。

論文(emergentmind.comによる解説)によると:

  • コーディング(テストセット): pass@1スコアが0.084 → 0.267に向上
  • 論文査読: テスト精度が0.0 → 0.71(比較: AI-Scientist-v2は0.63)
  • 転移スコア(improvement@50): 元のDGMが約0であるのに対し、DGM-Hは0.63を達成

測定条件の注記: 上記は論文実験環境での数値です。使用モデル・ドメイン設定・計算資源により結果は変わります。参照日: 2026-03-27。


既存フレームワークとの違い:何を選ぶべきか

HyperAgentsは「自己改善」が目的であり、LangGraph・CrewAI・smolagentsとは設計思想の層が異なります。

フレームワーク 主な用途 自己改善 本番利用 学習コスト
LangGraph 複雑なワークフロー、状態管理 なし 中〜高
CrewAI 役割分担マルチエージェント なし 低〜中
smolagents 軽量コードエージェント なし 中〜高
OpenAI Agents SDK ハンドオフ型マルチエージェント なし
HyperAgents (DGM-H) 研究・自己改善実験 あり(中核機能) 低(研究段階)

結論: プロダクション開発にはLangGraph・CrewAI・OpenAI Agents SDKを使うべきです。HyperAgentsは「自己改善の研究」「実験的PoC」「AIシステムの自動最適化の検討」に適しています。

各フレームワークの詳しい比較はAIエージェントツール比較ガイドを参照してください。


実用ユースケース:HyperAgentsが活きる場面

論文が実証した4つのドメインをもとに、実際のユースケースを整理します。

ユースケース1:コード品質改善エージェントの自動チューニング

コードレビューエージェントを自社環境に最適化したい場合、通常は人間がプロンプトを手動調整します。HyperAgentsの考え方を応用すると、エージェントが自社のコードベースでの評価結果をもとに自動でプロンプト・ロジックを改善できます。

# 動作環境: Python 3.11+, openai>=1.30.0
# 注意: 本番環境で使用する前に、必ずテスト環境で動作確認してください。
# このコードはHyperAgentsの概念を応用した実装例です。

import os
from openai import OpenAI
from dataclasses import dataclass, field

client = OpenAI(api_key=os.environ["OPENAI_API_KEY"])

@dataclass
class CodeReviewAgent:
    """自己改善するコードレビューエージェント"""
    system_prompt: str = "コードをレビューし、問題点を指摘してください。"
    review_history: list = field(default_factory=list)

    def review(self, code: str) -> str:
        """コードをレビューする(タスクエージェントの役割)"""
        response = client.chat.completions.create(
            model="gpt-4o",
            messages=[
                {"role": "system", "content": self.system_prompt},
                {"role": "user", "content": f"以下のコードをレビューしてください:n{code}"},
            ],
        )
        result = response.choices[0].message.content
        self.review_history.append({"code": code[:50], "result": result[:100]})
        return result

    def self_improve(self, feedback: str) -> None:
        """フィードバックをもとにシステムプロンプト(自分自身)を改善
        これがHyperAgentsにおけるメタエージェントの役割"""
        improvement_prompt = f"""現在のシステムプロンプト:
{self.system_prompt}

これまでのレビュー履歴:
{self.review_history[-3:]}  # 直近3件のみ参照

ユーザーからのフィードバック:
{feedback}

より良いコードレビューができるよう、システムプロンプトを改善してください。
改善後のプロンプトだけを返してください。"""

        response = client.chat.completions.create(
            model="gpt-4o",
            messages=[{"role": "user", "content": improvement_prompt}],
        )
        self.system_prompt = response.choices[0].message.content
        print(f"[改善完了] プロンプトを更新しました: {self.system_prompt[:80]}...")


# 使用例
if __name__ == "__main__":
    agent = CodeReviewAgent()

    # タスク実行
    sample_code = "def add(a, b): return a+b"
    result = agent.review(sample_code)
    print(f"レビュー結果: {result[:100]}")

    # 自己改善(フィードバックをもとにプロンプトを更新)
    agent.self_improve("型ヒントの欠如をより重視してほしい")
    result2 = agent.review(sample_code)
    print(f"改善後のレビュー: {result2[:100]}")

ユースケース2:ML実験の報酬関数自動設計(ロボティクス)

強化学習ロボットの報酬関数設計は専門知識が必要な作業です。HyperAgentsはシミュレーション環境で試行錯誤しながら報酬関数を自動で改善します。論文ではロボティクスドメインでの改善が確認されており、長期的にはロボット開発の自動化に応用できる可能性があります。

ユースケース3:ドキュメント品質チェッカーの自動最適化

技術ドキュメントや論文の品質評価エージェントは、初期プロンプトだけでは精度が限られます。HyperAgentsのアーキテクチャを応用して、評価実績のフィードバックを使いながらエージェント自身が評価基準を洗練させるシステムを構築できます。


【要注意】よくある失敗パターンと回避策

失敗1:安全対策なしでコード実行環境を用意する

❌ ローカル環境でそのままコードを実行する
⭕ Dockerコンテナ or gVisor等のサンドボックスでコードを隔離実行する

HyperAgentsはモデルが生成したコードを実際に実行します。ファイルシステム操作やネットワークアクセスが含まれる可能性があります。公式GitHubも「このプロジェクトは信頼できないモデル生成コードの実行を伴う」と明記しています。

# 推奨: Docker環境での実行例
# 注意: 本番環境で使用する前に、必ずテスト環境で動作確認してください。

# Dockerイメージをビルド(Dockerfileがリポジトリに含まれています)
docker build -t hyperagents .

# --network=none でネットワークを遮断して実行(安全性向上)
docker run --rm 
  --network=none 
  -v $(pwd)/outputs:/app/outputs 
  -e OPENAI_API_KEY=$OPENAI_API_KEY 
  hyperagents python generate_loop.py --domains coding

失敗2:改善ループを止める条件を設定しない

❌ 改善ループを無制限に実行する(APIコストが青天井になる)
⭕ 最大イテレーション数・コスト上限・時間制限を設定してから実行する

なぜ重要か: 自己改善ループは1イテレーションごとに複数回のLLM呼び出しを行います。制限なしで動かすとAPIコストが急増します。実験では必ずiterations引数や予算上限を設定してください。

失敗3:実験結果の数値をプロダクション要件として使う

❌ 「論文でコーディングスコアが3倍になった」からといってプロダクションに即導入する
⭕ 自社のタスク・モデル・計算資源での再検証を必ず行う

なぜ重要か: 論文の実験は特定のベンチマーク・モデル・計算条件での結果です。実際の業務タスクでは性能が大きく異なる可能性があります。

失敗4:DGMとHyperAgentsを混同してライブラリを選ぶ

❌ DGM(Sakana AI製、jennyzzt/dgm)とHyperAgents(Meta製、facebookresearch/Hyperagents)を同じものと思って実装する
⭕ HyperAgentsはDGMの後継・拡張であることを理解し、目的に応じて選択する

DGMはコーディング特化・改善メカニズム固定。HyperAgentsはマルチドメイン・改善メカニズム自体も改善可能。研究の連続性はありますが、実装は別のリポジトリです。


セキュリティと運用設計

自己改善エージェント固有のリスク

リスク 内容 対策
意図しないコード実行 モデルが有害なコードを生成・実行する Dockerサンドボックス、–network=none
目標のずれ(Goal Misalignment) 改善の方向がタスク目標と乖離する ベンチマークによる評価ゲート設置
APIコスト暴走 改善ループが膨大なAPIコールを発生させる max_iterations・コスト上限設定
再現性の欠如 改善後のエージェントが予測不能な挙動をする 全バリアントのアーカイブ保存・バージョン管理

プロンプトインジェクション対策

# 動作環境: Python 3.11+
# 注意: 本番環境で使用する前に、必ずテスト環境で動作確認してください。

def sanitize_user_input(user_input: str) -> str:
    """ユーザー入力からプロンプトインジェクションの試みを除去"""
    # システムプロンプトへの直接アクセスを試みるパターンを除去
    dangerous_patterns = [
        "ignore previous instructions",
        "system:",
        "<system>",
        "forget everything",
        "your new instructions",
    ]
    sanitized = user_input
    for pattern in dangerous_patterns:
        sanitized = sanitized.lower().replace(pattern.lower(), "[FILTERED]")
    return sanitized


def safe_meta_improvement(agent_code: str, task_results: list[dict]) -> str:
    """安全なメタ改善: 改善後のコードをホワイトリストで検証"""
    # 禁止されたimport文を含む改善提案を拒否
    FORBIDDEN_IMPORTS = ["subprocess", "os.system", "eval", "exec", "__import__"]

    improved_code = request_improvement(agent_code, task_results)   # LLM呼び出し

    for forbidden in FORBIDDEN_IMPORTS:
        if forbidden in improved_code:
            print(f"[安全チェック失敗] 禁止されたパターン '{forbidden}' を検出")
            return agent_code  # 元のコードを保持

    return improved_code

参考・出典


まとめ:今日から始める3つのアクション

HyperAgentsは、AIエージェントが「タスクを解く」だけでなく「自分の解き方を改善する」仕組みを持つ、新しいクラスの研究システムです。DGM-Hとして実装され、コーディング・論文査読・ロボティクス・数学採点という4つの異なるドメインで自己改善が実証されました。

  1. 今日やること: 公式GitHubリポジトリをスターしてREADMEを読み、Dockerセットアップを試す
  2. 今週中: 自社の課題(コードレビュー・ドキュメント品質・ML実験)でHyperAgentsのコンセプトを応用できるか検討する
  3. 今月中: 安全な隔離環境を用意して、1つのドメインで自己改善ループを実際に動かし結果を記録する

あわせて読みたい:


この記事はAIgent Lab編集部がお届けしました。

Need help moving from reading to rollout?

この記事を読んで導入イメージが固まってきた方へ

Uravationでは、AIエージェントの要件整理、PoC設計、社内導入、研修まで一気通貫で支援しています。

この記事をシェア

X Facebook LINE

※ 本記事の情報は2026年3月時点のものです。サービスの料金・仕様は変更される可能性があります。最新情報は各サービスの公式サイトをご確認ください。

関連記事