Mímisbrunnr知恵の泉

← MLOps 一覧

🎓 レベル:発展 | 重要度:B(推奨)

📎 前提:LLMアプリの構成(プロンプト・推論・オーケストレーション) | 関連:ツール使用とエージェント(機械学習)

⚠️ 要最新確認:エージェント技術・フレームワークは最も変化が速い領域。具体名は執筆時点の例。

要点(BLUF)

1. エージェントのループ

flowchart LR
  G["ゴール"] --> OBS["観察:現在の状態"]
  OBS --> THINK["思考:次の一手を決める(LLM)"]
  THINK --> ACT["行動:ツールを実行"]
  ACT --> OBS
  THINK -->|"ゴール達成と判断"| DONE["完了"]
  ACT -.->|"上限超過で打ち切り"| STOP["強制終了"]

各ステップで LLM が「次に何をするか」を決め、ツール(検索・計算・API 呼び出し)を実行し、結果を観察してまた考える。この自律ループが強力さと危うさの両方を生みます。

2. ツール実行の安全な制御

エージェントは外部に副作用を及ぼせる(メール送信・DB 更新・課金)ので、制御がないと危険です。

リスク対策
無限ループ・暴走最大ステップ数・タイムアウトで打ち切る
危険な操作ツールごとの権限・許可リスト、人間の承認ゲート
コスト爆発ステップ数・トークン上限(LLMの評価・ガードレール・コスト管理
副作用の取り消し不能破壊的操作はドライラン・確認を挟む

3. トラジェクトリで評価する

通常の ML は「入力→出力」を評価しますが、エージェントは到達までの軌跡を評価します:

4. 動く最小例:エージェントのトラジェクトリを記録・評価する

LLM もツールも擬似化し、エージェント運用の核である「軌跡の記録と評価」を最小化します。

class AgentTracer:
    def __init__(self, max_steps=6):
        self.steps = []
        self.max_steps = max_steps

    def log_step(self, thought, tool, result):
        self.steps.append({"thought": thought, "tool": tool, "result": result})

    def evaluate(self, goal_reached):
        n = len(self.steps)
        tools_used = [s["tool"] for s in self.steps]
        return {
            "success": goal_reached,
            "n_steps": n,
            "within_budget": n <= self.max_steps,
            "tools_used": tools_used,
            "unique_tools": len(set(tools_used)),
            "looping": len(tools_used) != len(set(tools_used)) and not goal_reached,
        }

# 擬似エージェント実行:検索 -> 計算 -> 回答 でゴール到達
tracer = AgentTracer(max_steps=6)
tracer.log_step("情報が必要", "search", "MLOpsの定義を取得")
tracer.log_step("数値を計算", "calculator", "成熟度スコア=5/7")
tracer.log_step("回答をまとめる", "finish", "回答生成")
report = tracer.evaluate(goal_reached=True)

print(f"成功        : {report['success']}")
print(f"ステップ数  : {report['n_steps']}(上限内: {report['within_budget']})")
print(f"使用ツール  : {report['tools_used']}")
print(f"ループ検知  : {report['looping']}")

出力:

成功        : True
ステップ数  : 3(上限内: True)
使用ツール  : ['search', 'calculator', 'finish']
ループ検知  : False

出力の意味:エージェントが3ステップ(検索→計算→回答)でゴールに到達し、ステップ上限内で、ツールの重複もないクリーンな軌跡だったと評価できました。単発の最終回答だけでなく、「どう辿り着いたか」を記録・評価するのがエージェント運用の核です。もしステップ数が上限に張り付いたり、同じツールを無駄に繰り返していれば(looping=True)、ゴールに着いても運用上は問題ありとして調査します。実運用ではこのトレースを可観測性基盤に集約します(要最新確認)。

5. 運用の勘所

なぜそうするのか

エージェントを「軌跡で評価し、ツールを厳しく制御する」のは、自律性が価値と危険の両方の源泉だからです。エージェントは自分で手順を決められるから強力ですが、同じ理由で予測不能に暴走し、外部に取り返しのつかない副作用を及ぼしえます。最終出力だけ見ても「たまたま当たった」のか「健全に解いた」のか区別できません。だから軌跡を記録して過程の健全性を評価し、ツール実行に上限・権限・承認という制御を課す——自律性を活かしつつ事故を防ぐ、という運用設計になります。

⚠️ よくある落とし穴

対応 lab

関連ノート