概述
CrewAI 中的训练功能允许您使用命令行界面(CLI)来训练您的 AI 智能体。通过运行命令crewai train -n <n_iterations>,您可以指定训练过程的迭代次数。 在训练期间,CrewAI 利用技术结合人类反馈来优化您的智能体的性能。这有助于智能体提高其理解、决策和解决问题的能力。使用 CLI 训练您的 Crew
要使用训练功能,请按照以下步骤操作- 打开您的终端或命令提示符。
- 导航到您的 CrewAI 项目所在的目录。
- 运行以下命令
将
<n_iterations> 替换为您期望的训练迭代次数,并将 <filename> 替换为以 .pkl 结尾的相应文件名。如果您省略
-f,输出将默认为当前工作目录下的 trained_agents_data.pkl。您可以传递一个绝对路径来控制文件的写入位置。以编程方式训练您的 Crew
要以编程方式训练您的 Crew,请使用以下步骤- 定义训练的迭代次数。
- 为训练过程指定输入参数。
- 在 try-except 块中执行训练命令以处理潜在的错误。
代码
智能体如何使用训练数据
CrewAI 以两种方式使用训练产物:在训练期间融入您的人类反馈,以及在训练后用整合的建议来指导智能体。训练数据流
在训练运行期间
- 在每次迭代中,系统会为每个智能体记录
initial_output:智能体的第一个答案human_feedback:您在被提示时提供的内联反馈improved_output:智能体在收到反馈后的后续答案
- 这些数据存储在一个名为
training_data.pkl的工作文件中,以智能体的内部 ID 和迭代次数为键。 - 在训练进行时,智能体会自动将您之前的人类反馈附加到其提示中,以便在训练会话的后续尝试中强制执行这些指令。训练是交互式的:任务设置
human_input = true,因此在非交互式环境中运行将会因等待用户输入而阻塞。
训练完成后
- 当
train(...)完成时,CrewAI 会评估每个智能体收集到的训练数据,并生成一个包含以下内容的整合结果suggestions:从您的反馈和初始/改进输出之间的差异中提炼出的清晰、可操作的指令quality:一个 0–10 的分数,用于衡量改进程度final_summary:为未来任务准备的一套分步行动项
- 这些整合结果会保存到您传递给
train(...)的文件名中(通过 CLI 默认为trained_agents_data.pkl)。条目以智能体的role(角色)为键,以便它们可以在不同会话中应用。 - 在正常的(非训练)执行期间,每个智能体会自动加载其整合的
suggestions并将其作为强制性指令附加到任务提示中。这使您无需更改智能体定义即可获得持续的改进。
文件摘要
training_data.pkl(临时的,每个会话一个)- 结构:
agent_id -> { iteration_number: { initial_output, human_feedback, improved_output } } - 目的:在训练期间捕获原始数据和人类反馈
- 位置:保存在当前工作目录(CWD)中
- 结构:
trained_agents_data.pkl(或您的自定义文件名)- 结构:
agent_role -> { suggestions: string[], quality: number, final_summary: string } - 目的:为未来的运行持久化整合的指导意见
- 位置:默认写入当前工作目录;使用
-f设置自定义(包括绝对)路径
- 结构:
小型语言模型的注意事项
当使用较小的语言模型(≤7B 参数)进行训练数据评估时,请注意它们在生成结构化输出和遵循复杂指令方面可能会面临挑战。
小型模型在训练评估中的局限性
JSON 输出准确性
较小的模型通常难以生成结构化训练评估所需的有效 JSON 响应,从而导致解析错误和数据不完整。
评估质量
与大型模型相比,参数少于 7B 的模型可能提供不够细致的评估,推理深度有限。
指令遵循
复杂的训练评估标准可能不会被较小的模型完全遵循或考虑。
一致性
使用较小模型时,跨多个训练迭代的评估可能缺乏一致性。
训练建议
- 最佳实践
- 小型模型的使用
为了获得最佳的训练质量和可靠的评估,我们强烈建议使用至少有 7B 参数或更大的模型
更强大的模型提供更高质量的反馈和更好的推理能力,从而带来更有效的训练迭代。
关键注意事项
- 正整数要求: 确保迭代次数(
n_iterations)是一个正整数。如果不满足此条件,代码将引发ValueError。 - 文件名要求: 确保文件名以
.pkl结尾。如果不满足此条件,代码将引发ValueError。 - 错误处理: 代码会处理子进程错误和意外异常,并向用户提供错误消息。
- 训练后的指导在提示时应用;它不会修改您的 Python/YAML 智能体配置。
- 智能体自动从位于当前工作目录中名为
trained_agents_data.pkl的文件加载训练建议。如果您训练时使用了不同的文件名,请在运行前将其重命名为trained_agents_data.pkl,或在代码中调整加载器。 - 您可以在调用
crewai train时使用-f/--filename来更改输出文件名。如果您想保存在当前工作目录之外,支持使用绝对路径。
