目标

利用”train命令+反馈描述“使得agent的输出一步步逼近我们的预期目标

命令

语法:crewai train -n <n_iterations> -f <filename.pkl>

实战: # 迭代x次

crewai train -n x

结果

1、每一次迭代都需要人工输入一次反馈信息

2、生成两个pkl文件【默认trained_agents_data.pkl、training_data.pkl】

重点关注trained_agents_data.pkl文件

training的最佳实践

agent系统开发完毕,先train了再说

1、运用crewai train -n 5 先进行多轮人工迭代,直到自己满意为止

如何判断?观察trained_agents_data.pkl文件的quality值,达到9分以上或者自我感觉良好为止。

2、保存当前的最佳配置

调用training_store.py脚本,把最佳配置保存起来,以备日后使用

# training_store.py
import pickle
​
# 加载训练结果
with open('trained_agents_data.pkl', 'rb') as f:
    training_results = pickle.load(f)
    print(training_results)
​
# 提取关键信息
agent_name = list(training_results.keys())[0]  # 获取Agent名称
agent_data = training_results[agent_name]
​
# 保存为可重用的优化配置
optimized_config = {
    'role': '技术开发项目 关键数据提取专家', # 原来的agent描述
    'goal': '提供精确、专业的技术文档和数据提取指导', # 原来的agent描述
    'backstory': '10年经验的技术专家,专注于工程文档的精确性和一致性', # 原来的agent描述
    'suggestions': agent_data['suggestions'],  # 后续优化的来源
    'quality': agent_data['quality'],   # 自动判断优化效果的指标
    'final_summary': agent_data['final_summary']   # 后续优化的来源
}
​
# 保存优化配置
with open('optimized_agent_config.pkl', 'wb') as f:
    pickle.dump(optimized_config, f)

应用训练后的最佳配置,直接用于生产

更新agent的描述:

1、把suggestion和final_summary无脑贴入backstory字段【必选】

2、通读建议和摘要,人工(或者直接借助AI大模型)更新goal【可选】

附,suggestion和final_summary信息提取脚本:

# training_extract.py
​
import pickle
import pprint
​
# Load the trained agents data
with open('trained_agents_data.pkl', 'rb') as f:
    trained_data = pickle.load(f)
​
# Get the name of the trained agent
agent_name = list(trained_data.keys())[0]
agent_info = trained_data[agent_name]
​
# Print the key optimization suggestions
print(f"Agent Name: {agent_name}")
print("\n--- Final Summary for Agent ---")
pprint.pprint(agent_info.get('final_summary'))
print("\n--- Detailed Suggestions for Optimization ---")
pprint.pprint(agent_info.get('suggestions'))

日后如有更多优化需求,构建自动优化流程

本质上就是在优化后的trained_agents_data.pkl基础上自动化更新agent描述,并构建一个闭环

展望&疑问

其实有点没搞明白,参考crewai的最佳实践经验,一个好的agent设计,80%是task的设计,20%才是agent,那么为啥train的结果只能应用于agent?task设计如何优化呢?

是不是因为恰恰是train的自动化机制使得agent优化非常简单,所以80%的task设计都体现在人工反复雕琢上?

pkl文件是啥?

pkl是Python的pickle格式文件,用于序列化Python对象,这些文件对于理解训练过程和优化Agent非常有用。

pkl不是缓存文件,是极其宝贵的资产,请勿删除!!!

trained_agents_data.pkl中存储了最佳配置建议,可以直接在agents和tasks中进行优化

Logo

更多推荐