コラム

CuspAI解剖|分子探索AIのアーキテクチャ

CuspAI解剖|分子探索AIのアーキテクチャ

この記事の結論

CuspAIの分子探索AI。生成モデル・デジタルツイン・エージェント連携の仕組みを解説。

「分子の宇宙を検索する」——CuspAIのCTO兼共同創業者、マックス・ウェリング教授はこう表現する。地球上に存在しうる分子の数は10の60乗とも言われる。人間の研究者がその空間を手で探索するのは、砂浜から特定の砂粒を探すようなものだ。

CuspAIはAIエージェントを使ってこの探索を自動化しようとしている。2025年9月にシリーズAで1億ドルを調達し(共同出資: New Enterprise Associates、Temasek。NVIDIA Venturesも参加)、Hyundai・Meta・Kemiraとの契約も発表。「材料のオンデマンド時代」を目指すディープテック企業の内側を解剖する。

AIエージェントの設計パターン全般についてはAIエージェント構築完全ガイド、科学的探索エージェントのオブザーバビリティについてはAIエージェントのオブザーバビリティ設計も参照してほしい。

CuspAIが解こうとしている問題の本質

新材料の開発は、AIが登場するまで「試して失敗する」を繰り返すプロセスだった。半導体用の絶縁材料、リチウムイオン電池の電解質、医薬品の候補化合物——いずれも、実験室で物質を合成し、特性を測定し、改良する。このサイクルは数年から数十年かかることも珍しくない。

ウェリングはポッドキャスト「Latent Space」でこう述べている:「材料科学は技術進歩の根本的なボトルネックだ。より良いバッテリー、より高性能な半導体、より安全な薬——すべては材料の突破口にかかっている。」

CuspAIのプラットフォームはこのサイクルを逆転させる。「欲しい特性」を指定すると、AIが合成可能な候補分子を生成し、従来比最大10倍の速さで絞り込む。

プラットフォームの3層アーキテクチャ

CuspAIのシステムは3つの主要コンポーネントで構成されている。

技術 役割
生成モデル層 化学基盤モデル(Schrodinger bridge等) 候補分子を化学空間から生成・提案
マルチスケールデジタルツイン 量子化学シミュレーション + 深層学習 候補を段階的にフィルタリング(安価→高精度)
エージェントオーケストレーション AIエージェント群 文献検索、実験提案、ワークフロー調整

この3層が連動し、「生成→評価→実験→モデル更新」のループを自律的に回す。

エージェントオーケストレーションの具体的な動き

CuspAIが「エージェント的アプローチ」と呼ぶ部分は、複数の専門AIエージェントが協調して動作する仕組みだ。

以下は公開情報から再構成した動作フロー(概念モデル)だ。実際の実装は非公開だが、ウェリングのポッドキャスト発言と公式ブログをもとに構成している:


# CuspAIのエージェントアーキテクチャ(概念コード — 実際の実装は非公開)
# 事例区分: 想定シナリオ
# 以下はCuspAIの公開情報をもとに構成した典型的な材料探索エージェントのイメージです。

class MaterialsDiscoveryAgent:
    """材料探索エージェントのオーケストレーター"""

    def __init__(self):
        self.literature_agent = LiteratureSearchAgent()  # 文献検索エージェント
        self.generative_model = ChemistryFoundationModel()  # 生成モデル
        self.digital_twin = MultiScaleSimulator()  # デジタルツイン(シミュレーター)
        self.experiment_agent = ExperimentSuggestionAgent()  # 実験提案エージェント

    def discover(self, target_properties: dict) -> list:
        """
        target_properties: {"conductivity": ">1000 S/m", "stability": ">200°C", ...}
        """
        # Step 1: 文献からの既知知識の収集
        prior_knowledge = self.literature_agent.search(target_properties)

        # Step 2: 候補分子の生成(生成モデル)
        candidates = self.generative_model.generate(
            target_properties=target_properties,
            constraints=prior_knowledge["synthesis_constraints"],
            n_candidates=1000
        )

        # Step 3: 段階的フィルタリング(デジタルツイン)
        # 安価な計算(DFT)から高精度計算(分子動力学)へ
        filtered = self.digital_twin.screen(
            candidates=candidates,
            stages=["fast_screen", "dft", "molecular_dynamics"],
            threshold_per_stage=[0.1, 0.05, 0.01]  # 各段階で絞り込み
        )

        # Step 4: 実験候補の提案(ヒューマン・イン・ザ・ループ)
        experiments = self.experiment_agent.suggest(
            promising_candidates=filtered,
            resource_constraints={"budget": "medium", "timeline": "4_weeks"}
        )

        return experiments

