Self-Refining_Agent_Maker (SRAM) は、モンテカルロ木探索(MCTS)を活用して、AIエージェントの「システムプロンプト」と「実行ツール(Pythonコード)」を自律的に進化させる最適化フレームワークです。
単なるプロンプトの調整にとどまらず、エージェントが利用するツール(Python関数)の実装そのものを「変異(Mutation)」させ、特定のタスクに対して最高精度を発揮するエージェント設計図(Blueprint)を自動生成します。
本プロジェクトは、**「教師データ(入力と期待される回答のペア)を整備し、それを高い精度で再現できる専用エージェントを開発すること」**を目的としています。 ユーザーが正解例を提示すれば、SRAMがその背後にある論理構造(プロンプト)と必要な計算処理(ツールコード)を自動で組み上げます。
- MCTS(モンテカルロ木探索): UCTスコアに基づき、有望なプロンプトとツールの組み合わせを効率的に探索。
- コード・ミューテーション: 失敗ログを分析し、LLMが自らツールのPythonコードを修正・拡張。
- 多目的最適化: 精度(Accuracy)に加え、消費トークン量に応じたコストペナルティを課すことで、高精度かつ低コストなエージェントを追求。
- 自動評価システム:
StrictJudgeモジュールが、QAエンジニアのようにエージェントの回答を厳格にスコアリング(0.0〜1.0)。 - 進捗の可視化: イテレーションごとの精度向上グラフや、プロンプトの進化ログ(Markdown)を自動出力。
-
プラットフォーム: Google Colab での稼働を確認しています(
nest_asyncio対応済み)。 -
推奨モデル: OpenAI GPT-4o
-
プロンプトの構造化能力、および複雑なコード変異(Mutation)を正確に行うため、GPT-4oの使用を前提として設計されています。
-
必要なライブラリ:
openai,pandas,pydantic,matplotlib,nest_asyncio
以下のように、タスクの説明と、その正解データとなる DataFrame を用意します。
task = "会議の要約から案件の『ステージ』と『成約確度』を判定してください。"
data = {
"入力": ["初回面談完了。来週デモ実施予定。予算は未確認。", "契約締結済み。"],
"期待回答": [
'{"stage": "ニーズ発掘", "probability": 0.2}',
'{"stage": "受注", "probability": 1.0}'
]
}
df = pd.DataFrame(data)MCTSArchitect を初期化し、最適化ループを開始します。
architect = MCTSArchitect(task, df)
asyncio.run(architect.run(iterations=5)) # 任意のイテレーション回数を指定実行完了後、agent_result_[timestamp] フォルダに以下の成果物が生成されます。
MainPrompt.md: 最適化されたシステムプロンプト。tools.py: 自動生成・修正された実行ツール群。evolution_process.md: 進化の過程とフィードバックの記録。score_history.png: スコアの推移グラフ。
SRAMは、AIエージェントの自律構成に関する以下の最新研究(arXiv)の知見を統合して開発されました。
- A2Flow (2025): : Automating Agentic Workflow Generation via Self-Adaptive Abstraction Operators
- JudgeFlow (2026): JudgeFlow: Agentic Workflow Optimization via Block Judge
- PromptAgent (2023): PromptAgent: Strategic Planning with Language Models enables Expert-level Prompt Optimization
- AFlow (2024): AFlow: Automating Agentic Workflow Generation
本プロジェクトは CC0 1.0 Universal ライセンスの下で公開されています。
- 著作権の放棄: 開発者は本ソフトウェアに関する著作権および隣接する一切の権利を放棄しています。
- 商用利用・改変・再配布: 自由に行っていただけます。
- クレジット表記: 不要です(もし記載いただければ励みになりますが、強制ではありません)。
「優れたAIエージェントを、誰もが自律的に生み出せる世界」のために、このコードを自由に活用・破壊・再構築してください。
本ツールはツールの実行に exec() および eval() を使用しています。信頼できない入力を処理させる場合は、必ずサンドボックス環境で実行してください。本ソフトウェアの使用によって生じた直接的または間接的な損害について、開発者は一切の責任を負いません。