Lispエージェント:再帰、ホモイコニシティ、そして100行のエージェントループ
あるエンジニアが25年ぶりにLispを再訪し、AIエージェントのための再帰的エージェントループを100行で構築。モデルがevalを使って自らツールを書き出す。

ある開発者が、大学のAIコースでLispが記号AIの言語として説かれていたのをきっかけに、25年ぶりにLispを再訪した。その成果は、Common Lispで100行の最小限のAIエージェントループ。whileループではなく再帰を使い、Lispのホモイコニシティを活用して、モデルが実行時に自らツールを書き出せるようにした。
コアのエージェントループは8行の再帰関数。メッセージリストをモデルに送り、ツール呼び出しをチェックし、実行し、拡張された履歴で再帰する。フレームワークもステートマシンもなし。単に引数を通じて状態を折り畳む再帰だけだ。
すべてを統べる一つのツール
著者は、ツールのカタログ(ウェブ検索、ファイルI/O、Python実行)を構築する代わりに、エージェントにたった一つのツールを与えた:eval。Lispはホモイコニック(コードとデータが同じ構造を共有する)なので、モデルは任意のLispフォームを文字列として書き出し、エージェントがそれを読み込み、評価し、結果を返す。モデルはこれを使って再帰的にフィボナッチ数を計算し、その場でbrave-search関数を定義し、Brave Search APIからのJSONレスポンスを解析することさえできた。すべて事前に構築されたツールなしで。
これは典型的なエージェント設計パターンを逆転させる。設計時に決められた固定ツールカタログの代わりに、エージェントが実行時に必要なものを判断し、Lispで書き、evalで実体化する。能力は会話の成果物となる。
メモリとしてのシリアライズ
永続化は、メッセージリスト(すでにハッシュテーブルのリスト、実質的にJSON)をディスクにシリアライズし、読み戻すことで処理される。スキーマもマイグレーションもベクターデータベースも不要。エージェントは履歴を呼び出し、再帰し、記憶する。著者はこれが無制限に成長すること(コンテキストウィンドウはいつか限界に達する)を認めつつ、エージェントが自身の過去を要約し、自身の履歴に対して再帰する圧縮ステップを提案している。
この実験はまた、魅力的な特性を明らかにする:スキルは記憶である。brave-search関数は実行中のLispイメージにのみ存在する。プロセスが終了すると関数は消える。しかし、トランスクリプトは残る。新しいセッションでは、エージェントは履歴を再読み込みし、関数をevalで再び実体化する。その能力は、文字通り自分自身に語る物語なのだ。
著者はセキュリティ上の注意点を認めている:ツールとしてのevalは任意のコード実行を意味する。これはサンドボックス環境専用のおもちゃだ。しかし、AIエージェントに対するLispの永続的な関連性を示すデモンストレーションとしては、説得力のあるものだ。
ディスカッション
0 件のコメント
最初のコメントを投稿しましょう。