ウェリングが強調するのは「human-in-the-loop」だ。完全自律を目指すのではなく、AIが探索を加速し、科学者が最終判断を下す。CuspAIはこのバランスを段階的に自動化していく方針をとっている。

「段階的フィルタリング」パターンをコードで理解する

CuspAIのマルチスケールデジタルツインが採用している「段階的フィルタリング」は、自前のAIエージェントにも応用できる設計パターンだ。高コストな評価を後回しにして、まず安価な評価で候補を絞り込む。


# 段階的フィルタリングのエージェント設計パターン
# (CuspAIのアーキテクチャから着想を得た汎用実装例)
# 注意: 本番環境で使用する前に、必ずテスト環境で動作確認してください。

from dataclasses import dataclass, field
from typing import Callable, Any

@dataclass
class FilterStage:
    """フィルタリングの各ステージ定義"""
    name: str
    evaluator: Callable        # 評価関数(安価→高精度の順)
    threshold: float           # この割合を通過させる(例: 0.1 = 上位10%を通す)
    cost: str                  # 'cheap' | 'medium' | 'expensive'

@dataclass
class Candidate:
    score: float = 0.0
    metadata: dict = field(default_factory=dict)
    data: Any = None

class ProgressiveFilterPipeline:
    """
    段階的フィルタリングパイプライン
    安価な評価で大量候補を絞り込み、高精度評価は最終候補のみに適用する
    """
    def __init__(self, stages: list[FilterStage]):
        self.stages = sorted(stages, key=lambda s: {'cheap':0,'medium':1,'expensive':2}[s.cost])

    def run(self, candidates: list[Candidate]) -> list[Candidate]:
        current = candidates
        print(f"初期候補数: {len(current)}")

        for stage in self.stages:
            # 評価実行
            for c in current:
                c.score = stage.evaluator(c.data)

            # 上位threshold割合を通過させる
            current.sort(key=lambda c: c.score, reverse=True)
            cutoff = max(1, int(len(current) * stage.threshold))
            current = current[:cutoff]
            print(f"{stage.name}({stage.cost})後: {len(current)}件")

        return current

# 使用例
def fast_heuristic(data):
    """安価な評価(例: ルールベースのスコアリング)"""
    return sum(1 for c in str(data) if c.isalpha()) / max(len(str(data)), 1)

def medium_evaluation(data):
    """中コスト評価(例: 軽量モデルによるスコアリング)"""
    import random; return random.uniform(0, 1)  # 実装例

pipeline = ProgressiveFilterPipeline([
    FilterStage("高速スクリーニング", fast_heuristic, threshold=0.1, cost="cheap"),
    FilterStage("中精度評価",         medium_evaluation, threshold=0.2, cost="medium"),
])

# 1000件の候補から最終20件程度に絞り込む
candidates = [Candidate(data=f"candidate_{i}") for i in range(1000)]
final = pipeline.run(candidates)
print(f"最終候補: {len(final)}件")

動作環境: Python 3.10+(標準ライブラリのみ使用)
ポイント: CuspAIの場合、安価な評価はDFT(密度汎関数理論)の簡易版、高精度評価は分子動力学シミュレーションに相当する。コストと精度のトレードオフを段階設計で最適化する発想は、LLMエージェントのRAGやリランキング設計にも直接応用できる。

Schrodinger Bridgeという数学的基盤

CuspAIの生成モデルの核心には「Schrodinger Bridge」と呼ばれる数学的フレームワークがある。これは確率論の概念で、ある分子分布から別の分子分布へ最適な確率的パスを見つける手法だ。

簡単に言えば、「今ある分子」と「欲しい特性をもつ分子」の間の最短経路を確率的に探索する。従来の拡散モデルが「ランダムノイズから目標分布」へのマッピングを学ぶのに対し、Schrodinger Bridgeは「実際の分子分布から目標分布」へのより直接的なパスを学習できる。

これが「合成可能な候補」を重点的に生成できる理由のひとつだ。生成した分子が実験室で作れないものばかりでは意味がないため、合成可能性の制約を生成プロセスに組み込んでいる。

ヒューマン・イン・ザ・ループの実装パターン

CuspAIが強調する「段階的な自動化」は、汎用AIエージェント設計にも応用できる。完全自律から始めるのではなく、まず人間が判断ポイントを持ち、徐々にエージェントに委ねていく。


# ヒューマン・イン・ザ・ループ付きエージェントのシンプルな実装
# 注意: 本番環境で使用する前に、必ずテスト環境で動作確認してください。

from enum import Enum

class AutonomyLevel(Enum):
    MANUAL = "manual"         # 全て人間が判断
    SUGGEST = "suggest"       # AIが提案、人間が承認
    AUTO_WITH_REVIEW = "auto_with_review"  # AI実行、事後レビュー
    FULL_AUTO = "full_auto"   # 完全自動

