概述
CrewAI 中的训练功能允许您使用命令行界面 (CLI) 训练您的 AI 智能体。通过运行命令crewai train -n <n_iterations>,您可以指定训练过程的迭代次数。 在训练过程中,CrewAI 利用技术结合人类反馈来优化智能体的性能。这有助于智能体提高其理解、决策和问题解决能力。使用 CLI 训练您的 Crew
要使用训练功能,请遵循以下步骤- 打开您的终端或命令提示符。
- 导航到您的 CrewAI 项目所在的目录。
- 运行以下命令
如果您省略
-f,输出将默认为当前工作目录中的 trained_agents_data.pkl。您可以传递绝对路径来控制文件的写入位置。以编程方式训练您的 Crew
要以编程方式训练您的 Crew,请使用以下步骤- 定义训练的迭代次数。
- 指定训练过程的输入参数。
- 在 try-except 块中执行训练命令以处理潜在错误。
代码
智能体如何使用训练数据
CrewAI 以两种方式使用训练工件:在训练期间整合您的人类反馈,以及在训练后通过整合的建议指导智能体。训练数据流
在训练运行期间
- 在每次迭代中,系统会为每个智能体记录
initial_output:智能体的第一个答案human_feedback:当提示时您的内联反馈improved_output:智能体在收到反馈后的后续答案
- 此数据以智能体的内部 ID 和迭代为键,存储在一个名为
training_data.pkl的工作文件中。 - 在训练活跃期间,智能体会自动将其先前的用户反馈附加到其提示中,以便在训练会话的后续尝试中强制执行这些指令。训练是交互式的:任务将
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 } - 目的:为未来的运行保留整合的指导
- 位置:默认写入 CWD;使用
-f设置自定义(包括绝对)路径
- 结构:
小型语言模型注意事项
小型模型在训练评估中的局限性
JSON 输出准确性
小型模型通常难以生成结构化训练评估所需的有效 JSON 响应,从而导致解析错误和不完整数据。
评估质量
与大型模型相比,参数小于 7B 的模型可能会提供细微差别较少、推理深度有限的评估。
指令遵循
复杂的训练评估标准可能不会被小型模型完全遵循或考虑。
一致性
小型模型在多次训练迭代中的评估可能缺乏一致性。
训练建议
- 最佳实践
- 小型模型使用
为了获得最佳训练质量和可靠评估,我们强烈建议使用至少具有 7B 参数或更大的模型
需要注意的关键点
- 正整数要求: 确保迭代次数 (
n_iterations) 为正整数。如果未满足此条件,代码将引发ValueError。 - 文件名要求: 确保文件名以
.pkl结尾。如果未满足此条件,代码将引发ValueError。 - 错误处理: 代码处理子进程错误和意外异常,向用户提供错误消息。
- 训练后的指导在提示时应用;它不会修改您的 Python/YAML 智能体配置。
- 智能体会自动从当前工作目录中名为
trained_agents_data.pkl的文件中加载训练过的建议。如果您训练到不同的文件名,请在运行前将其重命名为trained_agents_data.pkl,或在代码中调整加载器。 - 您可以使用
-f/--filename在调用crewai train时更改输出文件名。如果要在 CWD 之外保存,则支持绝对路径。
