Agent能自己“復盤”和“進化”,這個開源框架牛了!
我們一起分享 Agent Infra,一個好的 Infra 已經可以讓Agent自動進化了。
然后,我去搜索了一下相關的開源框架,然后還真找到了一個。 仔細研究了一下原理,今天給家人們分享一個自我進化的智能體,到底是怎么做出來的?

什么是自進化AI?(Self-Evolving AI)
傳統的Agent工作流,本質上是一個固定的程序。我們預先設定好Prompt、工具和流程,然后期望它能在特定任務上表現良好。
自進化AI的核心思想,是把Agent從一個固定的工具,變成一個動態的生命體。
它擁有一個核心的反饋循環:執行 -> 評估 -> 進化。
簡單來說,它不僅會執行,還會復盤:
像普通Agent一樣,完成你給定的任務;
完成后,一個內置的評估器會根據預設的標準(比如代碼生成的準確率、問答的F1分數等)給它的表現打分。
如果分數不理想,一個優化器就會啟動,分析問題出在哪里,然后自動修改它自己的Prompt、甚至是整個工作流的結構,生成一個進化版的自己,然后再去嘗試,直到性能達標。
那效果怎么樣呢?大佬們搞了個實驗:他們把社區里兩個已有的開源多智能體框架(Open Deep Research 和 OWL)拿過來,只用EvoAgentX的優化器去優化它們的Prompt,然后放到更難的GAIA基準上測試。
結果是,僅通過自動化的Prompt優化,這兩個系統的性能都得到了明顯的提升。

到底如何做到自我進化?
進化的核心是幾個優化器:
SEW優化器、 TextGrad優化器、 AFlow優化器、MiPro優化器:多提示優化器
接下來我嘗試用盡量盡量簡單的方式來講清楚他們的差異和原理。 當然再往下滑會有具體的代碼原理示例。
TextGrad
用基于梯度的方法來優化Prompt。
在一次任務執行后,它會讓大模型反饋出輸入指令中每個部分對最終結果的影響力權重。
- 如果某個詞的權重是負的,說明它很可能誤導了模型。
- 如果某個詞的權重是正的,說明它對得到正確答案至關重要。
然后針對性地進行修改,不斷迭代,直到找到一個最優的表達。
SEW
如果說TextGrad是優化Prompt,那SEW就是優化Workflow。
SEW 模仿進化論,物競天擇,適者生存。
比如說,一個工作流( Agent A -> Agent B -> Agent C)。
然后,對這個序列進行變異操作,例如:
- 改變順序:試試 Agent A -> Agent C -> Agent B 會不會更好?
- 增加成員:在A和B之間插入一個新的 Agent D 會不會更好?
- 刪除成員:去掉 Agent C 會不會更高效?
- 替換成員:把 Agent B 換成能力更強的 Agent B_plus 會不會更好?
經過一輪輪的變異和優勝劣汰的評估,SEW 最終會產出一個全新的、結構上可能完全不同的工作流定義。
AFlow
相比于SEW,AFlow 的思路更聚焦,它接受我們定義的工作流結構,但認為在執行這個流程時,可以有更聰明的策略。
AFlow 把工作流的執行過程看作一個決策樹。在每一步,它都會面臨一個選擇:接下來應該調用哪個Agent?
它使用蒙特卡洛樹搜索,來預演不同的執行路徑,從而找到通往最終目標的最優路徑。
例如,一個復雜任務可能不需要嚴格按照 A -> B -> C 的順序,也許 A -> C 就直接解決了,或者 A -> B -> A 這樣回頭調用一次A效率更高。
AFlow 就是要找出這個最高效的執行路徑。
MIPRO
這是一種與模型無關的迭代提示優化方法,它不關心模型內部是怎么想的,只看最終輸出的結果,然后通過黑箱評估和自適應重排序來不斷猜出更好的提示。
不斷搖獎,拼最好的一個prompt。
以 SEW 優化器為例,簡單看看具體邏輯
應用流程如下,類似于Pytorch訓練模型一樣:
from evoagentx.optimizers import SEWOptimizer
from evoagentx.benchmark import Benchmark
# 創建優化器
optimizer = SEWOptimizer(
graph=workflow_graph,
evaluator=evaluator,
max_steps=10
)
# 開始自動進化
optimizer.optimize(dataset=benchmark_dataset)進一步內部來看,評估 -> 新的結構/提示詞 -> 重新評估
# 1. 評估當前性能
metrics = self.evaluate(dataset)
# 2. 生成新的結構或提示詞
if self.optimize_mode in ["all", "structure"]:
graph = self._wfg_structure_optimization_step(graph)
if self.optimize_mode in ["all", "prompt"]:
graph = self._wfg_prompt_optimization_step(graph)
# 3. 重新評估并選擇最優
new_metrics = self.evaluate(dataset, graph=graph)
if new_metrics["score"] > best_score:
best_graph = graph在進一步,其實是通過LLM理解整個工作流的目標和結構,然后為每個任務生成更精確、更有效的提示詞。
# 遍歷工作流中的每個任務
for i, task in enumerate(graph_info["tasks"]):
original_prompt = task["prompt"] # 獲取原始提示詞
# 構建優化提示詞,包含:
# 1. 任務描述
# 2. 整個工作流步驟
# 3. 當前任務的原始指令
optimization_prompt = "Task Description: " + task_description + "\n\nWorkflow Steps:\n" + graph_repr + f"\n\nINSTRUCTION for the {i+1}-th task:\n\"\"\"\n" + original_prompt + "\n\"\"\""
# 添加優化指令
optimization_prompt += f"\n\nGiven the above information, please refine the instruction for the {i+1}-th task.\n"
optimization_prompt += r"Note that you should always use bracket (e.g. `{input_name}`) to wrap the inputs of the tasks in your refined instruction.\n"
optimization_prompt += "Only output the refined instruction and DON'T include any other text!"
# 使用提示詞繁殖器生成新的優化提示詞
new_prompt = self._prompt_breeder.generate_prompt(task_descriptinotallow=task_description, prompt=optimization_prompt, order=self.order)
# 更新任務提示詞
graph_info["tasks"][i]["prompt"] = new_prompt最后
今天的內容有一點點偏技術,自動進化的本質是,讓我們可以突破靜態的 prompt 或 Workflow,轉而進入一個自我進化的智能體生態。
在這個生態中,AI 智能體能夠被構建、評測,并通過迭代反饋循環不斷優化——就像軟件需要持續測試和改進一樣。
EvoAgentX 是一個開源框架,項目在這里:https://github.com/EvoAgentX/EvoAgentX/blob/main/README-zh.md
本文轉載自?????探索AGI?????,作者:獼猴桃

