class HumanInTheLoopAgent:
    """
    自律度レベルを設定できるエージェント
    CuspAIの「まず手動、徐々に自動化」戦略を実装したもの
    """
    def __init__(self, autonomy_level: AutonomyLevel = AutonomyLevel.SUGGEST):
        self.autonomy_level = autonomy_level
        self.action_log = []

    def propose_action(self, context: dict) -> dict:
        """エージェントが次のアクションを提案する"""
        # 実際の実装ではLLMが判断
        return {
            "action": "run_simulation",
            "parameters": {"method": "dft", "target": context.get("target")},
            "confidence": 0.85,
            "reasoning": "高速スクリーニングで上位候補。DFTで詳細評価を推奨"
        }

    def execute(self, context: dict) -> str:
        proposal = self.propose_action(context)

        if self.autonomy_level == AutonomyLevel.MANUAL:
            # 提案のみ、実行しない
            return f"提案: {proposal['action']} (実行には人間の承認が必要)"

        elif self.autonomy_level == AutonomyLevel.SUGGEST:
            # 人間に承認を求める
            print(f"提案: {proposal['action']}")
            print(f"理由: {proposal['reasoning']}")
            print(f"信頼度: {proposal['confidence']:.0%}")
            approval = input("承認しますか?(y/n): ")
            if approval.lower() != 'y':
                return "キャンセルされました"

        elif self.autonomy_level == AutonomyLevel.AUTO_WITH_REVIEW:
            # 自動実行、ログ記録
            self.action_log.append(proposal)
            print(f"自動実行: {proposal['action']} (後でレビューしてください)")

        # アクション実行
        result = self._execute_action(proposal)
        return result

    def _execute_action(self, proposal: dict) -> str:
        # 実際のアクション実行ロジック
        return f"完了: {proposal['action']}"

# 使用例:段階的な自律化
agent = HumanInTheLoopAgent(autonomy_level=AutonomyLevel.SUGGEST)
result = agent.execute({"target": "battery_electrolyte_candidate_42"})

動作環境: Python 3.10+(標準ライブラリのみ)
ポイント: 信頼度スコアが閾値を超えた場合のみ自動実行する、という条件付き自動化への拡張も容易だ。

「AIエージェントによる科学的発見」の現在地と限界

CuspAIの取り組みは印象的だが、正直に限界も書いておく必要がある。

まず、「10倍高速化」という数字は特定の条件下での比較だ。材料探索全体の時間は、実験室での合成・測定・規制承認も含むため、実際の製品化サイクルが10倍速くなるわけではない。AIが貢献できるのはあくまでも候補探索フェーズだ。

また、AIが提案した候補が実際に機能するかどうかは、まだ実験で確認されなければならない。現時点のCuspAIは、Hyundai・Meta・Kemiraとの契約を発表しているが、具体的な材料が量産段階に入ったという公開情報は見当たらない。深層学習モデルの予測と現実の実験結果の間には、まだ埋まりきっていないギャップがある。

それでも、このアプローチが重要なのは間違いない。CuspAIはGeoffrey Hinton教授やYann LeCun教授をアドバイザーに迎え、機械学習の第一線の知見を材料科学に注ぎ込んでいる。NVIDIAが投資家に名を連ねている点も、計算インフラへのアクセスという観点で意味深だ。

AIエージェント開発者が得られる示唆

CuspAIのアーキテクチャは、科学的探索に限らず、一般のAIエージェント設計にも学べる点が多い。

第一に、「段階的フィルタリング」の考え方。高コストな評価(精密シミュレーション)を全候補に適用するのではなく、安価な評価で絞り込んでから精密評価を行う。これはRAGシステムでの再ランキング、候補生成→評価→絞り込みのパターンと同じ発想だ。

第二に、「ヒューマン・イン・ザ・ループからの段階的自動化」。CuspAIはまず人間が手動でワークフローを組み、次に部品を順次自動化していく。AIエージェント導入の王道パターンであり、完全自動化から始めようとして失敗するよりも、はるかにリスクが低い。

第三に、「ドメイン特化基盤モデルの価値」。汎用LLMに材料科学をやらせるよりも、量子化学の知識を学習した専用モデルを使う方がはるかに精度が高い。エージェントを設計する際、汎用モデルで無理やり解こうとする前に、ドメイン特化モデルの存在を調べる価値がある。

参考・出典


AIエージェントを活用したシステム設計・開発支援のご相談は株式会社Uravation(お問い合わせ)からお気軽にどうぞ。

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

Need help moving from reading to rollout?

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

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

この記事をシェア

X Facebook LINE

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

関連記事