情報科学 › Claude Code の中身 › エージェントループ

エージェントループの模型

定義 3.1(「エージェントループ」§3)

次のものが与えられているとする。

  • モデル MM: メッセージの有限列を受け取り、assistant メッセージを 1 つ返す写像。内容は text ブロックと tool_use ブロックだけからなり、1 つのメッセージの中の tool_use ブロックの id は互いに異なるとする。それ以外の性質は何も仮定しない。
  • 各ツール名 nn に対する実行 execn\mathrm{exec}_n(定義 2.2)。
  • 関門 g:Name×In→{run,refuse}g : \mathrm{Name} \times \mathrm{In} \to \{\mathrm{run}, \mathrm{refuse}\}。呼び出しを実行するか拒否するかを決める写像。
  • 拒否を伝える文字列 yref∈Stry_{\mathrm{ref}} \in \mathrm{Str}。
  • ツール使用ターンの上限 T∈{0,1,2,…}∪{∞}T \in \{0, 1, 2, \ldots\} \cup \{\infty\}。

状態は、メッセージ列 hh、環境 e∈Ee \in E、済んだツール使用ターンの数 tt の組 (h,e,t)(h, e, t) である。初期状態は、利用者のプロンプト pp と環境 e0e_0 に対して ((user,(text(p))), e0, 0)((\mathtt{user}, (\mathsf{text}(p))),\ e_0,\ 0) とする。状態 (h,e,t)(h, e, t) からの 1 段を次のように定める。

  1. a=M(h)a = M(h) を求める(モデルの呼び出し 1 回)。

  2. U(a)U(a) が空なら、完了として停止する。最終のメッセージ列は h⋅ah \cdot a である。

  3. U(a)U(a) が空でなく t=Tt = T なら、ターン上限として停止する。aa のツール呼び出しは実行せず、メッセージ列は hh のままとする。

  4. それ以外のとき、aa の tool_use ブロックを現れる順に use(u1,n1,x1),…,use(uq,nq,xq)\mathsf{use}(u_1, n_1, x_1), \ldots, \mathsf{use}(u_q, n_q, x_q) とし、e(0)=ee^{(0)} = e から順に、j=1,…,qj = 1, \ldots, q について

    • g(nj,xj)=rung(n_j, x_j) = \mathrm{run} なら ((yj,ϵj),e(j))=execnj(xj,e(j−1))((y_j, \epsilon_j), e^{(j)}) = \mathrm{exec}_{n_j}(x_j, e^{(j-1)})、
    • g(nj,xj)=refuseg(n_j, x_j) = \mathrm{refuse} なら (yj,ϵj)=(yref,1)(y_j, \epsilon_j) = (y_{\mathrm{ref}}, 1)、e(j)=e(j−1)e^{(j)} = e^{(j-1)}

    と定める。user メッセージ b=(user,(res(u1,y1,ϵ1),…,res(uq,yq,ϵq),c1,…,cr))b = (\mathtt{user}, (\mathsf{res}(u_1, y_1, \epsilon_1), \ldots, \mathsf{res}(u_q, y_q, \epsilon_q), c_1, \ldots, c_r)) を作る。ここで c1,…,crc_1, \ldots, c_r は 0 個以上の text ブロック(実行中に利用者が送った追加の指示など)である。次の状態は (h⋅a⋅b, e(q), t+1)(h \cdot a \cdot b,\ e^{(q)},\ t + 1) である。

4 の 1 回を 1 ターン(ツール使用ターン)という。

本文で読む(前後の説明と例)→

閉包の状態

定義

定義は閉包の起点です(証明を要しません)。

印の意味: ✓公理まで証明済み ・ △証明あり(閉包未完)・ ※主張のみ。テーマごとの集計は 閉包の状況。

これを使っている定理

証明で明示的に参照している定理は、まだありません。

関連するノック 2 問